最近用hashtable时发现,C#中的hashtable中的key值和value值都是object的,不知道能否强制为是值类型的?如果不能的话是不是会大大降低效率?另外如果不设最大值的话,hashtale加几十万条会出现什么情况?在十万级的hashtale中取值的话。假设我做一个windows服务提供这个hashtale的检索服务。普通的pcserver大约能检索几次。另外,大数量级的检索是用两级hashtable好还是在一个大hashtable中检索来的快?请各位高手不吝赐教。分不多见谅。
解决方案 »
- 汇信通的短信发送接收,在线等·各位大侠来帮忙
- 如何使“用户控件”显示在最前
- datalist嵌套datalist如何获取父控件的值
- FillEllipse画出来的圆为什么不圆呢,右边和下边有塌陷的感觉
- 如何每隔一个小时备份SQL数据库中某个表中的字段的信息并写入日志文件
- 用c#怎么执行一个sql脚本(如:abc.sql)
- 找不到存储过程?
- 有没有vc中sleep(1000)的等待函数
- 高手看过来 ---关于如果根据配置文件定义动态生成windows form
- 小白准备学编程 老司机们推荐学pyhton还是C家族的还是Java
- 简单反射问题<----------------
- winform中如何重新控件的visible属性
数据量不大Dictionary、SortedDictionary、SortedList在搜索上都差不多
如果数据量非常大,应该使用SortedDictionary
就是要使用多线程,所以用hashtable另外写线程也是多个,我可以用自同步hashtable保证删改,添加的话,还是要加锁。十万条记录算大还是小?
Hashtable、Dictionary、SortedDictionary、SortedList另外问一下。除Hashtable外,其它几个是线程安全的吗,我没有太用过。
如果键和值都是单一类型 你可以考虑使用 Dictoinary
我就是用的这个Synchronized自同步包装,但看到有文档上介绍说在进行多线程添加时还是会出错,那个作者建议多线程添加时要加锁。不知道Dictionary、SortedDictionary、SortedList这几个支不支持自同步包装。另外hashtable中的检索的Hash具有O(1)的效率好象是几个中最高的。不知道SortedDictionary的效率是如何的,我在内存中存入的表数据不会超100万条,都是简单的string型,所以不太用在意内存消耗。但对插入操作还是有一定的效率要求的。
看了有介绍说hashtable是派生自dictionary。看int型的测试结果,可以感觉hashtable的拆装箱费时不少。现在有点想用dictionary了,可它好象不是线程安全的。不知道那位高人能帮咱做个dictionary的Synchronized包装方法,或者介绍下实现过程,要是让咱自己加锁可有点过时啊。==============================================当key value都是int的时候hashtable(默认因子)
添加 1~1000000 256ms
查key 1~1000000 359msdictionary
添加 1~1000000 81ms
查key 1~1000000 24mssortedDictionary
添加 1~1000000 747ms
查key 1~1000000 576ms当key vlaue都是string的时候hashtable(默认因子)
添加 1~1000000 1460ms
查key 1~1000000 1798msdictionary
添加 1~1000000 938ms
查key 1~1000000 324mssortedDictionary
添加 1~1000000 5598ms
查key 1~1000000 3361ms