[ 
https://issues.apache.org/jira/browse/LUCENE-7419?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15427806#comment-15427806
 ] 

Adrien Grand commented on LUCENE-7419:
--------------------------------------

So if I understand correctly, the slow down was caused by the fact that binary 
terms use a different impl for their TermToBytesRefAttribute 
(BytesTermAttributeImpl rather than PackedTokenAttributeImpl) and this confuses 
hotspot when getAttribute is called (regardless of which attribute is looked 
up)?

Should PackedTokenAttributeImpl only do {{positionIncrement = 0;}} after 
calling {{super.end();}}? The position increment seems to be the only attribute 
that deserves special handling? Or maybe you wanted to have explicit handling 
of all attributes that are wrapper in this über attribute impl?

> performance bug in tokenstream.end()
> ------------------------------------
>
>                 Key: LUCENE-7419
>                 URL: https://issues.apache.org/jira/browse/LUCENE-7419
>             Project: Lucene - Core
>          Issue Type: Bug
>            Reporter: Robert Muir
>            Priority: Blocker
>             Fix For: master (7.0), 6.2.0
>
>         Attachments: LUCENE-7419.patch
>
>
> TokenStream.end() calls getAttribute(), which is pretty costly to do 
> per-stream.
> It does its current hack, because in the ctor of TokenStream is "too early".
> Instead, we can just add a variant of clear(), called end() to AttributeImpl. 
> For most attributes it defers to clear, but for PosIncAtt it can handle the 
> special case.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to