Prechádzať zdrojové kódy

解读性能测试结果

黄中银 1 týždeň pred
rodič
commit
08fbcf400c
1 zmenil súbory, kde vykonal 23 pridanie a 7 odobranie
  1. 23 7
      README.md

+ 23 - 7
README.md

@@ -132,32 +132,48 @@ dotnet run -c Release -- --filter *NodeBenchmarks*
 ### 性能测试结果
 
 测试环境:Windows 11, .NET SDK 9.0.308, BenchmarkDotNet v0.14.0
+测试配置:5 次预热 + 10 次迭代
 
 #### BubblingChange 创建性能
 
 | 方法 | .NET 6 | .NET 8 | .NET 9 | 内存分配 |
 |------|--------|--------|--------|----------|
-| CreateBubblingChange | 5.24 ns | 3.07 ns | **3.04 ns** | 24 B |
-| CreateBubblingChangeWithPath | 9.32 ns | 4.81 ns | **5.05 ns** | 72 B |
+| CreateBubblingChange | 5.56 ns | 3.22 ns | **3.27 ns** | 24 B |
+| CreateBubblingChangeWithPath | 10.04 ns | 5.36 ns | **5.09 ns** | 72 B |
 
 #### Messenger 消息性能
 
 | 方法 | .NET 6 | .NET 8 | .NET 9 | 内存分配 |
 |------|--------|--------|--------|----------|
-| Publish_SingleChange | 950.4 ns | 495.9 ns | **323.7 ns** | 456 B |
-| RentAndReturn_Message | 20.0 ns | 23.0 ns | **11.5 ns** | 0 B |
+| Publish_SingleChange | 949.0 ns | 652.3 ns | **540.1 ns** | 456 B |
+| RentAndReturn_Message | 32.1 ns | 35.8 ns | **19.4 ns** | 0 B |
 
 > 消息池租借/归还实现了零 GC 分配
 
+#### Node 节点操作性能
+
+| 方法 | .NET 6 | .NET 8 | .NET 9 | 内存分配 |
+|------|--------|--------|--------|----------|
+| ListNode_Add | 2201.6 ns | 2239.9 ns | **2176.3 ns** | 808 B |
+| ListNode_AddAndRemove | 2112.8 ns | 938.1 ns | **670.5 ns** | 1208 B |
+| DictNode_Put | 3771.1 ns | 2835.5 ns | **2916.3 ns** | 888 B |
+| DictNode_PutAndRemove | 5702.9 ns | 3420.0 ns | **3488.2 ns** | 1648 B |
+
 #### 性能总结
 
 | 运行时 | 相对性能 |
 |--------|---------|
 | .NET 6 | 基准 (1.0x) |
-| .NET 8 | 快 1.7-2.0x |
-| .NET 9 | 快 1.7-2.9x |
+| .NET 8 | 快 1.3-2.3x |
+| .NET 9 | 快 1.4-3.2x |
+
+**关键发现**:
+- **BubblingChange 创建**:.NET 8/9 比 .NET 6 快约 **40-50%**
+- **消息发布**:.NET 9 比 .NET 6 快约 **43%**
+- **列表节点移除**:.NET 9 比 .NET 6 快约 **3.2 倍**(性能提升最显著)
+- **消息池**:零 GC 分配,.NET 9 下仅需 19.4 ns
 
-**推荐**:在 .NET 9 环境下运行可获得最佳性能。
+**推荐**:在 .NET 8/9 环境下运行可获得最佳性能。
 
 ## 许可证