The code works with a stock Lucene 4.3.0 JAR and default codec, and has a trivial API: just call
Now, a quick update: I've optimized
PhraseQuerynow as well:
|Task||QPS base||StdDev base||QPS opt||StdDev opt||% change|
~2X speedup (~90% - ~119%) is nice!
Again, it's great to see a reduced variance on the runtimes since hotspot is mostly not an issue. It's odd that
LowPhrasegets slower QPS than
MedPhrase: these queries look mis-labelled (I see the
LowPhrasequeries getting more hits than
All changes have been pushed to lucene-c-boost; next I'd like to figure out how to get facets working.
Hey Mike, interestingReplyDelete
Out of interest, do you have any theories about your why the Java code is so much slower?
Have you learnt anything about C++ versus Java optimization here?
I suspect most of the gains are from specializing/hardwiring the code to a specific query, collector, etc., but I haven't done the obvious test (create the same specialized code in Java instead of C)...Delete
This is not surprising. Even though Java's performance is close to that of C++, it seems that there is still about a 1.5-2x differenceDelete
Thanks for sharing that link Itman.Delete