-
Notifications
You must be signed in to change notification settings - Fork 12.9k
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
Exponential Performance Regression in Rust 1.73 Read API from BorrowedCursor::ensure_init #117545
Comments
Maybe try |
Really nice bisect tool. |
cc author @the8472 |
The loop creates a new @rustbot claim |
Any chance of getting this fix in a backport to 1.73? |
1. Update Bevy to 0.12 2. Update related deps ( ggrs, bevy_ggrs, matchbox, etc. ) 3. Log warning if winit cannot find main window to avoid panic - I don't understand why this changed see below. 4. Switch to `1.72` toolchain due to Rust compiler regression. ### Winit Panic Some new issue was introduced with the Bevy 0.12 upgrade, this line started panicking, so we just log a warning and abort if we can't get the primary window. https://github.com/mikeder/turtletime/pull/3/files#diff-42cb6807ad74b3e201c5a7ca98b911c5fa08380e942be6e4ac5807f8377f87fcL83 NiklasEi/bevy_game_template#80 ### Compiler Regression I was unable to compile `bevy-egui-inspector` after updating to Rust to the 1.74 toolchain, it turns out there was a compiler regression so I've pinned my toolchain to 1.72 ( there was [another regression](rust-lang/rust#117545) in 1.73 that sounds nasty enough to avoid for now too ) jakobhellermann/bevy-inspector-egui#163 rust-lang/rust#117976 #### Segmentation Fault Originally I tried to use the `nightly` toolchain as recommended in the above `bevy-egui-inspector` issue, but when I did, my game instantly crashed with a segmentation fault. I tried to use the [sanitizer](https://doc.rust-lang.org/beta/unstable-book/compiler-flags/sanitizer.html) features to debug it, but the game compiled and ran just fine with the sanitizer flags. Ultimately I just downgraded to `1.72` and moved on with my life.
Reported by a lz4_flex user PSeitz/lz4_flex#147
Code
I created a small repo to demonstrate on a minimal example.
https://github.com/PSeitz/copy_regression_1.73
BorrowedCursor::ensure_init from this PR #97015 seems exhibit exponential cost.
The program creates a Vec and reads it in chunks of 32kb. Size is specified as a command line argument (100MB-400MB).
time cargo run --release 100000000
(If your default is 1.73)time cargo run --release 200000000
time cargo run --release 400000000
time cargo +1.72 run --release 100000000
time cargo +1.72 run --release 400000000
The text was updated successfully, but these errors were encountered: