Jam*_*ead 3 c# generics hash caching dictionary
我用a Dictionary<>来存储数以亿计的物品.是否可以安全地假设,只要服务器的内存有足够的空间来容纳我将接近O(1)从中检索项目的这些无数物品?当性能很重要时,我应该知道如何将通用词典用作大缓存?
编辑:我不应该依赖默认的实现?是什么促成了良好的散列函数?
你应该测量它并找出答案.您是了解字典确切用法的人,因此您可以衡量字典是否符合您的需求.
一条忠告:我过去对大字典结构进行了性能分析,发现随着字典变得非常大,性能确实降低了.但它似乎在这里和那里降级,而不是每次操作都一致.我在尝试分析哈希算法等方面做了很多工作,然后在额头上打了一拳.该垃圾收集器是越来越慢,因为我有这么多的现场工作组; 字典和以往一样快,但是如果一个集合碰巧被触发,那就是吃掉了我的周期.
这就是为什么不在不切实际的基准测试场景中进行性能测试很重要的原因; 找出你的bazillion-item字典的实际性能成本是什么,好吧,这将是关于许多与你的字典无关的东西的门控,比如在你的其余部分中发生了多少集合触发程序,何时.