![]() |
Вопрос по Муку
Всем привет.
Объясните пожалуйста этот отрывок из Мука: "Код, размещаемый в инициализаторе класса, выполняется в режиме интерпретации, JIT-компилятор не компилирует его. Динамически откомпилированный код выполняется гораздо быстрее интерпретируемого кода, поэтому в тех случаях, когда на первом месте стоит вопрос производительности, код, интенсивно использующий ресурсы процессора, следует выносить за пределы инициализатора класса." Заранее спасибо. |
ОК, когда AS компилируется, из него создается байткод. Байткод - это примитивные команды виртуальной машине плеера о том, что за чем нужно делать. Это своего рода AS Assembler. Дальше, когда этот байткод прочитвяется плеером, плеер должен создать из него исполняемую программу, делает он это с помощью JIT (Just in-Time compiler). Этот компайлер уже подготавливает машинный код, который и будет выполнятся вашими процессором, видео карточкой, оперативкой и т.д. JIT может делать определенные оптимизации по дороге, как, например, перекаст из числа с плавающей запятой в целое число (если такое возможно), кроме всего прочего, раз скомпилировав метод класса он его может закешировать и больше не трогать. А вот с конструктором так, по какой-то причине не происходит, и конструктор каждый раз прочитывается и компилируется в машинный код по-новой.
Только, пожалуйста, в следующий раз давайте теме более осмысленное название. |
спасибо за разъяснения
|
хм. т.е.конструкцию
Код AS3:
Код AS3:
|
ага вот почему умные AS дядки говорили - "В конструкторе минимум кода!"
|
Разве стоит обращать на это такое большое внимание? Ведь даже при большом проекте компилляция не занимает значительного количества временных ресурсов, а в конечном итоге мы все равно получаем полноценно откомпиллированный код. Или я не парвильно понял и элементы кода будут интерпретироваться (не компиллироваться) в любом случае?
|
если я правильно понял, в целях производительности, генерацию лабиринта 200 на 200 клеток лучше вынести в отдельный метод, а не пилить это все в конструкторе
но с другой стороны мне сложно представить себе, что какой-то псих захочет запихнуть это все в конструктор))) |
Котяра:
Ради одной операции - не стоит. TanaTiX: Речь идет о компиляции в машинные коды, это происходит всякий раз как нужно отобразить вашу SWF, а не тогда, когда она компилируется в байткод. JIT компилятор, вернее его версии используются в разных технологиях, например C#, Java, JavaScript - для того, чтобы запустить приложение на любом из этих языков его нужно перевести в машинные коды той платформы, на которой оно должно запустится, это и делаeт JIT компилятор. |
насчёт одной операции понятно) это для примера)
другой вопрос насколько хорошо JIT компилятор вообще работает в swf. где что почитать можно? |
|
| Часовой пояс GMT +4, время: 01:40. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.