package sqlite import ( "strconv" "testing" ) func BenchmarkPutMany(b *testing.B) { // Configure prepared statement usage. origSetting := UsePreparedStatements UsePreparedStatements = false defer func() { UsePreparedStatements = origSetting }() // Run benchmark. benchPutMany(b) } func BenchmarkPutManyPreparedStmt(b *testing.B) { // Configure prepared statement usage. origSetting := UsePreparedStatements UsePreparedStatements = true defer func() { UsePreparedStatements = origSetting }() // Run benchmark. benchPutMany(b) } func benchPutMany(b *testing.B) { //nolint:thelper // Start database. testDir := b.TempDir() db, err := openSQLite("test", testDir, false) if err != nil { b.Fatal(err) } defer func() { // shutdown err = db.Shutdown() if err != nil { b.Fatal(err) } }() // Start benchmarking. b.ResetTimer() // Benchmark PutMany. records, errs := db.PutMany(false) for i := range b.N { // Create test record. newTestRecord := &TestRecord{ S: "banana", I: 42, I8: 42, I16: 42, I32: 42, I64: 42, UI: 42, UI8: 42, UI16: 42, UI32: 42, UI64: 42, F32: 42.42, F64: 42.42, B: true, } newTestRecord.UpdateMeta() newTestRecord.SetKey("test:" + strconv.Itoa(i)) select { case records <- newTestRecord: case err := <-errs: b.Fatal(err) } } // Finalize. close(records) err = <-errs if err != nil { b.Fatal(err) } }