This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Author deekay
Recipients a-feld, deekay
Date 2020-04-17.22:30:21
SpamBayes Score -1.0
Marked as misclassified Yes
Message-id <1587162621.81.0.544541712326.issue40312@roundup.psfhosted.org>
In-reply-to
Content
I'm baffled by the performance difference of the following two semantically equivalent(?) programs.

Python:

    #test.py
    import time
    starttime=time.time()
    import tensorflow 
    print(f"Import took: {time.time() - starttime}")

C using CPython

    //test.c
    #include <Python.h>
    #include <stdio.h> 
    #include <time.h> 
    int main(int argc, char *argv[])
    {
        Py_Initialize();
        clock_t t = clock();
        PyObject* pModule = PyImport_ImportModule("tensorflow");
        double time_taken = ((double)clock() - t)/CLOCKS_PER_SEC;
        printf("Import took:  %f\n", time_taken);
        return 0;
    }

Now compare the two:


    cl.exe /I"C:\Program Files\Python37\include" test.c
    link test.obj python37.lib /LIBPATH:"C:\Program Files\Python37\libs"
    .\test.exe


> 2020-04-17 13:00:51.598550: W tensorflow/stream_executor/platform/default/dso_loader.cc:55] Could not load dynamic library 'cudart64_100.dll'; dlerror: cudart64_100.dll not found
> 2020-04-17 13:00:51.606296: I tensorflow/stream_executor/cuda/cudart_stub.cc:29] Ignore above cudart dlerror if you do not have a GPU set up on your machine.

> **Import took: 23.160523891448975**


    python test.py


> 2020-04-17 13:01:19.525648: W tensorflow/stream_executor/platform/default/dso_loader.cc:55] Could not load dynamic library 'cudart64_100.dll'; dlerror: cudart64_100.dll not found
> 2020-04-17 13:01:19.530726: I tensorflow/stream_executor/cuda/cudart_stub.cc:29] Ignore above cudart dlerror if you do not have a GPU set up on your machine.

> **Import took: 2.3172824382781982**


Not that it should matter much but my tensorflow version is 1.15
Why is the python VM code so much faster than the compiled CPython code?
Does the python vm add some magic that PyImport_ImportModule doesn't?
History
Date User Action Args
2020-04-17 22:34:45ned.deilyunlinkissue40312 messages
2020-04-17 22:30:21deekaysetrecipients: + deekay, a-feld
2020-04-17 22:30:21deekaysetmessageid: <1587162621.81.0.544541712326.issue40312@roundup.psfhosted.org>
2020-04-17 22:30:21deekaylinkissue40312 messages
2020-04-17 22:30:21deekaycreate