[
https://issues.apache.org/jira/browse/LUCENE-8434?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16560407#comment-16560407
]
Uwe Schindler commented on LUCENE-8434:
---------------------------------------
As Hoss said, the exception is cheaper for the uncommon case. Checking a return
value in hundreds of million hits is way more expensive than a trap. The stack
trace costs something but it's still cheaper. One example is MMapDirectory. One
could check for correct bounds everytime but the chance to hit a boundary where
you have to switch the bytebuffers is extremely low. The additional check would
slow down dramatically. Have fun with reading ByteBufferIndexInput about that.
We can only get rid of it with minimum required version java 9, where hotspot
can eliminate double check using the new checkIndex() intrinsic in
java.util.Objects
> Use shared instance of CollectionTerminatedException
> ----------------------------------------------------
>
> Key: LUCENE-8434
> URL: https://issues.apache.org/jira/browse/LUCENE-8434
> Project: Lucene - Core
> Issue Type: Improvement
> Reporter: Michael Braun
> Priority: Minor
>
> Creating exceptions and filling in the stack is expensive (see SOLR-11242 and
> SOLR-11314 for two such examples). CollectionTerminatedException is used as a
> signaling mechanism - there are zero instances in code that actually log that
> it occurred or make use of anything other than the fact that it occurred
> (unlike Solr's EarlyTerminatingCollectorException, for instance). Exceptions
> really should be for something exceptional - the use of
> CollectionTerminatedException is in place of polluting return values with
> this condition and is just used as a signal to callers.
> Because CollectionTerminatedException is never inspected directly and is
> effectively a different return condition, it doesn't make as much sense to
> generate new Exceptions with fresh stack traces every time - either change
> the signatures or share the object.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]