Многократный realloc дороже, чем огромный malloc?
Я использую динамический массив для представления минимальной кучи. Существует цикл, который удаляет минимум и добавляет случайные элементы в минимальную кучу, пока не произойдет какое-либо условие. Хотя я неЯ не знаю, как изменится длина кучи во время выполнения (много случайностей), я знаю верхнюю границу, которая составляет 10 миллионов. У меня есть два варианта:
1) Объявите небольшой массив с помощью malloc, затем вызовите realloc, когда количество элементов в куче превышает длину.
2) Объявите массив из 10 миллионов записей, используя malloc. Это позволяет избежать вызова realloc.
Вопрос
Вариант 2 более эффективен, чем вариант 1?
Я проверил это с помощью своего кода, и, по-видимому, во время выполнения было значительно (20%) сокращение времени выполнения. Это оценивается из-за случайности в коде. Есть ли какой-то недостаток в объявлении большого массива записей в 10-50 миллионов с помощью malloc вперед?