From 08115d463b5de1afaefa0c85e6020053c23b8536 Mon Sep 17 00:00:00 2001 From: kercylan98 Date: Wed, 29 Nov 2023 16:25:54 +0800 Subject: [PATCH] =?UTF-8?q?test:=20=E4=B8=BA=20buffer.Unbounded=20?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=9F=BA=E5=87=86=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 我们为 buffer.Unbounded 中的 Put、Load 和 Get 方法添加了基准测试,以便在高并发条件下衡量这些方法的性能。新增的测试将使我们能够验证并提高这些函数的效率。 --- utils/buffer/unbounded_benchmark_test.go | 36 ++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 utils/buffer/unbounded_benchmark_test.go diff --git a/utils/buffer/unbounded_benchmark_test.go b/utils/buffer/unbounded_benchmark_test.go new file mode 100644 index 0000000..3d9b2bb --- /dev/null +++ b/utils/buffer/unbounded_benchmark_test.go @@ -0,0 +1,36 @@ +package buffer_test + +import ( + "github.com/kercylan98/minotaur/utils/buffer" + "testing" +) + +func BenchmarkUnboundedBuffer(b *testing.B) { + ub := buffer.NewUnboundedN[int]() + + b.Run("Put", func(b *testing.B) { + for i := 0; i < b.N; i++ { + ub.Put(i) + } + }) + + b.Run("Load", func(b *testing.B) { + for i := 0; i < b.N; i++ { + ub.Load() + } + }) + + // 先填充数据以防止 Get 被阻塞 + for i := 0; i < b.N; i++ { + ub.Put(i) + } + + b.Run("Get", func(b *testing.B) { + b.ResetTimer() + for i := 0; i < b.N; i++ { + ub.Put(i) + <-ub.Get() + ub.Load() + } + }) +}