bytecodealliance / javy

JS to WebAssembly toolchain
Apache License 2.0
2.1k stars 101 forks source link

Switch to wasm-opt-rs crate #604

Closed jeffcharles closed 6 months ago

jeffcharles commented 6 months ago

Description of the change

Switches from using binaryen-rs to wasm-opt crate to apply wasm-opt optimizations.

Why am I making this change?

Closes #315 which should address #594 and #397. The latest commit for binaryen-sys does not build on modern Linux distributions. Switching to a different dependency with a more up-to-date version of wasm-opt should allow Javy CLI to compile on modern Linux distributions.

Checklist

jeffcharles commented 6 months ago

Looks like performance either hasn't changed materially or has slightly improved. Here are the results from make bench:

Benchmarking run/static just in time simple_discount: Warming up for 3.0000 s
Warning: Unable to complete 100 samples in 5.0s. You may wish to increase target time to 19.3s, or reduce sample count to 20.
run/static just in time simple_discount
                        time:   [193.58 ms 195.20 ms 196.97 ms]
                        change: [-0.1022% +0.9666% +2.1656%] (p = 0.09 > 0.05)
                        No change in performance detected.
Found 8 outliers among 100 measurements (8.00%)
  4 (4.00%) high mild
  4 (4.00%) high severe

Benchmarking run/static just in time complex_discount: Warming up for 3.0000 s
Warning: Unable to complete 100 samples in 5.0s. You may wish to increase target time to 19.8s, or reduce sample count to 20.
run/static just in time complex_discount
                        time:   [193.40 ms 194.62 ms 195.97 ms]
                        change: [-1.2267% -0.0404% +1.0952%] (p = 0.94 > 0.05)
                        No change in performance detected.
Found 4 outliers among 100 measurements (4.00%)
  4 (4.00%) high severe

Benchmarking run/static just in time logging: Warming up for 3.0000 s
Warning: Unable to complete 100 samples in 5.0s. You may wish to increase target time to 20.1s, or reduce sample count to 20.
run/static just in time logging
                        time:   [193.45 ms 194.72 ms 196.15 ms]
                        change: [-0.1733% +0.8876% +1.9877%] (p = 0.09 > 0.05)
                        No change in performance detected.
Found 4 outliers among 100 measurements (4.00%)
  1 (1.00%) high mild
  3 (3.00%) high severe

run/static ahead of time simple_discount
                        time:   [2.3441 ms 2.3628 ms 2.3845 ms]
                        change: [-4.7383% -3.6441% -2.5062%] (p = 0.00 < 0.05)
                        Performance has improved.
Found 9 outliers among 100 measurements (9.00%)
  9 (9.00%) high severe

run/static ahead of time complex_discount
                        time:   [3.1153 ms 3.1218 ms 3.1298 ms]
                        change: [-5.9430% -4.9821% -4.0836%] (p = 0.00 < 0.05)
                        Performance has improved.
Found 5 outliers among 100 measurements (5.00%)
  2 (2.00%) high mild
  3 (3.00%) high severe

run/static ahead of time logging
                        time:   [2.3503 ms 2.3529 ms 2.3557 ms]
                        change: [-4.4421% -3.8342% -3.2860%] (p = 0.00 < 0.05)
                        Performance has improved.
Found 3 outliers among 100 measurements (3.00%)
  3 (3.00%) high mild

Benchmarking run/dynamic just in time simple_discount: Warming up for 3.0000 s
Warning: Unable to complete 100 samples in 5.0s. You may wish to increase target time to 12.0s, or reduce sample count to 40.
run/dynamic just in time simple_discount
                        time:   [2.9738 ms 3.0256 ms 3.0797 ms]
                        change: [-7.2748% -4.8203% -2.3098%] (p = 0.00 < 0.05)
                        Performance has improved.
Found 2 outliers among 100 measurements (2.00%)
  2 (2.00%) high mild

Benchmarking run/dynamic just in time complex_discount: Warming up for 3.0000 s
Warning: Unable to complete 100 samples in 5.0s. You may wish to increase target time to 12.2s, or reduce sample count to 40.
run/dynamic just in time complex_discount
                        time:   [3.8365 ms 3.9107 ms 3.9910 ms]
                        change: [-1.8378% +0.6498% +3.2326%] (p = 0.62 > 0.05)
                        No change in performance detected.
Found 3 outliers among 100 measurements (3.00%)
  3 (3.00%) high mild

Benchmarking run/dynamic just in time logging: Warming up for 3.0000 s
Warning: Unable to complete 100 samples in 5.0s. You may wish to increase target time to 12.1s, or reduce sample count to 40.
run/dynamic just in time logging
                        time:   [2.9667 ms 3.0608 ms 3.1887 ms]
                        change: [-0.0305% +3.9019% +8.2748%] (p = 0.07 > 0.05)
                        No change in performance detected.
Found 4 outliers among 100 measurements (4.00%)
  3 (3.00%) high mild
  1 (1.00%) high severe

Benchmarking run/dynamic ahead of time simple_discount: Warming up for 3.0000 s
Warning: Unable to complete 100 samples in 5.0s. You may wish to increase target time to 11.8s, or reduce sample count to 40.
run/dynamic ahead of time simple_discount
                        time:   [2.5403 ms 2.5675 ms 2.5988 ms]
                        change: [-1.1154% +0.2985% +1.6684%] (p = 0.68 > 0.05)
                        No change in performance detected.
Found 12 outliers among 100 measurements (12.00%)
  4 (4.00%) high mild
  8 (8.00%) high severe

Benchmarking run/dynamic ahead of time complex_discount: Warming up for 3.0000 s
Warning: Unable to complete 100 samples in 5.0s. You may wish to increase target time to 11.9s, or reduce sample count to 40.
run/dynamic ahead of time complex_discount
                        time:   [3.3617 ms 3.3826 ms 3.4078 ms]
                        change: [-1.4989% -0.0335% +1.2566%] (p = 0.97 > 0.05)
                        No change in performance detected.
Found 5 outliers among 100 measurements (5.00%)
  3 (3.00%) high mild
  2 (2.00%) high severe

Benchmarking run/dynamic ahead of time logging: Warming up for 3.0000 s
Warning: Unable to complete 100 samples in 5.0s. You may wish to increase target time to 11.8s, or reduce sample count to 40.
run/dynamic ahead of time logging
                        time:   [2.5479 ms 2.5637 ms 2.5807 ms]
                        change: [-1.1120% -0.1365% +0.9062%] (p = 0.79 > 0.05)
                        No change in performance detected.
Found 10 outliers among 100 measurements (10.00%)
  10 (10.00%) high mild