Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit e24b965

Browse files
faddatcatShaark
andauthoredMay 19, 2022
implement btree.item on item itelf, not only its pointer. (#254)
Per #186, this may help reduce allocation overhead. Co-authored-by: romelukaku <[email protected]>
1 parent a9e1585 commit e24b965

File tree

2 files changed

+10
-10
lines changed

2 files changed

+10
-10
lines changed
 

‎memdb.go

+8-8
Original file line numberDiff line numberDiff line change
@@ -26,20 +26,20 @@ type item struct {
2626
}
2727

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

3535
// newKey creates a new key item.
36-
func newKey(key []byte) *item {
37-
return &item{key: key}
36+
func newKey(key []byte) item {
37+
return item{key: key}
3838
}
3939

4040
// newPair creates a new pair item.
41-
func newPair(key, value []byte) *item {
42-
return &item{key: key, value: value}
41+
func newPair(key, value []byte) item {
42+
return item{key: key, value: value}
4343
}
4444

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

7474
i := db.btree.Get(newKey(key))
7575
if i != nil {
76-
return i.(*item).value, nil
76+
return i.(item).value, nil
7777
}
7878
return nil, nil
7979
}
@@ -150,7 +150,7 @@ func (db *MemDB) Print() error {
150150
defer db.mtx.RUnlock()
151151

152152
db.btree.Ascend(func(i btree.Item) bool {
153-
item := i.(*item)
153+
item := i.(item)
154154
fmt.Printf("[%X]:\t[%X]\n", item.key, item.value)
155155
return true
156156
})

‎memdb_iterator.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ func newMemDBIteratorMtxChoice(db *MemDB, start []byte, end []byte, reverse bool
5656
abortLessThan []byte
5757
)
5858
visitor := func(i btree.Item) bool {
59-
item := i.(*item)
59+
item := i.(item)
6060
if skipEqual != nil && bytes.Equal(item.key, skipEqual) {
6161
skipEqual = nil
6262
return true
@@ -67,7 +67,7 @@ func newMemDBIteratorMtxChoice(db *MemDB, start []byte, end []byte, reverse bool
6767
select {
6868
case <-ctx.Done():
6969
return false
70-
case ch <- item:
70+
case ch <- &item:
7171
return true
7272
}
7373
}

0 commit comments

Comments
 (0)
Please sign in to comment.