コードブローが私のクラスだとします。単純化されており、完全ではありません。の実装に焦点を当てましょうoperator()
。
class Delta{
public:
long long operator()() {
auto now = steady_clock::now();
auto delta = (now - last).count();
last = now;
return delta;
}
private:
steady_clock::time_point last;
};
operator()
1秒間に数千回呼び出されることがあります。変数の割り当てと割り当て解除を頻繁に行うnow
とdelta
、のパフォーマンスが低下する可能性がありますoperator()
。それで、私が速度を最大にしたいのであればnow
、delta
のデータメンバーを作成する方が良いですか?class Delta
しかし、コンパイル時にローカル変数が存在しない場合もあると聞きました。したがって、どういうわけかオーバーヘッドも存在しません。
実際、この演算子の速度は、アプリケーションの速度に影響を与えません。コンパイラに中立な答えを知りたくありません。この状況が来るとき。データメンバーまたはローカル変数にする必要がありますか?