Man*_*nnu 2 c cpu-cycles division modulo
哪个操作需要更多CPU
时钟,modulo
或者comparison
?
这段代码会花费更多时间:
for(j = i; j <= 10; j++)
{
if(j == 10) printf("0");
else printf("%d", j);
}
Run Code Online (Sandbox Code Playgroud)
或这个
for(j = i; j <= 10; j++)
printf("%d", j % 10);
Run Code Online (Sandbox Code Playgroud)
为什么?
abl*_*igh 10
如果以CPU周期测量,模数运算可能需要更多周期; 这可能取决于CPU.但是,CPU周期不是衡量性能的好方法,现代处理器一次运行多个指令(流水线),有多层缓存等.在这种情况下,进行额外测试将意味着额外的分支,这在时序方面可能更重要(即影响指令流水线).确切知道的唯一方法是对其进行优化编译,并将其计时.
我知道你的例子只是一个例子,但这也说明了过早的优化.调用printf
将比模数或比较花费更多的时间.如果你想优化你的例子,你会写如下:
printf ("1234567890");
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4035 次 |
最近记录: |