目录
1. 写在前面
微信公众号:[double12gzh]
关注容器技术、关注
Kubernetes
。问题或建议,请公众号留言。
在上一篇文章中,我们介绍了GoLang中字符串不同的比较方法,同时也使用一种比较简单粗暴的方法来一起了下不同方法的执行时间。
在本文中,我们还是会针对前面提到的不同的比较方法,这次,我们使用benchmark的方式来看一下,不同的比较方法的效率。
2. Benchmark测试
2.1 准备测试代码
hello/utils/str/compare.go
package str
import (
"main/utils/reader"
"strings"
)
// BasicCompare 区分大小写。使用==进行比较
func BasicCompare(src, dest string) bool {
if len(src) != len(dest) {
return false
}
if src == dest {
return true
} else {
return false
}
}
// CompareCompare 区分大小写。使用strings包中的Compare进行比较
func CompareCompare(src, dest string) bool {
if len(src) != len(dest) {
return false
}
if strings.Compare(src, dest) == 0 {
return true
} else {
return false
}
}
// CaseInSensitiveBasicCompare 不区分大小写。使用==进行比较
func CaseInSensitiveBasicCompare(src, dest string) bool {
if len(src) != len(dest) {
return false
}
if strings.ToLower(src) == strings.ToLower(dest) {
return true
} else {
return false
}
}
// CaseInSensitiveCompareCompare 不区分大小写。使用Compare进行比较
func CaseInSensitiveCompareCompare(src, dest string) bool {
if len(src) != len(dest) {
return false
}
if strings.Compare(strings.ToLower(src), strings.ToLower(dest)) == 0 {
return true
} else {
return false
}
}
// CaseInSensitiveEqualFoldCompare 不区分大小写。使用EqualFold进行比较
func CaseInSensitiveEqualFoldCompare(a string, b string) bool {
if len(a) != len(b) {
return false
}
if strings.EqualFold(a, b) {
return true
} else {
return false
}
}
hello/utils/str/compare_test.go
package str
import (
"testing"
)
func BenchmarkBasicCompare(b *testing.B) {
for n := 0; n < b.N; n++ {
BasicCompare("you are dog sun, sb wu", "you are dog sun, sb wU")
}
}
func BenchmarkCompareCompare(b *testing.B) {
for n := 0; n < b.N; n++ {
CompareCompare("you are dog sun, sb wu", "you are dog sun, sb wU")
}
}
func Benchmar