Wonder if anyone has a view on this. Some code that I need to deploy in Python (v3.7) but created in Matlab (2019a) was compiled using the Compiler SDK to generate the required CTF files. It comprises about 15 independent functions that are executed in a sequential way. Tested in Matlab, the *m native files, which are very efficiently coded, require (for a toy example) about 7 to 8 seconds to complete. When deployed using the MCR in Python the same toy example takes about 50 seconds.
Not only that, the problem is roughly linear in the size of the input variable so using an input twice the size in Matlab uses up 15-18 sec to complete, but slighly below 1 min in Python. Looking at a Profiler run in Matlab it was seen that only two of the routines took roughly 90% of the computation time, what was expected. Deployed in Python, they only took 32% of the computation time. That led us to think we had some form of overhead attached to the MCR (impacting every routine as they were processed sequentially) but, upon inspection, that did not seem to be the issue.
As per Matlab, programs compiled using the Compiler SDK should run "at the same speed as Matlab" but nothing of the sorts is happening.
Perhaps more interestingly, as we increased the dimension of the data input to the routine the computation time in Matlab rose roughly as expected/predicted by theory, yet in Python nothing of sorts seems to happen. That said, Python performance is consistently sub-par as compared to Matlab and we've ran out of gas in thinking what on earth might be going on.
BTW, in both instances we ran things on separate PCs of equivalent configuration. Hardware does not seem to be causing it.