哪个操作需要更多CPU时钟,模数或比较?

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)