比如,假设你有一个变量c
,由于CPU的优化,你可以安全地假设它存储在寄存器中。 以下哪项更快?
c = getchar();
if( c == 033 ){
putchar( 033 );
…
}
或
c = getchar();
if( c == 033 ){
putchar( c );
…
}
我猜第一个会更快,因为它使用即时寻址而不是寄存器访问。 我的假设正确吗?
它在很大程度上取决于指令集和即时与寄存器,寄存器可能稍微慢一两个时钟,因为您需要立即或加载才能将其放入寄存器。 即时在指令中,除非指令集是可变长度的,否则它也可能会花费您的指令周期。
无论如何,putchar 都会淹没这个,数百到数千个时钟周期与您试图在这里保存的一两个时钟周期相比。
某些指令集对即时有限制。 因此,这非常依赖于指令集,然后依赖于应用程序。
这不会产生太大影响,因为这只是一个片段。相反,我会说当我们编写putchar(c(时它会更好地工作,因为这是编译器被训练以理解更多的东西。