Многократный realloc дороже, чем огромный malloc?

Я использую динамический массив для представления минимальной кучи. Существует цикл, который удаляет минимум и добавляет случайные элементы в минимальную кучу, пока не произойдет какое-либо условие. Хотя я неЯ не знаю, как изменится длина кучи во время выполнения (много случайностей), я знаю верхнюю границу, которая составляет 10 миллионов. У меня есть два варианта:

1) Объявите небольшой массив с помощью malloc, затем вызовите realloc, когда количество элементов в куче превышает длину.

2) Объявите массив из 10 миллионов записей, используя malloc. Это позволяет избежать вызова realloc.

Вопрос

Вариант 2 более эффективен, чем вариант 1?

Я проверил это с помощью своего кода, и, по-видимому, во время выполнения было значительно (20%) сокращение времени выполнения. Это оценивается из-за случайности в коде. Есть ли какой-то недостаток в объявлении большого массива записей в 10-50 миллионов с помощью malloc вперед?

Ответы на вопрос(3)

Ваш ответ на вопрос