【发布时间】:2015-08-02 16:28:20
【问题描述】:
我有一个函数,它从用户那里接收一个一维数组和一个数字,并将这两者相加。
示例:
0 1 2 3 4 5 6 7 8
用户:9
9 10 11 12 13 14 ...
我一直在使用以下代码:
for(int i =0; i < arr; i++){
arr[i] = arr[i] + usrNumber;
}
现在这似乎非常低效,因为我必须遍历数组的每个位置并将值相加。
我从previous post 中读到了 block 方法,但我的印象是它必须至少是二维的才能工作。有什么方法可以改进这个功能?
【问题讨论】:
-
对于一维数组,我认为你不能做得更好;从本质上讲,您已经从您提到的内容中受益,请参见此处:stackoverflow.com/questions/12065774/…
-
你的印象是正确的,块方法用于二维数组,因为数组通常以行为主的方式存储。因此,如果以列主要方式访问它们,则可能会导致大量缓存未命中
标签: c arrays performance for-loop optimization