Several days ago we got final results of comparison of WPF and ElectronJS performance for one of our projects. The applications should load quite big files with data series and show all the data on the same line chart. Of course application is doing much more functions and we were working on it for 4+ years but this is some of most important features from point of view of performance. During loading data we do a lot of memory allocations and some parsing operations and charts give us drawing performance which is very important for the application.
In the test we have used files up to 100Mb that is not maximum size of production files, but our 4 years old WPF application built with straight-forward WPF approach (MVVM and all the best from WPF and .Net) was not able to handle it. See WPF vs. GDI+ for problem details, it’s more about tables but with chart we had absolutely the same problems and used exactly the same solutions. In that old posts I’ve described how we used GDI+, that was the first approach, later we changed everything to use DirectX and software become faster.
So it this test we compared WPF with advanced performance tuning (hundreds of ours of research and refactoring) and POC done with Electron in about 60-80 hours.
I was expecting such results, but our clients and some devs seems to be surprised a little.

Memory Consumption

memory

The result here is not absolutely honest because we add some additional optimization of the model in ElecrtonJS version. However we have used ArrayBuffer with Float64Array in JS which are exactly the same as C++ arrays of double. Thus memory consumption should be the same.

File Parsing

Next test results show how much time every program require to read the file and build internal object model ready for future processing. The file is zip archive with *.csv files inside, not the best solution but we have to read such file because it’s commonly used file type.

attach-0.png

Amazing, isn’t it? With JavaScript we were able to read file faster than with .Net. And that were not juniors in .Net department that were MS certified guys with 5-10 years of experience.

Drawing Speed

Flowing results shows time to render chart of all the data series in the file.

 

chart

Almost the same results, but we spent hundreds of hours with WPF and made it more than 10 times faster and just draw the chart on canvas with JavaScript.

Conclusion

If you want high speed application – consider ElectronJS, you will have cross-platform as a bonus, if you need somebody who know how to made HTML/JS as fast as native code or even faster ask Tesseris Pro team.