diff options
| author | blake2-ppc <blake2-ppc> | 2013-08-26 11:48:48 +0200 |
|---|---|---|
| committer | blake2-ppc <blake2-ppc> | 2013-08-26 11:48:48 +0200 |
| commit | 413f868220e0ccd5fcc728be5ebde1f8e4eabf19 (patch) | |
| tree | f312372b822363daacc73090a799d02e8faa15eb /src/libstd | |
| parent | b59d50368e5223d9c66c7a64c5aeff2b8e9b343f (diff) | |
| download | rust-413f868220e0ccd5fcc728be5ebde1f8e4eabf19.tar.gz rust-413f868220e0ccd5fcc728be5ebde1f8e4eabf19.zip | |
std::str: bench tests for .split_iter()
Diffstat (limited to 'src/libstd')
| -rw-r--r-- | src/libstd/str.rs | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/src/libstd/str.rs b/src/libstd/str.rs index d4f1c37f7a2..057d09bd665 100644 --- a/src/libstd/str.rs +++ b/src/libstd/str.rs @@ -3763,6 +3763,89 @@ mod bench { } #[bench] + fn split_iter_unicode_ascii(bh: &mut BenchHarness) { + let s = "ประเทศไทย中华Việt Namประเทศไทย中华Việt Nam"; + + do bh.iter { + assert_eq!(s.split_iter('V').len(), 3); + } + } + + #[bench] + fn split_iter_unicode_not_ascii(bh: &mut BenchHarness) { + struct NotAscii(char); + impl CharEq for NotAscii { + fn matches(&self, c: char) -> bool { + **self == c + } + fn only_ascii(&self) -> bool { false } + } + let s = "ประเทศไทย中华Việt Namประเทศไทย中华Việt Nam"; + + do bh.iter { + assert_eq!(s.split_iter(NotAscii('V')).len(), 3); + } + } + + + #[bench] + fn split_iter_ascii(bh: &mut BenchHarness) { + let s = "Mary had a little lamb, Little lamb, little-lamb."; + let len = s.split_iter(' ').len(); + + do bh.iter { + assert_eq!(s.split_iter(' ').len(), len); + } + } + + #[bench] + fn split_iter_not_ascii(bh: &mut BenchHarness) { + struct NotAscii(char); + impl CharEq for NotAscii { + #[inline] + fn matches(&self, c: char) -> bool { **self == c } + fn only_ascii(&self) -> bool { false } + } + let s = "Mary had a little lamb, Little lamb, little-lamb."; + let len = s.split_iter(' ').len(); + + do bh.iter { + assert_eq!(s.split_iter(NotAscii(' ')).len(), len); + } + } + + #[bench] + fn split_iter_extern_fn(bh: &mut BenchHarness) { + let s = "Mary had a little lamb, Little lamb, little-lamb."; + let len = s.split_iter(' ').len(); + fn pred(c: char) -> bool { c == ' ' } + + do bh.iter { + assert_eq!(s.split_iter(pred).len(), len); + } + } + + #[bench] + fn split_iter_closure(bh: &mut BenchHarness) { + let s = "Mary had a little lamb, Little lamb, little-lamb."; + let len = s.split_iter(' ').len(); + + do bh.iter { + assert_eq!(s.split_iter(|c: char| c == ' ').len(), len); + } + } + + #[bench] + fn split_iter_slice(bh: &mut BenchHarness) { + let s = "Mary had a little lamb, Little lamb, little-lamb."; + let len = s.split_iter(' ').len(); + + do bh.iter { + assert_eq!(s.split_iter(&[' ']).len(), len); + } + } + + #[bench] fn is_utf8_100_ascii(bh: &mut BenchHarness) { let s = bytes!("Hello there, the quick brown fox jumped over the lazy dog! \ |
