@@ -9,10 +9,16 @@ use std::borrow::Cow;
9
9
use criterion:: { black_box, criterion_group, criterion_main, Criterion } ;
10
10
use fvm_ipld_blockstore:: MemoryBlockstore ;
11
11
use fvm_ipld_encoding:: tuple:: * ;
12
- use fvm_ipld_kamt:: { AsHashedKey , HashedKey , Kamt } ;
12
+ use fvm_ipld_kamt:: { AsHashedKey , Config , HashedKey , Kamt } ;
13
13
14
14
const ITEM_COUNT : u8 = 40 ;
15
15
16
+ const TEST_CONFIG : Config = Config {
17
+ bit_width : 5 ,
18
+ min_data_depth : 0 ,
19
+ max_array_width : 3 ,
20
+ } ;
21
+
16
22
// Struct to simulate a reasonable amount of data per value into the amt
17
23
#[ derive( Clone , Serialize_tuple , Deserialize_tuple , PartialEq ) ]
18
24
struct BenchData {
@@ -56,7 +62,7 @@ fn insert(c: &mut Criterion) {
56
62
c. bench_function ( "KAMT bulk insert (no flush)" , |b| {
57
63
b. iter ( || {
58
64
let db = fvm_ipld_blockstore:: MemoryBlockstore :: default ( ) ;
59
- let mut a = BKamt :: new ( & db) ;
65
+ let mut a = BKamt :: new_with_config ( & db, Config :: default ( ) ) ;
60
66
61
67
for i in 0 ..black_box ( ITEM_COUNT ) {
62
68
a. set ( black_box ( vec ! [ i; 20 ] ) , black_box ( BenchData :: new ( i) ) )
@@ -70,11 +76,11 @@ fn insert_load_flush(c: &mut Criterion) {
70
76
c. bench_function ( "KAMT bulk insert with flushing and loading" , |b| {
71
77
b. iter ( || {
72
78
let db = fvm_ipld_blockstore:: MemoryBlockstore :: default ( ) ;
73
- let mut empt = BKamt :: new ( & db) ;
79
+ let mut empt = BKamt :: new_with_config ( & db, TEST_CONFIG ) ;
74
80
let mut cid = empt. flush ( ) . unwrap ( ) ;
75
81
76
82
for i in 0 ..black_box ( ITEM_COUNT ) {
77
- let mut a = BKamt :: load ( & cid, & db) . unwrap ( ) ;
83
+ let mut a = BKamt :: load_with_config ( & cid, & db, TEST_CONFIG ) . unwrap ( ) ;
78
84
a. set ( black_box ( vec ! [ i; 20 ] ) , black_box ( BenchData :: new ( i) ) )
79
85
. unwrap ( ) ;
80
86
cid = a. flush ( ) . unwrap ( ) ;
@@ -85,15 +91,15 @@ fn insert_load_flush(c: &mut Criterion) {
85
91
86
92
fn delete ( c : & mut Criterion ) {
87
93
let db = fvm_ipld_blockstore:: MemoryBlockstore :: default ( ) ;
88
- let mut a = BKamt :: new ( & db) ;
94
+ let mut a = BKamt :: new_with_config ( & db, TEST_CONFIG ) ;
89
95
for i in 0 ..black_box ( ITEM_COUNT ) {
90
96
a. set ( vec ! [ i; 20 ] , BenchData :: new ( i) ) . unwrap ( ) ;
91
97
}
92
98
let cid = a. flush ( ) . unwrap ( ) ;
93
99
94
100
c. bench_function ( "KAMT deleting all nodes" , |b| {
95
101
b. iter ( || {
96
- let mut a = BKamt :: load ( & cid, & db) . unwrap ( ) ;
102
+ let mut a = BKamt :: load_with_config ( & cid, & db, TEST_CONFIG ) . unwrap ( ) ;
97
103
for i in 0 ..black_box ( ITEM_COUNT ) {
98
104
a. delete ( black_box ( vec ! [ i; 20 ] . as_ref ( ) ) ) . unwrap ( ) ;
99
105
}
@@ -103,15 +109,15 @@ fn delete(c: &mut Criterion) {
103
109
104
110
fn for_each ( c : & mut Criterion ) {
105
111
let db = fvm_ipld_blockstore:: MemoryBlockstore :: default ( ) ;
106
- let mut a = BKamt :: new ( & db) ;
112
+ let mut a = BKamt :: new_with_config ( & db, TEST_CONFIG ) ;
107
113
for i in 0 ..black_box ( ITEM_COUNT ) {
108
114
a. set ( vec ! [ i; 20 ] , BenchData :: new ( i) ) . unwrap ( ) ;
109
115
}
110
116
let cid = a. flush ( ) . unwrap ( ) ;
111
117
112
118
c. bench_function ( "KAMT for_each function" , |b| {
113
119
b. iter ( || {
114
- let a = BKamt :: load ( & cid, & db) . unwrap ( ) ;
120
+ let a = BKamt :: load_with_config ( & cid, & db, TEST_CONFIG ) . unwrap ( ) ;
115
121
black_box ( a) . for_each ( |_k, _v : & BenchData | Ok ( ( ) ) ) . unwrap ( ) ;
116
122
} )
117
123
} ) ;
0 commit comments