RSS Feed
News
Jun
23
Posted by Yaroslav Pelyukh on 23 June 2016 04:12 PM

iOS Chart Performance: TLDR

In this post, we compare the performance of three well-known iOS Charting Libraries including our own brand new & upcoming iOS Chart: SciChart for iOS. In order to conduct a fair comparison, we have developed a comparison application which generates several different chart types and measures refresh rate (FPS – Frames per Second), as well as CPU Usage and startup time on each iOS Chart library.

Our findings were:

  • “Charts” (formerly iOS-Charts, the iOS Counterpart to MPAndroidChart) had reasonable performance, but poor real-time performance and poor startup time when many series or points were present.
  • One popular commercial iOS Chart library was tested (labelled CompetitorA) which had comparable performance to “Charts”. 
  • Finally, the fastest iOS Chart was SciChart for iOS, which beat all tested iOS Chart Controls by a wide margin.

At smaller datasets all the charts appeared fine, however once we increased the volume of data and rate of updating the iOS Chart control, all of the above slowed down significantly except for SciChart iOS. In all tests SciChart for iOS registered between 2-3x faster than the nearest competitor, and in one, a staggering 30x faster.

How to we measure iOS Chart Performance?

iOS Chart Performance is really important to us at SciChart. We strive to have the best, and the fastest Charting controls in the world, but how do we demonstrate what we’ve achieved vs. our competitors to would-be customers? We have developed a comparison application which generates several different chart types and measures refresh rate (FPS – Frames per Second) for several different iOS Chart Libraries. We also included such numbers like CPU usage and Start time. This is then used to draw conclusions about the performance of various iOS Chart Libraries vs. our own iOS Charts.

We’ve created an application which measures our Chart Performance in a number of scenarios, such as line, scatter, scrolling-line and many-series scenarios. The tests are designed to really stress the chart control and find it’s limits.

There there are several factors which influence overall performance of a iOS Chart Control. Such as:

  • Number of Series in the chart
  • Types of Series (e.g. Line, Scatter, Area, Candlestick)
  • Number of data-points per series
  • Rate of change of data (number of points appended or removed per second)
  • Thickness of pens / number of pixels filled
  • Number of transformations between data & pixel coordinates per second
  • Any additional calculations like Auto Ranging

These are reflected in the test cases and show stress on different areas of the renderer.

Who did We Compare Against?

We have compared the performance of iOS Charts by SciChart against the some popular and renowned iOS charting libraries, including:

  • Charts, an open source cross-platform charting software library for iOS and Android
  • Competitor A, a popular commercial cross-platform Android and iOS charting software

We also had a look at

  • CorePlot, an open source graph plotting library for iOS

However due to time constraints, plus poor stability and performance of these libraries when large data was appended, we have omitted them from the results – for now.

The Test Setup

What Tests are Run

A number of tests are run in our iOS Chart Performance Comparison app which stress different areas of the renderer. These tests are designed to really stress the chart, by having huge numbers of series, or points, or many updates per second.

A certain test is run, and FPS, or refresh rate, is measured via the CADisplayLink , which fires once after each drawing pass completes.

Test Setup Hardware

For the Test Setup we have used iPhone 5s

The test cases are as follows:

Test 1: NxM Series Test

IMG_0185-577x1024_iphone6_silver_side1
SciChart Performance Test1: NxM Series N series of M points are appended to an XyDataSeries, then the chart redraws (the same data) as fast as possible.

FPS is measured using the time elapsed between subsequentSciChartSurface.Rendered events.

Areas Stressed:

      Iterating Data Series

      Coordinate Transformation

     – Drawing.

 

 

 

Test 2: Scatter Series Test

IMG_0188-577x1024_iphone6_silver_portrait
SciChart Performance Test2: Scatter Series

N Scatter points are appended to a XyDataSeries, then the chart redraws.

Immediately after, the points are updated in a Brownian motion fashion and the chart is drawn again.

The FPS is measured using the time elapsed between subsequent SciChartSurface.Rendered events.

Areas Stressed:

– Coordinate Transformation

– Geometry Generation (Ellipse)

– Drawing.

 

Test 3: FIFO Series Test

IMG_0193-577x1024_iphone6_silver_side1
SciChart Performance Test3: Fifo Series

N points are appended to a FIFO (circular buffer) series, then a single point is appended (and one dropped), which triggers a redraw of the chart.

The FPS is measured using the time elapsed between subsequent SciChartSurface.Rendered events.

Areas Stressed:

– Copying Circular Buffers (FIFO Series)

– Resampling

–  Drawing.

 

 

 

Test 4: Append Data Test

IMG_0198-577x1024_iphone6_silver_side2
SciChart Performance Test4: Append
N points are appended to DataSeries, then M points are appended between each draw of the chart.

Areas stressed:

– Appending Data

– Resampling

– Auto-Ranging

– Drawing.

 

 

 

The Test Results

We’ve included the test results below:

  • All test result numbers are in FPS (Frames per second), meaning, the average number of redraws per second during the test (Higher Numbers are better!)
  • We also included CPU usage (smaller is better!)
  • And Start Time in seconds (smaller is better!)

 

In Table Form

You can find the test results of our iOS Chart Performance Comparison below. All test result numbers are in FPS (Frames per second – Higher is Better), meaning, the average number of redraws per second during the test, as measured by CADisplayLink . We have also included start time and CPU usage – Smaller is Better for both. 

If a number is missed (blank), it means that a chart failed to run (crash) under a particular test-case.

comparisontable

Test Results in Chart Form

What iOS charting performance comparison would be complete without the results in chart form?

You can find the test results plotted below:

Append Points Test Results

SciChart iOS is blue, results are FPS (Refresh rate) so higher is better.

Append_Data

Fifo Scrolling Test Results

SciChart iOS is blue, results are FPS (Refresh rate) so higher is better.

FIFO_charts

Scatter Series Test Results

SciChart iOS is blue, results are FPS (Refresh rate) so higher is better.

ScatterSeries_Charts

NxM Series Test Results

SciChart iOS is blue, results are FPS (Refresh rate) so higher is better.

NxMSeries_Charts

Performance Comparison Conclusions

According to the Performance Comparison Results, Most iOS Chart libraries are unsuitable for real-time updates on the chart. Most perform poorly once the amount of data reaches a few thousand points.

By contrast, the iOS Charts by SciChart are extremely fast and show robust performance across a number of test cases including scatter charts, scrolling line series, appending line series and multiple series.

SciChart should be considered a very strong contender when evaluating real-time iOS Charting Libraries for use in  iOS Apps.

A version of the test-application is available on request, if you would like to contact us. For legal reasons we can’t publish the names of Competitor A, but if you believe you are that competitor and wish to verify the results or submit a modification to optimize your code, please feel free.

Information about second competitor – “Charts” – you can find here.

Finally let us know what you think in the comments! If there’s anything else you want us to test, please ask!

Best regards,
Yaroslav,
SciChart Team

The post How Fast is SciChart’s iOS Chart? appeared first on WPF Charts, iOS and Android Charts | SciChart.


Comments (0)

CONTACT US

Not sure where to start? Contact us, we are happy to help!


CONTACT US

SciChart Ltd, 16 Beaufort Court, Admirals Way, Docklands, London, E14 9XL. Email: Legal Company Number: 07430048, VAT Number: 101957725