Commit 23b0776
authored
Rollup merge of #73529 - pickfire:liballoc-specfromelem-i8, r=cuviper
Add liballoc impl SpecFromElem for i8
Speedup vec![1_i8; N] for non-zero element.
Before
test do_bench_from_elem_i8 ... bench: 130 ns/iter (+/- 7) = 61 MB/s
test do_bench_from_elem_u8 ... bench: 121 ns/iter (+/- 4) = 66 MB/s
After
test do_bench_from_elem_i8 ... bench: 123 ns/iter (+/- 7) = 65 MB/s
test do_bench_from_elem_u8 ... bench: 121 ns/iter (+/- 5) = 66 MB/s
No speed difference if element is already zero.
```rust
#[bench]
fn do_bench_from_elem_i8(b: &mut Bencher) {
b.bytes = 8 as u64;
b.iter(|| {
let dst = ve::vec![10_i8; 100];
assert_eq!(dst.len(), 100);
assert!(dst.iter().all(|x| *x == 10));
})
}
```
As suggested by @cuviper
https://rust-lang.zulipchat.com/#narrow/stream/219381-t-libs/topic/SpecForElem.20for.20other.20integers
r? @cuviper
CC @joshtriplett
Edit: Wow, I just realized both reviewers are Josh.1 file changed
+15
-1
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1801 | 1801 | | |
1802 | 1802 | | |
1803 | 1803 | | |
| 1804 | + | |
| 1805 | + | |
| 1806 | + | |
| 1807 | + | |
| 1808 | + | |
| 1809 | + | |
| 1810 | + | |
| 1811 | + | |
| 1812 | + | |
| 1813 | + | |
| 1814 | + | |
| 1815 | + | |
| 1816 | + | |
| 1817 | + | |
| 1818 | + | |
1804 | 1819 | | |
1805 | 1820 | | |
1806 | 1821 | | |
| |||
1845 | 1860 | | |
1846 | 1861 | | |
1847 | 1862 | | |
1848 | | - | |
1849 | 1863 | | |
1850 | 1864 | | |
1851 | 1865 | | |
| |||
0 commit comments