Skip to content

Instantly share code, notes, and snippets.

@kevgs
Created July 25, 2017 15:27
Show Gist options
  • Save kevgs/35f91b4ba446923ca78b4bc3cdc3deba to your computer and use it in GitHub Desktop.
Save kevgs/35f91b4ba446923ca78b4bc3cdc3deba to your computer and use it in GitHub Desktop.
package utils
import (
"bufio"
"bytes"
"database/sql"
_ "github.com/go-sql-driver/mysql"
"io"
"log"
)
func DieOnErr(err error) {
if err != nil {
log.Fatal(err)
}
}
var db *sql.DB
var response_json string
func QueryTo(w io.Writer) {
rows, err := db.Query("SELECT * FROM users")
DieOnErr(err)
defer rows.Close()
w.Write([]byte("["))
var id sql.RawBytes
var name sql.RawBytes
var email sql.RawBytes
for rows.Next() {
DieOnErr(rows.Scan(&id, &name, &email))
w.Write([]byte("{id:"))
w.Write([]byte(id))
w.Write([]byte(",name:\""))
w.Write([]byte(name))
w.Write([]byte("\",email:\""))
w.Write([]byte(email))
w.Write([]byte("\"}"))
}
w.Write([]byte("]"))
}
func DoJob(w io.Writer) {
// w.Write([]byte(response_json))
// return
bw := bufio.NewWriter(w)
defer bw.Flush()
QueryTo(bw)
}
func init() {
db_loc, err := sql.Open("mysql", connection_string)
DieOnErr(err)
db = db_loc
var b bytes.Buffer
QueryTo(&b)
response_json = b.String()
}
// empty http responses without touching enything
// Concurrency Level: 100
// Time taken for tests: 0.066 seconds
// Complete requests: 1000
// Failed requests: 0
// Total transferred: 112000 bytes
// HTML transferred: 0 bytes
// Requests per second: 15037.82 [#/sec] (mean)
// Time per request: 6.650 [ms] (mean)
// Time per request: 0.066 [ms] (mean, across all concurrent requests)
// Transfer rate: 1644.76 [Kbytes/sec] received
// just querying DB, no result reading
// Concurrency Level: 100
// Time taken for tests: 0.208 seconds
// Complete requests: 1000
// Failed requests: 0
// Total transferred: 112000 bytes
// HTML transferred: 0 bytes
// Requests per second: 4809.40 [#/sec] (mean)
// Time per request: 20.793 [ms] (mean)
// Time per request: 0.208 [ms] (mean, across all concurrent requests)
// Transfer rate: 526.03 [Kbytes/sec] received
// responsing with a static string
// Concurrency Level: 100
// Time taken for tests: 0.161 seconds
// Complete requests: 1000
// Failed requests: 0
// Total transferred: 89049000 bytes
// HTML transferred: 88892000 bytes
// Requests per second: 6205.90 [#/sec] (mean)
// Time per request: 16.114 [ms] (mean)
// Time per request: 0.161 [ms] (mean, across all concurrent requests)
// Transfer rate: 539676.88 [Kbytes/sec] received
// querying, parsing result and sending json
// Concurrency Level: 100
// Time taken for tests: 0.791 seconds
// Complete requests: 1000
// Failed requests: 0
// Total transferred: 89049000 bytes
// HTML transferred: 88892000 bytes
// Requests per second: 1263.48 [#/sec] (mean)
// Time per request: 79.147 [ms] (mean)
// Time per request: 0.791 [ms] (mean, across all concurrent requests)
// Transfer rate: 109874.34 [Kbytes/sec] received
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment