5
これはLinuxのgcc 4.4.6です。 gccコンパイル時間とメモリ使用量がソースコードの変更で配列サイズとして変化する
gcc bizarre.c
はその後、コンパイラはメモリの4Gを使用し、長い時間を要する:
は、ここで私は、この使用してコンパイルした場合の挙動
bizarre.c
double a[500000000];
main() {
}
です。
アレイのサイズを50000000にすると、コンパイルにかかるメモリと時間が大幅に減ります。
コンパイラがコンパイルしているコードを実行しているようです。
私は、このように巨大な配列を作成するのがベストプラクティスではないかもしれないが、説明は何かを理解していますか?
32ビットまたは64ビットの実行可能ファイルとしてコンパイルしますか? –
最適化フラグはありませんか?おそらく最適化をオンにすると、この変数はおそらく-O0 –
@ 0A0Dよりも高い最適化を使用すると削除されます:この配列は '.bss'セクションに埋め込まれていますが、スタックなし... – sarnold