RSS Feed
News
Jul
11
Case Study: Real-time Android Charts for Medical Industry
Posted by Andrew on 11 July 2016 11:00 AM

About a year and a half ago, IMT AG (Information Management Technology) approached us to ask about porting SciChart Realtime Charts on the Android operating system. At the time we only supported Windows Presentation Foundation, but thanks to their encouragement, and their sponsorship by committing to pre-order SciChart Android licenses for their team, we were able to embark on the port, and have now released SciChart’s Android Chart with record real-time performance.

mguntli

Michael Guntli from IMT AG at Droidcon Berlin

Over the past year or so, IMT have worked alongside us providing valuable feedback as we developed the worlds fastest real-time Android Chart Control, which uses a mixture of Java, C++ with the Android NDK and OpenGL ES2.0 to achieve record performance for an Android Chart. We were able to squeeze the most out of a low powered device by porting our already proven drawing and resampling algorithms from Windows to Android, and implementing them in this new chart control.

This year in June 2016, Michael Guntli from IMT AG presented at Droidcon Berlin to talk about their project. Michael’s presentation ANDROID INDUSTRIAL: REAL-TIME DATA VISUALISATION can now be viewed online and a full video can be seen below.

Antutu-Benchmark-imx6

Benchmark of the Freescale iMX6 hardware. A fraction of the speed of high-end Android devices.

Michael and his team at IMT have built a prototype device for the medical industry running on a dual-core Freescale iMX-6 hardware which uses SciChart’s Android Chart library for the real-time charting. The Freescale iMX-6 is low power ARM processor (dual core, 800MHz) that has about half the computing power of the lowest of the low cost $50 Android Smart phone, and a fraction of the speed of a high-end Nexus smartphone, yet thanks to the engineering of the IMT team and the performance of SciChart for Android, it still runs data-acquisition, processing, UI updates and of course realtime charts at a smooth 30 FPS.

The presentation content is very valuable from an engineers perspective as it goes into great detail about how to develop a truly real-time medical or industrial software with Android as an embedded operating system while running on low power ARM hardware. Some of the challenges faced by IMT are the same as our own: garbage collection, performance of the Java runtime and Android views have all required some inventive workarounds.

SciChartApp-NoProductName

View the IMT Prototype UI running SciChart Android Charts on a Freescale iMX6

Such an application demonstrates the ability of SciChart’s Android Chart component in Industrial and Medical usage where the Android operating system is used in a low-power embedded system. It also shows the amazing performance of SciChart’s Android Chart! If we can draw smooth charts on hardware that is low power, with a low CPU clock speed, then imagine what it can do on the latest smartphones or tablets!

The full presentation slides are available online, as well as a youtube video of the presentation below. There’s a little bit about SciChart at the end, and we really appreciate Michael taking the time to promote us in this way. We hope their project is a great success and we look forward to continuing to work with IMT in the future.


The post Case Study: Real-time Android Charts for Medical Industry appeared first on WPF Charts, iOS and Android Charts | SciChart.


Read more »



Jul
11
Case Study: Real-time Android Charts for Medical Industry
Posted by Andrew on 11 July 2016 11:00 AM

About a year and a half ago, IMT AG (Information Management Technology) approached us to ask about porting SciChart Realtime Charts on the Android operating system. At the time we only supported Windows Presentation Foundation, but thanks to their encouragement, and their sponsorship by committing to pre-order SciChart Android licenses for their team, we were able to embark on the port, and have now released SciChart’s Android Chart with record real-time performance.

mguntli

Michael Guntli from IMT AG at Droidcon Berlin

Over the past year or so, IMT have worked alongside us providing valuable feedback as we developed the worlds fastest real-time Android Chart Control, which uses a mixture of Java, C++ with the Android NDK and OpenGL ES2.0 to achieve record performance for an Android Chart. We were able to squeeze the most out of a low powered device by porting our already proven drawing and resampling algorithms from Windows to Android, and implementing them in this new chart control.

This year in June 2016, Michael Guntli from IMT AG presented at Droidcon Berlin to talk about their project. Michael’s presentation ANDROID INDUSTRIAL: REAL-TIME DATA VISUALISATION can now be viewed online and a full video can be seen below.

Antutu-Benchmark-imx6

Benchmark of the Freescale iMX6 hardware. A fraction of the speed of high-end Android devices.

