C++代码速度,哪个更快?

标签 c++

是的,这是一个家庭作业问题,我只需要朝正确的方向插入

哪个 C++ 代码块更快,为什么?我认为它是最上面的一个,因为 [i] 数组按顺序使用,或者我在这里错了吗?

    double A[100][100];
    ...
    for (int i = 0; i < 100; i++) {
        for (int j = 0; j < 100; j++) {
            A[i][j] = i * j;
        }
     }


    double A[100][100];
    ...
    for (int j = 0; j < 100; j++) {
    for (int i = 0; i < 100; i++) {
        A[i][j] = i * j;
    }
 }

最佳答案

如果不运行和分析您的代码,就无法知道哪段代码更快。

我们可以猜测位置和缓存行为将如何影响该时间(您的猜测是正确的),但猜测并不能代替分析。 (参见:How can I profile C++ code running in Linux?)

第一个版本可能更快的一个原因:

为什么可能没有区别:

  • 整个 10000 个元素都可以放入缓存,从而使上述优化变得毫无意义。

我想不出第二个会更快的任何原因,但我之前一直很惊讶。

关于C++代码速度,哪个更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19460984/

相关文章:

c++ - 在 C++ 中将字符串转换为罗马数字

c++ - ifstream 将字符串的行转换为数组?

c++ - C++ 中的继承有多昂贵或多昂贵

c++ - 无法基于 STL 迭代器编写我自己的迭代器

c++ - 如何释放 boost::mpi::request?

c++ - 如果我让类(class)成员公开怎么办?

c++ - spoj 对待奶牛 DP 得到错误的答案?

c++ - 在相同状态类型的各种屏幕之间切换?

c++ - bWait = false 的 GetOverlappedResults block

c++ - X11/Xlib.h 中缺少 XGetPixel() 吗?