私は内部でヘルパー関数を使用して体を整理してきれいに保ちます。彼らは非常にシンプルです(しかし、必ずしも短くはありません)(彼らは2以上です)、関数の本体の内部に簡単にインライン展開することができますが、私はそうしたくありません。その機能の体を整理しておく。ヘルパー関数:lambdasと通常の関数
すべてのこれらの関数は、参照することにより、いくつかの引数を渡され、それらを変更する必要がある、と私は、2つの方法(愚かな例)でそれらを書くことができます。通常の機能で
:
void helperf1(int &count, int &count2) {
count += 1;
count2 += 2;
}
int helperf2 (int &count, int &count2) {
return (count++) * (count2--);
}
//actual, important function
void myfunc(...) {
int count = count2 = 0;
while (...) {
helperf1(count, count2);
printf("%d\n", helperf2(count, count2));
}
}
か上記の例で明示的に渡した引数を取り込むラムダ関数を使っています:
void myfunc(...) {
int count = count2 = 0;
auto helperf1 = [&count, &count2]() -> void {
count += 1;
count2 += 2;
};
auto helperf2 = [&count, &count2]() -> int {
return (count++) * (count2--);
};
while (...) {
helperf1();
printf("%d\n", helperf2());
}
}
ただし、私はどのような方法を使うべきかはわかりません。最初のものでは、引数を渡す "オーバーヘッド"がありますが、2番目の引数は既にそこに含まれているので、 "オーバーヘッド"が削除されます。しかし、彼らはまだラムダ関数であり、通常の関数ほど高速ではないはずです。
どうすればよいですか?最初の方法を使用しますか? 2番目のものを使用しますか?または、読みやすさを犠牲にして、主要機能の本体でインライン化するだけですか?
'helperf1'と' helperf2'の両方がおそらくインライン化されるため、オーバーヘッドは発生しません。 – Zereges
ラムダ版の@Zeregesもありますか? – user6245072
誰かが_premature optimization_をお伝えしましたか? – skypjack