]> git.lizzy.rs Git - rust.git/commit
Rollup merge of #73529 - pickfire:liballoc-specfromelem-i8, r=cuviper
authorManish Goregaokar <manishsmail@gmail.com>
Fri, 26 Jun 2020 20:57:31 +0000 (13:57 -0700)
committerGitHub <noreply@github.com>
Fri, 26 Jun 2020 20:57:31 +0000 (13:57 -0700)
commit23b0776a594a0728a7706521c5193245de2ea823
tree06e88616646e49ae05a600232443f342088a937c
parentf13d09abe1d7a02007ac8591dc409c8d820b903a
parentf66bcc5459d4a720b31eaeac3149f19799118d72
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.
src/liballoc/vec.rs