change n>>1 to n/2; new BenchmarkRepeat

This commit is contained in:
go101 2018-08-21 14:26:31 -04:00
parent c49153f038
commit 54d85542b0
2 changed files with 10 additions and 15 deletions

View File

@ -554,7 +554,7 @@ func Repeat(s string, count int) string {
b.Grow(n)
b.WriteString(s)
for b.Len() < n {
if b.Len() <= n>>1 {
if b.Len() <= n/2 {
b.WriteString(b.String())
} else {
b.WriteString(b.String()[:n-b.Len()])

View File

@ -1647,21 +1647,16 @@ func BenchmarkSplitNMultiByteSeparator(b *testing.B) {
}
func BenchmarkRepeat(b *testing.B) {
b.Run("length-1", func(b *testing.B) {
for i := 0; i < b.N; i++ {
Repeat("-", 80)
s := Repeat("-", 16)
for n := 1; n <= 16; n <<= 1 {
for _, c := range []int{2, 6, 10} {
b.Run(fmt.Sprintf("length=%d-count=%d", n, c), func(b *testing.B) {
for i := 0; i < b.N; i++ {
Repeat(s[:n], c)
}
})
}
})
b.Run("length-5", func(b *testing.B) {
for i := 0; i < b.N; i++ {
Repeat("-!@#$", 80)
}
})
b.Run("length-10", func(b *testing.B) {
for i := 0; i < b.N; i++ {
Repeat("-!@#$abcde", 80)
}
})
}
}
func BenchmarkIndexAnyASCII(b *testing.B) {