John, this will speed up to the same as the others if you let the 0.  IIRC
from looking at the bytecode before, the 0 is an Integer not an int.

user> (time
         (let [m (int 100000000) b (double 4.0) x0 (double -0.2) y0 (double
0.1) t (double 2.0) i0 (int 0)]
           (loop [x (double 0.0) y (double 0.0) i m]
             (if (> i i0)
               (let [x2 (* x x) y2 (* y y)]
                 (if (< (+ x2 y2) b)
                   (recur (+ (- x2 y2) x0) (+ (* t (* x y)) y0)
(unchecked-dec i))
                 i))
               i))))
"Elapsed time: 881.387889 msecs"
0

-Mike

On Tue, Aug 11, 2009 at 10:00 PM, John Harrop <jharrop...@gmail.com> wrote:

> user=> (time         (let [m (int 100000000) b (double 4.0) x0 (double
> -0.2) y0 (double 0.1) t (double 2.0)]
>            (loop [x (double 0.0) y (double 0.0) i m]
>              (if (> i 0)
>                (let [x2 (* x x) y2 (* y y)]
>                  (if (< (+ x2 y2) b)
>                    (recur (+ (- x2 y2) x0) (+ (* t (* x y)) y0)
> (unchecked-dec i))
>                  i))
>                i))))
> "Elapsed time: 3418.8542 msecs"
> 0
>
> Shockingly, reversing the count-up to a count-down and not changing
> anything else at all makes things much, MUCH worse, about four times slower.
>
>
>

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to