[
https://issues.apache.org/jira/browse/LUCENE-6777?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Nicholas Knize updated LUCENE-6777:
-----------------------------------
Attachment: LUCENE-6777.patch
Attached patch that splits some of the longer ternary operators.
bq. is it possible to e.g. reuse a shared BytesRefBuilder?
I would have preferred this to begin with, but longToPrefixCodedBytes calls the
following {noformat}bytes.grow(BUF_SIZE_LONG);{noformat}
So it continues to grow the byte array for whatever reused buffer is passed. As
an alternative I can update NumericUtils to include a version that reuses a
BytesRefBuilder? That is if we think it will be useful outside this one use
case?
> Switch GeoPointTermsEnum range list to use a reusable BytesRef
> ---------------------------------------------------------------
>
> Key: LUCENE-6777
> URL: https://issues.apache.org/jira/browse/LUCENE-6777
> Project: Lucene - Core
> Issue Type: Improvement
> Reporter: Nicholas Knize
> Attachments: LUCENE-6777.patch, LUCENE-6777.patch
>
>
> GeoPointTermsEnum currently constructs a BytesRef for every computed range,
> then sorts on this BytesRef. This adds an unnecessary memory overhead since
> the TermsEnum only requires BytesRef on calls to nextSeekTerm and accept and
> the ranges only need to be sorted by their long representation. This issue
> adds the following two improvements:
> 1. Lazily compute the BytesRef on demand only when its needed
> 2. Add a single, transient BytesRef to GeoPointTermsEnum
> This will further cut back on heap usage when constructing ranges across
> every segment.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]