rust-lang / rust

Empowering everyone to build reliable and efficient software.
https://www.rust-lang.org
Other
97.86k stars 12.67k forks source link

Performance regression since `nightly-2022-03-05` #95409

Open Robbepop opened 2 years ago

Robbepop commented 2 years ago

Today I checked performance of one of the libraries I am working on and found that its performance has regressed by roughly 50%.

Since there have not been any changes to the code since I checked last time I was confused about this. I bisected rustc versions until I found the version where the regression started: nightly-2022-03-05 nightly-2022-03-03 was still fine. The problem persists in the most recent Rust nighty: nightly-2022-03-28

The project that experiences the severe performance regression is wasmi: WebAssembly Interpreter. I ran benchmarks using:

cargo bench

In particular (faster results than running the entire suite)

cargo bench tiny_keccak/v1

Git commits used for my benchmarks:

In a previous issue I already highlighted that the same project has a fragile performance nature (heavily reacts to slight changes/optimizations/regressions) and was especially fine tuned using the following profile:

[profile.bench]
lto = "fat"
codegen-units = 1
apiraino commented 2 years ago

In your opinion @Robbepop would it help trying to extract an MCVE from your project and try to reduce the code that could be causing this regression? Or maybe it's more a general question about performance of the code generated?

Robbepop commented 2 years ago

@apiraino thank you for your response. I guess it would be very helpful for both parties to diagnose this performance issue further by minimizing it to its core components. However, the wasmi interpreter is a kinda big project and I (as its main developer) have absolutely no clue where to even start minimizing. It will probably a very time consuming task and I unfortunately have not (yet) come to do this.

Btw.: The O-wasm label is incorrect since this is not about Wasm compilation. The performance regressions happen on native compilation.

jieyouxu commented 1 month ago

Triage: @Robbepop do you mind checking if the latest nightlies still have as severe of a perf regression as the old nightly?