PasteRack.org
Paste # 48149
2019-11-09 12:22:05

Fork as a new paste.

Paste viewed 246 times.


Embed:

#|
~$ racket param.rkt 
cpu time: 7080 real time: 7070 gc time: 0
cpu time: 1618 real time: 1616 gc time: 0
#t
cpu time: 7095 real time: 7089 gc time: 0
cpu time: 1619 real time: 1618 gc time: 0
#t
cpu time: 7076 real time: 7070 gc time: 0
cpu time: 1618 real time: 1616 gc time: 0
#t

~$ racketcs param.rkt 
cpu time: 4499 real time: 4508 gc time: 7
cpu time: 881 real time: 881 gc time: 0
#t
cpu time: 4542 real time: 4542 gc time: 0
cpu time: 853 real time: 853 gc time: 0
#t
cpu time: 4529 real time: 4529 gc time: 0
cpu time: 881 real time: 881 gc time: 0
#t
|#
#lang racket/base

(define x-param (make-parameter #f))
(define x-mutable #f)
(define (get-x-mutable)
  x-mutable)

(for ([T (in-range 3)])
  (define v1
    (time
     (for/sum ([K (in-range 1000)])
       (parameterize ([x-param (list 3 K)])
         (for/sum ([i (in-range 500000)])
           (if (= 0 (bitwise-and i 17))
               (cadr (x-param))
               0))))))

  (define v2
    (let ()
      (time
       (for/sum ([K (in-range 1000)])
         (set! x-mutable (list 7 K))
         (for/sum ([i (in-range 500000)])
           (if (= 0 (bitwise-and i 17))
               (cadr (get-x-mutable))
               0))))))

  (displayln (equal? v1 v2)))