X-Git-Url: https://thelambdalab.xyz/gitweb/index.cgi?p=jars.git;a=blobdiff_plain;f=run-mars.scm;h=04aa81e5121d8e38da0f91dd1394a04d95b81a31;hp=30b9e5c9e8d6a89e16599d0ffb2875ff264cb22b;hb=4ccb7fe4e20053cd189864142aeb3d1d6c59c118;hpb=0dba537bcbe1c483fb0d96b6e9a093e243a7c265 diff --git a/run-mars.scm b/run-mars.scm index 30b9e5c..04aa81e 100644 --- a/run-mars.scm +++ b/run-mars.scm @@ -20,7 +20,7 @@ (cdr progs-left) (cdr colors-left))))))) -(define (mars-runner files iters core-size visualization) +(define (mars-runner files iters core-size visualization min-queue-count) (print "Iters: " iters ", core size: " core-size) (let* ((progs (map (lambda (fname) @@ -30,15 +30,11 @@ (let* ((colors '("red" "blue" "green" "magenta" "cyan")) (color-map (make-color-map progs colors)) (vis (make-vis 640 480 core-size color-map))) - (make-core 8000 (lambda (i n) - (vis 'update-owner i n)))) - (make-core 8000))) - (queues (run-mars core (install-progs core progs) iters))) - (for-each (lambda (q) - (print) - (print "Final queue for " (queue-owner q) ":") - (dump-queue q core)) - queues) + (make-core core-size (lambda (i n) + (vis 'update-owner i n)))) + (make-core core-size))) + (queues (run-mars core (install-progs core progs) iters min-queue-count))) + (dump-queues queues core) (when visualization (print* "Press enter to finish...") (read-line)))) @@ -48,23 +44,27 @@ " run-mars [-c|--core size]\n" " [-i|--iterations iters]\n" " [-n|--no-visualization]\n" + " [-m|--min-queue-count]\n" " warrior1.red [warrior2.red [...]]")) (define (main) (let loop ((args (cdr (argv))) (iters 10000) (core-size 8000) - (visualization #t)) + (visualization #t) + (min-queue-count 2)) (match args ((or () ((or "-h" "--help"))) (print-usage)) (((or "-i" "--iterations") istr rest ...) - (loop rest (string->number istr) core-size visualization)) + (loop rest (string->number istr) core-size visualization min-queue-count)) (((or "-c" "--core-size") cstr rest ...) - (loop rest iters (string->number cstr) visualization)) + (loop rest iters (string->number cstr) visualization min-queue-count)) (((or "-n" "--no-visualization") rest ...) - (loop rest iters core-size #f)) + (loop rest iters core-size #f min-queue-count)) + (((or "-m" "--min-queue-count") mstr rest ...) + (loop rest iters core-size visualization (string->number mstr))) ((files ...) - (mars-runner files iters core-size visualization))))) + (mars-runner files iters core-size visualization min-queue-count))))) (main)