aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorNick Burch <nick@apache.org>2012-06-10 20:40:32 +0000
committerNick Burch <nick@apache.org>2012-06-10 20:40:32 +0000
commite06949f47da96d8b2607973e73806b4ff986e185 (patch)
tree07d07a3f6d6a191cea3f265215d7668d43f3c20e /src
parenta69bdc08ba15cb0acbe78f3f3e3be2e4af19b084 (diff)
downloadpoi-e06949f47da96d8b2607973e73806b4ff986e185.tar.gz
poi-e06949f47da96d8b2607973e73806b4ff986e185.zip
Update the FormulaEvaluator performance section to match current behaviour
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1348657 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'src')
-rw-r--r--src/documentation/content/xdocs/spreadsheet/eval.xml61
1 files changed, 37 insertions, 24 deletions
diff --git a/src/documentation/content/xdocs/spreadsheet/eval.xml b/src/documentation/content/xdocs/spreadsheet/eval.xml
index 0eb54411a9..5ff76effb5 100644
--- a/src/documentation/content/xdocs/spreadsheet/eval.xml
+++ b/src/documentation/content/xdocs/spreadsheet/eval.xml
@@ -272,28 +272,41 @@ for(int sheetNum = 0; sheetNum &lt; wb.getNumberOfSheets(); sheetNum++) {
</source>
</section>
- <anchor id="Performance"/>
- <section><title>Performance Notes</title>
- <ul>
- <li>Generally you should have to create only one FormulaEvaluator
- instance per sheet, but there really is no overhead in creating
- multiple FormulaEvaluators per sheet other than that of the
- FormulaEvaluator object creation.
- </li>
- <li>Also note that FormulaEvaluator maintains a reference to
- the sheet and workbook, so ensure that the evaluator instance
- is available for garbage collection when you are done with it
- (in other words don't maintain long lived reference to
- FormulaEvaluator if you don't really need to - unless
- all references to the sheet and workbook are removed, these
- don't get garbage collected and continue to occupy potentially
- large amounts of memory).
- </li>
- <li>CellValue instances however do not maintain reference to the
- Cell or the sheet or workbook, so these can be long-lived
- objects without any adverse effect on performance.
- </li>
- </ul>
- </section>
- </body>
+ <anchor id="Performance"/>
+ <section><title>Performance Notes</title>
+ <ul>
+ <li>Generally you should have to create only one FormulaEvaluator
+ instance per Workbook. The FormulaEvaluator will cache
+ evaluations of dependent cells, so if you have multiple
+ formulas all depending on a cell then subsequent evaluations
+ will be faster.
+ </li>
+ <li>You should normally perform all of your updates to cells,
+ before triggering the evaluation, rather than doing one
+ cell at a time. By waiting until all the updates/sets are
+ performed, you'll be able to take best advantage of the caching
+ for complex formulas.
+ </li>
+ <li>If you do end up making changes to cells part way through
+ evaluation, you should call <em>notifySetFormula</em> or
+ <em>notifyUpdateCell</em> to trigger suitable cache clearance.
+ Alternately, you could instantiate a new FormulaEvaluator,
+ which will start with empty caches.
+ </li>
+ <li>Also note that FormulaEvaluator maintains a reference to
+ the sheet and workbook, so ensure that the evaluator instance
+ is available for garbage collection when you are done with it
+ (in other words don't maintain long lived reference to
+ FormulaEvaluator if you don't really need to - unless
+ all references to the sheet and workbook are removed, these
+ don't get garbage collected and continue to occupy potentially
+ large amounts of memory).
+ </li>
+ <li>CellValue instances however do not maintain reference to the
+ Cell or the sheet or workbook, so these can be long-lived
+ objects without any adverse effect on performance.
+ </li>
+ </ul>
+ </section>
+ </body>
</document>