Description
Summary
Nearly 50% performance regression between versions 1.71 and 1.72 when copying small byte arrays with stable-aarch64-apple-darwin
platform (Macbook Pro M1). Used cargo bisect-rustc
to track down the regression to fd9bf59 #111999
Code
I tried this code:
#![feature(test)]
extern crate test;
use test::Bencher;
#[bench]
fn bench(b: &mut Bencher) {
b.iter(|| {
let data = vec![[1u8; 24]; 1024 * 1024];
let mut new_vec = Vec::with_capacity(1024 * 1024);
for entry in data {
new_vec.push(entry);
}
});
}
I expected to see this happen: to run about 6,200,000 ns/iter like version 1.71
$ cargo +nightly-2023-06-06-aarch64-apple-darwin bench
Compiling benchmarks v0.1.0 (/Users/tuomas/rust/benchmarks)
Finished bench [optimized] target(s) in 0.18s
Running unittests src/main.rs (target/release/deps/benchmarks-0c0dfc3834e16b96)
running 1 test
test bench ... bench: 6,249,724 ns/iter (+/- 1,609,874)
test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured; 0 filtered out; finished in 5.70s
Instead, this happened: 9,159,412 ns/iter
$ cargo +nightly-2023-06-07-aarch64-apple-darwin bench
Finished bench [optimized] target(s) in 0.00s
Running unittests src/main.rs (target/release/deps/benchmarks-0c0dfc3834e16b96)
running 1 test
test bench ... bench: 9,159,412 ns/iter (+/- 469,568)
test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured; 0 filtered out; finished in 2.78s
Version it worked on
It most recently worked on: 1.71
More specifically nightly-2023-06-06-aarch64-apple-darwin
Version with regression
1.72
nightly-2023-06-07-aarch64-apple-darwin
rustc --version --verbose
:
rustc 1.72.0 (5680fa18f 2023-08-23)
binary: rustc
commit-hash: 5680fa18feaa87f3ff04063800aec256c3d4b4be
commit-date: 2023-08-23
host: aarch64-apple-darwin
release: 1.72.0
LLVM version: 16.0.5
cargo bisect-rustc
Searched nightlies: from nightly-2023-06-06 to nightly-2023-06-07
regressed nightly: nightly-2023-06-07
searched commit range: e6d4725...b2b34bd
regressed commit: fd9bf59
bisected with cargo-bisect-rustc v0.6.7
Host triple: x86_64-apple-darwin
Reproduce with:
cargo bisect-rustc --start=2023-06-06 --end=2023-06-07 -- run --release
@rustbot modify labels: +regression-from-stable-to-stable -regression-untriaged