例如(正在播放):
import (
"strings"
"testing"
)
func BenchmarkStrip1(b *testing.B) {
for br := 0; br < b.N; br++ {
host := "subdomain.domain.tld"
s := strings.Index(host, ".")
_ = host[:s]
}
}
func BenchmarkStrip2(b *testing.B) {
for br := 0; br < b.N; br++ {
host := "subdomain.domain.tld"
strings.TrimSuffix(host, ".domain.tld")
}
}
Run Code Online (Sandbox Code Playgroud)
将此代码存储somename_test.go并运行go test -test.bench='.*'.对我来说,这给出了以下输出:
% go test -test.bench='.*'
testing: warning: no tests to run
PASS
BenchmarkStrip1 100000000 12.9 ns/op
BenchmarkStrip2 100000000 16.1 ns/op
ok 21614966 2.935s
Run Code Online (Sandbox Code Playgroud)
基准测试实用程序将尝试执行一定数量的运行,直到测量到有意义的时间,这将在数字的输出中反映出来100000000.代码是运行
100000000时间,循环中的每个操作分别占用12.9 ns和16.1 ns.因此,您可以得出结论,代码BenchmarkStrip1执行得更好.
无论结果如何,通常最好对您的程序进行分析,以了解真正的瓶颈在哪里,而不是浪费您的时间与这些微基准测试.
我也不建议您编写自己的基准测试,因为您可能不会考虑一些因素,例如垃圾收集器和运行样本足够长的时间.
| 归档时间: |
|
| 查看次数: |
74 次 |
| 最近记录: |