Нашел пару тестов производительности actionScript'а, если кому интересно (мне было
интересно):
performanceTester
Собственно, исходя из результатов тестов, думаю быстрее всего будет так:

Код AS3:
var arr:Array = new Array();
// исходные данные
// лучше Vector.<TYPE>, щас поймете почему
var result:Vector.<TYPE> = new Vector.<TYPE>(100, true);
// 100 элементов, неизменяемая длина
// и тип данных TYPE
var reference:TYPE;
// вот тут нам пригодятся исходные данные
// в виде TYPE, т.к. reference - это временная
// ссылка на элемент массива (небольшой прирост, но даст)
var lastNonEmpty:int = -1;
// последний ненулевой элемент в result
var len:uint = Array.length;
var i:uint = 0;
while (i < len) {
reference = arr[i];
if (reference > 0) { // либо другое Ваше условие для reference
lastNonEmpty += 1;
result[lastNonEmpty] = reference;
}
i += 1; // шагаем к следующему элементу
}
Я не утверждаю что это единственно-верный способ, но должно быть быстрее splice'ов полюбому
PS
1) Количество элементов в result можно поставить равным максимально возможной длине arr (на случай, если все элементы пройдут фильтр успешно)
2) result можно (и нужно) создать заранее и использовать несколько раз
3) если Вам фильтровать 5 значений... =) забудьте о написанном выше