From Apache OpenOffice Wiki
Jump to: navigation, search

Performance 170.png
Performance Project

Quick Navigation




About this template

Planning page for Calc performance improvements. For lists of specific To-Dos, InProgress and Done see Calc/Performance.

What Solves / Benefit Status / Details
Create test case documents for specific problems. Reliable measurement for profiling. InProgress, ongoing effort
Profile loading and saving documents. Have comparable numbers for before/after scenarios.
Implement incremental saving by writing just changed content if possible. Avoid rewriting the entire document if just some cell data was changed. Calc/Performance/Incremental_Saving
Optimize some string handling in compiler and number parser. Pre detection of simple operators, separators, parentheses, ... Less toUpper() calls, temporary String instances, ... Done, Calc/Performance/string_handling_in_formula_compiler
Refactor area broadcasters to not use a single ::std::set per slot if possible.
Break up the document-wide area broadcaster structure into per-sheet containers.
Because of the unique set requirement and the underlying tree implementation, inserting area broadcasters to large sets takes a lot of time.
Less comparisons while inserting ranges to listen to. Less elements to search when broadcasting a change.
Done, Calc/Performance/Refactoring_Area_Broadcasters
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. Calc/Performance/Compile_Formulas_on_Demand
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.
Personal tools