is a top hotspot in a (NetBeans) sampled profiling run of test_1 of
When a sheet is copied from one document to another, simple.Document also merges metadata such as styles. For each style it iterates over every cell with that style. The current code can be improved by reusing constructed strings (also reducing garbage collection), removing unnecessary hash table lookups, etc.
After these changes, Document.getCopyStyleList takes about 1/16th the original time in the profiled run.
(This is surprising. Maybe it enables some optimizations that eliminate String creation in an inner loop in common cases.)
(The gain is not due to an error of omission: The template.ods source file used in this performance test is a spreadsheet with styled cells. The differences between the ods xml files of the result spreadsheet produced before these patches are applied, and the ods xml files of the result spreadsheet produced after these patches are applied, are only in times and in random strings appended to style names. So these changes did not significantly change the result spreadsheet.)