Вопрос проверяет понимание внутреннего устройства Array и умение оптимизировать работу с памятью.
capacity определяет, сколько элементов массив может хранить без перераспределения памяти. Если capacity недостаточно, массиву приходится выделять новый буфер и копировать элементы. Это дорогая операция. Предварительное резервирование capacity снижает количество копирований. Это особенно важно при работе с большими массивами.
capacity — один из ключевых параметров массива, напрямую влияющий на его производительность.
Определение:capacity — это количество элементов, которое массив может добавить без перевыделения памяти.
Массив хранит:
count — фактическое количество элементов
capacity — зарезервированное место
Когда count превышает capacity:
выделяется новый буфер большего размера
все элементы копируются
старый буфер освобождается
Это:
требует времени
создаёт нагрузку на heap
может вызывать кратковременные лаги
Метод reserveCapacity(_:) позволяет:
заранее выделить нужный объём памяти
избежать повторных перераспределений
улучшить предсказуемость производительности
Пример:
var numbers: [Int] = []
numbers.reserveCapacity(1_000)
Оптимизация через capacity особенно полезна, когда:
заранее известен размер данных
массив наполняется в цикле
данные большие или критичны по производительности
capacity напрямую влияет на скорость работы массива. Осознанное использование reserveCapacity помогает избежать лишних копирований и делает код более эффективным.