diff --git a/icfp-2016/benchmark/vector-map.rkt b/icfp-2016/benchmark/vector-map.rkt new file mode 100644 index 0000000..2887cf3 --- /dev/null +++ b/icfp-2016/benchmark/vector-map.rkt @@ -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)