nfsantos commented on code in PR #2108:
URL: https://github.com/apache/jackrabbit-oak/pull/2108#discussion_r1975189401
##########
oak-search/src/main/java/org/apache/jackrabbit/oak/plugins/index/search/IndexDefinition.java:
##########
@@ -1395,27 +1400,27 @@ private Map<String, PropertyDefinition>
collectPropConfigs(NodeState config,
}
}
ensureNodeTypeIndexingIsConsistent(propDefns, syncProps);
- return Map.copyOf(propDefns);
Review Comment:
I don't see a reason why we must make a copy. Once this method finishes,
there is no other reference to the map other than the one returned by the
method, so there is no risk of the map being modified elsewhere. And the
IndexDefinition class does not modify the map anywhere, just reads it. So I
don't think it is necessary to make a copy or to make the map immutable. Maybe
it was done just as a best-practice to ensure immutability. Or as an attempt at
performance optimization, as an immutable map created by `Map.copyOf()` may be
faster than a HashMap due to a more efficient internal representation. I am not
sure, but in this case, avoiding the creation of lower case strings is a big
gain, easily offsets any additional overhead of searching for a key on a tree
as compared to search on a hashmap. Searching on a HashMap also requires
computing the hash of the String, which can be expensive.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]