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

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

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

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
Одной строчной получается быстрее, но совсем на чуть-чуть
Код AS3:
var startTime=getTimer()
for(var i=0;i<100000;i++){
	var temp:Sprite;
	temp=new Sprite() //8.470
 
	//var temp:Sprite=new Sprite()//8.408
 
}
trace(getTimer()-startTime)

Старый 24.09.2010, 19:18
КорДум вне форума Посмотреть профиль Отправить личное сообщение для КорДум Найти все сообщения от КорДум
  № 12  
Ответить с цитированием
КорДум
 
Аватар для КорДум

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
Вот и ответ. Хотим выигрыш в микросекундах - одна строчка.
__________________
тут я

Старый 24.09.2010, 20:29
honest_man вне форума Посмотреть профиль Отправить личное сообщение для honest_man Найти все сообщения от honest_man
  № 13  
Ответить с цитированием
honest_man

Регистрация: Aug 2010
Сообщений: 86
Эм... тут ведь можно поспорить )
Тэстировалось по разу на каждый способ? Я имею ввиду - 62 милисекунды это более чем допустимая погрешность для такого количества итераций...


Последний раз редактировалось honest_man; 24.09.2010 в 20:36.
Старый 24.09.2010, 20:42
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 14  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,601
Записей в блоге: 17
Я не очень давно про это спрашивал.
В общем, с точки зрения ABC кода при создании сложного объекта в поле класса совсем не важно, объявить его в конструкторе или непосредственно в блоке определения переменных. Во втором случае создание этого сложного объекта переносится в конструктор; В случае простых типов есть. Определение простых типов в блоке определения полей класса не переносятся компилятором в конструктор, а определяются где то ещё. Где искать было лень.

Старый 24.09.2010, 22:55
expl вне форума Посмотреть профиль Отправить личное сообщение для expl Найти все сообщения от expl
  № 15  
Ответить с цитированием
expl

блогер
Регистрация: Feb 2006
Сообщений: 1,474
Записей в блоге: 3
Цитата:
Одной строчной получается быстрее, но совсем на чуть-чуть
Это чуть-чуть скорее всего получилось из-за погрешностей измерения, потому что компилируется даже такое:
Код AS3:
for (i = 1; i < 10; i++) {}
var i:int;
Т.е. компилятору фиолетово где объявлена переменная - это стандрарт ECMA

А объявляют переменную, не присваивая ей значения скорее всего чтобы подчеркнуть, что ей присваивается значение где-то еще второй раз

Я вообще не понимаю в чем приемущества той работы с переменными, которая есть в AS3, в mtasc/haxe все намного логичнее и удобнее - объявил переменную в блоке - никуда она отуда не денется, а здесь:

Код AS3:
for (var i:int = 0; ....)
{
}
 
 
for (var i:int = 0; ...)// Компилятор: ай-ай вы рискуете, вы повторно объявили переменную
Вот радость вытаскивать переменные из объявлений циклов?

Случай 2:
Код AS3:
tf.text = text;//Компилятор: все нормально, вы все делаете правильно, и пофиг что переменная не инициализирована
var text:String = "text";
Единственный плюс такой работы - заставляет дробить функцию на более мелкие, из-за того что сложно становится уследить за переменными, т.е. заставляет повышать структурированность кода


Последний раз редактировалось expl; 24.09.2010 в 23:06.
Старый 25.09.2010, 01:00
samana вне форума Посмотреть профиль Отправить личное сообщение для samana Найти все сообщения от samana
  № 16  
Ответить с цитированием
samana
 
Аватар для samana

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
Цитата:
Код AS3:
for (var i:int = 0; ...)// Компилятор: ай-ай вы рискуете, вы повторно объявили переменную
А разве переменная i в этом цикле при каждой итерации создаётся повторно? Сомневаюсь, иначе она всегда была бы равна нулю. Или я заблуждаюсь?

Старый 25.09.2010, 09:57
КорДум вне форума Посмотреть профиль Отправить личное сообщение для КорДум Найти все сообщения от КорДум
  № 17  
Ответить с цитированием
КорДум
 
Аватар для КорДум

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
Цитата:
А разве переменная i в этом цикле при каждой итерации создаётся повторно?
Она создается повторно во втором цикле. То есть, сначала в первом цикле создается 1 раз, затем во втором создается 1 раз. Так как они находятся в одном методе (или что там), то происходит двойное объявление одной и той же переменной. А вот чтобы такого не было, нужно быть внимательным. FD такое не разрешит скомпилировать, указав, где повтор.
__________________
тут я

Старый 25.09.2010, 10:37
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 18  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,601
Записей в блоге: 17
Не FD, а strict mode.

Старый 25.09.2010, 11:40
samana вне форума Посмотреть профиль Отправить личное сообщение для samana Найти все сообщения от samana
  № 19  
Ответить с цитированием
samana
 
Аватар для samana

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
Я понял вас, это произойдёт если цикл не находится в функции, а где то просто так в кадре. Я всегда циклы в функции помещаю, для избежания подобных ошибок.

Старый 25.09.2010, 12:35
КорДум вне форума Посмотреть профиль Отправить личное сообщение для КорДум Найти все сообщения от КорДум
  № 20  
Ответить с цитированием
КорДум
 
Аватар для КорДум

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
Strict mode в FD (:
В IDE, вроде, только вывалится варнинг, но флешка будет компилиться исправно.
__________________
тут я

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

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

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


 


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


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