2009-07-15 4 views
16

Каковы преимущества и недостатки использования Vector.<> вместо array?Vector. <> Vs array

+0

В качестве примечания стороны, это должно быть отмечено flex4 flashplayer10. –

ответ

19

Из adobe documentation page:

В результате ограничений экземпляр Vector имеет два основных преимущества перед экземпляром Array, элементы которого являются экземплярами одного класса:

  • Производительность: доступ к массиву итерация выполняется намного быстрее при использовании экземпляра Vector, чем при использовании массива.
  • Тип безопасности: в строгом режиме компилятор может идентифицировать ошибки типа данных, такие как присвоение значения неправильного типа данных вектору или ожидающий неправильного типа данных при чтении значения из вектора. Обратите внимание, однако, что , что при использовании метода push() или unshift() для добавления значений в вектор, типы данных аргументов не проверяются во время компиляции, а проверяются во время выполнения.
+3

Спасибо Арно! Это только профи, есть ли также некоторые контрасты? Что касается лучшей производительности Vector: некоторые люди сообщают об обратном: см. Http://impossiblearts.com/blog/2008/06/18/fp10-vector-vs-array/comment-page-1/ и http://bugs.adobe.com/jira/browse/FP-1802 –

+0

Это, безусловно, выглядит как производительность, возможно, не самая лучшая точка продажи для векторов прямо сейчас. Опять же, нужно уже привыкнуть к тому, что флеш-флеш-флеш-фреймы и флеш-плеер далеко не свободны от ошибок. –

+0

Большие контрасты на мой взгляд, что это очень новые, так что немного багги и что не у всех есть FP10. В этом тесте Майка Чамберса: http://www.mikechambers.com/blog/2008/08/19/using-vectors-in-actionscript-3-and-flash-player-10/ в своем тесте не Хью разница между двумя числами. Если ваше приложение не сильно висит в больших списках, я бы пошел с Array. – Arno

2

Pro: Вектор быстрее, чем Array - например. увидеть это: Faster JPEG Encoding with Flash Player 10

Contra: Vector требует FP10, и в соответствии с http://riastats.com/ около 20% пользователей по-прежнему используют FP9

+0

Во время этого комментария, не обнаруженная версия + вспышка 9 часов в 4% – ADB

+0

не обнаружено и вспышка 9 часов на уровне менее 5% сегодня. –

2

векторы быстрее. Хотя для последовательной итерации the fastest thing seems to be linked-lists.

Векторы также могут быть полезны для растровых операций (посмотрите BitmapData.setVector, также BitmapData.lock и разблокируйте).

1

Пример связанного списка, упомянутый ранее в комментариях, написан неправильно, хотя он пропускает нечетные узлы и из-за этого только итерация половины количества тех же данных. Неудивительно, что он получает такие отличные результаты, может быть быстрее с правильным кодом, но не с той же разницей в%. Цикл устанавливает current = current.next один раз слишком много (как в цикле, так и в качестве условия цикла) каждая итерация, которая вызывает это поведение.

Смежные вопросы