c# – 用于只读字典访问的最有效的内存数据结构
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – 用于只读字典访问的最有效的内存数据结构,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1292字,纯文字阅读大概需要2分钟。
内容图文
![c# – 用于只读字典访问的最有效的内存数据结构](/upload/InfoBanner/zyjiaocheng/967/8b6b49cf3f524ccb889718a92bfbe916.jpg)
在C#中,我有一些静态数据可以放在Dictionary< int,T>中.其中T是一些参考类型. Web应用程序只需要静态初始化一次(它不会更改).
由于我不必担心插入或删除性能,使用什么是最好的数据结构(或者我应该自己动手)?我可能会看到大约100,000个条目,间隔相当均匀.
我正在寻找一种获取这些数据的最佳算法.字典<>虽然不错,但我认为必须有针对只读数据优化的东西.
我怀疑,但尚未确认这些密钥的范围可能是0 – 400,000.如果是这样的话,建议会如何变化? (我想我会发布一个可能的答案).
也许我可以:
>扫描一次数据并抓住最高的密钥
>分配具有最高键1的大小的数组.
>再次传递并将数据存储在数组中.
这会比具有合理负载系数的HashTable / Dictionary更好还是更差?
解决方法:
Dicrionary是正确的方法,这里引用MSDN:
The Dictionary(Of TKey, TValue) generic class provides a mapping from
a set of keys to a set of values. Each addition to the dictionary
consists of a value and its associated key. Retrieving a value by
using its key is very fast, close to O(1), because the Dictionary(Of
TKey, TValue) class is implemented as a hash table.
因此,在构建字典(计算哈希值和构建树)时需要花费大量时间,但是通过密钥读取数据会很快暴风雪.
编辑
如果您在0-400k范围内有超过50%的密钥,那么使用简单的arrray是有意义的,其中key是项目索引.这将给你O(1)复杂性.
但根据你的问题,只有25%的钥匙会出现.所以在这种情况下我会使用字典,我认为与简单数组相比,它存储75%的内存开销来存储每个键值对.
内容总结
以上是互联网集市为您收集整理的c# – 用于只读字典访问的最有效的内存数据结构全部内容,希望文章能够帮你解决c# – 用于只读字典访问的最有效的内存数据结构所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。