Tests done on a: Intel® Core™ i7-6700HQ CPU @ 2.60GHz × 8
16GB RAM, GeForce GTX 1070/PCIe/SSE2 Ubuntu 18.04.5 ROS Melodic
Checking rate with rostopic hz
.
Publisher Python: 33513~ Hz
Publisher C++: 50505~ Hz
Publisher Python ROSCPP: 45000~ Hz
Image size: 512x512
Publisher Python: 1870~ Hz
Publisher C++: 1600~ Hz
(Weird?)
Python: 1% CPU, 43MB RAM C++: 0.3% CPU, 8.9MB RAM
Python: 2.3% CPU, 43MB RAM C++: 1% CPU, 8.9MB RAM
Python: 3.3% CPU, 43MB RAM C++: 1.7% CPU, 8.9MB RAM
Python: 6.7% CPU, 43MB RAM C++: 3.0% CPU, 8.9MB RAM
Python ROSCPP: 5.6% CPU, 47.7MB RAM
Python: 2% CPU, 71MB RAM C++: 1%CPU, MB RAM
Python: 6% CPU, 71MB RAM C++: 3.3%CPU, 24MB RAM
Python: 10% CPU, 71MB RAM C++: 5.3%CPU, 24MB RAM
Python: 19% CPU, 71MB RAM C++: 10.0%CPU, 24MB RAM
Using rostopic delay
.
Python: 0.001s C++: 0.001s
Subscribing to std_msgs/String
Python: 1% C++: 1%
Python: 1.3% C++: 1.3%
Python: 2.7% C++: 2.7%
Python: 14% C++: 16%
(Weird)
For tiny messages:
Having publishers in C++ may be a bit more efficient.
Having subscribers, not really.
For big messages:
If the data needs to be processed, it will for sure be faster in C++.