如何快速找到渲染瓶颈的案例

1 通过GetTickCount判断耗时的操作步骤

I'm rendering geographic line data.  I'm trying to get my data
loading/rendering process in the ballpark of existing commercial products
but right now I'm a little over 4x slower.  I ran a few timings and the
bottleneck appears to be happening when I add my stroke to the rasterizer
with ras.add_path(stroke).  All elements are in one path inside the stroke's
path_storage.  Is there better (faster) way to rasterize the stroke that
still has nice looking output?

// 24 seconds:
//   - Load GIS data
//   - Convert to image coordinates
//   - Put in storage path

// 0-2 seconds:
agg::conv_stroke<agg::path_storage> stroke(pathStore); 
stroke.width(.5);
stroke.line_join(agg::round_join);	
stroke.inner_join(agg::inner_smart);

// 167 seconds
//   - This is where things slow down
ras.add_path(stroke);

// 0-2 seconds:
ren.color(agg::rgba8(100,50,1,255));
renderTimer.ProfileStart(LOGSECS);
agg::render_scanlines(ras, sl, ren);


// Total time:  ~195 seconds

2 通过邮件联系作者

you may try to dset the clip box in the
rasterizer:
ras.clip_box(0,0, width, height);
By default there's no clip box, so that all edges are rasterized directly.
Since you have so huge time difference, I suspect you have a plenty of points
outside of the actual clip box.


3 寻找替代方案

A switch from agg::rasterizer_scanline_aa<> to agg::rasterizer_outline_aa
dropped my rendering time from 195 seconds to 74 seconds.


你可能感兴趣的:(案例,agg)