diff options
| author | bors <bors@rust-lang.org> | 2014-07-19 14:06:39 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2014-07-19 14:06:39 +0000 |
| commit | ca3843482928a1acf9482aa2e6cb29a850392ac7 (patch) | |
| tree | 8a76a34c520bcca8bde2f2c37f892474abee0c8f /src/rustllvm/RustWrapper.cpp | |
| parent | e0a6e2b41421928206cc71be27da1239b4598ed1 (diff) | |
| parent | c5e0736c2434fbed6b7f249b42b336f0e27804a6 (diff) | |
| download | rust-ca3843482928a1acf9482aa2e6cb29a850392ac7.tar.gz rust-ca3843482928a1acf9482aa2e6cb29a850392ac7.zip | |
auto merge of #15638 : blake2-ppc/rust/ptr-arithmetic-chars, r=huonw
Reimplement the string slice's `Iterator<char>` by wrapping the already efficient slice iterator. The iterator uses our guarantee that the string contains valid UTF-8, but its only unsafe code is transmuting the decoded `u32` into `char`. Benchmarks suggest that the runtime of `Chars` benchmarks are reduced by up to 30%, runtime of `Chars` reversed reduced by up to 60%. ``` BEFORE test str::bench::char_indicesator ... bench: 124 ns/iter (+/- 1) test str::bench::char_indicesator_rev ... bench: 188 ns/iter (+/- 9) test str::bench::char_iterator ... bench: 122 ns/iter (+/- 2) test str::bench::char_iterator_ascii ... bench: 302 ns/iter (+/- 41) test str::bench::char_iterator_for ... bench: 123 ns/iter (+/- 4) test str::bench::char_iterator_rev ... bench: 189 ns/iter (+/- 14) test str::bench::char_iterator_rev_for ... bench: 177 ns/iter (+/- 4) AFTER test str::bench::char_indicesator ... bench: 85 ns/iter (+/- 3) test str::bench::char_indicesator_rev ... bench: 82 ns/iter (+/- 2) test str::bench::char_iterator ... bench: 100 ns/iter (+/- 3) test str::bench::char_iterator_ascii ... bench: 317 ns/iter (+/- 3) test str::bench::char_iterator_for ... bench: 86 ns/iter (+/- 2) test str::bench::char_iterator_rev ... bench: 80 ns/iter (+/- 6) test str::bench::char_iterator_rev_for ... bench: 68 ns/iter (+/- 0) ``` Note: Branch name is no longer indicative of the implementation.
Diffstat (limited to 'src/rustllvm/RustWrapper.cpp')
0 files changed, 0 insertions, 0 deletions
