一部のコードをリファクタリングする過程で、このような関数を変更したい
bool A::function() {
return this->a == this->b || this->c == this->d || this->e == this->f || this->g == this->h ;
}
このようなものに
bool A::function(int a, int b, int c, int d, int e, int g) {
return a == b || c == d || e == this->f || g == this->h ;
}
この関数は、最大 10M の要素を持つメイン ループ内で毎回呼び出されることになっています。
私が一緒に働いている人々は、2 番目のバージョンを使用することに消極的です。これは、6 つの int を渡すことのパフォーマンス コストが原因です。ループの各反復が大量のコードを通過し、10M 要素を処理するのに約 1 分かかることを考えると、これは無視できると確信しています。
常に 6 int を値で渡すコストは非常に高いですか? そうでない場合、どうすれば彼らの考えを変えさせることができますか?
編集:インライン化について、関数がインライン化されている場合、ペナルティは0になると彼らに言いましたが、彼らの答えは基本的に「インライン化されるかどうかはわかりません」でした。コンパイラ)