![]() |
наконец, откопали исходные коды встроенных обьектов AS :)
Вложений: 1
с чем вас и поздравляю :)
товарищ Casper Schuirink, с мэйл-листа флэшкодеров, сообщает про инициализацию встроенных обьектов при запуске плэйера. Все обьекты условно делятся на три части, обьекты оставшиеся "в наследство" от предыдущих версий (функции startDrag, tellTarget, etc) , обьекты созданные посредством стандартных операций AS, и наконец обьекты созданные на основе "родных" кодов, т.е. через ф-ию ASNative. так вот, ниже приведен весь сорс инициализации, то есть, так, как это происходит на самом деле :) очень любопытно. |
теперь ясно почему такие тормоза...
|
однозначно tell target - форева...
шутка, не поймите меня превратно, |
Вот бы на Флейме кто-нибудь рассказал -
откуда взялось и что из этого следует. |
откопать просто, есть проги которые работают с памятью, вот и просканяли момент инициализации плэйера, а следует то что очч тормознуто все реализовано, имхо "родная" реализация тех же функция работала бы намного быстрее, но тут видимо опять сэкономили на размере плагина :)
чтож ждем релиза шестерки... |
Гурманы!:)
А пятерочную распечатку не подкините?:) |
Цитата:
|
Блин, я думал, что это из 6-го:)
2ish Тогда обьясни мне плиз, что за зверь ASNative? |
обьясняю. все встроенные обьекты AS версии пять и выше, имеют не "родной" характер. так вот, макромедия создала только одну новую, по настоящему встроенную функцию - ASNative, остальные же, так называемые, системные обьекты, представляют собой стандартный набор операций из методов младших версий (например tellTarget, тут макромедия просто не стала их переписывать, а оставила "как есть"), обьектов того же AS (см. сорсы), и как раз функции ASNаtive. кто программировал на Java поймет сразу :)
с помощью ASNative осуществляется доступ к "таблице" "родных" методов плейера пятой версии. например ASNative(100,4) вернет функцию которая известна нам как ф-ия trace. поэтому весь движок AS пятерки, построен на самом же AS :) опять же кто програмировал в Java, поймет может немного непонятно, но на самом деле все просто :) |
круть =)
|
Думаю в шестерке тоже самое будет.....
хотя все равно будет быстрее работать. |
Ускорение за счет улучшения ASnative функций :)
Во всяком случае в бете есть и ASnative и ASSetPropFlags.... мне во всяком случае такая архитектура вполне устраивает. |
Цитата:
но все равно в ней есть некоторые плюсы... |
6 rabotaet bistree..
provereno.......... zhdu.. nedozhdus...... |
Вопрос: Работает ли плеер с АСНейтев кодами быстрее чем со стандартными операторами?
ДА или НЕТ? ЗЫ Уклончивые ответы я уже слышал, нужна конкретика :) |
ЗЫЫ
почему спрашиваю, да потому что слышал разные ответы, но сам уверен что этот интерпритатор при работе с чистыми вызовами АСНеитив, без операторов, должен работать быстрее. Может не заметно, но при мега расчетах трехмера(предположим) разница должна быть ощютимой. ИМХО |
Ales, хм, как бы это.... ну вот смотри:
x=function() { // some code } y=x что быстрее выполнится x или y? правильно без разницы, так как функция одна и та же или x=function() { //some code } y=function() { //some code some_var=x(some_args); //some code } в этом случае явно быстрее выполнится функция у. мы сейчас говорим о разнице в доли милесекунд. но, вот опять пример: x=ASNative(200,0)(-1) // функция ака Math.abs тут смотри сначала выполнится ф-ия ASNative, а потом результирующая ф-ия, то есть та которую вернет ASNative. далее x=Math.abs(-1), тут тоже функция выполнится не сразу, сперва будет проинициализирован обьект Math. поэтому сравнивать нужно "чистые" функции: x=Math.abs y=ASNative(200,0) так, вот что быстрее? x или y есть простой способ проверить: Код:
arg=-1но это для функция являющихся прямым аналогом ASNative(x,x) пример обратный: Код:
function Number (v) {повторюсь, что мы говорим о очень малых разницах в выполнении. |
2john судя по всему макромедия и не собирается отступать от такой конструкции, я думаю что улучшения скорости выполнения кода будут достигнут за счет модернизации интерпритатора байткода :)
|
да кстати ASNew тоже полезная штучка :) очень удобно если надо создать конструктор и функцию с одним именем.
Код:
test=function() { |
2ish
да полезная функция факт... но думаю лучше ее не пользовать, чтобы не делать лишних действий, функции - функциево, конструктору - конструкторово :) в варианте с Number и String - это понятно, либо объект либо литерал, а так..... второй момент, насколько я посмотрел код инициализации, ссылки на методы в большенстве определяются сразу (при начале работы плейера), поэтому как бы методы имеют прямые ссылки и к ASnative уже не обращаются, поэтому и ускорения-замедления никак не может быть... |
А вообще то радует то что возможностей в AS для ООП куда больше чем в JS 1.5
А какая красота в шестерке будет .... |
Цитата:
|
2ish:
Мда. Перечитал. Подумал. :) Еще раз подумал. :) Спасибо. Пока вопросов нет:) |
Уродство. В смысле, идея разделить API и функции вообще продуктивна, но только в том случае, если программерам разрешено использовать только API. Сам факт того, что "простой флашер" может использовать напрямую ASNative разрушает всю концепцию "разделенности". В итоге мы видим только еще одну "надстройку", что не увеличивает производительность. Здесь справедливо заметили, что уменьшение скорости происходит "лишь немного", но
а) флаш - ИНТЕРПРЕТАТОР б) бардак для них самих. Факт: они пишут одну грандиозную ф-цию ASNative, где под номерами перечислены все функции Flash. Довелось мне работать с такой "безличной" структурой (СУБД для одной бо-о-о-ольшой страховой компании), и после 2-х лет самоимения я от такой технологии отказался. в) приключились непонятные ограничения (напр. попробуйте сделать переменную с именем "o" - буква мОлОкО-латинское-маленькое, спасибо WB) г) здесь немного, там немного - глядишь и набежало. Есть три хороших правила: 1. Бережливость. 2. Бережливость к сбереженному. 3. Бережливость к бережливо сбереженному. (с) Вайнеры К тактам ЦПУ это также относится. |
Цитата:
а вобще, имхо, удобно, в первую очередь для нас же самих. зная изначально весь сорс обьектов плюс значения "таблицы" встроенных функций, определять AS "под себя" на каждый конкретный случай. |
Цитата:
думаю структура там не такая "плоская" :) Задача только передать ссылку на более высокий уровень ... |
2John
т.е. ASNative - еще одна надстройка. :):):) Не бред ли? Если так, то ММ меня удивляет. Насчет плоскости - не знаю, брат, не знаю. Посмотри как они константы вводят (Пи etc), это иначе как "наиплоскейшая плоскость" не назовешь. ;) 2ish >зная изначально весь сорс обьектов плюс значения >"таблицы" встроенных функций, определять AS "под >себя" на каждый конкретный случай. Если я знаю таблицу встроенных ф-ций, API мне нафиг не нужен, ибо это макросы, по большому счету. Чего определять-то для конкретного случая? Ф-цию перегрузить я и так могу. Или сделать свою, что еще проще и красивше. Сорс объектов полезен, ИМХО, только из-за того, что там можно найти что-нить недокументированное. :) >а какие тут ограничения? Ну... если сделать текстовое поле, к нему привязать переменную "o" и не делать начальное обнуление, то при обработке этого поля (если юзер туда ничего не вбил) там обнаруживалось какое-то значение, Object. А вообще, ММ ламмахи - надо было просто сделать в конце инициализации delete всех временных объектов. :) Или использовать их временные варианты var |
Цитата:
но, имхо, удобно в плане создания своего API. без лишних наворотов. Цитата:
Цитата:
этот обьект временный и после инициализации API больше не используется, ошибка ММ в том что она забыла его удалить в конце Цитата:
|
2Смольный:
>> Посмотри как они константы вводят... А как грамотно надо? |
2Amadeus: Грамотно , константы надо расчитывать. В курсе лекций по высшей математике есть большая теорема для рассчета числа "пи".
|
И в разных условиях Пи оказывается разным? :confused:
|
i potom nazyvaetsya peremennoi :D
|
"Грамотно" - это вкомпилировать константу в exe-шник. Может, рассчитать, но в exe-шнике, т.е. в системных кодах. Плееры-то у нас все-таки системно-ориентированные, т.е. откомпилированные под конкретную ОС. Или опросить системные библиотеки - на в жизнь не поверю, чтоб нигде в системе гарантированно не было прописано число Пи. Гхоссподи, любой совр. проц имеет матсопроцессор, там эти константы на железном уровне прописаны. А плеер все-таки часть IE, след. часть ОС.
|
Теперь надо бы написать руководство
по настоящему ООП во флэше. |
2Amadeus
слудущая версия покажет, что настоящее а что нет... :) |
А вот когда она, новая-то версия появится?
И еще когда ею хоть половина юзеров обзаведется... А творить для кастомеров сейчас надо. О быстродействии и всем таком, а может быть и объекты, Color и Sound тоже не хороши? |
| Часовой пояс GMT +4, время: 14:50. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.