常量指针C ++和优化,它们更快吗?

时间:2013-07-25 12:06:08

标签: c++ arrays performance pointers const

如果

,那我就更聪明了
  • 常量指针比普通指针更快还是更慢? (常量指针是一个不能改变其地址的指针)声明为,int * const x;
    • 指向常量int的指针比指向int的指针快? const int * x;
    • 指向常量int的常量指针比指向int的指针快?例如 int const * const x; int * y; ......那么,x会比y快吗? (如果它们用于数组索引)

干杯,

2 个答案:

答案 0 :(得分:3)

它们可能更快,但并非必须如此 底线是使用const正确性来防止诚实的程序员犯错误并使代码更直观而不是提高性能。大多数现代编译器都会自动处理它。

答案 1 :(得分:0)

通常,编译器不会“注意”某些内容是否为const,它使用其他启发式方法来确定指针是否需要在使用之间重新加载。

当然,如果你有一个将指针作为参数的函数,它将完全没有区别。如果你有一个你使用的全局变量,那么编译器可以考虑“好吧,它是const,所以我不会每次都重新加载它”。但它实际上不太可能产生影响。无论如何,指针的并行更改是UB(您应该使用原子变量)。如果在代码中间调用函数,并且编译器无法内联[或“跟随”]函数,则无论如何都很可能必须重新加载指针。