summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRob Pike <r@golang.org>2009-11-25 13:30:30 -0800
committerRob Pike <r@golang.org>2009-11-25 13:30:30 -0800
commit7adacb9db77233b07dcbf2132fbb54aaa81cf729 (patch)
tree4aaa390895889cf4a3985d7bf6ac338933911dd6
parent28cf06ab6174024ddc9084cbcc5ea52fa52aa757 (diff)
downloadgolang-7adacb9db77233b07dcbf2132fbb54aaa81cf729.tar.gz
a few utf8 benchmarks. on my mac:
utf8_test.BenchmarkRuneCountTenASCIIChars 20000000 108 ns/op utf8_test.BenchmarkRuneCountTenJapaneseChars 10000000 199 ns/op utf8_test.BenchmarkEncodeASCIIRune 500000000 6 ns/op utf8_test.BenchmarkEncodeJapaneseRune 100000000 10 ns/op utf8_test.BenchmarkDecodeASCIIRune 100000000 13 ns/op utf8_test.BenchmarkDecodeJapaneseRune 100000000 21 ns/op R=gri CC=golang-dev http://codereview.appspot.com/161049
-rw-r--r--src/pkg/utf8/utf8_test.go40
1 files changed, 40 insertions, 0 deletions
diff --git a/src/pkg/utf8/utf8_test.go b/src/pkg/utf8/utf8_test.go
index 980a74b02..8dd3ad25f 100644
--- a/src/pkg/utf8/utf8_test.go
+++ b/src/pkg/utf8/utf8_test.go
@@ -167,3 +167,43 @@ func TestRuneCount(t *testing.T) {
}
}
}
+
+func BenchmarkRuneCountTenASCIIChars(b *testing.B) {
+ for i := 0; i < b.N; i++ {
+ RuneCountInString("0123456789")
+ }
+}
+
+func BenchmarkRuneCountTenJapaneseChars(b *testing.B) {
+ for i := 0; i < b.N; i++ {
+ RuneCountInString("日本語日本語日本語日")
+ }
+}
+
+func BenchmarkEncodeASCIIRune(b *testing.B) {
+ buf := make([]byte, UTFMax);
+ for i := 0; i < b.N; i++ {
+ EncodeRune('a', buf)
+ }
+}
+
+func BenchmarkEncodeJapaneseRune(b *testing.B) {
+ buf := make([]byte, UTFMax);
+ for i := 0; i < b.N; i++ {
+ EncodeRune('本', buf)
+ }
+}
+
+func BenchmarkDecodeASCIIRune(b *testing.B) {
+ a := []byte{'a'};
+ for i := 0; i < b.N; i++ {
+ DecodeRune(a)
+ }
+}
+
+func BenchmarkDecodeJapaneseRune(b *testing.B) {
+ nihon := strings.Bytes("本");
+ for i := 0; i < b.N; i++ {
+ DecodeRune(nihon)
+ }
+}