bufferは、配列を含む複数のメンバーで構成される構造体であると仮定します。
通常の最適化フラグを使用してコンパイルすると、これら 2 つのコード スニペットを実行すると、どのようなパフォーマンスの違いが期待できるでしょうか?
buffer buf;
for (int i = 0; i < BIG_ENOUGH_NUMBER; i++) {
init(huge_file, i, &buf);
}
// buf is not used afterward
...
void init(FILE* f, int i, buffer* b) {
... // b is filled using f, according to i
do_something(b);
}
対
for (int i = 0; i < BIG_ENOUGH_NUMBER; i++) {
init(huge_file, i);
}
...
void init(FILE* f, int i) {
buffer buf;
... // buf is filled from scratch using f, according to i
do_something(&buf);
}