Rob*_*ins 5 .net c# compiler-optimization task-parallel-library
考虑以下代码片段,在执行效率方面遍历三维单列数组,假设process1()并process2()执行相同的时间长度:
float arr[mMax,nMax,oMax];
for (m = 0; m < mMax; m++)
for (n = 0; n < nMax; n++)
for (o = 0; o < oMax; o++)
{ process1(arr[m,n,o]); }
for (o = 0; o < oMax; o++)
for (n = 0; n < nMax; n++)
for (m = 0; m < mMax; m++)
{ process2(arr[m,n,o]); }
Run Code Online (Sandbox Code Playgroud)
现在,众所周知,C#将.NET框架中的数组组织为行主结构.没有任何优化,我会假设第一个循环的执行速度比第二个循环快得多.
问题是:CLR的JIT或cs.exe/vb.exe编译器是否检测并优化这样的循环,可能重新排序嵌套,或者我应该始终保持警惕潜在的性能命中,特别是在可能发生的情况方面如果我试图并行化循环?
| 归档时间: |
|
| 查看次数: |
174 次 |
| 最近记录: |