Skip to content

Commit

Permalink
implement btree.item on item itelf, not only its pointer. (#254)
Browse files Browse the repository at this point in the history
Per #186, this may help reduce allocation overhead.

Co-authored-by: romelukaku <[email protected]>
  • Loading branch information
faddat and catShaark authored May 19, 2022
1 parent a9e1585 commit e24b965
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 10 deletions.
16 changes: 8 additions & 8 deletions memdb.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,20 +26,20 @@ type item struct {
}

// Less implements btree.Item.
func (i *item) Less(other btree.Item) bool {
func (i item) Less(other btree.Item) bool {
// this considers nil == []byte{}, but that's ok since we handle nil endpoints
// in iterators specially anyway
return bytes.Compare(i.key, other.(*item).key) == -1
return bytes.Compare(i.key, other.(item).key) == -1
}

// newKey creates a new key item.
func newKey(key []byte) *item {
return &item{key: key}
func newKey(key []byte) item {
return item{key: key}
}

// newPair creates a new pair item.
func newPair(key, value []byte) *item {
return &item{key: key, value: value}
func newPair(key, value []byte) item {
return item{key: key, value: value}
}

// MemDB is an in-memory database backend using a B-tree for storage.
Expand Down Expand Up @@ -73,7 +73,7 @@ func (db *MemDB) Get(key []byte) ([]byte, error) {

i := db.btree.Get(newKey(key))
if i != nil {
return i.(*item).value, nil
return i.(item).value, nil
}
return nil, nil
}
Expand Down Expand Up @@ -150,7 +150,7 @@ func (db *MemDB) Print() error {
defer db.mtx.RUnlock()

db.btree.Ascend(func(i btree.Item) bool {
item := i.(*item)
item := i.(item)
fmt.Printf("[%X]:\t[%X]\n", item.key, item.value)
return true
})
Expand Down
4 changes: 2 additions & 2 deletions memdb_iterator.go
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ func newMemDBIteratorMtxChoice(db *MemDB, start []byte, end []byte, reverse bool
abortLessThan []byte
)
visitor := func(i btree.Item) bool {
item := i.(*item)
item := i.(item)
if skipEqual != nil && bytes.Equal(item.key, skipEqual) {
skipEqual = nil
return true
Expand All @@ -67,7 +67,7 @@ func newMemDBIteratorMtxChoice(db *MemDB, start []byte, end []byte, reverse bool
select {
case <-ctx.Done():
return false
case ch <- item:
case ch <- &item:
return true
}
}
Expand Down

0 comments on commit e24b965

Please sign in to comment.