PasteRack.org
Paste # 80845
2015-09-19 16:19:02

Forked from paste # 94877.

Fork as a new paste.

Paste viewed 279 times.


Embed:

Time of memq vs member and eq? vs equal?

  1. #lang racket
  2. (define l (make-list 5000 'x))
  3.  
  4. (time (for ((i 10000)) (memq 'y l)))
  5. (time (for ((i 10000)) (member 'y l)))
  6.  
  7.  
  8. ; Use mutable versions to avoid optimizations
  9. (define r 0)
  10. (define eq?? eq?)
  11. (define equal?? equal?)
  12. (set! eq?? eq?)
  13. (set! equal?? equal?)
  14. (time (for ((i 10000000)) (set! r (eq?? 'y l))))
  15. (time (for ((i 10000000)) (set! r (equal?? 'y l))))
  16.  
  17. ; With all the optimizations the time is the same
  18. (time (for ((i 10000000)) (set! r (eq? 'y l))))
  19. (time (for ((i 10000000)) (set! r (equal? 'y l))))

=>

cpu time: 280 real time: 279 gc time: 0

cpu time: 3903 real time: 3896 gc time: 0

cpu time: 800 real time: 798 gc time: 0

cpu time: 1226 real time: 1226 gc time: 0

cpu time: 676 real time: 677 gc time: 0

cpu time: 673 real time: 675 gc time: 0