I have a tree, and 2 functions, one using recursive functions:
one maintaining a Cell and using a loop:
I made a simple bench function, the as the result, it's faster to use loop,
loop_get time: [20.444 us 20.667 us 20.886 us]
change: [-3.2910% -1.7348% -0.2509%] (p = 0.04 < 0.05)
Change within noise threshold.
Found 1 outliers among 100 measurements (1.00%)
1 (1.00%) high mild
ref_get time: [30.671 us 30.842 us 31.007 us]
change: [-10.065% -9.5309% -8.9736%] (p = 0.00 < 0.05)
Performance has improved.
Found 1 outliers among 100 measurements (1.00%)
1 (1.00%) high mild
however, the story does not end here. I use this library in my project, which uses a large enum(see below), it's significantly slower(results from running script on Mac and Ubuntu):
I don't have full benchmark for that, only some perf and flamegraph(sorry I don't have accurate and stable results except for the perf on Ubuntu... I can't analyze ASM by myself as well).
Is there any reason or tricks why the function fast using usize turned slow using on references large enum?