c - 哪个代码在 C 中执行得更快?

标签 c performance loops

我看到了以下代码(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)

所以,我有一个问题,为什么第二个代码比第一个快?

最佳答案

除非 xy 或两者都被声明为 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/

相关文章:

performance - 使用 TCP Acks 来测量服务器的延迟?

java - 如何在java中打印领结?

c - 哪种有符号整数除法对应位移位?

c - 在 C 中将 bool 字符串解释为数字的最快方法是什么?

c - 在用 C 实现的链表中使用单指针和双指针

java - 运行需要多长时间以及如何加快速度

c - 如何改变字符串中的字符?

performance - 如果您的程序+库不包含 SSE 指令,使用 VZEROUPPER 有用吗?

javascript - 在构造函数中遍历对象内部的对象?

JavaScript 循环和数组