使用场景

一句话总结:保存和复用临时对象,减少内存分配,降低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