我使用大量的数组访问(静态数组,在运行时没有更改)编写一个字处理代码。我对字符串进行哈希处理,然后检查数组(查找)是否存在。但是,它的良好实施是什么?我正在以简单的方式做。如果匹配我的散列输入,则检查每个值的值。想法使其最快?哈希表中的搜索哈希
我目前检查:
如果我使用循环展开它将使这真的不同。 如果我使用无序数组,它比排序数组慢很多。 我会去看看在这种情况下矢量化是否正常。
你有什么建议?或者更好的是,你将如何实现这个算法?
这里的当前例程(它的返回到EAX
散列阵列的索引或负值时,如果没有匹配):
Index_of:
push edx
push ecx
push ebx
mov ecx,123456 ;hash example. in the real code,it's set by a routine.
xor ebx,ebx
mov eax,array
.LOOP1:
cmp [eax],ecx ;match hash?
je .FOUND
cmp byte [eax],0
je .NOTFOUND
add ebx,1
add eax,4
jmp .LOOP1
.NOTFOUND:
neg eax
jmp .DONE
.FOUND:
mov eax,ebx
.DONE:
pop ebx
pop ecx
pop edx
ret
阵列是:
; hashs for examples
array:
dd 33389990
dd 1234567
dd 81919191
dd 938383737
0
你怎么知道你发现的东西其实等于表中的东西? (哈希本身对此没有帮助。) – cHao 2013-02-19 04:54:01
什么操作系统?你是在真实模式还是保护模式下运行? – nrz 2013-02-19 10:44:32