Yes, the `main` version runs normally fast, while the `main2` version is slow.
On Tue, Apr 22, 2014 at 4:15 PM, Matthias Felleisen <matth...@ccs.neu.edu>wrote: > > The attached file is from a vignette that I have been working on > ("Programming with Class"). It simulates 'big-bang' without a lot of the > student protections and the machinery needed to make it compatible with the > stepper etc. It also cuts out some of the software engineering playing I > did (but which turned out to be useful over the years). > > The fragment below runs your program (as far as I can tell) like the > original. Could you please measure this new version of your 'funny' machine? > > Thanks -- Matthias > > #lang racket > > ;;; Run this file with `racket test-big-bang.rkt` > ;;; then type quickly "asdf" to trigger several successive to-draw events. > ;;; Drawing the scene is fast, but rendering it on-screen is very slow? > > (require 2htdp/image > 2htdp/planetcute > "bb.rkt") > > (define elt-width (image-width grass-block)) > (define elt-height (image-height grass-block)) > (define elt-height/2 (/ elt-height 2)) > > (define view-width 800) > (define view-height 400) > (define window-width view-width) > (define window-height (+ view-height elt-height)) > > (define grid-size 10) > > (define (stack-rows . col-picts) > (for/fold ([img empty-image]) > ([cp col-picts]) > (underlay/align/offset > "center" "bottom" > img 0 elt-height/2 cp))) > > (define (client-draw-all) > (apply stack-rows > (for/list ([i grid-size]) > (apply beside/align "bottom" > (for/list ([j grid-size]) > grass-block))))) > > (define t0 (current-milliseconds)) > (define (print-time str) > (printf "~a at ~a\n" str (- (current-milliseconds) t0))) > > ;; uncomment if you want to compare old and new > #; > (define (main2) > (local-require 2htdp/universe) > (big-bang > '() > (to-draw (λ(w) > (print-time "to-draw") > (display "to-draw: ") > (time (client-draw-all))) > window-width window-height) > (on-key (λ(w k)(print-time (format "on-key ~a" k)))))) > > (define (main) > (send (new world% > [state0 10] > ;; ------------------------------------------------------- > ;; from Laurent's code > [to-draw > (λ(w) > (print-time "to-draw") > (display "to-draw: ") > (time (client-draw-all)))] > [on-key (λ(w k)(print-time (format "on-key ~a" k)))] > ;; ------------------------------------------------------- > [width window-width] > [height window-height] > [on-mouse #f]) > start)) > > >
____________________ Racket Users list: http://lists.racket-lang.org/users