由于我在大型多维数组上使用for循环,因此对for循环机制本身的任何保存都是有意义的.
因此,我正在寻找有关如何减少这种开销的任何提示.
例如:倒计时使用UINT而不是int和= 0,而不是停止> 0允许CPU少做工作(听说这一次,不知道它始终是真实的)
一个重要的建议:尽可能多地计算外循环.并非所有编译器都能自动执行此操作.例如,而不是:
for row = 0 to 999 for col = 0 to 999 cell[row*1000+col] = row * 7 + col
使用:
for row = 0 to 999 x = row * 1000 y = row * 7 for col = 0 to 999 cell[x+col] = y + col
尝试使你的循环在内存中连续,这将优化缓存使用.也就是说,不要这样做:
for (int i = 0; i < m; i++) for (j = 0; j < n; j++) s += arr[j][i];
如果处理图像,则使用单个索引将两个循环转换为像素上的一个循环.
不要创建将运行零次的循环,因为管道已经过优化,假设循环将继续而不是结束.
你测量了开销吗?您知道处理for循环花费了多少时间与执行应用程序代码花费了多少时间?你的目标是什么?
循环展开可以是一种方式.那是:
for (i=0; i转换为:
for (i=0; i在上面的示例中,当N不是4的倍数时,您将需要特殊处理.