Tremendous memory performance optimization in Flexmonster
Usually, significant improvements happen in major releases. However, this time we would like to shed some light on the extraordinary improvement that was done by our developers during several minor releases this winter. We are talking about the tremendous reduction of browser’s memory consumption by our component.
Flexmonster’s performance has always been great, but now it handles large data volumes even better. Since December 2017 we have been working on optimizing the component's memory usage, specifically when dealing with large amounts of data. Almost every minor release starting from version 2.410 introduced memory optimization updates. And now, when the work is done and the metrics have been measured, we are happy to announce the results and provide you with the details. The last minor release 2.416 summarizes a cycle of memory optimization updates, which cumulatively improve the memory performance by around 48.5%, which is almost by two times.
We would like to be precise and provide you with our test details. The final measurements were done with JSON data source in Chrome browser. The number of megabytes used by a simple HTML page with embedded Flexmonster Pivot Table that represents the report based on JSON data was measured. Four tests were performed, two for inline JSON and two for JSON data loaded from a file. Table 1 with the results is provided below. To give you an example, the amount of browser’s memory needed for the report based on JSON data source with 100 000 unique records loaded from file in version 2.409 was 218 MB. In version 2.416 it is 89.1 MB for the same, which means that memory consumption, in this case, is decreased by 59%. We personally consider this to be a huge improvement.
Table 1. Flexmonster pivot table memory performance tests results with JSON data in Chrome browser.
Test data set | JSON source (inline/from file) | Flexmonster version 2.409, MB of RAM |
Flexmonster version 2.416, MB of RAM |
Memory consumption improvement, % |
---|---|---|---|---|
100k unique records JSON | Inline (via dataSource.data report property) |
193 MB | 96.5 MB | 50% |
From file (via dataSource.filename report property) |
218 MB | 89.1 MB | 59% | |
1M unique records JSON | Inline (via dataSource.data report property) |
1916 MB | 1225 MB | 36% |
From file (via dataSource.filename report property) |
1991 MB | 1017 MB | 49% |
Why is memory optimization important? Being a fully front-end solution, the amount of data that can be analyzed inside Flexmonster Pivot Table is directly proportional to the smart usage of browser’s resources. Memory consumption reduction by almost two times means that the maximum data size that can be handled by the component and analyzed with the pivot table is increased. For the same amount of data, especially if we are talking about large data volumes (something like 1 million unique records), this change means that the data can be pivoted faster. At the same time, the improvement of memory usage reduces requirements for the devices’ and browsers’ RAM.
If you are using the component of 2.409 version or an earlier version, we recommend updating to the newest one. If you have not started using Flexmonster in your web reporting or BI system yet, well, we have just released an improvement that is another solid argument to give it a try.