diff options
author | Rob Pike <r@golang.org> | 2009-11-25 13:30:30 -0800 |
---|---|---|
committer | Rob Pike <r@golang.org> | 2009-11-25 13:30:30 -0800 |
commit | 7adacb9db77233b07dcbf2132fbb54aaa81cf729 (patch) | |
tree | 4aaa390895889cf4a3985d7bf6ac338933911dd6 | |
parent | 28cf06ab6174024ddc9084cbcc5ea52fa52aa757 (diff) | |
download | golang-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.go | 40 |
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) + } +} |