Pull to refresh

Comments 2

Решение проблемы было простым: выполнять увеличение экспоненциально, а не линейно.

Как вариант: посмотреть свои показатели и подобрать более удобную функцию. Закатывая глаза и говоря проще (:

buf->capacity = buf->capacity ? buf->capacity + 1000 : 100;
// Или:
buf->capacity = buf->capacity ? buf->capacity * 10 : 100;
// Или:
buf->capacity = buf->capacity ? buf->capacity * 1.5 : 15;
// А то и сразу, смело:
buf->capacity = buf->capacity ? buf->capacity + 2000000 : 2000000; // Не умножать только. Мы не настолько богатые и обеспеченные памятью :)
// Хотя двойка это классика для неизвестных размеров.
// А может вообще муть вытворять с вычислениями по последним расходам памяти, свободной оперативке, потенциальным требованиям, времени суток и нагруженности процессора в текущий момент — дичь, но бывает.
// Или статический массив брать нужного размера — да-да, так можно, пускай статья не об этом.

Но это лишь мелкие придирки, конечно же. Нужно смотреть по ситуации — помним об этом ;)

P.s. А ведь функции (математические, для вычисления нового размера ;) могут быть и сложнее — математика не запрещает и по-прежнему работает... Хотя кому это может понадобиться?..

Sign up to leave a comment.

Articles