[icfp] diff bytes / loc

This commit is contained in:
ben 2016-03-14 13:54:48 -04:00
parent 233d583ba5
commit e8b4a0a04a

View File

@ -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"))