@@ -1736,20 +1736,21 @@ func BenchmarkCursor_Set_OneKey(b *testing.B) {
17361736func BenchmarkCursor_Set_Sequence (b * testing.B ) {
17371737 env , _ := setup (b )
17381738
1739- var db DBI
1740- keys := make ([ ][]byte , b . N )
1739+ const N = 100
1740+ var keys [ N ][]byte
17411741 for i := range keys {
1742- keys [i ] = make ([]byte , 8 )
1743- binary .BigEndian .PutUint64 (keys [i ], uint64 (i ))
1742+ keys [i ] = make ([]byte , 4 )
1743+ binary .BigEndian .PutUint32 (keys [i ], uint32 (i ))
17441744 }
17451745
1746+ var db DBI
17461747 if err := env .Update (func (txn * Txn ) (err error ) {
17471748 db , err = txn .OpenRoot (0 )
17481749 if err != nil {
17491750 return err
17501751 }
1751- for _ , k := range keys {
1752- err = txn .Put (db , k , k , 0 )
1752+ for i := range keys {
1753+ err = txn .Put (db , keys [ i ], keys [ i ] , 0 )
17531754 if err != nil {
17541755 return err
17551756 }
@@ -1766,10 +1767,12 @@ func BenchmarkCursor_Set_Sequence(b *testing.B) {
17661767 return err
17671768 }
17681769 b .ResetTimer ()
1769- for i := 0 ; i < b .N ; i ++ {
1770- _ , _ , err = c .Get (keys [i ], nil , Set )
1771- if err != nil {
1772- return err
1770+ for b .Loop () {
1771+ for i := range keys {
1772+ _ , _ , err = c .Get (keys [i ], nil , Set )
1773+ if err != nil {
1774+ return err
1775+ }
17731776 }
17741777 }
17751778 return nil
@@ -1823,3 +1826,51 @@ func BenchmarkCursor_Set_Random(b *testing.B) {
18231826 b .Errorf ("put: %v" , err )
18241827 }
18251828}
1829+
1830+ func BenchmarkCursor_Put_Sequence (b * testing.B ) {
1831+ env , _ := setup (b )
1832+
1833+ const N = 100
1834+ var keys [N ][]byte
1835+ for i := range keys {
1836+ keys [i ] = make ([]byte , 4 )
1837+ binary .BigEndian .PutUint32 (keys [i ], uint32 (i ))
1838+ }
1839+
1840+ var db DBI
1841+
1842+ if err := env .Update (func (txn * Txn ) (err error ) {
1843+ db , err = txn .OpenRoot (0 )
1844+ if err != nil {
1845+ return err
1846+ }
1847+ for i := range keys {
1848+ err = txn .Put (db , keys [i ], keys [i ], 0 )
1849+ if err != nil {
1850+ return err
1851+ }
1852+ }
1853+ return nil
1854+ }); err != nil {
1855+ b .Errorf ("dbi: %v" , err )
1856+ return
1857+ }
1858+
1859+ if err := env .Update (func (txn * Txn ) (err error ) {
1860+ c , err := txn .OpenCursor (db )
1861+ if err != nil {
1862+ return err
1863+ }
1864+ b .ResetTimer ()
1865+ for b .Loop () {
1866+ for i := 0 ; i < N ; i ++ {
1867+ if err = c .Put (keys [i ], keys [i ], 0 ); err != nil {
1868+ return err
1869+ }
1870+ }
1871+ }
1872+ return nil
1873+ }); err != nil {
1874+ b .Errorf ("put: %v" , err )
1875+ }
1876+ }
0 commit comments