【发布时间】:2015-07-07 21:05:06
【问题描述】:
做类似的事情会更快
for ( int * pa(arr), * pb(arr+n); pa != pb; ++pa )
{
// do something with *pa
}
比
for ( size_t k = 0; k < n; ++k )
{
// do something with arr[k]
}
???
我知道arr[k] 等价于*(arr+k),但在第一种方法中,您使用的当前指针增加了 1,而在第二种情况下,您使用的是从arr 增加的指针通过连续更大的数字。也许硬件有特殊的递增 1 的方法,所以第一种方法更快?或不?只是好奇。希望我的问题有意义。
【问题讨论】:
-
测量,证明,然后询问!为什么你会期望现代 c++ 编译器不会针对完全相同的代码进行优化??
-
您的代码在 C 语言中是非法的,请删除 [c] 标签,或将代码编辑为有效的 C
标签: c++ c arrays pointers optimization