mirror of
https://github.com/genuinetools/reg.git
synced 2024-09-15 15:11:02 -04:00
83 lines
1.7 KiB
Go
83 lines
1.7 KiB
Go
|
// 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)
|
||
|
}
|
||
|
})
|
||
|
}
|