firestorm use the ParseKey() funcs to avoid unneeded value parsing
With this change, the row allocation also happens only once per loop, instead of once per item.
This commit is contained in:
parent
009d59222a
commit
7df07f94fa
|
@ -135,9 +135,10 @@ func (gc *GarbageCollector) cleanup() {
|
||||||
termFreqStart := TermFreqIteratorStart(0, []byte{ByteSeparator})
|
termFreqStart := TermFreqIteratorStart(0, []byte{ByteSeparator})
|
||||||
termFreqEnd := TermFreqIteratorStart(math.MaxUint16, []byte{ByteSeparator})
|
termFreqEnd := TermFreqIteratorStart(math.MaxUint16, []byte{ByteSeparator})
|
||||||
|
|
||||||
|
var tfr TermFreqRow
|
||||||
dictionaryDeltas := make(map[string]int64)
|
dictionaryDeltas := make(map[string]int64)
|
||||||
err = visitRange(reader, termFreqStart, termFreqEnd, func(key, val []byte) (bool, error) {
|
err = visitRange(reader, termFreqStart, termFreqEnd, func(key, val []byte) (bool, error) {
|
||||||
tfr, err := NewTermFreqRowKV(key, val)
|
err := tfr.ParseKey(key)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return false, err
|
return false, err
|
||||||
}
|
}
|
||||||
|
@ -158,8 +159,9 @@ func (gc *GarbageCollector) cleanup() {
|
||||||
}
|
}
|
||||||
|
|
||||||
// walk all the stored rows
|
// walk all the stored rows
|
||||||
|
var sr StoredRow
|
||||||
err = visitPrefix(reader, StoredKeyPrefix, func(key, val []byte) (bool, error) {
|
err = visitPrefix(reader, StoredKeyPrefix, func(key, val []byte) (bool, error) {
|
||||||
sr, err := NewStoredRowKV(key, val)
|
err := sr.ParseKey(key)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return false, err
|
return false, err
|
||||||
}
|
}
|
||||||
|
|
|
@ -91,10 +91,11 @@ func (l *Lookuper) lookup(item *InFlightItem) {
|
||||||
|
|
||||||
prefix := TermFreqPrefixFieldTermDocId(0, nil, item.docID)
|
prefix := TermFreqPrefixFieldTermDocId(0, nil, item.docID)
|
||||||
logger.Printf("lookuper prefix - % x", prefix)
|
logger.Printf("lookuper prefix - % x", prefix)
|
||||||
|
var tfk TermFreqRow
|
||||||
docNums := make(DocNumberList, 0)
|
docNums := make(DocNumberList, 0)
|
||||||
err = visitPrefix(reader, prefix, func(key, val []byte) (bool, error) {
|
err = visitPrefix(reader, prefix, func(key, val []byte) (bool, error) {
|
||||||
logger.Printf("lookuper sees key % x", key)
|
logger.Printf("lookuper sees key % x", key)
|
||||||
tfk, err := NewTermFreqRowKV(key, val)
|
err := tfk.ParseKey(key)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return false, err
|
return false, err
|
||||||
}
|
}
|
||||||
|
|
|
@ -67,10 +67,11 @@ func (f *Firestorm) warmup(reader store.KVReader) error {
|
||||||
|
|
||||||
tfkPrefix := TermFreqIteratorStart(idField, nil)
|
tfkPrefix := TermFreqIteratorStart(idField, nil)
|
||||||
|
|
||||||
|
var tfk TermFreqRow
|
||||||
var lastDocId []byte
|
var lastDocId []byte
|
||||||
lastDocNumbers := make(DocNumberList, 1)
|
lastDocNumbers := make(DocNumberList, 1)
|
||||||
err = visitPrefix(reader, tfkPrefix, func(key, val []byte) (bool, error) {
|
err = visitPrefix(reader, tfkPrefix, func(key, val []byte) (bool, error) {
|
||||||
tfk, err := NewTermFreqRowKV(key, val)
|
err := tfk.ParseKey(key)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return false, err
|
return false, err
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user