小智 6
性能取决于很多因素,你不能假设只是改变这些细节会真正提高性能.
提高性能的最佳方法是了解实现的详细信息,并应用分析工具来确定您的真正瓶颈.
大多数情况下,人们倾向于尽早优化代码,花费大量精力并使代码在对应用程序的整体性能没有太大影响的部分上不可读.
干杯
将其放置在其他位置的情况下,您不太可能胜过内置类型的函数局部变量,除非:如果可以在编译时计算该变量的值,则使其constexpr成为理想选择。
static确定该对象是否已初始化的函数的每次调用中,使用该变量可能会产生少量开销,尤其是对于C ++ 11而言,该初始化是线程安全的。即使不需要检查,堆栈也可能位于高速缓存的内存中,而static变量则不需要。const如果编译器可以将值作为编译时间进行计算,则创建变量可能会有所帮助。如果变量具有非平凡类型,则事情会变得更加有趣,因为例如a的初始化成本std::vector<T>是非平凡的。static与全局对象相比,我不希望使对象在局部功能上有所区别(即,我不会将它们全局化;总之没有空间容纳全局对象)。但是,制作对象static可能会在线程之间共享对象。如果这是一个问题,那么增加的锁定和序列化可能会抵消任何潜在的节省,并且使用基于堆栈的内存使用分配器是一种降低成本的更好方法(假设它们足够小,可以合理地在堆栈上使用)。
| 归档时间: |
|
| 查看次数: |
4915 次 |
| 最近记录: |