我看到了以下代码(PUZZLERSWORLD.COM 站点上的问题 3):
代码 1:
for (i = 0; i < 1000; i++)
for (j = 0; j < 100; j++)
x = y;
代码 2:
for (i = 0; i < 100; i++)
for (j = 0; j < 1000; j++)
x = y;
哪些代码会执行得更快?
选项:
a) Code 1 and Code 2 are of same speed,
b) Code 1,
c) Code 2,
d) Can't Say
答案:
c)
所以,我有一个问题,为什么第二个代码比第一个快?
最佳答案
除非 x
或 y
或两者都被声明为 volatile
,否则这两个代码都可以简化为:
x = y;
例子:
int f(int y)
{
int x;
for (int i = 0; i < 1000; i++)
for (int j = 0; j < 100; j++)
x = y;
return x;
}
产量:
f(int):
mov eax, edi
ret
关于c - 哪个代码在 C 中执行得更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45730778/