wangyao5 / achartengine

Automatically exported from code.google.com/p/achartengine
0 stars 0 forks source link

Use of ArrayLists and MathHelper seem to be creating a large amount of overhead #229

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
When running traceview with ~7000 points on the screen in a LineChart, in one 
instance during the execution of XYChart.draw(), Float.valueOf was taking 6.4% 
of the cpu time, MathHelper.getDoubles() and .getFloats() was taking almost 
10%. XYChart.drawSeries() was using 29%, 16% of which was also 
MathHelper.getFloats(), and the rest of Canvas and Path related calls.

Using an array that is resized automatically (see the attached patch), 
XYChart.drawSeries() instead used 52% of the cpu time spent in XYChart.draw(), 
of which almost 100% was used on Path and Canvas related calls.

I also surrounded the clickableArea list population code with 
mRenderer.isClickEnabled() check, which may or may not be desired.

This seems to give a slight improvement in performance when touch 
panning/zooming with a large number of points.

What version of the product binary library are you using?
1.0.0

Original issue reported on code.google.com by Jonathan...@gmail.com on 3 Jul 2012 at 8:37

GoogleCodeExporter commented 9 years ago
[deleted comment]
GoogleCodeExporter commented 9 years ago

Original comment by Jonathan...@gmail.com on 3 Jul 2012 at 11:56

Attachments:

GoogleCodeExporter commented 9 years ago
Thanks for the awesome bug report.
I have done some changes that will allow avoiding this data copying and 
duplication. Can you please run your profiling on the source code in SVN and 
see if it has improved?

Original comment by dandrome...@gmail.com on 9 Jan 2013 at 11:48