paragp / achartengine

AChartEngine is a charting library for Android applications. It currently supports the following chart types: line chart area chart scatter chart time chart bar chart pie chart bubble chart doughnut chart range (high-low) bar chart dial chart / gauge combined (any combination of line, cubic line, scatter, bar, range bar, bubble) chart cubic line chart All the above supported chart types can contain multiple series, can be displayed with the X axis horizontally (default) or vertically and support many other custom features. The charts can be built as a view that can be added to a view group or as an intent, such as it can be used to start an activity. The model and the graphing code is well optimized such as it can handle and display huge number of values. AChartEngine is currently at the 1.0.0 release. New chart types will be added in the following releases. Please keep sending your feedback such as we can continually improve this library. Find us on Facebook, too: http://www.facebook.com/achartengine Read a short introduction to AChartEngine here: http://www.javaadvent.com/2012/12/achartengine-charting-library-for.html Another good tutorial can be read here: http://jaxenter.com/effort-free-graphs-on-android-with-achartengine-46199.html
0 stars 1 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