Hmm, I should have thought of that.
New Clojure:
(ns hello.test
(import org.jbox2d.common.Vec2)
(:gen-class))
(defn -main [& args]
(dotimes [q 5]
(let [#^Vec2 a (Vec2. 1 2)
#^Vec2 b (Vec2. 3 4)]
(time (loop [x (int 0)]
(when (< x (int 1e9))
(.addLocal a b)
(recur (unchecked-inc x))))))))
Old Clojure Output:
"Elapsed time: 11437.687558 msecs"
"Elapsed time: 10863.527399 msecs"
"Elapsed time: 11863.44317 msecs"
"Elapsed time: 11861.23116 msecs"
"Elapsed time: 11870.92791 msecs"
New Clojure Output:
"Elapsed time: 2492.033705 msecs"
"Elapsed time: 1489.316185 msecs"
"Elapsed time: 1484.606724 msecs"
"Elapsed time: 1480.983085 msecs"
"Elapsed time: 1486.435446 msecs"
This is the result of the Java code I posted,
Java Output:
2.263
4.471
4.484
4.452
4.409
I thought it was strange that the first iteration ran so fast, so I
changed 1e9 to (int)1e9 and the speed got better, but I still wonder
why the first iteration before was so fast, the JIT is supposed to
make it faster isn't it?
Old Java Output:
1.513
1.495
1.96
1.47
1.475
On Mar 10, 9:04 pm, David Nolen <[email protected]> wrote:
> On Thu, Mar 10, 2011 at 10:39 PM, Jarl Haggerty <[email protected]>wrote:
>
> > 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
>
> Try replacing doseq w/ dotimes. You need to cast 1e9 to int, just like you
> do w/ 0 if you're using Clojure <= 1.2.0. How long is it taking for you in
> Clojure and Java?
>
> David
--
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