OSDN Git Service

Hulk did something
[bytom/vapor.git] / vendor / golang.org / x / text / secure / precis / benchmark_test.go
diff --git a/vendor/golang.org/x/text/secure/precis/benchmark_test.go b/vendor/golang.org/x/text/secure/precis/benchmark_test.go
new file mode 100644 (file)
index 0000000..6337d00
--- /dev/null
@@ -0,0 +1,82 @@
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build go1.7
+
+package precis
+
+import (
+       "testing"
+
+       "golang.org/x/text/internal/testtext"
+)
+
+var benchData = []struct{ name, str string }{
+       {"ASCII", "Malvolio"},
+       {"NotNormalized", "abcdefg\u0301\u031f"},
+       {"Arabic", "دبي"},
+       {"Hangul", "동일조건변경허락"},
+}
+
+var benchProfiles = []struct {
+       name string
+       p    *Profile
+}{
+       {"FreeForm", NewFreeform()},
+       {"Nickname", Nickname},
+       {"OpaqueString", OpaqueString},
+       {"UsernameCaseMapped", UsernameCaseMapped},
+       {"UsernameCasePreserved", UsernameCasePreserved},
+}
+
+func doBench(b *testing.B, f func(b *testing.B, p *Profile, s string)) {
+       for _, bp := range benchProfiles {
+               for _, d := range benchData {
+                       testtext.Bench(b, bp.name+"/"+d.name, func(b *testing.B) {
+                               f(b, bp.p, d.str)
+                       })
+               }
+       }
+}
+
+func BenchmarkString(b *testing.B) {
+       doBench(b, func(b *testing.B, p *Profile, s string) {
+               for i := 0; i < b.N; i++ {
+                       p.String(s)
+               }
+       })
+}
+
+func BenchmarkBytes(b *testing.B) {
+       doBench(b, func(b *testing.B, p *Profile, s string) {
+               src := []byte(s)
+               b.ResetTimer()
+               for i := 0; i < b.N; i++ {
+                       p.Bytes(src)
+               }
+       })
+}
+
+func BenchmarkAppend(b *testing.B) {
+       doBench(b, func(b *testing.B, p *Profile, s string) {
+               src := []byte(s)
+               dst := make([]byte, 0, 4096)
+               b.ResetTimer()
+               for i := 0; i < b.N; i++ {
+                       p.Append(dst, src)
+               }
+       })
+}
+
+func BenchmarkTransform(b *testing.B) {
+       doBench(b, func(b *testing.B, p *Profile, s string) {
+               src := []byte(s)
+               dst := make([]byte, 2*len(s))
+               t := p.NewTransformer()
+               b.ResetTimer()
+               for i := 0; i < b.N; i++ {
+                       t.Transform(dst, src, true)
+               }
+       })
+}