【问题标题】:.AddOrUpdate Method in C# how efficient is it?C# 中的 .AddOrUpdate 方法效率如何?
【发布时间】:2014-03-31 09:29:54
【问题描述】:

我正在使用这种方法来更新字典对象,并想知道它的性能到底是什么——是恒定时间还是对存储的 kvp(键值对)的数量有一些依赖性?有没有人知道用这种方法更新字典的性能。

【问题讨论】:

  • 嗯,大概是ConcurrentDictionary,而不仅仅是Dictionary,对吧?这很容易影响事情。特别是,您使用的线程数很可能会改变结果。你制定出你的性能要求了吗?

标签: c# dictionary key


【解决方案1】:

如果您谈论的是ConcurrentDictionary.AddOrUpdate(),性能将取决于几个因素。

字典被实现为一个通用的hashtable。因此,单线程场景中的平均插入将在常数时间内运行,常数取决于负载因子和用于散列键的函数的质量。

在多线程情况下,插入时间可能与写入冲突的可能性密切相关,即 2 个线程尝试同时写入字典的可能性。后者与使用数据结构的线程数和写操作的频率成正比。

【讨论】:

    猜你喜欢
    • 2017-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-15
    • 2013-01-17
    • 2019-08-02
    相关资源
    最近更新 更多