(Arne Babenhauserheide)
2017-03-30: add titles, fix ax labels add titles, fix ax labels
diff --git a/examples/benchmark.w b/examples/benchmark.w --- a/examples/benchmark.w +++ b/examples/benchmark.w @@ -268,14 +268,14 @@ define : flatten li ;; TODO: add filename and title and fix the units define* : plot-benchmark-result bench H #:key filename title let* - : ensemble-member-count 128 + : ensemble-member-count 64 ensemble-member-plot-skip 16 ;; must not be zero! y_0 : apply min : map car : map cdr bench - y_m : apply max : map car : map cdr bench + y_m : * 0.25 : apply max : map car : map cdr bench nb : apply max : interleave (map car (map car bench)) (map car (map cdr (map car bench))) ;; "const" "log(N)" "sqrt(N)" "N" "N^2" "N^3" "log(m)" "sqrt(m)" "m" "m^2" "m^3" "log(N + m)" "N log(m)" "m log(N)" "N m" "N^2 m" "m^2 N" x^b : list y_0 (/ y_m (log nb)) (/ y_m (sqrt nb)) (/ y_m nb) (/ y_m nb nb) (/ y_m nb nb nb) (/ y_m (log nb)) (/ y_m (sqrt nb)) (/ y_m nb) (/ y_m nb nb) (/ y_m nb nb nb) (/ y_m nb nb) (/ y_m nb nb) (/ y_m nb nb nb) (/ y_m nb nb nb) (/ y_m nb nb nb nb) (/ y_m nb nb nb nb) ; inital guess: constant starting at the first result - x^b-std : list-ec (: i x^b) i ; inital guess: 100% uncertainty + x^b-std : list-ec (: i x^b) (* 2 i) ; inital guess: 200% uncertainty P : make-covariance-matrix-with-offdiagonals-using-stds x^b-std y⁰-pos : map car bench y⁰ : append-map cdr bench @@ -304,6 +304,9 @@ define* : plot-benchmark-result bench H y^b-stds : list-ec (: i y^b-deviations) : apply standard-deviation-from-deviations i ;; print-fit x-std + when title + display title + newline print-fit x-opt x-std ;; TODO: minimize y-mismatch * y-uncertainty format #t "Model standard deviation (uncertainty): ~,4e\n" y-std @@ -341,13 +344,13 @@ scalarMap = mpl.cm.ScalarMappable(norm=c format port "pl.plot(~A, ~A, marker='.', color=scalarMap.to_rgba(~A), linewidth=0, label='', alpha=0.6, zorder=-1)\n" . (/ step 1) (+ offset (* spreading (list-ref member param-idx))) param-idx format port "pl.legend(loc='upper left', fancybox=True, framealpha=0.5)\n" - format port "pl.xlabel('position [arbitrary units]')\n" - format port "pl.ylabel('value [arbitrary units]')\n" + format port "pl.xlabel('position / arbitrary units')\n" + format port "pl.ylabel('time / s')\n" format port "pl.title('''~A''')\n" : or title "Operation scaling behaviour" format port "pl.xscale('log')\n" ;; format port "pl.yscale('log')\n" if filename - format port "pl.savefig('~A')\n" filename + format port "pl.savefig('~A', bbox_inches='tight')\n" filename format port "pl.show()\n" format port "exit()\n" close-pipe port @@ -356,7 +359,7 @@ scalarMap = mpl.cm.ScalarMappable(norm=c define : main args let* : H : lambda (x pos) (H-N-m x pos #:const #t #:ON #t #:ONlogN #t #:OlogN #:Ologm #:Om #:Omlogm) - steps 5 + steps 10 pbr plot-benchmark-result let lp : N-start '(1 1 1 100) @@ -374,36 +377,46 @@ define : main args dm : car m-step param-list : zip (logiota steps N dN) (logiota steps m dm) when : equal? dm 0 ;; only over N - pbr (bench-car param-list) H #:filename - format #f "/tmp/benchmark-car-~a-~a.pdf" + pbr (bench-car param-list) H + . #:title "car (iota N)" + . #:filename + format #f "/tmp/benchmark-car-~a-~a.png" if (equal? dN 0) N "N" . m - pbr (bench-cdr param-list) H #:filename - format #f "/tmp/benchmark-cdr-~a-~a.pdf" + pbr (bench-cdr param-list) + . #:title "cdr (iota N)" + . #:filename + format #f "/tmp/benchmark-cdr-~a-~a.png" if (equal? dN 0) N "N" . m - pbr (bench-append param-list) H #:filename - format #f "/tmp/benchmark-list-append-~a-~a.pdf" + pbr (bench-append param-list) H + . #:title "append (iota N) (iota m)" + . #:filename + format #f "/tmp/benchmark-list-append-~a-~a.png" if (equal? dN 0) N "N" if (equal? dm 0) m "m" - pbr (bench-append-string param-list) H #:filename - format #f "/tmp/benchmark-string-append-~a-~a.pdf" + pbr (bench-append-string param-list) H + . #:title "string-append (make-string N) (make-string m)" + . #:filename + format #f "/tmp/benchmark-string-append-~a-~a.png" if (equal? dN 0) N "N" if (equal? dm 0) m "m" - pbr (bench-append-vector param-list) H #:filename - format #f "/tmp/benchmark-vector-append-~a-~a.pdf" + pbr (bench-append-vector param-list) H + . #:title "vector-append (make-vector N 1) (make-vector m 1)" + . #:filename + format #f "/tmp/benchmark-vector-append-~a-~a.png" if (equal? dN 0) N "N" if (equal? dm 0) m "m" pbr (bench-assoc param-list) H . #:title "assoc m '((N . N) (N-1 . N-1) ... )" . #:filename - format #f "/tmp/benchmark-assoc-~a-~a.pdf" + format #f "/tmp/benchmark-assoc-~a-~a.png" if (equal? dN 0) N "N" if (equal? dm 0) m "m" pbr (bench-cons param-list) H . #:title "cons m (iota N)" . #:filename - format #f "/tmp/benchmark-cons-~a-~a.pdf" + format #f "/tmp/benchmark-cons-~a-~a.png" if (equal? dN 0) N "N" if (equal? dm 0) m "m" ;; interesting functions: