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

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

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

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Только что обнаружил где я тупанул с тестом. Все таки FOR быстрее, чем FOR IN и FOR EACH IN.
Проблема теста здесь:
Код AS3:
for (i = 0; i < length; i++) {
	obj = array[i]; // вот тут я сделал присвоение, а надо было сразу обращаться к array[i].t 
	obj.t = 0;
}
Присвоение переменной и отжирало дополнительное время. Мой косяк.
Самый быстрый FOR (при условии, что длинна массива сразу записывается в переменную), на втором месте FOR EACH IN, а FOR IN - самый медленный.
Вот новый тест
Код AS3:
var i:int = 0;
var time:int = 0;
var vec:Vector.<Object> = new Vector.<Object>();
var arr:Array = [];
var length:int = 0;
var j:Object;
 
for (i = 0; i < 10000000; i++) {
	var obj:Object = { t: 0 };
	vec[i] = obj;
	arr[i] = obj;
}
 
var tf:TextField = new TextField();
tf.width = 800;
tf.height = 600;
addChild(tf);
 
// VECTOR TEST START
time = getTimer();
length = vec.length;
for (i = 0; i < length; i++) {
	vec[i].t = 1;
}
tf.appendText("Vector for i " + (getTimer() - time) + "\n");
// ARRAY TEST START
time = getTimer();
length = arr.length;
for (i = 0; i < length; i++) {
	arr[i].t = 2;
}
tf.appendText("Array for i " + (getTimer() - time) + "\n"); 
 
// VECTOR FOR EACH IN
time = getTimer();
for each (obj in vec) {
	obj.t = 3;
}
tf.appendText("Vector for each in " + (getTimer() - time) + "\n"); 
 
// ARRAY FOR EACH IN
time = getTimer();
for each (obj in arr) {
	obj.t = 4;
}
tf.appendText("Array for each in " + (getTimer() - time) + "\n"); 
 
// VECTOR FOR IN
time = getTimer();
for (j in vec) {
	vec[j].t = 3;
}
tf.appendText("Vector for in " + (getTimer() - time) + "\n"); 
 
// ARRAY FOR IN
time = getTimer();
for (j in arr) {
	arr[j].t = 4;
}
tf.appendText("Array for in " + (getTimer() - time) + "\n");
Результаты
Цитата:
Vector for i 430
Array for i 435
Vector for each in 620
Array for each in 609
Vector for in 671
Array for in 674
Но вот что меня немного удивило на этот раз, это то, что вектор не выдал какой-либо существенной разницы по сравнению с простым массивом на однотипных объектах.
__________________
Ко мне можно и нужно обращаться на ты)

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

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

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


 


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


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