Mic*_*out 1 .net string hashtable
今天我和其他开发人员讨论了第三方库中的限制,我们不能在字符串中使用空格.原因是字符串在.NET Hashtable中用作键,并且当键包含空格时,搜索.NET HashTable的速度明显变慢.
既然我懒得写一个测试,但我仍然想知道为什么会这样,我在这里问我的问题:
当使用的字符串包含空格时,搜索Hashtable会变慢吗?
我不希望这样,因为在执行搜索之前,使用String.GetHashCode()获取散列,然后使用该散列来定位表中的条目.
谢谢!
直接来自Rotor源,String.GetHashcode方法的核心:
int c;
char *s = src;
while ((c = s[0]) != 0) {
hash1 = ((hash1 << 5) + hash1) ^ c;
c = s[1];
if (c == 0)
break;
hash2 = ((hash2 << 5) + hash2) ^ c;
s += 2;
}
Run Code Online (Sandbox Code Playgroud)
我可以弥补这一点:空间没有得到任何特殊处理.
结论:
归档时间: |
|
查看次数: |
256 次 |
最近记录: |