Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Switch to wasm-opt-rs crate #604

Merged
merged 1 commit into from
Feb 5, 2024
Merged

Switch to wasm-opt-rs crate #604

merged 1 commit into from
Feb 5, 2024

Conversation

jeffcharles
Copy link
Collaborator

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

  • I've updated the relevant CHANGELOG files if necessary. Changes to javy-cli and javy-core do not require updating CHANGELOG files.
  • I've updated the relevant crate versions if necessary. Versioning policy for library crates
  • I've updated documentation including crate documentation if necessary.

Copy link
Member

@saulecabrera saulecabrera left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm wondering: did you notice any performance improvements or regressions with this change? I'm assuming there shouldn't be anything significant, but it might be interesting to run some benchmarks to be certain. I'm assuming fuel-wise nothing significant changed, given that the fuel tests didn't fail.

@jeffcharles
Copy link
Collaborator Author

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

@jeffcharles jeffcharles merged commit 2234c8c into main Feb 5, 2024
14 checks passed
@jeffcharles jeffcharles deleted the jc.use-wasm-opt-rs branch February 5, 2024 22:11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Move from binaryen to wasm-opt-rs
2 participants