I've been benchmarking java and clojure programs and wanted to make
sure I was doing this right. I made two fairly similar programs that
manipulated Vec2 objects from the JBox2D library. At first clojure
was performing pretty poorly, then I tried compiling my clojure
script, and then replacing the inner doseq with a loop. But java is
still 5x faster and I hear that clojure should be able to run as fast
as java and I wondered if there's any options in clojure I'm not using
Java:
package test;
import org.jbox2d.common.Vec2;
public class Main {
static long w = 0;
public static void main(String[] args) {
for(int q = 0;q < 5;q++){
Vec2 a = new Vec2(1, 2), b = new Vec2(3, 4);
long start = System.currentTimeMillis();
for(int d = 0;d < 1e9;d++){
a.addLocal(b);
}
long stop = System.currentTimeMillis();
System.out.println((stop - start)/1000.0);
}
}
}
Clojure:
(ns hello.test
(import org.jbox2d.common.Vec2)
(:gen-class))
(defn -main [& args]
(doseq [q (range 5)]
(let [a (Vec2. 1 2)
b (Vec2. 3 4)]
(time (loop [x (int 0)]
(when (< x 1e9)
(.addLocal a b)
(recur (unchecked-inc x))))))))
Vec2(if anyone cares):
http://code.google.com/p/jbox2d/source/browse/trunk/jbox2d/src/org/jbox2d/common/Vec2.java
--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to [email protected]
Note that posts from new members are moderated - please be patient with your
first post.
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