PasteRack.org
Paste # 73032
2019-11-09 10:14:42

Fork as a new paste.

Paste viewed 286 times.


Embed:

Timing Parameters in a Tight Loop

  1. #lang racket/base
  2.  
  3. (define x-param (make-parameter #f))
  4. (define x-mutable #f)
  5. (define (get-x-mutable)
  6.   x-mutable)
  7.  
  8. (define v1
  9.   (time
  10.    (for/sum ([K (in-range 1000)])
  11.      (parameterize ([x-param (list 3 K)])
  12.        (for/sum ([i (in-range 100000)])
  13.          (cadr (x-param)))))))
  14.  
  15. (define v2
  16.   (let ()
  17.     (time
  18.      (for/sum ([K (in-range 1000)])
  19.        (set! x-mutable (list 7 K))
  20.        (for/sum ([i (in-range 100000)])
  21.          (cadr (get-x-mutable)))))))
  22.  
  23. (equal? v1 v2)

=>

cpu time: 10151 real time: 10235 gc time: 0

cpu time: 1328 real time: 1349 gc time: 0

#t