c++ - 哪个会更快

标签 c++ c refactoring performance

只需稍微修改代码即可计算两个数组的总和

int main()

{

    int a[10000]={0};   //initialize something
    int b[10000]={0};   //initialize something

    int sumA=0, sumB=0;

    for(int i=0; i<10000; i++)
    {
        sumA += a[i];
        sumB += b[i];
    }
        printf("%d %d",sumA,sumB);

}

int main()

{

    int a[10000]={0};   //initialize something
    int b[10000]={0};   //initialize something

    int sumA=0, sumB=0;

    for(int i=0; i<10000; i++)
    {
        sumA += a[i];

    }

        for(int i=0; i<10000; i++)
    {       
        sumB += b[i];
    }
        printf("%d %d",sumA,sumB); 
}

哪个代码会更快。

最佳答案

只有一种方法可以知道,那就是测试和测量。您需要弄清楚瓶颈在哪里(CPU、内存带宽等)。

数组中数据的大小(在您的示例中为 int)会影响结果,因为这会对处理器缓存的使用产生影响。通常,您会发现示例 2 更快,这基本上意味着您的内存带宽是限制因素(示例 2 将以更有效的方式访问内存)。

关于c++ - 哪个会更快,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1398855/

相关文章:

javascript - 指令与服务重构 AngularJS 中多个 Controller 使用的常用方法

refactoring - 如何简化此 ocaml 模式匹配代码?

c++ - 生成文件中对 'function' 的 undefined reference

c++ - Boost Overload 奇怪的行为.. `int (int ), int (std::string )` 与 `int (int ), int (std::string ), std::string (std::string)` 有何不同?

c++ - 构建简单的 Firefox 是无止境的?

c - printf ("%f") 或 printf ("%lf") 对于 c 中的 double ?

c++ - c++98 中的 move() 是什么?

c - mbedtls:mbedtls_ctr_drbg_seed 错误

c - 如何在函数中使用链接列表

java - 如何从java中的类中获取方法列表?