[ ] Define common metrics to check performances evolutions in Python and Web APIs
Stack depth?
Cache hits and misses? (Cached but unused values, ...)
Percentage of default values in calculation
Number of calls to calculate()
How many times a calculate() returns 0 or any equivalent value to false (% unnecessary computations in conditions)
Inputs impact in calculation performance (number of calculations to a variable listed in the inputs but at a different period from the calculation period)
[x] Unify Core tracing process with:
computation_log()
Tracer stack
simulation stack for cycle and spiral detection
:arrow_right: See #884
[ ] Implement computation log as tree structure with each node registering
Done:
variable name
period
wall-clock time
computed value
(children node)
Still to be done:
value originating in: (input, calc, cache, default, extinct formula)
[ ] Post-process the tree to bring out derived metrics:
stack depth at each node
time spent on each node
number of children computations of each node
percent of children node coming from each of cache, input etc.
[x] Check metrics possible representations
Generate a graph similar to profilers (icicle ?) with variables and parameters?
Are we still looking forward to make this happen? Recently, another initiative has emerged based on inputs and contributions by @benjello @sandcha @benoit-cty and @clallemand. We could maybe merge/supercede #1315
Find common ways to analyse OpenFisca:
Time performances
Memory performances
Calculation cache
[ ] Define common metrics to check performances evolutions in Python and Web APIs
Stack depth?
Cache hits and misses? (Cached but unused values, ...)
Percentage of default values in calculation
Number of calls to
calculate()
How many times a
calculate()
returns 0 or any equivalent value to false (% unnecessary computations in conditions)Inputs impact in calculation performance (number of calculations to a variable listed in the inputs but at a different period from the calculation period)
[x] Unify Core tracing process with:
computation_log()
Tracer
stacksimulation stack for cycle and spiral detection
:arrow_right: See #884
[ ] Implement computation log as tree structure with each node registering
Done:
Still to be done:
[ ] Post-process the tree to bring out derived metrics:
stack depth at each node
time spent on each node
number of children computations of each node
percent of children node coming from each of cache, input etc.
[x] Check metrics possible representations
Generate a graph similar to profilers (icicle ?) with variables and parameters?
:arrow_right: See #895