func main() { err := spiffy.SetDefaultDb(spiffy.NewDbConnectionFromEnvironment()) if err != nil { log.Fatal(err) } m := migration.New( "create & fill `test_vocab`", migration.New( "create `test_vocab` table", migration.Step( migration.CreateTable, migration.Body( "CREATE TABLE test_vocab (id serial not null, word varchar(32) not null);", "ALTER TABLE test_vocab ADD CONSTRAINT pk_test_vocab_id PRIMARY KEY(id);", ), "test_vocab", ), ), migration.New( "fill `test_vocab`", migration.ReadDataFile("data.sql"), ), migration.New( "drop `test_vocab` table", migration.Step( migration.AlterTable, migration.Body( "DROP TABLE test_vocab;", ), "test_vocab", ), ), ) m.SetLogger(migration.NewLogger()) m.SetShouldAbortOnError(true) err = m.Apply(spiffy.DefaultDb()) if err != nil { log.Fatal(err) } }
func main() { err := spiffy.SetDefaultDb(spiffy.NewDbConnectionFromEnvironment()) if err != nil { log.Fatal(err) } err = createTable() if err != nil { log.Fatal(err) } defer dropTable() err = seedObjects(createCount) if err != nil { log.Fatal(err) } fmt.Println("Finished seeding objects, starting load test.") // do spiffy query uncached := spiffy.NewDbConnectionFromEnvironment() uncached.DisableStatementCache() _, err = uncached.Open() if err != nil { log.Fatal(err) } spiffyStart := time.Now() spiffyTimings, err := benchHarness(uncached, threadCount, selectCount, spiffyAccess) if err != nil { log.Fatal(err) } fmt.Printf("Spiffy Elapsed: %v\n", time.Since(spiffyStart)) // do spiffy query cached := spiffy.NewDbConnectionFromEnvironment() cached.EnableStatementCache() _, err = cached.Open() if err != nil { log.Fatal(err) } spiffyCachedStart := time.Now() spiffyCachedTimings, err := benchHarness(cached, threadCount, selectCount, spiffyAccess) if err != nil { log.Fatal(err) } fmt.Printf("Spiffy (Statement Cache) Elapsed: %v\n", time.Since(spiffyCachedStart)) // do baseline query baselineStart := time.Now() baseline := spiffy.NewDbConnectionFromEnvironment() _, err = baseline.Open() if err != nil { log.Fatal(err) } baselineTimings, err := benchHarness(baseline, threadCount, selectCount, baselineAccess) if err != nil { log.Fatal(err) } fmt.Printf("Baseline Elapsed: %v\n", time.Since(baselineStart)) println() fmt.Println("Timings Aggregates:") fmt.Printf("\tAvg Baseline : %v\n", util.Math.MeanOfDuration(baselineTimings)) fmt.Printf("\tAvg Spiffy : %v\n", util.Math.MeanOfDuration(spiffyTimings)) fmt.Printf("\tAvg Spiffy (Statement Cache) : %v\n", util.Math.MeanOfDuration(spiffyCachedTimings)) println() fmt.Printf("\t99th Baseline : %v\n", util.Math.PercentileOfDuration(baselineTimings, 99.0)) fmt.Printf("\t99th Spiffy : %v\n", util.Math.PercentileOfDuration(spiffyTimings, 99.0)) fmt.Printf("\t99th Spiffy (Statement Cache) : %v\n", util.Math.PercentileOfDuration(spiffyCachedTimings, 99.0)) }