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
更加灵活,不仅创建效率高(动态分配内存),不受队列大小限制(也可限定大小)。