PassFront
  1. PassFront
  2. База знаний
  3. Продвинутые темы

Сравни подходы к скорости памяти алгоритма и объясни, когда какой подход выбрать.

Продвинутые темы

Подходы к балансу скорости и памяти алгоритма: оптимизация по времени (кеш, предвычисления — больше памяти), по памяти (меньше структур — медленнее), или компромисс. Выбор — по ограничениям задачи.

Компромисс время ↔ память (time-memory tradeoff)

Часто ускорение требует больше памяти, а экономия памяти — больше времени.

Подходы

Оптимизация по скорости (больше памяти)

  • Кеширование/мемоизация — хранить результаты, не пересчитывать:
const cache = new Map(); // память ради скорости
  • Хеш-таблицы — O(1) доступ ценой памяти (Map/Set вместо перебора):
const set = new Set(arr); // O(1) has вместо O(n) includes
  • Предвычисления, индексы, lookup-таблицы.

Когда: скорость критична, память есть (интерактивный UI, частые операции).

Оптимизация по памяти (медленнее)

  • Обрабатывать данные потоково (по частям), не грузить всё.
  • Меньше структур, вычислять на лету вместо хранения.
  • In-place алгоритмы (без доп. массивов).

Когда: память ограничена (большие данные, мобильные устройства), скорость менее важна.

Компромисс

Часто выбирают золотую середину: например, quicksort (O(log n) память, in-place) против merge sort (O(n) память, но стабильный).

Как выбирать

  • Скорость критична, память есть → кеш/хеш-таблицы (жертвуем памятью).
  • Память ограничена → потоковая обработка, in-place (жертвуем скоростью).
  • Оценить реальные ограничения (размер данных, устройство) и профилировать.

Коротко для собеседования

Баланс скорость↔память (time-memory tradeoff): ускорение — кеш/мемоизация, хеш-таблицы (O(1) ценой памяти), предвычисления; экономия памяти — потоковая обработка, in-place, вычисление на лету (медленнее). Выбор по ограничениям: скорость критична и память есть → кеш; память ограничена → потоки/in-place. Пример — quicksort (мало памяти) vs merge sort (стабильный, но O(n)).

Другие вопросы раздела