讨论个问题,关于程序优化的问题
有个面试题:
步长为1给数组赋值和步长为4给数组赋值的操作。
前者耗时是不是后者的4倍。
for (int i = 0; i < n; i += 1) { a[i] = 1; } for (int i = 0; i < n; i += 4) { a[i] = 1; } 应该从内存局部性和缺页命中这方面考虑吧。 我觉得这两种不同的赋值,都直接从内存去取数组,一般数组不大,一次就全部取来了,所以这两种操作的时间差距不应该有4倍那么大。 而具体赋值耗时之类的,我就有点疑惑了。 有没有大佬能说说。