]> git.lizzy.rs Git - rust.git/commit
Improve PartialEq for slices
authorBjörn Steinbrink <bsteinbr@gmail.com>
Wed, 8 Jul 2015 12:49:55 +0000 (14:49 +0200)
committerBjörn Steinbrink <bsteinbr@gmail.com>
Wed, 8 Jul 2015 12:49:55 +0000 (14:49 +0200)
commit9f4d5b4be10ce9683569a0bd55f555d30f70b5a5
treefcae4b51321a5c16d61fc376191d1beef4a53670
parent7b7853897ba1469d7bb47fb6e4b877b6741fbb4b
Improve PartialEq for slices

Exploiting the fact that getting the length of the slices is known, we
can use a counted loop instead of iterators, which means that we only
need a single counter, instead of having to increment and check one
pointer for each iterator.

Benchmarks comparing vectors with 100,000 elements:

Before:

```
running 8 tests
test eq1_u8  ... bench:      66,757 ns/iter (+/- 113)
test eq2_u16 ... bench:     111,267 ns/iter (+/- 149)
test eq3_u32 ... bench:     126,282 ns/iter (+/- 111)
test eq4_u64 ... bench:     126,418 ns/iter (+/- 155)
test ne1_u8  ... bench:      88,990 ns/iter (+/- 161)
test ne2_u16 ... bench:      89,126 ns/iter (+/- 265)
test ne3_u32 ... bench:      96,901 ns/iter (+/- 92)
test ne4_u64 ... bench:      96,750 ns/iter (+/- 137)
```

After:

```
running 8 tests
test eq1_u8  ... bench:      46,413 ns/iter (+/- 521)
test eq2_u16 ... bench:      46,500 ns/iter (+/- 74)
test eq3_u32 ... bench:      50,059 ns/iter (+/- 92)
test eq4_u64 ... bench:      54,001 ns/iter (+/- 92)
test ne1_u8  ... bench:      47,595 ns/iter (+/- 53)
test ne2_u16 ... bench:      47,521 ns/iter (+/- 59)
test ne3_u32 ... bench:      44,889 ns/iter (+/- 74)
test ne4_u64 ... bench:      47,775 ns/iter (+/- 68)
```
src/libcore/slice.rs