Skip to main content
Version: 2.7.x

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