Тъкмо бях приключил нова версия на приложето за визуализация на фирмената структура, когато получих мейл от клиента, че при добавяне на повече звена към чарта се получава над 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.
Надявам се да съм ви бил полезен с тази статия.




