From e8b4a0a04a72968c44e9003a8fa1d79641e9faae Mon Sep 17 00:00:00 2001 From: ben Date: Mon, 14 Mar 2016 13:54:48 -0400 Subject: [PATCH] [icfp] diff bytes / loc --- icfp-2016/benchmark/main.rkt | 38 +++++++++++++++++++++++++----------- 1 file changed, 27 insertions(+), 11 deletions(-) diff --git a/icfp-2016/benchmark/main.rkt b/icfp-2016/benchmark/main.rkt index fd82cc6..5f43aad 100644 --- a/icfp-2016/benchmark/main.rkt +++ b/icfp-2016/benchmark/main.rkt @@ -56,7 +56,7 @@ (string-append dir "/" POST))) (define (rnd n) - (~r n #:precision 2)) + (string->number (~r n #:precision 2))) (define (mean+stddev x*) (define m (mean x*)) @@ -130,23 +130,39 @@ (define (test-diff d) ;; TODO get actual differences, not just diff size (define-values (pre post) (dir->pre/post d)) - (define out + (define diff* (with-output-to-string - (lambda () (system/assert "diff ~a ~a | wc -l" pre post)))) - (string->number (string-trim out))) + (lambda () (system (format "diff --exclude=compiled -U0 -r ~a ~a" pre post))))) + (for/fold ([add 0] + [rem 0]) + ([line (in-list (string-split diff* "\n"))]) + (cond + [(and (string-prefix? line "+") + (not (string-prefix? line "+++ "))) + (values (+ 1 add) rem)] + [(and (string-prefix? line "-") + (not (string-prefix? line "--- "))) + (values add (+ 1 rem))] + [else + (values add rem)]))) (define (run-tests dir*) - (printf "( ;; DIR | compile-pre | compile-post | run-pre | run-post | loc-pre | loc-post | bytes-pre | bytes-post | diff \n") + (printf "( ;; DIR | compile-pre | compile-post | run-pre | run-post | loc-pre | loc-post | bytes-pre | bytes-post | diff+ | diff- \n") (printf " ;; all times in milliseconds\n") (printf " ;; 'loc' is lines of code, generated using 'SLOCCount' by David A. Wheeler.\n") (for ([d (in-list dir*)]) - ;(define-values (c-pre c-post) (test-compile d)) - ;(define-values (r-pre r-post) (test-run d)) - ;(define-values (l-pre l-post) (test-loc d)) + (define-values (c-pre c-post) (test-compile d)) + (define-values (r-pre r-post) (test-run d)) + (define-values (l-pre l-post) (test-loc d)) (define-values (b-pre b-post) (test-bytes d)) - (define diff (test-diff d)) - (writeln (list d b-pre b-post diff)) - ;(writeln (list d c-pre c-post r-pre r-post l-pre l-post b-pre b-post diff)) + (define-values (diff+ diff-) (test-diff d)) + ;(writeln (list d b-pre b-post diff)) + (writeln (list (string->symbol d) + (list c-pre c-post) + (list r-pre r-post) + (list l-pre l-post) + (list b-pre b-post) + (list diff+ diff-))) (void)) (printf ")\n"))