int a=1,b=2;
int c=29464,d=347653;
有两项操作op1
和op2
:
op1: add1=a+b;
op2: add2=c+d;
哪个操作需要更多时间?
答案 0 :(得分:4)
在具有“常规”编译器的“常规”CPU上,根据原则,它们都将花费完全相同的时间(通常两个本机大小的寄存器之间的add
需要相同的时间,而不管操作数值)。
a
的值在条件语句中被更改)或者 - 上帝禁止它 - 必须从内存中获取(=>输入缓存机制)它是一个完全不同的游戏,唯一安全的赌注是衡量它。
但最有可能的是,这两项操作都将花费零时间;任何启用了优化的现代编译器都会进行常量传播和表达式折叠,因此输出可执行文件只会将操作结果作为立即值嵌入到发出的指令中。