Optimized based on output from profiler on large sheets #112
+85
−28
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
I ran across a performance issue with large spreadsheets, and investigated this using the YourKit profiler.
Two bottlenecks that could be addressed were identified: one is heavy use of a regexp in a function used to split a cell reference string, and the other because of unnecessary formatting of a value, where the formatting could be deferred until if/when the value was actually used.
With my set of files, total processing time went from 944 to 525 seconds with these changes included.
Note to reviewer: the change from regexp to a simplified method when splitting the cell reference works for all tests in the project, and on my testset. If I missed a format that could occur here, please let me know and I will add tests and update the code.