benchmark 性能测试
2022年1月18日
1 2 3 4 5 6 7 8 9 10 |
/** * 测试代码性能的方法 */ func BenchmarkZf(b *testing.B) { b.ResetTimer() for i := 0; i < b.N; i++ { //写需要测试代码的地方 } b.StopTimer() } |
写一段代码用于性能测试
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
package benchmark_test import ( "bytes" "testing" ) func BenchmarkConcatStringByAdd(b *testing.B) { elems := []string{"1", "2", "3", "4", "5"} b.ResetTimer() for i := 0; i < b.N; i++ { ret := "" for _, elem := range elems { ret += elem } } b.StopTimer() } func BenchmarkConcatStringByBytesBuffer(b *testing.B) { elems := []string{"1", "2", "3", "4", "5"} b.ResetTimer() for i := 0; i < b.N; i++ { var buf bytes.Buffer for _, elem := range elems { buf.WriteString(elem) } } b.StopTimer() } |
使用命令行运行性能测试
1 |
go test -bench=. -benchmem |
测试结果如何看
1 2 3 4 5 6 7 |
goos: windows goarch: amd64 pkg: zfgo/src/ch35/benchmark cpu: AMD Ryzen 7 5800H with Radeon Graphics BenchmarkZf kZf-16 78924//越小越好 14842 ns/op//越小越好 PASS |
可以看出 Buffer 拼接的速度快于 str