...
We currently use cProfile for deterministic profiling and pyinstrument for statistical profiling.
Capturing Traces
...
We maintain a fork of pyinstrument where we stage changes that we want to merge upstream.
Proposed Data Format
Code Block | ||||
---|---|---|---|---|
| ||||
type: trace
version: 1
root:
- description: some_function_name
self_time: 10.45 # number of seconds spent in this function that was not spent in functions called from within this function
children:
- description: inner_function # This function was called by some_function_name()
self_time: 1.456
- description: another_function
self_time: 0 # No appreciable time was spent in this function, all of the time was spent in the function it calls.
children:
- description: even_deeper
self_time: 14.631
- description: another_function
self_time: 1.2 # This call to another_function does not result in a call to "even_deeper()" and does spend some time doing stuff. Note that appears separately in the data. |