File tree Expand file tree Collapse file tree 1 file changed +50
-0
lines changed
Expand file tree Collapse file tree 1 file changed +50
-0
lines changed Original file line number Diff line number Diff 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+ }
You can’t perform that action at this time.
0 commit comments