Created
July 25, 2017 15:27
-
-
Save kevgs/35f91b4ba446923ca78b4bc3cdc3deba to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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