Optimized OgnlContext constructors, reduced collection sizes #9
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've optimized the
OgnlContext
constructors so that:_values
map object is not instantiated if not really needed. This map (which was a large one, 23 entries) was being always created, even if theOgnlContext
constructor being used immediately replaced it by one of its arguments. I'm executing some thousands of OGNL expressions per second and I'm always usingnew OgnlContext(myOwnMap)
, so this meant a lot of spurious, largeHashMap
objects being created without any need and a waste in memory usage._typeStack
and_accessorStack
objects, of typeList
, were being initialized to their default size which is10
, but very few OGNL expressions actually use 10 stack positions. Normally they don't go over2
or3
. So by reducing the initial size of those collections to3
, a noticeable save in memory could be obtained under heavy loads.