about summary refs log tree commit diff
path: root/src/rustllvm/PassWrapper.cpp
diff options
context:
space:
mode:
authorblake2-ppc <blake2-ppc>2013-09-28 04:15:40 +0200
committerblake2-ppc <blake2-ppc>2013-09-28 05:25:18 +0200
commit24a4d0daf0ba954b94eeeb9eb83355cd2f16ede5 (patch)
treeddff72104b11d337f2f89106067193c544e3ab7f /src/rustllvm/PassWrapper.cpp
parent5444f601dc02cd9f5fc886f438ea60310f664cc6 (diff)
downloadrust-24a4d0daf0ba954b94eeeb9eb83355cd2f16ede5.tar.gz
rust-24a4d0daf0ba954b94eeeb9eb83355cd2f16ede5.zip
std::vec: Sane implementations for connect_vec and concat_vec
Avoid unnecessary copying of subvectors, and calculate the needed space
beforehand. These implementations are simple but better than the
previous.

Also only implement it once, for all `Vector<T>` using:

    impl<'self, T: Clone, V: Vector<T>> VectorVector<T> for &'self [V]

performance improved according to the bench test:

    before
    test vec::bench::concat ... bench: 74818 ns/iter (+/- 408)
    test vec::bench::connect ... bench: 87066 ns/iter (+/- 376)

    after
    test vec::bench::concat ... bench: 17724 ns/iter (+/- 126)
    test vec::bench::connect ... bench: 18353 ns/iter (+/- 691)

Closes #9581
Diffstat (limited to 'src/rustllvm/PassWrapper.cpp')
0 files changed, 0 insertions, 0 deletions