ROS supports both Python and C++ programming languages, however, using Python can come at a performance cost. I did an experiment to test this by writing four combinations of publisher to subscriber and then checking whether the real loop rate (of the publisher) is equal to the actual loop rate of the subscriber. The combinations tested, and points of deviation of desired and true frequency rates are:
- C++ publisher to Python subscriber (combination 1) – 10000Hz
- C++ publisher to C++ subscriber (combination 2) – 2000Hz
- Python publisher to Python subscriber (combination 3) – 1000Hz
- Python publisher to C++ subscriber (combination 4) – 800Hz
The results are shown in the graph below, which confirms that C++ is faster than Python for ROS. The code for this test is available in the FunWithROS Github repository.