On Oct 15, 8:34 am, Islon <[EMAIL PROTECTED]> wrote:
> Hi.
>
> I've made a dumb (very dumb) performance comparison function just to play
> with the language.
> I wanted to mark some symbols with a float primitive type but the compiler
> complained so I had to annotate it with the Float class.
> Here is the function:
>
> (defn dumb-test []
> (let [#^Float f2 567.09723]
> (loop [#^Float f 1.8, i 10000000]
> (if (zero? i)
> f
> (recur (/ f f2) (dec i))))))
>
> And the test:
>
> (loop [i 50]
> (time (dumb-test))
> (if (zero? i)
> i
> (recur (dec i))))
>
> There's a way to put a float primitive type in the metadata to prevent the
> Float -> float unboxing?
> Feel free to point some mistakes I probably made, I've just started learn
> clojure.
>
> The clojure version took an average: "Elapsed time: 217.833342 msecs" in my
> machine.
The following was somewhat faster.
(defn dumb-test []
(let [f2 (float 567.09723)]
(loop [f (float 1.2), i (long 10000000)]
(if (zero? i)
f
(recur (/ f f2) (dec i))))))
I get about 59ms on my machine.
user=> (time (dumb-test))
"Elapsed time: 59.245176 msecs"
0.0
Parth
>
> The java version (below) took average 23 msecs:
>
> private static float dumbTest() {
> float f = 1.8f;
> float f2 = 567.09723f;
> for(int i = 0; i < 10000000; i++) {
> f /= f2;
> }
> return f;
> }
>
> Regards.
> Islon
--~--~---------~--~----~------------~-------~--~----~
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
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
-~----------~----~----~----~------~----~------~--~---