I’m developing a C++ application that is extended/ scriptable with Python. Of course C++ is much faster than Python, in general, but does that necessarily mean that you should prefer to execute C++ code over Python code as often as possible?
I’m asking this because I’m not sure, is there any performance cost of switching control between code written in C++ and code written in Python? Should I use code written in C++ on every occasion, or should I avoid calling back to C++ for simple tasks because any speed gain you might have from executing C++ code is outmatched by the cost of switching between languages?
Edit: I should make this clear, I’m not asking this to actually solve a problem. I’m asking purely out of curiosity and it’s something worth keeping in mind for the future. So I’m not interested in alternative solutions, I just want to know the answer, from a technical standpoint. 🙂
The cost is present but negligible. That’s because you probably do a fair bit of work converting python’s high level datatypes to C++-compatible representations. Of course this is similar to the cost of calling one C++ function from another, there’s some overhead. The rules for when it’s a good idea to switch from python to C++ are:
A function with few arguments
A function which does a large amount of processing on a small amount of data
A function which is called as rarely as possible – consolidate function calls if possible