Commit 13110a5f authored by Yuanle Song's avatar Yuanle Song
Browse files

add result for racket 6.5

parent b8dc7ee3
Loading
Loading
Loading
Loading
+21 −1
Original line number Diff line number Diff line
* COMMENT -*- mode: org -*-
#+Date: 2016-12-16
Time-stamp: <2017-01-18>
Time-stamp: <2017-01-25>

* database binding benchmark
I want to know the efficiency of the db binding for different language,
@@ -84,3 +84,23 @@ https://www.postgresql.org/docs/9.4/static/libpq.html
--
0.372
26.4
** postgres 9.4, racket 6.5
2.21
26.72
--
1.85
26.63

- I think I maybe testing disk IO performance. should use the pg bench cluster
  for benchmarking. bench cluster listen on port 5433.

  when running against bench cluster.
  result is
  2.15
  2.29
  --
  2.10
  2.21

  So write performance is definitely testing disk IO performance. Read
  performance is related to the language and runtime.
+39 −0
Original line number Diff line number Diff line
#lang racket

(require db)

(define pgc-bench
  (postgresql-connect #:user "bench"
		      #:database "t1"
		      #:password "fNfwREMqO69TB9YqE+/OzF5/k+s="
		      #:port 5433))
(define pgc
  (postgresql-connect #:user "t1"
		      #:database "t1"
		      #:password "fNfwREMqO69TB9YqE+/OzF5/k+s="))

(define TIMES 3000)

;; TODO how to create a macro that allow cl dotimes?
;; (dotimes (i 10)
;;   (display (format "~a\n" i)))

;; run prog many times, show time cost.
(define-syntax-rule (timeit prog times)
  (let ((start (current-inexact-milliseconds)))
    (do ([n 0 (+ n 1)])
	((> n times))
      prog)
    (display (format "~as\n" (/ (- (current-inexact-milliseconds) start) 1000)))))

(define (select-test)
  (timeit (query pgc "SELECT id, bar FROM foo") TIMES))

(define (update-test)
  (timeit (query-exec pgc "UPDATE foo SET bar=bar+1 WHERE id=1") TIMES))

(define (main)
  (select-test)
  (update-test))

(main)