讨论个问题,关于程序优化的问题

有个面试题:
步长为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倍那么大。
而具体赋值耗时之类的,我就有点疑惑了。
有没有大佬能说说。

全部评论
写个耗时计算代码跑一下不就知道了?不过在算法上都是O(n)的时间复杂度。不过具体情况还是看编译器优化
点赞 回复 分享
发布于 2017-08-04 13:16

相关推荐

joe2333:怀念以前大家拿华为当保底的日子
点赞 评论 收藏
分享
10-17 10:05
已编辑
北华大学 全栈开发
牛客872465272号:掉头发了哥
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务