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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 21.02.2008, 21:28
B'n'D вне форума Посмотреть профиль Отправить личное сообщение для B'n'D Найти все сообщения от B'n'D
  № 1  
Ответить с цитированием
B'n'D
 
Аватар для B'n'D

Регистрация: Nov 2007
Адрес: Челябинск
Сообщений: 7
По умолчанию оптимизация блока if

День добрый,ув. flasher'ы. У меня такой вопрос:что flash сделает, если в приведенном ниже if блоке condition1 = false? т.е. будет ли он думать и выщитывать condition2??

Код:
if(condition1 && condition2){
    //__*__\\||//__*__\\
}
__________________
The_TRue_mAsteR

Старый 21.02.2008, 21:44
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 2  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
не будет

Старый 21.02.2008, 21:49
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 3  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,879
Записей в блоге: 7
Цитата:
Сообщение от silin
не будет
Непосредственно condition2 браться не будет, однако часть команд для него сработает.
Если взять такой код
Код:
if (condition1 && condition2) {
	trace (2);
}
то видно, как после первого branchIfTrue, сработает второй
Код:
	push 'condition1'
	getVariable
	dup
	not
	branchIfTrue label1
	pop
	push 'condition2'
	getVariable
label1:
	not
	branchIfTrue label2
	push 2
	trace
label2:
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 21.02.2008, 21:54
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 4  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
о как.., я думал проще

Код:
if (condition1() && condition2()) {}

function condition1():Boolean {
	trace("condition1");
	return false;
}
function condition2():Boolean {
	trace("condition2");
	return true;
}

Старый 26.02.2008, 21:29
B'n'D вне форума Посмотреть профиль Отправить личное сообщение для B'n'D Найти все сообщения от B'n'D
  № 5  
Ответить с цитированием
B'n'D
 
Аватар для B'n'D

Регистрация: Nov 2007
Адрес: Челябинск
Сообщений: 7
Спасибо большое за ответ. Значит и в if(con1 || con2){}, если con1=true, con2 не будет полностью проверяться. Еще 2 вопроса:
1) если в if 'е больше, чем 2 condition 'a ,то проверяться будут все, так?

2)Допустим, такая ситуация: con1 становится равным true очень редко, тогда выгоднее ли использовать
Код:
if(con1){
if(con2){
//--
}
}
чем
Код:
if(con1 && con2){
//--
}
,потому, что con2 во втором случае хоть не полностью, но проверяется????
__________________
The_TRue_mAsteR

Старый 26.02.2008, 21:46
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 6  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,879
Записей в блоге: 7
Я добавил trace (1) при true для con1 и con2.
Это асм код для первого кода
Код:
	push 'con1'
	getVariable
	not
	branchIfTrue label1
	push 'con2'
	getVariable
	not
	branchIfTrue label1
	push 1
	trace
label1:
И для второго. Синим выделено то, чего нет в первом, в остальном они полностью идентичны (кроме имен меток)
Код:
	push 'con1'
	getVariable
	dup
	not
	branchIfTrue label1
	pop
	push 'con2'
	getVariable
label1:
	not
	branchIfTrue label2
	push 1
	trace
label2:
Получается, что да. Причем не важно, часто или не часто срабатывает первое условие. Первый код более компактный.
__________________
(и)Нильс.ru | Плагины для FlashDevelop

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

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

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


 


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


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