В чем преимущество использования arrayWithCapacity по сравнению с использованием массива? - PullRequest
5 голосов
/ 22 августа 2011

Не обязательно указывать размер массива при создании массива, верно?Тогда зачем нужен arrayWithCapacity?И если я установлю размер массива меньше, чем нужно, это нормально?

Ответы [ 2 ]

6 голосов
/ 22 августа 2011

arrayWithCapacity - это оптимизация - она ​​не нужна. Если вы заранее знаете количество элементов, система может выделить память в одном системном вызове и в одном фрагменте памяти. В противном случае система должна будет изменить размер массива позже, когда вы добавите больше элементов, и это имеет тенденцию быть медленным, требуя дополнительных выделений и, возможно, копирования данных из старого буфера в новый буфер.

1 голос
/ 22 августа 2011

array создает пустой массив (и выделяет память при добавлении объекта), а arrayWithCapacity создает массив с достаточным объемом памяти, выделенной для хранения этих объектов, но вы всегда можете расширить его при необходимости.

...