Michael and his team at IMT have built a prototype device for the medical industry running on a dual-core Freescale iMX-6 hardware which uses SciChart’s Android Chart library for the real-time charting. The Freescale iMX-6 is low power ARM processor (dual core, 800MHz) that has about half the computing power of the lowest of the low cost $50 Android Smart phone, and a fraction of the speed of a high-end Nexus smartphone, yet thanks to the engineering of the IMT team and the performance of SciChart for Android, it still runs data-acquisition, processing, UI updates and of course realtime charts at a smooth 30 FPS.

The presentation content is very valuable from an engineers perspective as it goes into great detail about how to develop a truly real-time medical or industrial software with Android as an embedded operating system while running on low power ARM hardware. Some of the challenges faced by IMT are the same as our own: garbage collection, performance of the Java runtime and Android views have all required some inventive workarounds.

SciChartApp-NoProductName

View the IMT Prototype UI running SciChart Android Charts on a Freescale iMX6

Such an application demonstrates the ability of SciChart’s Android Chart component in Industrial and Medical usage where the Android operating system is used in a low-power embedded system. It also shows the amazing performance of SciChart’s Android Chart! If we can draw smooth charts on hardware that is low power, with a low CPU clock speed, then imagine what it can do on the latest smartphones or tablets!

The full presentation slides are available online, as well as a youtube video of the presentation below. There’s a little bit about SciChart at the end, and we really appreciate Michael taking the time to promote us in this way. We hope their project is a great success and we look forward to continuing to work with IMT in the future.


The post Case Study: Real-time Android Charts for Medical Industry appeared first on WPF Charts, iOS and Android Charts | SciChart.


Read more »



Jun
23
How Fast is SciChart’s iOS Chart?
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.


Read more »



Jun
23
Android Chart Performance Comparison
Posted by Yuriy on 23 June 2016 09:00 AM

Android Chart Performance: TLDR

In this post, we compare the performance of five of the major Android Charting Libraries vs. our own brand new & upcoming Android Chart: SciChart for Android. In order to conduct a fair comparison, we’ve developed a comparison application which generates several different chart types and measures refresh rate (FPS – Frames per Second) on each chart library.

Our findings were that:

  • AChartEngineGraphView and AndroidPlot had poor real-time performance for an Android Chart Library and were too slow for use in an App which required real-time updates.
  • MPAndroidChart had better performance and was suitable for some cases, e.g. when data updates were infrequent or number of points on the chart were less than a few thousand, but once dataset became larger (above a few thousand points), it also started to slow down.
  • One popular commercial Android Chart library was tested (labelled CompetitorA) which had comparable performance to MPAndroidChart.
  • Finally, the fastest Android Chart was SciChart for Android, which beat all available Android Chart Controls by 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 Android Chart control, all of the above slowed down significantly except for SciChart. In some tests SciChart for Android registered between 2-5x faster than the nearest competitor, and in one, a staggering 255x faster.

For this reason we propose SciChart’s Android Chart as the best Android Chart Library where real-time updates, or visualisation of big-data is required.

How do we Measure Android Chart Performance?

To avoid uncorroborated statements, we’ve tried find out what the most popular Android Charts can offer in terms of speedf. To our big surprise, we haven’t found any performance analysis of the existing charting packages! And that in-spite of the fact that similar questions have been asked a lot at StackOverflow, Quora, etc.! Which means that this question is topical among the Android developer community.

So we’ve created an Android application which performs a comparison of different charting packages. It was designed to help evaluating their performance under different test conditions, ranging from mild to extreme. The following aspects were considered to be the most important for such analysis:

  • Whether a chart crashes under a test-case
  • Measuring FPS on the user interface when a chart is under test conditions
  • The initial launch time of a test
  • Rate of change of data
  • General visual smoothness and UI responsiveness

Who did We Compare Against?

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

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

We also had a look at

  • GraphView, an open source graph plotting library for Android
  • AndroidPlot, an open source Android library for creating charts

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?

There are four different test cases run in our Android Charts Performance Comparison app, under different conditions. They are designed to really really stress the chart, by having huge numbers of series, or points, or many updates per second, with varying thickness of pens / number of pixels filled.

Test 1: NxM Series Test

many_framed

In this test, N series of M points are appended to series, then the chart redraws (the same data) as fast as possible by just resizing the Y-Axis for 10 seconds per test.

The FPS is measured using the Choreographer class from the Android API.

Areas Stressed: Iterating Data Series, Coordinate Transformation and Drawing.

 

Test 2: Scatter Series Test

scatters_framed

In this test, N Scatter points (ellipses) are appended to a series, 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 Choreographer class from the Android API.

Areas Stressed: Coordinate Transformation, Geometry Generation (Ellipse) and Drawing.

 

Test 3: FIFO (Scrolling) Series Test

