[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Gnash-dev] gnash performance-improved issue

From: Aix
Subject: Re: [Gnash-dev] gnash performance-improved issue
Date: Wed, 15 Apr 2009 15:40:50 +0800
User-agent: Thunderbird (Windows/20090302)

Hi strk,

Thanks your information, I already try to use gprof to test gnash performance.

test case:
swf animation details:
width: 550px, height: 400px, frames count: 1191, zlib compressed: yes
shaped size: 309.27 kb(25.7%),  picture size: 84.33kb (7.0%), morph size: 76b (0%), font size: 10.80kb(0.9%), sounds size: 750.89kb(62.5%)

Flat profile:

Each sample counts as 0.01 seconds.
  %   cumulative   self              self     total           
 time   seconds   seconds    calls  ms/call  ms/call  name    
 16.08      1.84     1.84   203903     0.01     0.03  agg::span_gradient<agg::rgba8, agg::span_interpolator_linear<agg::trans_affine, 8u>, agg::gradient_radial, agg::gradient_lut<agg::color_interpolator<agg::rgba8>, 256u> >::generate(agg::rgba8*, int, int, unsigned int)
 12.50      3.27     1.43                             gnash::render_handler_agg<agg::pixfmt_alpha_blend_rgba<agg::blender_rgba_pre<agg::rgba8, agg::order_abgr>, agg::row_accessor<unsigned char>, unsigned int> >::render_handler_agg(int)
 12.02      4.64     1.38 68980645     0.00     0.00  agg::fast_sqrt(unsigned int)
  8.30      5.59     0.95 137961290     0.00     0.00  agg::dda2_line_interpolator::operator++()
  7.26      6.42     0.83 62539759     0.00     0.00  agg::blender_rgba_pre<agg::rgba8, agg::order_bgra>::blend_pix(unsigned char*, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int)
  4.55      6.95     0.52 68980645     0.00     0.00  agg::span_interpolator_linear<agg::trans_affine, 8u>::operator++()
  4.11      7.42     0.47 68980645     0.00     0.00  agg::span_interpolator_linear<agg::trans_affine, 8u>::coordinates(int*, int*) const
  3.85      7.86     0.44   204303     0.00     0.00  agg::alpha_mask_u8<1u, 0u, agg::one_component_mask_u8>::combine_hspan(int, int, unsigned char*, int) const
  3.37      8.24     0.39 68980645     0.00     0.00  agg::copy_or_blend_rgba_wrapper<agg::blender_rgba_pre<agg::rgba8, agg::order_bgra> >::copy_or_blend_pix(unsigned char*, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int)
  2.71      8.55     0.31 137961290     0.00     0.00  agg::dda2_line_interpolator::y() const

performance result:
this swf animation time length: 00:42
after test, gnash with agg should take 1:30 time to complete playing.

According to my test case, agg::span_gradient just only calls 203903 times. but the timer % is 16.8. Is key point to cause not good performance?
But there are some strange, gnash::render_handler_agg time number is 12.50, but there are not calls.


strk 提到:
On Sat, Apr 11, 2009 at 04:00:08PM +0800, Aix wrote:

I wonder try to improve gnash performance, but I don't have any idea to 
do this work now. If I want to do it by myself(only one), what something 
and effort can I do?

I belive your first step would be getting a more detailed profile
using proper profiling tools (gprof, oprofile). Also, compare outputs
as it could be cairo is being faster only because is not doing everything
needed to render a specific animation.

Note that gnash AGG renderer is known to be slow at rendering bitmap fills
and that a bug (fixed in trunk) made this worst by smoothing bitmaps even
when not supposed to.

If you find two movies being rendered at comparable quality by cairo and
agg, with the latter taking more time, publishing the profiles would
help. See and add a new page from
there for the testcase.



 Free GIS & Flash consultant/developer      ()  ASCII Ribbon Campaign  /\  Keep it simple! 

reply via email to

[Prev in Thread] Current Thread [Next in Thread]