Calc/Performance/Planning
From Apache OpenOffice Wiki
Planning page for Calc performance improvements.
What | Solves / Benefit |
---|---|
Create test case documents for specific problems. | Reliable measurement for profiling. |
Profile loading and saving documents. | Have comparable numbers for before/after scenarios. |
Optimize some string handling in compiler and number parser. Pre detection of simple operators, separators, parentheses, ... | Less toUpper() calls, temporary String instances, ... |
Break up the document-wide area broadcaster structure into per-sheet containers. | Less comparisons while inserting ranges to listen to because of the unique set requirement. Less elements to search when broadcasting a change. |
After load, compile only formulas and their dependents needed in the active sheet. Postpone compilation of other formulas to the point when needed, respectively compile in background. | Less waiting time after document load, faster view of last active sheet. |
One stream per sheet in ODF, incompatible file format change. | Prerequisite for on-demand loading of sheets and storing only changed sheets. |
Load non-active sheets on demand. | Less data to load initially, faster view of the last active sheet. |
Save only changed sheets. | Possibly only one sheet out of many must be saved again. |
Test whether saving data-only changes can be done without having to recreate the entire storage, replacing only the data changed in stream. | Avoid the overhead of document storage. |
Implement shared formulas. | Less memory consumption for contiguous ranges of recurring similar formulas. |
Store shared formulas in ODF, possibly incompatible file format change. | Less compilation time for recurring formulas when loading. |