[
https://issues.apache.org/jira/browse/ODFTOOLKIT-426?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Nimarukan updated ODFTOOLKIT-426:
---------------------------------
Attachment: Issue-426-patches.zip
(cd odf/simple)
(patch -l -p 1 -i file.patch)
Issue-426-patches.zip contains changes to reduce the string allocation and
hashing computation in the loops that use getCopyStyleList.
- deduplicate string building
- remove an intermediate substring call that was not needed
- replace iteration of map keyset with iteration over map entryset
- avoid a duplicate map get (hash)
- avoid a uri get that was immediately overwritten in some cases.
> PERFORMANCE: simple Document.getCopyStyleList improvements to reduce String
> allocation, hashing, etc.
> -----------------------------------------------------------------------------------------------------
>
> Key: ODFTOOLKIT-426
> URL: https://issues.apache.org/jira/browse/ODFTOOLKIT-426
> Project: ODF Toolkit
> Issue Type: Improvement
> Components: simple api
> Environment: 0.8.2-incubating-SNAPSHOT, jdk1.8.0_77, win7
> Reporter: Nimarukan
> Priority: Minor
> Labels: performance
> Attachments: Issue-426-patches.zip
>
>
> org.odftoolkit.simple
> Document.getCopyStyleList
> is a top hotspot in a (NetBeans) sampled profiling run of test_1 of
> https://issues.apache.org/jira/secure/attachment/12795379/odftoolkit-performance-test.zip
> 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.)
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)