Показать сообщение отдельно
Старый 14.03.2012, 13:26
gloomyBrain вне форума Посмотреть профиль Отправить личное сообщение для gloomyBrain Найти все сообщения от gloomyBrain
  № 19  
Ответить с цитированием
gloomyBrain
 
Аватар для gloomyBrain

блогер
Регистрация: Mar 2008
Адрес: РФ, Санкт-Петербург
Сообщений: 2,272
Записей в блоге: 5
Отправить сообщение для gloomyBrain с помощью ICQ Отправить сообщение для gloomyBrain с помощью Skype™
Ну что, давайте сравним 3 способа (код + байт-код):
1)
Код AS3:
var d:DisplayObject = (DisplayObject) (new Sprite());
Код:
_as3_getlex flash.display::DisplayObject
_as3_getglobalscope 
_as3_findpropstrict flash.display::Sprite
_as3_constructprop flash.display::Sprite(param count:0)
_as3_call (param count:1)
_as3_coerce flash.display::DisplayObject
2)
Код AS3:
var d:DisplayObject = DisplayObject(new Sprite());
Код:
_as3_findpropstrict flash.display::DisplayObject
_as3_findpropstrict flash.display::Sprite
_as3_constructprop flash.display::Sprite(param count:0)
_as3_callproperty flash.display::DisplayObject(param count:1)
_as3_coerce flash.display::DisplayObject
3)
Код AS3:
var d:DisplayObject = new Sprite() as DisplayObject;
Код:
_as3_findpropstrict flash.display::Sprite
_as3_constructprop flash.display::Sprite(param count:0)
_as3_getlex flash.display::DisplayObject
_as3_astypelate 
_as3_coerce flash.display::DisplayObject
Итак, судя по всему 1) и 2) - практически одно и то же: вызов функции пакета DisplayObject c параметром. Отличие в том, что в 1) и 2) по-разному достается ссылка на функцию DisplayObject.
И 1), и 2) могут выкинуть исключение, в отличии от 3, который в случае неудачи просто вернет null.

Если судить по количеству инструкций - то самый медленный способ должен быть 1), который и использует автор. Более того, этот способ небезопасен.
__________________
...вселенская грусть