|
From: | Aix |
Subject: | Re: [Gnash-dev] gnash performance-improved issue |
Date: | Wed, 15 Apr 2009 15:40:50 +0800 |
User-agent: | Thunderbird 2.0.0.21 (Windows/20090302) |
Hi strk, Thanks your information, I already try to use gprof to test gnash performance. test case: http://gprime.net/flash.php/blue 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%) profile: http://wmlab.csie.ncu.edu.tw/~aix/profile.blue2 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. Thanks, 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 http://wiki.gnashdev.org/Profiling and add a new page from there for the testcase. Thanks. --strk; Free GIS & Flash consultant/developer () ASCII Ribbon Campaign http://foo.keybit.net/~strk/services.html /\ Keep it simple! |
[Prev in Thread] | Current Thread | [Next in Thread] |