Подтвердить что ты не робот

As3 - Как эффективно очистить массив?

Я искал очистить массив в ActionScript 3.

Некоторые методы предполагают: array = []; (утечка памяти?)

Другое скажет: array.splice(0);

Если у вас есть другие, пожалуйста, поделитесь. Какой из них более эффективен?

Спасибо.

4b9b3361

Ответ 1

array.length = 0 или array.splice(), как представляется, лучше всего подходит для общей производительности.

array.splice(0); будет выполняться быстрее, чем array.splice(array.length - 1, 1);

Ответ 2

Для массива с 100 элементами (контрольные значения в мс, чем меньше время требуется):

// best performance (benchmark: 1157)
array.length = 0;
// lower performance (benchmark: 1554)
array = [];
// even lower performance (benchmark: 3592)
array.splice(0);

Ответ 3

Интересно, почему вы хотите очистить массив таким образом? очистка всех ссылок на этот массив сделает его доступным для сбора мусора. array = [] сделает это, если array является единственной ссылкой на array. если это не так, вы, возможно, не должны его этпипировать (?)

также обратите внимание, что `Arrays принимают строки в качестве ключей. как сплайсинг, так и длина работают исключительно на целых ключах, поэтому они не будут влиять на клавиши String.

btw.: array.splice(array.length - 1, 1); эквивалентен array.pop();

Ответ 4

Существует ключевое различие между array.pop() и array.splice(array.length - 1, 1), которое поп возвращает значение элемента. Это отлично подходит для удобных интерфейсов при очистке массива вроде:

while(myArray.length > 0){
     view.removeChild(myArray.pop());
}

Ответ 5

array.splice(0,array.length);

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