TeddyMarkProfile

From Gnash Project Wiki

Jump to: navigation, search

Movie: http://www.phlashers.com/projects/teddymark/teddyMarkAS2_200.swf

AGG profile

Top of call graph shows rendering takes more then 3 times as much as AS handling:

index % time    self  children    called     name

[3]     76.5    0.00   71.70       1         gnash::Gui::advanceMovie() [3]
                0.00   54.36    2323/2326        gnash::Gui::display(gnash::movie_root*) [5]
                0.00   17.28    2323/2323        gnash::movie_root::advance() [17]

In particular, generating bitmap fill spans is the bottleneck, as shown by the top of flat profile:

   %   cumulative   self              self     total
 time   seconds   seconds    calls   s/call   s/call  name
 40.69    38.14    38.14 35197061     0.00     0.00  gnash::agg_style_bitmap<...>::generate_span(...)
 8.27     45.89     7.75   502950     0.00     0.00  void agg::render_scanlines_compound_layered<...>(...)
 4.36     49.98     4.09                             malloc
 3.87     53.61     3.63                             free
 2.98     56.40     2.79 85833592     0.00     0.00  gnash::PropertyList::getProperty(unsigned long, unsigned long)

No display profile

With -r0, and -f1 for FPS profiling, gnash gets around 12.3 frames per second on dual core x86_64. The proprietary player reaches about 24 on the same machine.