Dr.*_*ula 0 c++ micro-optimization
我正在写一些性能关键的东西,想知道如果我使用它是否会有所作为:
int test( int a, int b, int c )
{
// Do millions of calculations with a, b, c
}
Run Code Online (Sandbox Code Playgroud)
要么
class myStorage
{
public:
int a, b, c;
};
int test( myStorage values )
{
// Do millions of calculations with values.a, values.b, values.c
}
Run Code Online (Sandbox Code Playgroud)
我确信这对C++专家来说很明显,所以我现在不会尝试为它写一个不切实际的基准
编译器可能会对它们进行均衡.如果它有任何大脑,它将复制values.a,values.b并values.c进入局部变量或寄存器,这也是简单情况下发生的情况.
相关格言:
过早优化是多恶的根源.
写下来,这样你就可以在六个月后的凌晨1点阅读它,并且仍然能理解你想要做什么.
大多数情况下,重要的优化来自重构算法,而不是变量访问方式的微小变化.是的,我知道有例外,但这可能不是其中之一.