最小ヒープを表すために動的配列を使用しています。最小値を削除し、何らかの条件が発生するまで最小ヒープにランダムな要素を追加するループがあります。実行時にヒープの長さがどのように変化するかはわかりませんが(ランダム性が高い)、上限である1,000万はわかっています。私には2つの選択肢があります:
1) mallocを使用して小さな配列を宣言し、ヒープ内の要素の数が長さを超えたときにreallocを呼び出します。
2) mallocを使用して1,000万のエントリ配列を宣言します。これにより、reallocを呼び出す必要がなくなります。
質問
オプション2はオプション1よりも効率的ですか?
私はこれを自分のコードでテストしましたが、2を使用すると実行時間が大幅に(20%)減少するようです。これはコードのランダム性のために推定されます。事前にmallocを使用して1,000〜5,000万の大規模なエントリ配列を宣言することに欠点はありますか?