![]() |
|
||||||||||
|
|||||
|
Регистрация: Feb 2009
Сообщений: 1,195
|
Пока всюду, где я пробовал применять vector, была потеря в скорости, причём заметная. Не в разы, но до 10-20 процентов. В том числе и с простыми типами. Вероятно, где-то бывает и прибавка, но в целом, выбор vector vs. array не надо делать на основании того, что vector предположительно быстрее.
|
|
|||||
|
Регистрация: Mar 2006
Сообщений: 44
|
VVall
Получается, что у векторов вообще нет преимуществ перед array..? |
|
|||||
|
Регистрация: Sep 2008
Адрес: Москва
Сообщений: 224
|
Цитата:
|
|
|||||
|
Регистрация: Feb 2009
Сообщений: 1,195
|
Цитата:
Цитата:
|
|
|||||
|
Регистрация: Apr 2003
Адрес: DC
Сообщений: 4,489
|
и ещё нужен FP10
__________________
flash/flex/unity |
|
|||||
|
Регистрация: Sep 2008
Адрес: Москва
Сообщений: 224
|
Цитата:
![]() private var _vec:Vector.<int> = new Vector.<int>; private var _ar:Array = []; private var _count:uint = 1000000; public function TestVec() { var i:uint; var t:uint; i = _count; while (i--) { _vec.push(4); _ar.push(4); } i = _count; t = getTimer(); while (i--) { _vec[i]++; } trace (getTimer() - t);//157 i = _count; t = getTimer(); while (i--) { _ar[i]++; } trace (getTimer() - t);//216 } P.S Предлагаю вам не писать того чего не знаете. |
|
|||||
|
r_r_f_r, попробуйте так:
upd.: Работает быстрее, чем о_О Последний раз редактировалось Волгоградец; 13.01.2010 в 18:07. |
|
|||||
|
Регистрация: Feb 2009
Сообщений: 1,195
|
Цитата:
Добавлено через 2 минуты Так в первом случае есть только чтение, а во втором чтение и запись - чему удивляться? Последний раз редактировалось VVall; 13.01.2010 в 18:13. |
|
|||||
|
Регистрация: Sep 2008
Адрес: Москва
Сообщений: 224
|
так, хорошо, прочитали значение из массива
отлично увеличили его. а где же запись обратно в массив? Цитата:
Вердикт - Vector работает быстрее. Последний раз редактировалось r_r_f_r; 13.01.2010 в 18:20. |
|
|||||
|
Modus ponens
|
Ну а теперь в вашем тесте замените, например uint на Rectangle... кроме того, для тестов неплохо было бы посортировать элементы массива / вектора и т.п. операции. Если чесно, я не знаю как именно реализован перебор элементов - т.е. во что конкретно скомпилируется цикл в смысле байткода (+ я не знаю как именно выполнится какой-то конкретный байткод). Кроме всего прочего есть еще куча составляющих - версия плеера, ось, битность оси и т.д. Например, на сколько я знаю, в 10.1 есть какие-то проблемы со скоростью именно у вектора и при каких-то экзотических обстоятельствах, на первый взгляд явно с ним не связаных, т.е. что-то типа: если до вектора объявить массив с N элементов, то он вдруг начинает работать чуть ли не в 2 раза медленнее...
Вобщем, на практике вектор полезная штука, но, скорее для того, чтобы предотвратить попадение несанкционированых типов данных куда им не положено А реализация, по ходу, оставляет желать лучшего...
__________________
Hell is the possibility of sanity |
![]() |
![]() |
Часовой пояс GMT +4, время: 13:39. |
|
|
« Предыдущая тема | Следующая тема » |
|
|