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

constant pointers C++ and optimization, are they faster?

本文关键字:指针 C++ 优化 常量      更新时间:2023-10-16

如果

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

干杯,

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

通常,编译器不"关注"某个东西是否为const,而是使用其他启发式方法来确定指针是否需要在使用之间重新加载。

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