[
https://issues.apache.org/jira/browse/LUCENE-3932?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13242541#comment-13242541
]
Michael McCandless commented on LUCENE-3932:
--------------------------------------------
{quote}
utf8 -> utf 16 is 7% of the time
utf 16 -> utf8 is 16% of the time
writing vlong's is also 16% of the time,
TermBufer.read() is 17% of the time (24% if you include the call to
utf8ToUtf16)
{quote}
Seems like if we made a direct "decode tii file and write in-memory format"
(instead of going through SegmentTermEnum), we could get some of this back.
The vLongs unfortunately need to be decoded/re-encoded because they are deltas
in the file but absolutes in memory. But, eg the vInt docFreq could be a
"copyVInt" method instead of readVInt then writeVInt, which should save a bit.
bq. Trying with 3.4 gives a 4 second load time, most of the time spent in
SegmentTermEnum.next().
OK, a bit faster than 3.5. But presumably 3.4 uses much more RAM after
startup...?
bq. Using the patch on trunk, load time goes from ~5 to ~2 seconds.
Awesome, thanks for testing!
> Improve load time of .tii files
> -------------------------------
>
> Key: LUCENE-3932
> URL: https://issues.apache.org/jira/browse/LUCENE-3932
> Project: Lucene - Java
> Issue Type: Improvement
> Affects Versions: 3.5
> Environment: Linux
> Reporter: Sean Bridges
> Attachments: LUCENE-3932.trunk.patch, perf.csv
>
>
> We have a large 50 gig index which is optimized as one segment, with a 66 MEG
> .tii file. This index has no norms, and no field cache.
> It takes about 5 seconds to load this index, profiling reveals that 60% of
> the time is spent in GrowableWriter.set(index, value), and most of time in
> set(...) is spent resizing PackedInts.Mutatable current.
> In the constructor for TermInfosReaderIndex, you initialize the writer with
> the line,
> {quote}GrowableWriter indexToTerms = new GrowableWriter(4, indexSize,
> false);{quote}
> For our index using four as the bit estimate results in 27 resizes.
> The last value in indexToTerms is going to be ~ tiiFileLength, and if instead
> you use,
> {quote}int bitEstimate = (int) Math.ceil(Math.log10(tiiFileLength) /
> Math.log10(2));
> GrowableWriter indexToTerms = new GrowableWriter(bitEstimate, indexSize,
> false);{quote}
> Load time improves to ~ 2 seconds.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]