0
0
Fork 0

scorch uses prealloc'ed buffer for docNumberToBytes()

On a couple of micro benchmarks on a dev macbook using bleve-query on
an index of 50K wikipedia docs, scorch is now faster than
upsidedown/moss on high-freq term search "text:date"...

       400 qps - upsidedown/moss
       404 qps - scorch before
       565 qps - scorch after
This commit is contained in:
Steve Yen 2017-12-15 11:54:52 -08:00
parent f05794c6aa
commit 620dcdb6f8
3 changed files with 8 additions and 8 deletions

View File

@ -365,11 +365,12 @@ func (i *IndexSnapshot) TermFieldReader(term []byte, field string, includeFreq,
return rv, nil
}
func docNumberToBytes(in uint64) []byte {
buf := new(bytes.Buffer)
_ = binary.Write(buf, binary.BigEndian, in)
return buf.Bytes()
func docNumberToBytes(buf []byte, in uint64) []byte {
if len(buf) != 8 {
buf = make([]byte, 8)
}
binary.BigEndian.PutUint64(buf, in)
return buf
}
func docInternalToNumber(in index.IndexInternalID) (uint64, error) {

View File

@ -36,7 +36,7 @@ func (i *IndexSnapshotDocIDReader) Next() (index.IndexInternalID, error) {
next := i.iterators[i.segmentOffset].Next()
// make segment number into global number by adding offset
globalOffset := i.snapshot.offsets[i.segmentOffset]
return docNumberToBytes(uint64(next) + globalOffset), nil
return docNumberToBytes(nil, uint64(next)+globalOffset), nil
}
return nil, nil
}

View File

@ -49,8 +49,7 @@ func (i *IndexSnapshotTermFieldReader) Next(preAlloced *index.TermFieldDoc) (*in
// make segment number into global number by adding offset
globalOffset := i.snapshot.offsets[i.segmentOffset]
nnum := next.Number()
rv.ID = docNumberToBytes(nnum + globalOffset)
rv.ID = docNumberToBytes(rv.ID, nnum+globalOffset)
i.postingToTermFieldDoc(next, rv)
i.currID = rv.ID