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

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

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

Регистрация: Jun 2008
Сообщений: 126
По умолчанию Присваиваем значение после проверки

В чужих библиотеках иногда встречаю следующее:

Вместо
Код AS3:
someVar = false;
пишут
Код AS3:
if (someVar) someVar = false;
Почему так делают?
someVar = false выделяет память, поэтому его избегают, или что?

Старый 05.09.2014, 10:17
gloomyBrain вне форума Посмотреть профиль Отправить личное сообщение для gloomyBrain Найти все сообщения от gloomyBrain
  № 2  
Ответить с цитированием
gloomyBrain
 
Аватар для gloomyBrain

блогер
Регистрация: Mar 2008
Адрес: РФ, Санкт-Петербург
Сообщений: 2,272
Записей в блоге: 5
Отправить сообщение для gloomyBrain с помощью ICQ Отправить сообщение для gloomyBrain с помощью Skype™
Да ерунда это, просто лишний код, не обращайте внимания. Память под переменную булевского типа была выделена в момент создания экземпляра класса, в котором она была объявлена. Что же до скорости выполнения, то я думаю что блок if вряд ли выполняется быстрее присвоения, а мы явно видим что тут нам может потребоваться выполнить и то и другое. А можно просто всегда присваивать. Короче говоря, кто-то слишком мало спал и слишком много работал =)
__________________
...вселенская грусть

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

Регистрация: Feb 2012
Сообщений: 1,540
Это бессмысленная запись, не обращайте внимания.

Старый 05.09.2014, 10:38
sospamom вне форума Посмотреть профиль Отправить личное сообщение для sospamom Найти все сообщения от sospamom
  № 4  
Ответить с цитированием
sospamom

Регистрация: Jun 2008
Сообщений: 126
ясно, спасибо

Старый 05.09.2014, 11:05
alexcon314 вне форума Посмотреть профиль Отправить личное сообщение для alexcon314 Найти все сообщения от alexcon314
  № 5  
Ответить с цитированием
alexcon314
listener

модератор форума
Регистрация: Jun 2006
Сообщений: 3,260
Записей в блоге: 28
Отправить сообщение для alexcon314 с помощью ICQ
Цитата:
Память под переменную булевского типа была выделена в момент создания экземпляра класса, в котором она была объявлена.
А если речь о локальных переменных?
Суть вопроса не ясна, сравнение - это сравнение, объявление - это объявление, присвоение - это присвоение. Каким боком они тут пересеклись?

Старый 05.09.2014, 12:52
Nooob вне форума Посмотреть профиль Отправить личное сообщение для Nooob Найти все сообщения от Nooob
  № 6  
Ответить с цитированием
Nooob
 
Аватар для Nooob

Регистрация: Mar 2007
Сообщений: 319
someVar может быть аксессором и при присвоении значения может диспатчить событие или ещё что то тяжелое делать, нужно больше информации чтоб сказать нужно/ненужно

Старый 05.09.2014, 13:44
sospamom вне форума Посмотреть профиль Отправить личное сообщение для sospamom Найти все сообщения от sospamom
  № 7  
Ответить с цитированием
sospamom

Регистрация: Jun 2008
Сообщений: 126
Про такие вот случаи что скажете?

Пример из движка FlashPunk.

Класс net.flashpunk.utils.Input.as

Код AS3:
/**
 * If the mouse button was pressed this frame.
 */
public static var mousePressed:Boolean = false;
 
/**
 * If the mouse button was released this frame.
 */
public static var mouseReleased:Boolean = false;
 
// ...
 
public static function update():void
{
	// ...
	if (mousePressed) mousePressed = false;
	if (mouseReleased) mouseReleased = false;
    // ...
}
Добавлено через 5 минут
Я просто еще думал может false это на самом деле создание в памяти объекта типа Boolean, который потом кинем в someVar.

И строчка someVar = false будет генерить объект в памяти.

Старый 05.09.2014, 13:55
Gerbert вне форума Посмотреть профиль Найти все сообщения от Gerbert
  № 8  
Ответить с цитированием
Gerbert
Banned
[+1 06.12.14]
[+1 18.12.14]
[+1 30.12.14]

Регистрация: Aug 2014
Сообщений: 461
Сказать про такой случай можно лишь -
1) Проверьте скорость выполнения.
2) Так правильней.

Старый 05.09.2014, 14:49
MikroAcse вне форума Посмотреть профиль Отправить личное сообщение для MikroAcse Найти все сообщения от MikroAcse
  № 9  
Ответить с цитированием
MikroAcse
 
Аватар для MikroAcse

Регистрация: Feb 2012
Сообщений: 1,540
Цитата:
2) Так правильней.
Если это обычная переменная, то нифига не правильно
Смысл плодить проверки?

*Только что несколько раз измерил скорость выполнения, разница (и то небольшая) видна только после 100000000 итераций*

Добавлено через 2 минуты
Цитата:
Я просто еще думал может false это на самом деле создание в памяти объекта типа Boolean, который потом кинем в someVar.
Есть такая штука, как "примитивы". В AS3 это Number, int, String, Boolean.
Boolean, насколько я знаю - 1 бит (поправили). Не думаю, что вы когда-нибудь увидите разницу.

Кстати, if(someVar) равняется if(someVar == true), то есть тут тоже по вашему "создаётся объект true".


Последний раз редактировалось MikroAcse; 05.09.2014 в 16:19.
Старый 05.09.2014, 16:11
Nooob вне форума Посмотреть профиль Отправить личное сообщение для Nooob Найти все сообщения от Nooob
  № 10  
Ответить с цитированием
Nooob
 
Аватар для Nooob

Регистрация: Mar 2007
Сообщений: 319
Цитата:
Сообщение от MikroAcse Посмотреть сообщение
Boolean, насколько я знаю - 1 бит.
32 бита

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

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

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


 


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


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