Home -> PredWeb Флаш Блог -> Флаш, вектори и натовареност на процесора.
Тези дни, работейки върху Флаш приложение, се сблъсках с проблем, който ми отне известно време докато го реша. За това реших да публикувам тази статия и евентуално да спестя няколко часа на някой, който би се сблъскал с подобен проблем.
Тъкмо бях приключил нова версия на приложето за визуализация на фирмената структура, когато получих мейл от клиента, че при добавяне на повече звена към чарта се получава над 50% натовареност на процесора, като на моменти натовареността стига до над 80%. И това без приложението да извършва каквото и да било дествие. Направих тестове и видях, че кога приложението е просто на фокус се получава над 10% натовареност, а само като се движи курсура на мишката натовареността скача до и над 50%. Изгубих няколко часа в ровене из кода за стандартните проблеми в такива ситуации - EnterFrame функции, безкрайни цикли и т.н., но не открих какъвто и да било нередно, още повече че при тази версия кода вече беше минал сериозна оптимизация.
Оказа се, че проблема всъщност не е проблем, а просто на флаш плеър са му нужни сериозни ресурси, за да се справи с такова количество векторна графика /всики графики в приложението са векторни/, дори да не извършва никакво дествие с тях, а просто да ги визуализира. Решението на проблема е cacheAsBitmap. Резултата беше значителен - натоварването на процесора в моментите, когато преди това достигаше 50%, сега варираше между 2%-8%, а като цяло приложението не превишаваше 12-15% натовареност в най-пиковите моменти.
/Тук да уточня, че тези резултати са от машина с: Pentium4 двуядрен процесор на 3,4GHz, RAM - 1GB, NVIDIA GForce7300LE видеокарта/.
Ако генерирате графиките с код, в клипа, който ги съдържа просто добавете този ред:
myMovieClip.cacheAsBitmap = true;
Ако клипа ви е направен в графичната среда на Флаш, в панела Properties -> Display трябвада сложите отметка пред Cache as bitmap.
Надявам се да съм ви бил полезен с тази статия.
Тъкмо бях приключил нова версия на приложето за визуализация на фирмената структура, когато получих мейл от клиента, че при добавяне на повече звена към чарта се получава над 50% натовареност на процесора, като на моменти натовареността стига до над 80%. И това без приложението да извършва каквото и да било дествие. Направих тестове и видях, че кога приложението е просто на фокус се получава над 10% натовареност, а само като се движи курсура на мишката натовареността скача до и над 50%. Изгубих няколко часа в ровене из кода за стандартните проблеми в такива ситуации - EnterFrame функции, безкрайни цикли и т.н., но не открих какъвто и да било нередно, още повече че при тази версия кода вече беше минал сериозна оптимизация.
Оказа се, че проблема всъщност не е проблем, а просто на флаш плеър са му нужни сериозни ресурси, за да се справи с такова количество векторна графика /всики графики в приложението са векторни/, дори да не извършва никакво дествие с тях, а просто да ги визуализира. Решението на проблема е cacheAsBitmap. Резултата беше значителен - натоварването на процесора в моментите, когато преди това достигаше 50%, сега варираше между 2%-8%, а като цяло приложението не превишаваше 12-15% натовареност в най-пиковите моменти.
/Тук да уточня, че тези резултати са от машина с: Pentium4 двуядрен процесор на 3,4GHz, RAM - 1GB, NVIDIA GForce7300LE видеокарта/.
Ако генерирате графиките с код, в клипа, който ги съдържа просто добавете този ред:
myMovieClip.cacheAsBitmap = true;
Ако клипа ви е направен в графичната среда на Флаш, в панела Properties -> Display трябвада сложите отметка пред Cache as bitmap.
Надявам се да съм ви бил полезен с тази статия.




