[racket] Optimization

From: Roman Klochkov (kalimehtar at mail.ru)
Date: Mon Jun 16 03:16:25 EDT 2014

 Strange.

#lang racket
(define (test1 x y)
  (if x
    (+ y 1)
    (- y 1)))
(define (test2 x)
  (if x
    (λ (y) (+ y 1))
    (λ (y) (- y 1))))
(define (run1 data)
  (map (λ (x) (test1 #t x)) data))
(define (run2 data)
  (map (λ (x) ((test2 #t) x)) data)) I expect, that run2 should be faster, because (test2 #t) returns const (lambda (y) (+ y 1)) and shouldn't be checked on every iteration.

But in reality (time ...) gives 219 for run1 and 212 for run2. run2 is 1.5 times slower!

Why so?


-- 
Roman Klochkov
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.racket-lang.org/users/archive/attachments/20140616/6569c2db/attachment.html>

Posted on the users mailing list.