MCPcopy Index your code
hub / github.com/CovenantSQL/CovenantSQL / setupBenchmarkStorage

Function setupBenchmarkStorage

xenomint/sqlite/sqlite_test.go:329–405  ·  view source on GitHub ↗
(b *testing.B)

Source from the content-addressed store, hash-verified

327)
328
329func setupBenchmarkStorage(b *testing.B) (
330 st xi.Storage,
331 q string, makeDest func() []interface{},
332 e string, src [][]interface{},
333) {
334 // Setup storage
335 var (
336 fl = path.Join(testingDataDir, b.Name())
337 err error
338 stmt *sql.Stmt
339 )
340 if st, err = NewSqlite(fmt.Sprint("file:", fl)); err != nil {
341 b.Fatalf("failed to setup bench environment: %v", err)
342 }
343 if _, err = st.Writer().Exec(
344 `CREATE TABLE "t2" ("k" INT, "v1" TEXT, "v2" TEXT, "v3" TEXT, PRIMARY KEY("k"))`,
345 ); err != nil {
346 b.Fatalf("failed to setup bench environment: %v", err)
347 }
348 if stmt, err = st.Writer().Prepare(
349 `INSERT INTO "t2" VALUES (?, ?, ?, ?)`,
350 ); err != nil {
351 b.Fatalf("failed to setup bench environment: %v", err)
352 }
353 for i := 0; i < benchmarkKeySubspaceLength; i++ {
354 var (
355 vals [benchmarkVNum][benchmarkVLen]byte
356 args [benchmarkVNum + 1]interface{}
357 )
358 args[0] = benchmarkReservedKeyOffset + i
359 for i := range vals {
360 rand.Read(vals[i][:])
361 args[i+1] = string(vals[i][:])
362 }
363 if _, err = stmt.Exec(args[:]...); err != nil {
364 b.Fatalf("failed to setup bench environment: %v", err)
365 }
366 if i%10000 == 0 {
367 fmt.Printf("Done setup key at %v\n", i)
368 }
369 }
370 // Setup query string and dest slice
371 q = `SELECT "v1", "v2", "v3" FROM "t2" WHERE "k"=?`
372 makeDest = func() (dest []interface{}) {
373 var outv [benchmarkVNum]string
374 dest = make([]interface{}, benchmarkVNum)
375 for i := range outv {
376 dest[i] = &outv[i]
377 }
378 return
379 }
380 // Setup execute string and src table
381 //
382 // NOTE(leventeliu): allowing IGNORE and REPLACE both have impact on benchmark result,
383 // while UPSERT is the best!
384 //
385 // e = `INSERT OR IGNORE INTO "t2" VALUES (?, ?, ?, ?)`
386 // e = `REPLACE INTO "t2" VALUES (?, ?, ?, ?)`

Callers 2

BenchmarkStorageFunction · 0.85
BenchmarkLargeWriteTxFunction · 0.85

Calls 8

NewSqliteFunction · 0.85
NameMethod · 0.80
FatalfMethod · 0.80
ExecMethod · 0.65
WriterMethod · 0.65
PrepareMethod · 0.65
ReadMethod · 0.65
PrintfMethod · 0.45

Tested by

no test coverage detected