Skip to content

Instantly share code, notes, and snippets.

@shouichi
Created June 24, 2014 09:10
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save shouichi/35a840fd3b5357fa7193 to your computer and use it in GitHub Desktop.
Save shouichi/35a840fd3b5357fa7193 to your computer and use it in GitHub Desktop.
package main
import (
"database/sql"
"flag"
"log"
"time"
_ "github.com/lib/pq"
)
func main() {
db, err := sql.Open("postgres", "user=postgres host=127.0.0.1 dbname=benchmark sslmode=disable")
if err != nil {
log.Fatal(err)
}
err = db.Ping()
if err != nil {
log.Fatal(err)
}
done := make(chan bool)
nPtr := flag.Int("n", 10, "number of goroutines")
flag.Parse()
n := *nPtr
for i := 0; i < n; i++ {
go func() {
start := time.Now()
read(db)
log.Println(time.Since(start))
done <- true
}()
}
for i := 0; i < n; i++ {
<-done
}
db.Close()
}
func read(db *sql.DB) {
rows, err := db.Query("SELECT name FROM users")
if err != nil {
log.Fatal(err)
}
defer rows.Close()
users := []user{}
for rows.Next() {
user := user{}
err := rows.Scan(
&user.Name,
)
if err != nil {
log.Fatal(err)
}
users = append(users, user)
}
}
type user struct {
Name string `db:"name"`
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment