about summary refs log tree commit diff
path: root/src/test/bench
diff options
context:
space:
mode:
authorGary Linscott <glinscott@gmail.com>2013-07-11 14:45:45 -0400
committerGary Linscott <glinscott@gmail.com>2013-07-11 15:02:12 -0400
commit8926b31088bdb04d1fa772afa0a7dcbc13b38c1f (patch)
treed115711b84335ecb12091c008460b8c9688a0838 /src/test/bench
parent5aee5a11e3d4807c6df190e33cc6c4dc81ef7ea3 (diff)
downloadrust-8926b31088bdb04d1fa772afa0a7dcbc13b38c1f.tar.gz
rust-8926b31088bdb04d1fa772afa0a7dcbc13b38c1f.zip
Add is_utf8 bench tests
Before:
is_utf8_ascii:          272.355162 ms
is_utf8_multibyte:      167.337334 ms

After:
is_utf8_ascii:          218.088049 ms
is_utf8_multibyte:      134.836722 ms
Diffstat (limited to 'src/test/bench')
-rw-r--r--src/test/bench/core-std.rs24
1 files changed, 24 insertions, 0 deletions
diff --git a/src/test/bench/core-std.rs b/src/test/bench/core-std.rs
index 867be38545c..82139ca3c16 100644
--- a/src/test/bench/core-std.rs
+++ b/src/test/bench/core-std.rs
@@ -19,6 +19,7 @@ use std::os;
 use std::rand::RngUtil;
 use std::rand;
 use std::result;
+use std::str;
 use std::uint;
 use std::util;
 use std::vec;
@@ -36,6 +37,8 @@ fn main() {
     bench!(vec_plus);
     bench!(vec_append);
     bench!(vec_push_all);
+    bench!(is_utf8_ascii);
+    bench!(is_utf8_multibyte);
 }
 
 fn maybe_run_test(argv: &[~str], name: ~str, test: &fn()) {
@@ -127,3 +130,24 @@ fn vec_push_all() {
         }
     }
 }
+
+fn is_utf8_ascii() {
+    let mut v : ~[u8] = ~[];
+    for uint::range(0, 20000) |_| {
+        v.push('b' as u8);
+        if !str::is_utf8(v) {
+            fail!("is_utf8 failed");
+        }
+    }
+}
+
+fn is_utf8_multibyte() {
+    let s = "b¢€𤭢";
+    let mut v : ~[u8]= ~[];
+    for uint::range(0, 5000) |_| {
+        v.push_all(s.as_bytes());
+        if !str::is_utf8(v) {
+            fail!("is_utf8 failed");
+        }
+    }
+}