中国开发网: 论坛: 程序员情感CBD: 贴子 246575
李战
昨天仔细想了一下,C和汇编各有优势的,因为
这句:
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)

相关信息:


欢迎光临本社区,您还没有登录,不能发贴子。请在 这里登录