C#实现HashTable类,能达到效率和.NET里面的HashTable一样,可用帖子 http://topic.csdn.net/u/20090823/21/032c6587-ff8a-4d97-858f-73b752b6ca22.html 来测试效率,其中要写的方法类似如下:
long begin = System.DateTime.Now.Ticks; Hashtable hshTable = new Hashtable(); foreach (string item in input)
{
string sKey = item;
if (!hshTable.Contains(sKey))
hshTable.Add(sKey, item);
} long end = System.DateTime.Now.Ticks;
Console.WriteLine("Hashtable test: 总共" + hshTable.Count + "个数据" + ",做完需要" + (end - begin) / 10000 + "毫秒");看哪个牛人能比微软实现的效率还高,哈哈
long begin = System.DateTime.Now.Ticks; Hashtable hshTable = new Hashtable(); foreach (string item in input)
{
string sKey = item;
if (!hshTable.Contains(sKey))
hshTable.Add(sKey, item);
} long end = System.DateTime.Now.Ticks;
Console.WriteLine("Hashtable test: 总共" + hshTable.Count + "个数据" + ",做完需要" + (end - begin) / 10000 + "毫秒");看哪个牛人能比微软实现的效率还高,哈哈
解决方案 »
- [求助] 点对点的视频聊天 winform 版 的 应该如何入手?
- 关于 Order By 的问题??
- C#调用C++dll
- vs2008 express 不能在创建项目时,选择版本,怎么办?
- configuration ?????
- 请教一下,局域网中数据连接的问题
- 控制不能从一个 case 标签(“case 0:”)贯穿到另一个 case 标签
- 【初学者提问】开发程序时,如何设计类?
- 控件绑定数据源后控件中的数据更新如何返回数据库?
- 谁知道那里有详细介绍关于c#的数据库方面的书?告诉我几本,谢谢!
- IrisSkin2.dll 问题
- 水晶报表改变数据源之后的问题(使用微软的xsd数据集进行绑定)
当把某个元素添加到 Hashtable 时,将根据键的哈希代码将该元素放入存储桶中。该键的后续查找将使用键的哈希代码只在一个特定存储桶中搜索,这将大大减少为查找一个元素所需的键比较的次数。
这种算法的速度是很快的,接近于 O(1)。但也牺牲了内存。想不到更快的。从原理上讲
不用反编译,
代码我己经贴出来了.
在原贴的第:
63楼/63楼.
(一个回贴放不下...)不该在HashTable函数上做文章,
应该在GetHashCode的自定义函数上想办法.
具体见:
http://topic.csdn.net/u/20090824/12/67d3acfd-a6e5-4ebe-8261-c16fd28a4d0d.html
里面有个自制的dictionary.有兴趣你可以去看看.
哈希算法是key类提供的,好像和hashtable没有关系呀
简单说一下, string在内存中的结构可不是字符串 他是一组结构的2进制编码
如果你用utf-8来保存string 当你查找某一str是否在集合中 str也会被utf-8转2进制
然后2进制算0和1的个数 长度 然后对比已经存在的长度 01个数 最后(?)然后详细对比
微软的hashtable速度来说 已经第3次优化了 超级猛了
我这个速度基本赶上 当然了 我还有商业级算法 这里不能说了 抱歉
//检索速度取决于为 TKey 指定的类型的哈希算法的质量。