Skip to content

Commit e4cdd43

Browse files
authored
Optimization: reduce memory usage and improve performance (closes #12) (#17)
* Optimize node16/48 space usage * Optimize node16 performance using bits package instead of sort * Minor changes and code refactoring
1 parent ee0b28d commit e4cdd43

File tree

10 files changed

+582
-520
lines changed

10 files changed

+582
-520
lines changed

README.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -71,10 +71,10 @@ Benchmarks were performed on datasets extracted from different projects:
7171

7272
|**go-adaptive-radix-tree**| # | Average time |Bytes per operation|Allocs per operation |
7373
|:-------------------------|---:|------------------:|------------------:|--------------------:|
74-
| Tree Insert Words | 10 | 146,326,506 ns/op | 41,299,883 B/op | 1,326,167 allocs/op |
75-
| Tree Search Words | 30 | 44,075,933 ns/op | 0 B/op | 0 allocs/op |
76-
| Tree Insert UUIDs | 20 | 86,062,471 ns/op | 19,638,904 B/op | 547,648 allocs/op |
77-
| Tree Search UUIDs | 50 | 35,808,749 ns/op | 0 B/op | 0 allocs/op |
74+
| Tree Insert Words | 9 | 117,888,698 ns/op | 37,942,744 B/op | 1,214,541 allocs/op |
75+
| Tree Search Words | 26 | 44,555,608 ns/op | 0 B/op | 0 allocs/op |
76+
| Tree Insert UUIDs | 18 | 59,360,135 ns/op | 18,375,723 B/op | 485,057 allocs/op |
77+
| Tree Search UUIDs | 54 | 21,265,931 ns/op | 0 B/op | 0 allocs/op |
7878
|**go-art** | | | | |
7979
| Tree Insert Words | 5 | 272,047,975 ns/op | 81,628,987 B/op | 2,547,316 allocs/op |
8080
| Tree Search Words | 10 | 129,011,177 ns/op | 13,272,278 B/op | 1,659,033 allocs/op |

factory.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,5 +47,8 @@ func (f *objFactory) newNode256() *artNode {
4747
func (f *objFactory) newLeaf(key Key, value interface{}) *artNode {
4848
clonedKey := make(Key, len(key))
4949
copy(clonedKey, key)
50-
return &artNode{kind: Leaf, ref: unsafe.Pointer(&leaf{key: clonedKey, value: value})}
50+
return &artNode{
51+
kind: Leaf,
52+
ref: unsafe.Pointer(&leaf{key: clonedKey, value: value}),
53+
}
5154
}

0 commit comments

Comments
 (0)