EDIT
Мой первоначальный ответ был неправильным, за исключением самой последней части, и я должен извиниться за это. Я точно знал, что у Vector ровно четыре реализации «под капотом». (Вы можете найти декомпилированные источники из FP 10 playerglobal.swc в посте Роберта Пеннера здесь ) Три из них предназначены для типов чисел (int, uint и Number). Один для типов объектов. Этот последний служит универсальным и принимает все классы, полученные из Object. Вот почему я предположил, что Vector.<Object>
все еще быстрее, чем Array, полагаясь на информацию о векторах и массивах, доступную в Adobe .
Однако, похоже, что эта информация неверна или, по крайней мере, она пропускает некоторые важные части:
Хотя Vector.<AnyClassDerivedFromObject>
допускает строгую типизацию, эта информация о типе оценивается только во время компиляции (так вы получаете большую безопасность типов), но не во время выполнения - таким образом, по существу, преимущества векторов объектов строгой типизации не применяются к производительности. Подробнее см. в этом блоге .
Следовательно, единственные реализации Vector, которые быстрее, чем Array, - это реализации для числовых типов (!).
На самом деле, я провел несколько обширных испытаний по этому вопросу и пришел к выводу, что, хотя Vector.<int>
на 60% быстрее, чем Массив целых, все производные Vector.<Object>
не только равны по скорости. (т. е. Vector.<Object>
работает так же, как Vector.<String>
, они также примерно на 20% медленнее , чем Array. Я дважды и трижды проверил это, поэтому я считаю, что результаты достаточно точны.
Верно, что векторы числового типа быстрее, поэтому вы должны использовать их для повышения производительности по сравнению с массивом. Но:
END EDIT
Только если вы собираетесь использовать sort()
, sortOn()
или любую другую из удобных функций сортировки массива, вы все равно можете принять иное решение, потому что это собственные функции, и как таковые действительно быстро. Реализация собственных методов сортировки в векторе, вероятно, не будет соответствовать их скорости.