小结:
1、
内存分配的基准测试
go test -run=^$ -bench=. bufio
% go test -run=XXX -bench=. -cpuprofile=c.p bytes
% go tool pprof c.p
基准测试
package main type S [12]int64 var sX = make([]S, 1000) var sY = make([]S, 1000) var sZ = make([]S, 1000) var sumX, sumY, sumZ int64 func Loop() { sumX = 0 for j := 0; j < len(sX); j++ { sumX += sX[j][0] } } func Range_OneIterVar() { sumY = 0 for j := range sY { sumY += sY[j][0] } } func Range_TwoIterVar() { sumZ = 0 for _, v := range sZ { sumZ += v[0] } }
package main import "testing" func Benchmark_Loop(b *testing.B) { for i := 0; i < b.N; i++ { sumX = 0 for j := 0; j < len(sX); j++ { sumX += sX[j][0] } } } func Benchmark_Range_OneIterVar(b *testing.B) { for i := 0; i < b.N; i++ { sumY = 0 for j := range sY { sumY += sY[j][0] } } } func Benchmark_Range_TwoIterVar(b *testing.B) { for i := 0; i < b.N; i++ { sumZ = 0 for _, v := range sZ { sumZ += v[0] } } }
Running tool: C:\Program Files\Go\bin\go.exe test -benchmem -run=^$ -coverprofile=C:\Users\XLE~1.FEN\AppData\Local\Temp\vscode-gos5y16I\go-code-cover -bench . A
goos: windows
goarch: amd64
pkg: A
cpu: Intel(R) Core(TM) i5-6500 CPU @ 3.20GHz
Benchmark_Loop-4 720507 1722 ns/op 0 B/op 0 allocs/op
Benchmark_Range_OneIterVar-4 725149 1843 ns/op 0 B/op 0 allocs/op
Benchmark_Range_TwoIterVar-4 300584 4271 ns/op 0 B/op 0 allocs/op
PASS
coverage: 0.0% of statements
ok A 4.179s
1. Go 性能调优之 —— 基准测试 - SegmentFault 思否 https://segmentfault.com/a/1190000016354758