李战:
昨天仔细想了一下,C和汇编各有优势的,因为
[阅读: 543] 2005-11-26 01:01:35
这句:
while (len >= 8)
{
DO8(buf);
len -= 8;
}
对于大数据块,虽然只需要循环Size/8次,但每一次循环也做了8次CRC操作(DO8展开后是8次CRC操作)。似乎节约了3/4的跳转指令周期,但每一次循环都增加了条件判断(len>=8)的判断指令。而且其中的len-=8的指令中涉及附加操作数,没有汇编的DEC指令快。
关键是汇编的DEC之后:
DEC EDX
JNE @@loop
可立即用JNE判断零标志位,又省掉一条指令。
当然,C语言省掉的跳转指令是汇编的3/4,而多余的指令是汇编的1/4。因此,Size只要稍微大一点就,C的就比汇编快。
不过,如果汇编也改成Size/8的算法的话,就牛了!
那就要看看那位的牛角比较尖了,哈哈哈
李战(leadzen)