![]() |
Ой, задел ты меня, дорогой товарищ xintrea, за живое своим скипом. Этот твой скип - он теперь мне вроде шила в одном месте - сидеть спокойно не дает...
Итак. Ни для кого, надеюсь не секрет, что флэш построен на принципе виртуальной машины. Самый близкий аналог, пожалуй Java. И флэш-плеер является для него ни чем иным, как интерпретатором. То есть той самой VM. Аналогии с Явой очень близкие. Вплоть до того, что в AS2.0 принцип обработки исключений почти полностью позаимствован из JVM. Поэтому в дальнейшем я буду ссылаться на Java Virtual Mashine в целом (хотя это несколько различных машин), так как материала по Java гораздо более подробные. Итак. Как нам известно виртуальная машина всегда является процессом, а потоки, выполняемые программой - наследованными процессами. Поэтому скорость выполнения того или иного потока никак не может быть величиной постоянной - в первую очередь она зависит от приоритета родительского процесса, так как приоритет порожденного процесса не может быть выше приоритета родительского. Другой фактор, от которого зависит эффективность работы JVM - количество выделенных ей ресурсов, ибо зачастую исполняемому коду отводится небольшая "песочница" где-то в памяти, из которой он выйти не в состоянии. И изминить размеры этой песочницы может только "доверенный" код. То есть только тот код, которому пользователь собственноручно разрешил изменить "песочницу". Но вылезти в основную область памяти у приложения всё-равно не получится. И третий - самый, пожалуй, неприятный, но вместе с тем, неизбежный фактор - сборщик мусора. За то, что нам не приходится каждый раз инициализировать и завершать, а потом уничтожать объекты вручную мы платим тем, чтоэтот самый сборщик мусора - есть. Именно он очищает память. Пример: Код:
code:obj = new Object();Вот работа сборщика мусора, в 80 процентов случаев и приводит к жутким тормозам. К сожалению, в AS возможность явного вызова сборщика мусора недокументирована, поэтому приходится обходится подручными средствами. - пересозданием объектов. Дело в том, что синтаксическая запись a=new Object (); означает, что создается новый объект Object, и переменной a присваиватся ссылка на этот объект. Пример : Код:
code:obj1 = {param:10};Но. В AS есть обходной путь. Иработает он только для объектов типа MovieClip. Дело в том, что на одном уровне глубины (depth) одновременно может существовать только один объект с уникальным именем. Но (!) при создании второго такого объекта первый - не уничтожается, а перезаписывается с новыми параметрами. То есть не происходит выделение новой области памяти. а перераспределяется старая. Поскольку функция в AS так же считается объектом-ссылкой на область памяти - подобное прокатывает и с функциями. Другой вопрос, если мы переменной присвоим ссылку на другой объект. Тогда перезаписи не происходит и ячейка памяти остается занятой. В таких условиях даже на одной машине в зависимости от окружения код будет выполняться разное время, а ты говоришь P166=P2400. И еще. Я замерил присланный код на двух машинах с близкими характеристиками. Windows и FreeBSD. 11 мс и 13 мс соответственно. Итак, к чему же всё это было сказано? А к тому, что если ты, уважаемый xintrea, хочешь что бы тебя воспринимали всерьез, разберись, для начала с темой. А уже потом пытайся перевернуть мир. И уверяю тебя, что когды ты копнешь поглубже, переворачивать его тебе совсем не захочется sincerely yours, Dindin |
Да уж... Всего три слова - горе от ума. Не обижайтесь.
Вопрос был предельно простым и понятным. Почему ролик по ентой пресловутой ссылке крутится почти с одинаковой скоростью что на P166, что на P2400? Дополнительная информация: P166 с 32Mb мозгов и видюхой S3TrioV64+ мягко говоря довольно сильно отличается от P2400 с 512Mb и Radeon7500. Несмотря на такие весьма большого порядка различия, ролик крутится примерно с одинаковой скоростью (различие - секунды). Винда свежезагруженная, первая запущенная пользователем программа - Flashlayer6 с этим клипом. По логике вещей скорость должна отличаться в разы, на деле - несколько процентов. > В таких условиях даже на одной > машине в зависимости от > окружения код будет > выполняться разное время, > а ты говоришь P166=P2400. Дорогой Dindin, в своих рамышениях вы потеряли нить разговора. Ответа на вопрос как соптимизировать/ускорить код или переделать структуру скрипта я тоже не услышал. Между тем, на других информационных ресурсах эту тему воспринимают вполне адекватно, тем более что у людей есть схожие проблеммы и пути их преодоления. Досвидания, дорогой Dindin. |
Цитата:
|
Цитата:
Диньдинь очень в тему упомянул про виртуальную машину - ведь она является посредником между твоим скриптом и операционной системой. и скорость исполнения скрипта зависит от этой машины. — если ты спросишь как ускорить виртуальную машину - ответ: не знаю. руки не доходят покопаться в СДК, может там что-то прояснится... — если ты спросишь как ускорить код (о чем ты вообще-то не спрашивал изначально) - я скажу что нужно почитать документацию по http://flasm.sourceforge.net/ и поэкспериментировать с разными типами синтаксиса, какие коды ассемблера ВМ они генерят, какие быстрее выполняются и как их оптимизировать. Цитата:
и вот это меня вообще поражает: Цитата:
если ты говоришь что скорость почти идентична - то различие должно быть в пределах 100мсек. а ты говоришь секунды :) вот оно и различие... то есть все эти слова выше не относятся к твоему эксперименту, потому что ты не верно интерпретировал результат самого эксперимента. Цитата:
лично я всегда рад найти и признать ошибки. где люди говорят об этом же? просто посмотрим, сравним, проанализируем... м? |
http://www.peterjoel.com/blog/?archi...01_archive.xml - собственно говоря первоисточник, те самые буржуйские источники, на которые ссылается глубокоуважаемый xintrea.
Цитата:
|
Там же под той же датой встречаем такие статьи, как:
"Flash Player Performance on OS X" "Flash Player speed optimisations are platform dependent" И вообще, там много решений как по оптимизации скриптов, так и по оптимизации работы плеера в разных ОС. Если уж humble opinion тех, кто отвечает Вам, уважаемый xintrea, Вас не устраивает, обращаетесь к столь любимым Вами буржуйским источникам. И не морочьте голову. ЗЫ спасибо nuran'у за ссылку. Беру назад свои слова о чайниках |
| Часовой пояс GMT +4, время: 02:39. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.