Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 13.01.2010, 16:57
VVall вне форума Посмотреть профиль Отправить личное сообщение для VVall Найти все сообщения от VVall
  № 11  
Ответить с цитированием
VVall

Регистрация: Feb 2009
Сообщений: 1,195
Пока всюду, где я пробовал применять vector, была потеря в скорости, причём заметная. Не в разы, но до 10-20 процентов. В том числе и с простыми типами. Вероятно, где-то бывает и прибавка, но в целом, выбор vector vs. array не надо делать на основании того, что vector предположительно быстрее.

Старый 13.01.2010, 17:13
dex157 вне форума Посмотреть профиль Отправить личное сообщение для dex157 Найти все сообщения от dex157
  № 12  
Ответить с цитированием
dex157

Регистрация: Mar 2006
Сообщений: 44
VVall
Получается, что у векторов вообще нет преимуществ перед array..?

Старый 13.01.2010, 17:28
r_r_f_r вне форума Посмотреть профиль Отправить личное сообщение для r_r_f_r Найти все сообщения от r_r_f_r
  № 13  
Ответить с цитированием
r_r_f_r

Регистрация: Sep 2008
Адрес: Москва
Сообщений: 224
Цитата:
Сообщение от VVall Посмотреть сообщение
Пока всюду, где я пробовал применять vector, была потеря в скорости, причём заметная. Не в разы, но до 10-20 процентов. В том числе и с простыми типами. Вероятно, где-то бывает и прибавка, но в целом, выбор vector vs. array не надо делать на основании того, что vector предположительно быстрее.
Код и результаты, в студию.

Старый 13.01.2010, 17:39
VVall вне форума Посмотреть профиль Отправить личное сообщение для VVall Найти все сообщения от VVall
  № 14  
Ответить с цитированием
VVall

Регистрация: Feb 2009
Сообщений: 1,195
Цитата:
Сообщение от dex157
Получается, что у векторов вообще нет преимуществ перед array..?
Это разные вещи, всё-таки. По скорости однозначного преимущества нет.

Цитата:
Сообщение от r_r_f_r
Код и результаты, в студию.
Больше вам ничего не надо в студию? Хотите точных цифр - пишите тесты сами или ищите готовые, а у меня свои дела есть.

Старый 13.01.2010, 17:44
nuran вне форума Посмотреть профиль Отправить личное сообщение для nuran Найти все сообщения от nuran
  № 15  
Ответить с цитированием
nuran

Регистрация: Apr 2003
Адрес: DC
Сообщений: 4,489
и ещё нужен FP10
__________________
flash/flex/unity

Старый 13.01.2010, 17:45
r_r_f_r вне форума Посмотреть профиль Отправить личное сообщение для r_r_f_r Найти все сообщения от r_r_f_r
  № 16  
Ответить с цитированием
r_r_f_r

Регистрация: Sep 2008
Адрес: Москва
Сообщений: 224
Цитата:
Сообщение от VVall Посмотреть сообщение
Это разные вещи, всё-таки. По скорости однозначного преимущества нет.


Больше вам ничего не надо в студию? Хотите точных цифр - пишите тесты сами или ищите готовые, а у меня свои дела есть.
Фантастика

Код AS3:
		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
		}
Бонус из хелпа: Note, however, that when using the push() method or unshift() method to add values to a Vector, the arguments' data types are not checked at compile time but are checked at run time

P.S Предлагаю вам не писать того чего не знаете.

Старый 13.01.2010, 18:05
Волгоградец вне форума Посмотреть профиль Отправить личное сообщение для Волгоградец Найти все сообщения от Волгоградец
  № 17  
Ответить с цитированием
Волгоградец
 
Аватар для Волгоградец

блогер
Регистрация: Sep 2007
Адрес: Гамбург
Сообщений: 1,648
Записей в блоге: 12
r_r_f_r, попробуйте так:
Код AS3:
while (i--){
	_vec[i]++;
}
while (i--){
	var a:uint = _ar[i];
	a++;
}
upd.:
Код AS3:
while (i--){
	var a:uint = _vec[i];
	a++;
}
Работает быстрее, чем
Код AS3:
while (i--){
	_vec[i]++;
}
о_О


Последний раз редактировалось Волгоградец; 13.01.2010 в 18:07.
Старый 13.01.2010, 18:10
VVall вне форума Посмотреть профиль Отправить личное сообщение для VVall Найти все сообщения от VVall
  № 18  
Ответить с цитированием
VVall

Регистрация: Feb 2009
Сообщений: 1,195
Цитата:
Сообщение от r_r_f_r
P.S Предлагаю вам не писать того чего не знаете.
Предлагаю вам не хамить, для начала, а потом ваш-же PS. Свои результаты я получал при оптимизации кода реальных проектов, а не в синтетических тестах. Неоптимальных реализаций у меня не сохранилось, публиковать код из проектов я не могу, тратить время на написание специально для вас аналогичных тестов не собираюсь.

Добавлено через 2 минуты
Цитата:
Сообщение от Волгоградец Посмотреть сообщение
Работает быстрее, чем
Так в первом случае есть только чтение, а во втором чтение и запись - чему удивляться?


Последний раз редактировалось VVall; 13.01.2010 в 18:13.
Старый 13.01.2010, 18:17
r_r_f_r вне форума Посмотреть профиль Отправить личное сообщение для r_r_f_r Найти все сообщения от r_r_f_r
  № 19  
Ответить с цитированием
r_r_f_r

Регистрация: Sep 2008
Адрес: Москва
Сообщений: 224
Код AS3:
var a:uint = _vec[i];
так, хорошо, прочитали значение из массива
Код AS3:
a++;
отлично увеличили его.
Код AS3:
_vec[i] = a;
а где же запись обратно в массив?

Цитата:
Предлагаю вам не хамить, для начала, а потом ваш-же PS. Свои результаты я получал при оптимизации кода реальных проектов, а не в синтетических тестах. Неоптимальных реализаций у меня не сохранилось, публиковать код из проектов я не могу, тратить время на написание специально для вас аналогичных тестов не собираюсь.

Вердикт - Vector работает быстрее.


Последний раз редактировалось r_r_f_r; 13.01.2010 в 18:20.
Старый 13.01.2010, 18:20
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 20  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Ну а теперь в вашем тесте замените, например uint на Rectangle... кроме того, для тестов неплохо было бы посортировать элементы массива / вектора и т.п. операции. Если чесно, я не знаю как именно реализован перебор элементов - т.е. во что конкретно скомпилируется цикл в смысле байткода (+ я не знаю как именно выполнится какой-то конкретный байткод). Кроме всего прочего есть еще куча составляющих - версия плеера, ось, битность оси и т.д. Например, на сколько я знаю, в 10.1 есть какие-то проблемы со скоростью именно у вектора и при каких-то экзотических обстоятельствах, на первый взгляд явно с ним не связаных, т.е. что-то типа: если до вектора объявить массив с N элементов, то он вдруг начинает работать чуть ли не в 2 раза медленнее...
Вобщем, на практике вектор полезная штука, но, скорее для того, чтобы предотвратить попадение несанкционированых типов данных куда им не положено А реализация, по ходу, оставляет желать лучшего...
__________________
Hell is the possibility of sanity

Создать новую тему Ответ Часовой пояс GMT +4, время: 13:39.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 13:39.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.