mnemonikr / symbolic-pcode

Apache License 2.0
0 stars 0 forks source link

Improve performance of division and remainder operations #95

Closed mnemonikr closed 4 weeks ago

mnemonikr commented 8 months ago

Local benchmarks of division and remainder show that a single operation on a concrete value take > 1ms.

Emulate/Arithmetic/Int(Divide(Unsigned))
                        time:   [1.3919 ms 1.3943 ms 1.3969 ms]
                        change: [-2.9319% -2.4691% -1.9909%] (p = 0.00 < 0.05)
                        Performance has improved.
Found 9 outliers among 100 measurements (9.00%)
  6 (6.00%) high mild
  3 (3.00%) high severe

Emulate/Arithmetic/Int(Divide(Signed))
                        time:   [1.4175 ms 1.4190 ms 1.4206 ms]
                        change: [-7.2379% -6.6717% -6.1328%] (p = 0.00 < 0.05)
                        Performance has improved.
Found 8 outliers among 100 measurements (8.00%)
  6 (6.00%) high mild
  2 (2.00%) high severe

Emulate/Arithmetic/Int(Remainder(Unsigned))
                        time:   [1.4332 ms 1.4382 ms 1.4435 ms]
                        change: [+3.0722% +3.6608% +4.2761%] (p = 0.00 < 0.05)
                        Performance has regressed.
Found 4 outliers among 100 measurements (4.00%)
  1 (1.00%) high mild
  3 (3.00%) high severe

Emulate/Arithmetic/Int(Remainder(Signed))
                        time:   [1.4687 ms 1.4710 ms 1.4734 ms]
                        change: [-0.9440% -0.6483% -0.3422%] (p = 0.00 < 0.05)
                        Change within noise threshold.