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

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

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

Регистрация: Nov 2010
Сообщений: 430
Question Нужна ли переменная в данном коде?

Здравствуйте.
Копался в чужом коде и наткнулся на такой цикл:
Код AS3:
for (var i:int = 0, j:int = 0; i < num; i++) {
	object.s[j++] = data.readFloat();
	object.s[j++] = data.readFloat();
}
Я не понимаю для чего нужна «j». Может объяснит кто, какой в ней смысл?
__________________
Лучше спросить и выставить себя дураком на пять минут, чем не спросить и остаться дураком на всю жизнь.


Последний раз редактировалось Srednas; 15.06.2012 в 14:36.
Старый 15.06.2012, 14:10
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 2  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Так красивее? Понятнее?
Код AS3:
for (var i:int = 0; i < num * 2; i += 2) {
	object.s[i] = data.readFloat();
	object.s[i+1] = data.readFloat();
}
__________________
Reality.getBounds(this);

Старый 15.06.2012, 14:38
expl вне форума Посмотреть профиль Отправить личное сообщение для expl Найти все сообщения от expl
  № 3  
Ответить с цитированием
expl

блогер
Регистрация: Feb 2006
Сообщений: 1,474
Записей в блоге: 3
Вероятно, можно было бы и так:
Код AS3:
for (var i:int = 0; i < num; i++) {
	object.s.push(data.readFloat());
	object.s.push(data.readFloat());
}
Только выполнятся будет в пару раз дольше, а код, видимо, был критичным.

Старый 15.06.2012, 14:51
udaaff вне форума Посмотреть профиль Отправить личное сообщение для udaaff Найти все сообщения от udaaff
  № 4  
Ответить с цитированием
udaaff
...

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
Мне непонятен смысл данной конструкции Возможно, конечно, код вырван из контекста.

Старый 15.06.2012, 16:10
Srednas вне форума Посмотреть профиль Отправить личное сообщение для Srednas Найти все сообщения от Srednas
  № 5  
Ответить с цитированием
Srednas

Регистрация: Nov 2010
Сообщений: 430
Цитата:
Сообщение от expl Посмотреть сообщение
Только выполнятся будет в пару раз дольше, а код, видимо, был критичным.
Код AS3:
// 1
t = getTimer();
for (var i:int = 0, j:int = 0; i < max; i++) {
	v[j++] = 10;
	v[j++] = 10;
}
t = getTimer() - t;
trace("1: "+ t);   // 49
// 2
v = new Vector.<uint>;
t = getTimer();
for (var k:int = 0; k < max*2; k += 2) {
	v[k] = 10;
	v[k+1] = 10;
}
t = getTimer() - t;
trace("2: "+ t);   // 44
// 3
v = new Vector.<uint>;
t = getTimer();
for (var n:int = 0; n < max; n++) {
	v.push(10);
	v.push(10);
}
t = getTimer() - t;
trace("3: "+ t);   // 152
Получилось, что 2 вариант быстрее. Выходит, первый — лишь «для красоты»?
__________________
Лучше спросить и выставить себя дураком на пять минут, чем не спросить и остаться дураком на всю жизнь.

Старый 15.06.2012, 16:49
expl вне форума Посмотреть профиль Отправить личное сообщение для expl Найти все сообщения от expl
  № 6  
Ответить с цитированием
expl

блогер
Регистрация: Feb 2006
Сообщений: 1,474
Записей в блоге: 3
49 и 44 - можно сказать что разницы нет.
Вообще да, для красоты. Но Вы пишите так, как понятнее Вам и вашим коллегам.
Например один товарисч (и я за ним) ничуть не смущались, выравнивая картинку по центру таким образом (с округлением координат):
Код AS3:
bitmap.x = int(areaWidth - bitmap.width) >> 1;
Но другие коллеги раздражались и пришлось писать так:
Код AS3:
bitmap.x = int((areaWidth - bitmap.width) * .5);
Впринципе, я к этой записи прывык и мне все равно каким способом. Зато коллеги не раздражаются.

Eщё с первым способом проще править тело цикла, это фактически аналог push().


Последний раз редактировалось expl; 15.06.2012 в 16:55.
Старый 17.06.2012, 13:37
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 7  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Srednas, если тест написан в первом кадре в IDE, тест заведомо ничего не показывает.

Старый 17.06.2012, 18:18
udaaff вне форума Посмотреть профиль Отправить личное сообщение для udaaff Найти все сообщения от udaaff
  № 8  
Ответить с цитированием
udaaff
...

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
А где нужно тесты располагать? И от чего это зависит?

Старый 18.06.2012, 12:34
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 9  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Цитата:
Сообщение от udaaff Посмотреть сообщение
А где нужно тесты располагать? И от чего это зависит?
Обернуть весь код в функцию и вызывать. В противном случае разница в скорости инкремента по полям искажает результаты теста.

Старый 18.06.2012, 22:21
i.o. вне форума Посмотреть профиль Отправить личное сообщение для i.o. Найти все сообщения от i.o.
  № 10  
Ответить с цитированием
i.o.
 
Аватар для i.o.

Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
Да и в релизном плеере не помешало бы запустить.
trace как бы намекает на дебаг-версию...

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

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

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


 


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


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