Hi All,
I stuck with performance problem using Clojure.
It seems that when all the optimisation hints are used,
Clojure data processing is still much slower than Java.
In my simple test I sum up 16M of random integers 0 n 10.
The code is as follows (see below Java and C code, and the test
Hi,
(defn sum [^ints arr]
(areduce arr i ret (int 0)
(unchecked-add-int ret (aget arr i
2010/10/18 Dmitriy S. samborsk...@yahoo.com:
(defn sum [arr]
(loop [i (int 0) s (int 0)]
(if (= i *N*) s
^^^
You still doing non-primitive ops here. Also Check for areduce:
On Oct 18, 3:07 pm, Jürgen Hötzel juer...@hoetzel.info wrote:
(defn sum [arr]
(loop [i (int 0) s (int 0)]
(if (= i *N*) s
^^^
You still doing non-primitive ops here.
Indeed, I overlooked that.
But this was not the main cause of the trouble.
Also Check for areduce:
(defn
I happened to stumble on something like that in 1.2, with
= slower than =, which is in turn slower than zero?.
(Even when everything is a primitive)
I never really understood why and would be happy to understand it better.
Dimitry, have you tryed to replace (= x y) by (zero? (- x u)), or with
an
On Oct 18, 4:44 pm, nicolas.o...@gmail.com nicolas.o...@gmail.com
wrote:
I happened to stumble on something like that in 1.2, with
= slower than =, which is in turn slower than zero?.
(Even when everything is a primitive)
I never really understood why and would be happy to understand it
You can try == for numbers
--
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
On Oct 18, 5:15 pm, nicolas.o...@gmail.com nicolas.o...@gmail.com
wrote:
You can try == for numbers
17 msec (== ~idx (alength a#))
293 msec (= ~idx (alength a#))
Yes, it's the case.
I should have checked the API doc for the =/== difference.
Thank you very much.
Best regards,
Dmitriy
--
2010/10/18 Dmitriy S. samborsk...@yahoo.com:
On Oct 18, 3:07 pm, Jürgen Hötzel juer...@hoetzel.info wrote:
(defn sum [arr]
(loop [i (int 0) s (int 0)]
(if (= i *N*) s
^^^
You still doing non-primitive ops here.
Indeed, I overlooked that.
But this was not the main cause of
On Oct 18, 5:46 pm, Jürgen Hötzel juer...@hoetzel.info wrote:
Note the difference between = and ==, = will result in a cast to
the wrapped types for it's arguments.
It seems that '=' is always slower than '==',
even if types are primitive, look:
Clojure 1.2.0
user= (time (let [a (int 3) b (int
On Oct 18, 5:46 pm, Jürgen Hötzel juer...@hoetzel.info wrote:
Note the difference between = and ==, = will result in a cast to
the wrapped types for it's arguments.
It seems that '=' is always slower than '==',
even if types are primitive, look:
Clojure 1.2.0
user= (time (let [a (int 3) b (int
2010/10/18 Dmitriy S. samborsk...@yahoo.com:
On Oct 18, 5:46 pm, Jürgen Hötzel juer...@hoetzel.info wrote:
Note the difference between = and ==, = will result in a cast to
the wrapped types for it's arguments.
It seems that '=' is always slower than '==',
even if types are primitive, look:
Using the latest 1.3.0-master-SNAPSHOT:
user= (time (let [a (int 3) b (int 5)] (dotimes [_ 100] (== a b
Elapsed time: 3.355 msecs
nil
user= (time (let [a (int 3) b (int 5)] (dotimes [_ 100] (= a b
Elapsed time: 3.884 msecs
nil
Yay!
On Mon, Oct 18, 2010 at 2:40 PM, Jürgen Hötzel
12 matches
Mail list logo