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

有个面试题:
步长为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

相关推荐

04-06 11:24
已编辑
太原学院 C++
真烦好烦真烦:感觉不太对劲,这种主动加微信的一般都是坑,要小心辨别
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务