[racket] big-bang is slow to render on screen?
Yes, the `main` version runs normally fast, while the `main2` version is
slow.
On Tue, Apr 22, 2014 at 4:15 PM, Matthias Felleisen <matthias at 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))
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.racket-lang.org/users/archive/attachments/20140422/539ead84/attachment.html>