Optimizing Memory Usage while Working with Big Files that Have Large Datasets with Golang via C++
When building a workbook with large data sets, or reading a big Microsoft Excel file, the total amount of RAM the process will take is always a concern. There are measures that can be adapted to cope with the challenge. Aspose.Cells provides some relevant options and API calls to lower, reduce, and optimize memory use. It can also help the process work more efficiently and run faster.
Use the MemorySetting.MemoryPreference option to optimize memory use for cell data and decrease the overall memory cost. When building a large data set for cells, it can save a certain amount of memory compared to using the default setting (MemorySetting.Normal).
Optimizing Memory
Reading Large Excel Files
The following example shows how to read a large Microsoft Excel file in optimized mode.
Writing Large Excel Files
The following example shows how to write a large dataset to a worksheet in an optimized mode.
Caution
The default option, MemorySetting.Normal, is applied for all versions. For some situations, such as building a workbook with a large data set for cells, the MemorySetting.MemoryPreference option may optimize memory use and decrease the memory cost for the application. However, this option may degrade performance in some special cases such as the following.
-
Accessing Cells Randomly and Repeatedly: The most efficient sequence for accessing the cells collection is cell by cell in one row, and then row by row. Especially, if you access rows/cells by the enumerator acquired from Cells, RowCollection and Row, performance is maximized with MemorySetting.MemoryPreference.
-
Inserting & Deleting Cells & Rows: Please note that if there are many insert/delete operations for cells/rows, the performance degradation will be notable for MemoryPreference mode compared to the Normal mode.
-
Operating on Different Cell Types: If most of the cells contain string values or formulas, the memory cost will be the same as Normal mode, but if there are many empty cells, or cell values are numeric, boolean, and so on, the MemorySetting.MemoryPreference option will give better performance.