访问类成员时的性能

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++专家来说很明显,所以我现在不会尝试为它写一个不切实际的基准

egr*_*nin 5

编译器可能会对它们进行均衡.如果它有任何大脑,它将复制values.a,values.bvalues.c进入局部变量或寄存器,这也是简单情况下发生的情况.

相关格言:

  1. 过早优化是多恶的根源.

  2. 写下来,这样你就可以在六个月后的凌晨1点阅读它,并且仍然能理解你想要做什么.

  3. 大多数情况下,重要的优化来自重构算法,而不是变量访问方式的微小变化.是的,我知道有例外,但这可能不是其中之一.