https://github.com/gogf/gf/v2/blob/master/container/gqueue/gqueue_z_bench_test.go

gqueue与标准库channel的性能基准测试,其中每一次基准测试的b.N值均为20000000,以保证动态队列存取一致防止deadlock:

goos: linux
goarch: amd64
pkg: github.com/gogf/gf/v2/container/gqueue
Benchmark_Gqueue_StaticPushAndPop-4       20000000            84.2 ns/op
Benchmark_Gqueue_DynamicPush-4            20000000             164 ns/op
Benchmark_Gqueue_DynamicPop-4             20000000             121 ns/op
Benchmark_Channel_PushAndPop-4            20000000            70.0 ns/op
PASS

可以看到标准库的channel的读写性能是非常高的,但是创建的时候由于需要初始化内存,因此创建channel的时候效率非常非常低(初始化即分配内存),并且受到队列大小的限制,写入的数据不能超过指定的队列大小。gqueue使用起来比channel更加灵活,不仅创建效率高(动态分配内存),不受队列大小限制(也可限定大小)。


  • No labels