Profiling - ovgu-FINken/driving_swarm_infrastructure GitHub Wiki
If you want to measure the performance of a ROS2 python node you can use the following procedure.
- Create a profile and save it in a file
- Visualise the profile with
snakeviz(which you can install with pip3)
To gather the performance of a node you can use cProfile: https://docs.python.org/3/library/profile.html You can either create a profile within your code like this:
import cProfile
profile = cProfile()
profile.enable()
# do stuff
profile.disable()
profile.dump_stats("FILENAME")
or by profiling the whole execution of the node by including the following line in the launch file:
Node(
package='...',
executable='...',
prefix=f"python3 -m cProfile -o FILENAME",
namespace=...,
...)
The profile can be viewed by calling snakeviz -s FILENAME on the command line. The program will create a webserver and serve a website where the data is shown. To get to the website follow the link given in the command-line.