C/C++在Linux

问题描述:

环路性能我有关于对循环构造中是Na linux的64位系统,其版本将提供更好的性能执行ÇC/C++在Linux

考虑下面的代码的性能的一些疑问:

for (i = 0;i<10000;i++) 
{ 
    for (j = 0;j<10000;j++) 
    { 
     x[i][j] = 0; 
    } 
} 

for (i = 0;i<10000;i++) 
{ 
    for (j = 0;j<10000;j++) 
    { 
     x[j][i] = 0; 
    } 
} 
+3

?你为什么不试试自己?我正在认真考虑拍拍'performance'标签,这样每个人都会知道这些问题是无稽之谈。 –

+0

1)配置文件,如果你甚至可以测量运行时间,你就会知道答案。 2)使用memset,为此用例进行了优化。 –

你应该问真正的问题是这样的:在C++中的矩阵行优先或列优先顺序排列?答案是排主要

你可以找到自己:

/* Example 1 */ 

time_t start = clock(); 
for (i = 0;i<10000;i++) 
{ 
    for (j = 0;j<10000;j++) 
    { 
     x[i][j] = 0; 
    } 
} 
float t = (float)(clock() - start)/CLOCKS_PER_SEC; 
printf("%f\n", t); 

/* Example 2 */ 

start = clock(); 
for (i = 0;i<10000;i++) 
{ 
    for (j = 0;j<10000;j++) 
    { 
     x[j][i] = 0; 
    } 
} 
t = (float)(clock() - start)/CLOCKS_PER_SEC; 
printf("%f\n", t); 

你正在做嵌套在两种情况下循环。

由于环是在另一个回路中,时间将采取

O(LOG2(N)^ 2)

因此,基本上,如果2个循环是嵌套的,不依赖于它里面的操作它将采取n * n = n^2。如果环路没有嵌套,它将需要n + n = 2n认真地?