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

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

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

Регистрация: Mar 2011
Адрес: Уфа
Сообщений: 95
Отправить сообщение для Welcometo с помощью ICQ
Цитата:
Трейсы выдали: 1000, 621, 242, 362 соответственно.
То есть new Object почти вдвое быстрее чем {} ?
А почему тогда рекомендуется использовать {}, как писал udaaff.

Старый 27.06.2011, 00:03
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 12  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Смысл не в скорости, т.как по скорости нужно оптимизировать, когда это критично. Смысл в том, что когда вы компилируете X.Y - компилятор проверит, и выдаст ошибку, если у объекта X нет свойства Y. А когда вы X[Y] - это называется reflection - т.е. вы используете возможность среды выполнения найти по заданному строковому ключу свойство объекта. Естесственно, это будет не надежно (т.как вы можете сделать ошибку в имени свойства, т.как кто-то может после компиляции переиначить таблицу символов - место в котором среда выполнения будет искать соответствие ключа и свойства), ну и понятное дело, будет медленнее, т.как, даже не смотря на то, что флешевый компилятор - не оптимизирующий, при создании имен во время компиляции он может использовать более или менее жесткие правила. Менее жесткие правила требуют впоследствие от среды выполнения больше работы для нахождения свойства.
__________________
Hell is the possibility of sanity

Старый 27.06.2011, 01:45
S-ed вне форума Посмотреть профиль Отправить личное сообщение для S-ed Найти все сообщения от S-ed
  № 13  
Ответить с цитированием
S-ed
 
Аватар для S-ed

Регистрация: Jul 2001
Адрес: SPb.RU
Сообщений: 148
Отправить сообщение для S-ed с помощью ICQ
Код AS3:
obj["2011"] = 50;
obj.2011 = 50; //ну, тут Вы, думаю, поняли...
__________________
RTFM

Старый 27.06.2011, 07:20
goodguy вне форума Посмотреть профиль Найти все сообщения от goodguy
  № 14  
Ответить с цитированием
goodguy
Banned
[+1 05.11.11]
[+1 09.08.11]

Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
Цитата:
Сообщение от wvxvw Посмотреть сообщение
Смысл не в скорости, т.как по скорости нужно оптимизировать, когда это критично. Смысл в том, что когда вы компилируете X.Y - компилятор проверит, и выдаст ошибку, если у объекта X нет свойства Y. А когда вы X[Y] - это называется reflection - т.е. вы используете возможность среды выполнения найти по заданному строковому ключу свойство объекта. Естесственно, это будет не надежно (т.как вы можете сделать ошибку в имени свойства, т.как кто-то может после компиляции переиначить таблицу символов - место в котором среда выполнения будет искать соответствие ключа и свойства), ну и понятное дело, будет медленнее, т.как, даже не смотря на то, что флешевый компилятор - не оптимизирующий, при создании имен во время компиляции он может использовать более или менее жесткие правила. Менее жесткие правила требуют впоследствие от среды выполнения больше работы для нахождения свойства.
Странно. У меня компилятор не выдает никаких ошибок, даже если я пытаюсь ему подсунуть свойство, отсутствующее в объекте. И если попытаться оттрейсить такое свойство, просто выдаст null, и не более.

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

блогер
Регистрация: Mar 2008
Адрес: РФ, Санкт-Петербург
Сообщений: 2,272
Записей в блоге: 5
Отправить сообщение для gloomyBrain с помощью ICQ Отправить сообщение для gloomyBrain с помощью Skype™
Цитата:
просто выдаст null, и не более
Вы чем компилируете? Если свойство не существует, значит оно undefined, а не null
Код AS3:
var o:Object = { };
trace(o.a);     // undefined
trace(o["a"]); // undefined
__________________
...вселенская грусть

Старый 27.06.2011, 11:26
goodguy вне форума Посмотреть профиль Найти все сообщения от goodguy
  № 16  
Ответить с цитированием
goodguy
Banned
[+1 05.11.11]
[+1 09.08.11]

Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
gloomyBrain, да, undefined, просто сказал по памяти. Но суть не в этом, суть в том, что ошибок не выдает на этапе компилирования. Только при попытке дальнейшего обращения к этому свойству.

Старый 27.06.2011, 11:41
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 17  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Ну так это вообще разные вещи... есть доступ к элементам массива или хеш, а есть обращение к свойствам. Когда вы обращаетесь к строковому хешу то, скорее всего, происходит следующее (так это происходит в других языках, как именно это происходит в AS3 - я не знаю, но вряд ли отличается):
Используя простой алгоритм хеширования из строкового ключа создается числовой индекс (обычно 0..2^16) и в массив по этому индексу заносится ссылка на объект, который есть значение пары ключ-значение.
Когда вы используете синтаксис с точкой, то компилятор может быть уверен, что у него есть полная строка, и он может элементарно заменить ее на переход по индексу. Когда вы используете квадратные скобки, то у компилятора такой уверенности быть не может, и он оставит процедуру создания индекса рантайму. Естесственно, что второй вариант будет дольше. Но, опять же, это не доступ к свойству, они просто одинаково записываются в AS3, но свойства - это квалифицированые имена, и они не обязаны вообще привязываться к каким-то строкам, в то время как строковой хеш, естесствено, обязан использовать строки.
__________________
Hell is the possibility of sanity

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

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Цитата:
Сообщение от goodguy Посмотреть сообщение
Но суть не в этом, суть в том, что ошибок не выдает на этапе компилирования. Только при попытке дальнейшего обращения к этому свойству.
Потому что объект динамический.
__________________
משיח לא בא
משיח גם לא מטלפן

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

Регистрация: Sep 2002
Сообщений: 30,784
Цитата:
Сообщение от udaaff Посмотреть сообщение
Рекомендуется второй вариант.
Здесь нужно дописать ещё то, что это рекомедуется только в том случае, когда вы этих объектов миллион в секунду создаёте.

Старый 28.06.2011, 02:06
S-ed вне форума Посмотреть профиль Отправить личное сообщение для S-ed Найти все сообщения от S-ed
  № 20  
Ответить с цитированием
S-ed
 
Аватар для S-ed

Регистрация: Jul 2001
Адрес: SPb.RU
Сообщений: 148
Отправить сообщение для S-ed с помощью ICQ
Цитата:
Здесь нужно дописать ещё то, что это рекомедуется только в том случае, когда вы этих объектов миллион в секунду создаёте.
Цитата дня. =)))
__________________
RTFM

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

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

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


 


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


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