[Xapian-tickets] [Xapian] #326: Searches with chert are slow, due to slow doclen access
Xapian
nobody at xapian.org
Tue Nov 10 12:52:01 GMT 2009
#326: Searches with chert are slow, due to slow doclen access
---------------------------+------------------------------------------------
Reporter: richard | Owner: olly
Type: defect | Status: assigned
Priority: highest | Milestone: 1.1.4
Component: Backend-Chert | Version: SVN trunk
Severity: normal | Keywords:
Blockedby: | Platform: All
Blocking: |
---------------------------+------------------------------------------------
Changes (by olly):
* status: new => assigned
* milestone: 1.1.3 => 1.1.4
Comment:
I've committed more efficient pack and unpack functions for chert to trunk
in r13578, which should improve the situation here. These sped up
searching for "The" on gmane by about 35%. If that same improvement were
seen in the original testcase, chert would be 4.6 times slower rather than
7 times, which is a good start.
This patch incorporates the ideas from avoid_string_appends_1.patch. I've
not used the unrolled/specialised versions (yet anyway) as I'm worried
that inlining these will cause excessive code size growth, filling the CPU
cache more. So we need to re-benchmark them in a real situation, not just
a microbenchmark. I did address the string::insert() issue which is one
issue that the unrolling in avoid_string_appends_and_loop_unroll_2.patch
is aimed at. Also, unpack_uint() now finds the length first (which allows
a cleaner unpacking loop working backwards), so the trick of checking
there are at least 5 bytes available and using a special unrolled version
is likely to be less of a gain.
Interestingly, for the gmane search for "The", memcpy() dominates the
callgrind profile (both before and after).
Bumping remaining work to 1.1.4.
--
Ticket URL: <http://trac.xapian.org/ticket/326#comment:16>
Xapian <http://xapian.org/>
Xapian
More information about the Xapian-tickets
mailing list