Czy wielokrotne realokacje są droższe niż ogromny malloc?

Używam dynamicznej tablicy do reprezentowania sterty min. Istnieje pętla, która usuwa minimum i dodaje losowe elementy do min-sterty, dopóki nie wystąpi jakiś warunek. Chociaż nie wiem, jak zmieni się długość sterty w czasie wykonywania (jest dużo losowości), znam górną granicę, która wynosi 10 milionów. Mam dwie opcje:

1) Zadeklaruj małą tablicę za pomocą malloc, a następnie wywołaj realloc, gdy liczba elementów w stercie przekracza długość.

2) Zadeklaruj 10 milionów tablic wejściowych za pomocą malloc. W ten sposób unika się wywoływania ponownego połączenia.

Pytanie

Czy opcja 2 jest bardziej wydajna niż opcja 1?

Przetestowałem to z moim kodem i wydaje się, że znaczna (20%) redukcja czasu wykonania od użycia 2. Jest to szacowane ze względu na losowość kodu. Czy jest jakaś wada deklarowania dużej 10-50 milionów tablic wejściowych z malloc z przodu?

questionAnswers(3)

yourAnswerToTheQuestion