Skip to content

Commit bc2aaca

Browse files
committed
save
1 parent 84a09ab commit bc2aaca

File tree

1 file changed

+50
-0
lines changed

1 file changed

+50
-0
lines changed

mdbx/cursor_test.go

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1874,3 +1874,53 @@ func BenchmarkCursor_Put_Sequence(b *testing.B) {
18741874
b.Errorf("put: %v", err)
18751875
}
18761876
}
1877+
1878+
func BenchmarkCursor_PutReserve_Sequence(b *testing.B) {
1879+
env, _ := setup(b)
1880+
1881+
const N = 100
1882+
var keys [N][]byte
1883+
for i := range keys {
1884+
keys[i] = make([]byte, 4)
1885+
binary.BigEndian.PutUint32(keys[i], uint32(i))
1886+
}
1887+
1888+
var db DBI
1889+
1890+
if err := env.Update(func(txn *Txn) (err error) {
1891+
db, err = txn.OpenRoot(0)
1892+
if err != nil {
1893+
return err
1894+
}
1895+
for i := range keys {
1896+
err = txn.Put(db, keys[i], keys[i], 0)
1897+
if err != nil {
1898+
return err
1899+
}
1900+
}
1901+
return nil
1902+
}); err != nil {
1903+
b.Errorf("dbi: %v", err)
1904+
return
1905+
}
1906+
1907+
if err := env.Update(func(txn *Txn) (err error) {
1908+
c, err := txn.OpenCursor(db)
1909+
if err != nil {
1910+
return err
1911+
}
1912+
b.ResetTimer()
1913+
for b.Loop() {
1914+
for i := 0; i < N; i++ {
1915+
toV, err := c.PutReserve(keys[i], len(keys[i]), 0)
1916+
if err != nil {
1917+
return err
1918+
}
1919+
_ = toV
1920+
}
1921+
}
1922+
return nil
1923+
}); err != nil {
1924+
b.Errorf("put: %v", err)
1925+
}
1926+
}

0 commit comments

Comments
 (0)