相关疑难解决方法(0)

在迭代2D数组时,为什么循环的顺序会影响性能?

可能重复:
这两个for循环中的哪一个在时间和缓存性能方面更有效

下面是两个几乎相同的程序,除了我切换i和j变量.它们都运行在不同的时间.有人能解释为什么会这样吗?

版本1

#include <stdio.h>
#include <stdlib.h>

main () {
  int i,j;
  static int x[4000][4000];
  for (i = 0; i < 4000; i++) {
    for (j = 0; j < 4000; j++) {
      x[j][i] = i + j; }
  }
}
Run Code Online (Sandbox Code Playgroud)

版本2

#include <stdio.h>
#include <stdlib.h>

main () {
  int i,j;
  static int x[4000][4000];
  for (j = 0; j < 4000; j++) {
     for (i = 0; i < 4000; i++) {
       x[j][i] = i …
Run Code Online (Sandbox Code Playgroud)

c optimization performance for-loop cpu-cache

350
推荐指数
6
解决办法
4万
查看次数

用于迭代2D数组的嵌套循环的哪种排序更有效

在时间(缓存性能)方面,嵌套循环在迭代2D阵列中的哪一个排序更有效?为什么?

int a[100][100];

for(i=0; i<100; i++)
{
   for(j=0; j<100; j++)
   {
       a[i][j] = 10;    
   }
}
Run Code Online (Sandbox Code Playgroud)

要么

for(i=0; i<100; i++)
{
   for(j=0; j<100; j++)
   {
      a[j][i] = 10;    
   }
}
Run Code Online (Sandbox Code Playgroud)

c performance for-loop cpu-cache

72
推荐指数
5
解决办法
7078
查看次数

为什么缓存局部性对数组性能很重要?

在下面的博客中,有一个关于数组优于链表的优点的声明:

数组具有更好的缓存局部性,可以在性能上产生很大的差异.

那是什么意思?我不明白缓存本地如何提供巨大的性能优势.

language-agnostic arrays linked-list

58
推荐指数
2
解决办法
2万
查看次数

为什么这个C++ for循环的执行时间存在显着差异?

我正在经历循环,发现访问循环有显着差异.我无法理解在两种情况下造成这种差异的原因是什么?

第一个例子:

执行时间处理时间; 8秒

for (int kk = 0; kk < 1000; kk++)
{
    sum = 0;
    for (int i = 0; i < 1024; i++)
        for (int j = 0; j < 1024; j++)
        {
            sum += matrix[i][j];
        }
}
Run Code Online (Sandbox Code Playgroud)

第二个例子:

执行时间:23秒

for (int kk = 0; kk < 1000; kk++)
{
    sum = 0;
    for (int i = 0; i < 1024; i++)
        for (int j = 0; j < 1024; j++)
        {
            sum += matrix[j][i];
        }
} …
Run Code Online (Sandbox Code Playgroud)

c++ performance nested-loops

57
推荐指数
7
解决办法
7036
查看次数

40
推荐指数
3
解决办法
3万
查看次数