Fifo_framed

In this test N points are appended to a series, but scrolled from right to left (as new points arrive, old are discarded). SciChart for Android has a built-in mode to handle this called Fifo data series which is implemented as a circular buffer. Other chart components you simply remove a point for each point added.

The FPS is measured using the Choreographer class from the Android API.

Areas Stressed: Copying Circular Buffers (FIFO Series), Resampling and Drawing, scrolling.

Test 4: Append Data Test

Append_framedIn this test N/3 points are appended to 3 series, then M points are appended between each draw of the chart. The data is random-walk but we vary noise to create more, or less noisy waves. This has the effect of stressing the actual drawing engine (when more noisy) vs. the update rate when less noisy.

The FPS is measured using the Choreographer class from the Android API.

Areas stressed: Appending Data, Resampling, Auto-Ranging and Drawing.

Test Hardware

We’ve used SciChart Android v.1.0 for this purpose and compared it with the other Android Charts on a number of devices and emulators, among these Samsung Galaxy S6 Edge and Google Nexus 4.

The Test Results

You can find the test results of our Android 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 the Choreographer class from the Android API.

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

The final column (SciChart Speedup) is the speed increase of SciChart Android vs. the other Android Charting Packages, e.g. 2.5 means 2.5x faster.

Performance report Sun Apr 24 14_30_50.xlsx - Excel 2016-06-21 19.22.08

Test Results in Chart Form

What Android 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 Android is green, results are FPS (Refresh rate) so higher is better.

AppendPerformance

Fifo Scrolling Test Results

SciChart Android is green, results are FPS (Refresh rate) so higher is better.

FifoPerformance

Scatter Series Test Results

SciChart Android is green, results are FPS (Refresh rate) so higher is better.

ScatterPerformance

NxM Series Test Results

SciChart Android is green, results are FPS (Refresh rate) so higher is better.

NxMPerformance

 

Performance Comparison Conclusions

According to the Performance Comparison Results, Most Android 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 Android 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 Android Charting Libraries for use in either Android Apps or Embedded systems which run the Android operating system.

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 CompetitorA 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.

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

Best regards,
Yuriy, SciChart Team

The post Android Chart Performance Comparison appeared first on SciChart - WPF Charts.


Read more »



May
22
Extreme Performance Optimization Survey
Posted by Andrew on 22 May 2016 03:11 PM

From time to time at SciChart HQ, we get asked for even more performance. Yes! I know it’s crazy, SciChart can easily handle 10 million points in real-time (or even up to 100 Million points at 2-4 FPS) in a line-chart, but sometimes we get asked ‘well, can you do more?’

So … wait … you want more than 10s of millions of points? … Ok then! .. 

So we had a go to try to optimize certain critical paths of SciChart’s WPF Chart. Right now, we’re already using unsafe code (pointer arithmetic in .NET) for our performance critical algorithms, plus DirectX for drawing, however there is the potential to move certain critical routines over to C++ with SSE (Streaming SIMD Extensions), which allow us to vectorize and hence accelerate certain numerical methods.

Simd-Performance-Wpf-Chart-Prototype

SciChart WPF Charts SIMD Prototype. 5x performance improvement for some chart types. More performance is possible if we do a whole program optimization.

Our prototype was pretty good! In just a few days, we managed to increase the overall performance of Resampling algorithms (used for lossless timeseries reduction) by 3-3.5x using C++/SSE*. That means a time-series chart which renders comfortably with 10M points at 30FPS can now render at the same framerate with 40M points. Or a chart that can render (albeit slowly) with 100M points can now handle 400M points.

But resampling doesn’t improve everything. In fact, from our own internal tests and extensive experience building High Performance Chart controls we know that Measuring and Improving Charting Performance is extremely complex and with many different pathways, we have to change many parts of the code to provide an optimum overall solution to deliver super High Performance WPF Charts.

For instance, we can move our rendering code to C++. Currently all our rendering is done in C# using interfaces and we transform points one at a time from data to pixel coordinates and vertices! The whole thing could be improved – a lot – if we moved some parts of the code over to C++ and started working in batches.

So, before we embark on this road of painstaking optimization, we’d like to know from you, our user base, how important is it to you? We have a simple Yes or No question “Should we optimize for even more performance?”.

* This optimization introduces a dependency on the Visual C++ Runtime, which must be installed on end-user PCs (pretty easy, but you should be aware of it).

Survey

Please find the survey below. If you’d like to comment, please do so at the footer of this article.

Create your own user feedback survey

The post Extreme Performance Optimization Survey appeared first on SciChart.


Read more »




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