[icfp] vector-map benchmark, we are defs faster

This commit is contained in:
ben 2016-03-02 15:18:44 -05:00
parent 91bdd22abc
commit 73ab1b8a07

View File

@ -0,0 +1,68 @@
#lang typed/racket/base
(require
trivial/vector
trivial/math
racket/vector
plot/typed/no-gui
math/statistics)
(define NUM-TRIALS 8)
(define-vector: v1 (make-vector (expt: 10 1)))
(define-vector: v2 (make-vector (expt: 10 2)))
(define-vector: v3 (make-vector (expt: 10 3)))
(define-vector: v4 (make-vector (expt: 10 4)))
(define-vector: v5 (make-vector (expt: 10 5)))
(define-vector: v6 (make-vector (expt: 10 6)))
(define-vector: v7 (make-vector (expt: 10 7)))
;(define-vector: v8 (make-vector (expt: 10 8)))
;(define-vector: v9 (make-vector (expt: 10 9)))
(define-syntax-rule (tt e)
(let ([proc (lambda () e)])
(mean (for/list : (Listof Integer)
([i (in-range NUM-TRIALS)])
(let-values (((res cpu real gc) (time-apply proc '())))
cpu)))))
(define before*
(list
(tt (vector-map (lambda (x) x) v1))
(tt (vector-map (lambda (x) x) v2))
(tt (vector-map (lambda (x) x) v3))
(tt (vector-map (lambda (x) x) v4))
(tt (vector-map (lambda (x) x) v5))
(tt (vector-map (lambda (x) x) v6))
(tt (vector-map (lambda (x) x) v7))
#;(tt (vector-map (lambda (x) x) v8))
#;(tt (vector-map (lambda (x) x) v9))))
(define after*
(list
(tt (vector-map: (lambda (x) x) v1))
(tt (vector-map: (lambda (x) x) v2))
(tt (vector-map: (lambda (x) x) v3))
(tt (vector-map: (lambda (x) x) v4))
(tt (vector-map: (lambda (x) x) v5))
(tt (vector-map: (lambda (x) x) v6))
(tt (vector-map: (lambda (x) x) v7))
#;(tt (vector-map: (lambda (x) x) v8))
#;(tt (vector-map: (lambda (x) x) v9))))
;; TODO plot-pict
(plot-file
(list
(lines (for/list : (Listof (List Integer Real))
([i (in-naturals 1)]
[t (in-list before*)])
(list i t))
#:color 1
#:label "before")
(lines (for/list : (Listof (List Integer Real))
([i (in-naturals 1)]
[t (in-list after*)])
(list i t))
#:color 2
#:label "after"))
"map-microbench.png"
'png)