使用场景
一句话总结:保存和复用临时对象,减少内存分配,降低GC压力
sync.Poolsync.Pool
使用方法
声明对象池
Get & Put
Get()interface{}Put()
性能测试
以下是性能测试的代码:
输入以下命令:
go test -bench . -benchmem
以下是性能测试的结果:
goos: windows
goarch: amd64
pkg: ginTest
cpu: 11th Gen Intel(R) Core(TM) i5-1135G7 @ 2.40GHz
BenchmarkUnmarshal-8 17004 74103 ns/op 1392 B/op 8 allocs/op
BenchmarkUnmarshalWithPool-8 17001 71173 ns/op 240 B/op 7 allocs/op
PASS
ok ginTest 3.923s
sync.Pool240/1392 = 1/6
fmt.Printfsync.Pool