Add callback-durations analysis script
This commit is contained in:
parent
6eb50bf807
commit
d4018ed184
2 changed files with 44 additions and 0 deletions
|
@ -41,6 +41,7 @@ setup(
|
|||
'console_scripts': [
|
||||
f'convert = {package_name}.convert:main',
|
||||
f'process = {package_name}.process:main',
|
||||
f'cb_durations = {package_name}.cb_durations:main'
|
||||
],
|
||||
},
|
||||
license='Apache 2.0',
|
||||
|
|
43
tracetools_analysis/tracetools_analysis/cb_durations.py
Normal file
43
tracetools_analysis/tracetools_analysis/cb_durations.py
Normal file
|
@ -0,0 +1,43 @@
|
|||
#! /usr/bin/python
|
||||
|
||||
import pandas as pd
|
||||
|
||||
from tracetools_analysis.loading import load_file
|
||||
from tracetools_analysis.processor.ros2 import Ros2Handler
|
||||
from tracetools_analysis.utils.ros2 import Ros2DataModelUtil
|
||||
|
||||
import sys
|
||||
|
||||
removals = [
|
||||
"void (", "rclcpp::", "std::shared_ptr<", ">", "::msg"
|
||||
]
|
||||
replaces = [
|
||||
("?)", "?")
|
||||
]
|
||||
|
||||
|
||||
def format_fn(fname: str):
|
||||
for r in removals:
|
||||
fname = fname.replace(r, "")
|
||||
for a, b in replaces:
|
||||
fname = fname.replace(a, b)
|
||||
|
||||
return fname
|
||||
|
||||
def main():
|
||||
if len(sys.argv) < 2:
|
||||
print("Syntax: <tracefile>")
|
||||
sys.exit(-1)
|
||||
|
||||
events = load_file(sys.argv[1])
|
||||
handler = Ros2Handler.process(events)
|
||||
du = Ros2DataModelUtil(handler.data)
|
||||
|
||||
stat_data = []
|
||||
for ptr, name in du.get_callback_symbols().items():
|
||||
durations = du.get_callback_durations(ptr)["duration"]
|
||||
stat_data.append((durations.count(), durations.sum(), durations.mean(), durations.std(), format_fn(name)))
|
||||
|
||||
stat_df = pd.DataFrame(columns=["Count", "Sum", "Mean", "Std", "Name"], data=stat_data)
|
||||
print(stat_df.sort_values(by="Sum", ascending=False).to_string())
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue