本文来告诉大家我实际使用基准测试的在 .NET Core 3.1 的链表 LinkedList 和 Dictionary 字典的在元素增删的性能对比
从算法分析上,其实字典和链表在时间上的性能是差不多的,甚至可以认为字典的速度会比链表更高。但是从空间上,如果一边增加元素一边删除元素那还是链表省空间。同时在字典空间满了之后,修改字典容量会比链表使用更多的时间
以下是我用不够严谨的基准性能测试的数据
下面是对比一边加入元素一边删除元素的性能
Method | Mean | Error | StdDev | Ratio | RatioSD |
---|---|---|---|---|---|
'LinkedList' | 2,424.9 us | 28.53 us | 23.83 us | ? | ? |
'Dictionary' | 686.0 us | 5.61 us | 4.97 us | 1.00 | 0.00 |
下面是将元素完全加入之后再删除全部删除的性能对比
Method | Mean | Error | StdDev | Ratio | RatioSD |
---|---|---|---|---|---|
'LinkedList' | 2.582 ms | 0.0303 ms | 0.0253 ms | ? | ? |
'Dictionary' | 1.366 ms | 0.0192 ms | 0.0170 ms</ |