Implement TrustedRandomAccess for slice::{Chunks, ChunksMut, Windows} by sdroege · Pull Request #47142 · rust-lang/rust (original) (raw)
Some benchmark results, based on the code from #47115 (comment) . Just running a 1920*1080*4 byte array through the normal chunks version.
Something like 1.5% difference (the new version is faster), but consistently. So even for things that llvm can't auto-vectorize it seems to be slightly faster.
Before
$ cargo +local bench
running 1 test
Finished release [optimized] target(s) in 0.0 secs
Running target/release/deps/testing-611256b07a3291e9
test tests::test_bgrx_to_grey ... bench: 5,858,100 ns/iter (+/- 160,940)
test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured; 0 filtered out
$ cargo +local bench
Finished release [optimized] target(s) in 0.0 secs
Running target/release/deps/testing-611256b07a3291e9
running 1 test
test tests::test_bgrx_to_grey ... bench: 5,842,103 ns/iter (+/- 143,723)
test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured; 0 filtered out
$ cargo +local bench
Finished release [optimized] target(s) in 0.0 secs
Running target/release/deps/testing-611256b07a3291e9
running 1 test
test tests::test_bgrx_to_grey ... bench: 5,858,885 ns/iter (+/- 193,095)
test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured; 0 filtered out
$ cargo +local bench
Finished release [optimized] target(s) in 0.0 secs
Running target/release/deps/testing-611256b07a3291e9
running 1 test
test tests::test_bgrx_to_grey ... bench: 5,853,836 ns/iter (+/- 184,774)
test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured; 0 filtered out
After
$ cargo +local bench
Finished release [optimized] target(s) in 0.0 secs
Running target/release/deps/testing-611256b07a3291e9
running 1 test
test tests::test_bgrx_to_grey ... bench: 5,764,354 ns/iter (+/- 237,465)
test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured; 0 filtered out
$ cargo +local bench
Finished release [optimized] target(s) in 0.0 secs
Running target/release/deps/testing-611256b07a3291e9
running 1 test
test tests::test_bgrx_to_grey ... bench: 5,764,800 ns/iter (+/- 298,007)
test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured; 0 filtered out
$ cargo +local bench
Finished release [optimized] target(s) in 0.0 secs
Running target/release/deps/testing-611256b07a3291e9
running 1 test
test tests::test_bgrx_to_grey ... bench: 5,780,834 ns/iter (+/- 234,143)
test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured; 0 filtered out
$ cargo +local bench
Finished release [optimized] target(s) in 0.0 secs
Running target/release/deps/testing-611256b07a3291e9
running 1 test
test tests::test_bgrx_to_grey ... bench: 5,783,144 ns/iter (+/- 242,745)
test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured; 0 filtered out