On 20/03/14 12:26, László Török wrote:
"into" uses "reduce" under the hood, you probably need "fold" to have the computation to run on FJ:
Yes, now I see all my CPUs being maxed-out.

francois@laptop:~$ perf stat java -cp ~/.m2/repository/org/clojure/clojure/1.5.1/clojure-1.5.1.jar clojure.main -e "(require '[clojure.core.reducers :as r]) (let [l (into [] (range 10000000))] (time (r/fold + (r/map #(Math/sin (* % %)) l))))"
"Elapsed time: 1594.89737 msecs"
678.1151045769922

Performance counter stats for 'java -cp /home/francois/.m2/repository/org/clojure/clojure/1.5.1/clojure-1.5.1.jar clojure.main -e (require '[clojure.core.reducers :as r]) (let [l (into [] (range 10000000))] (time (r/fold + (r/map #(Math/sin (* % %)) l))))':

      23460.971496 task-clock                # *4.728**CPUs utilized*
             7,663 context-switches          #    0.000 M/sec
               570 CPU-migrations            #    0.000 M/sec
           174,586 page-faults               #    0.007 M/sec
68,361,248,389 cycles # 2.914 GHz [83.33%] 44,379,949,020 stalled-cycles-frontend # 64.92% frontend cycles idle [83.21%] 22,520,594,887 stalled-cycles-backend # 32.94% backend cycles idle [66.75%]
    63,715,541,342 instructions              #    0.93  insns per cycle
# 0.70 stalled cycles per insn [83.39%] 11,104,063,057 branches # 473.299 M/sec [83.25%] 155,172,776 branch-misses # 1.40% of all branches [83.46%]

       4.962656410 seconds time elapsed

francois@laptop:~$ perf stat java -cp ~/.m2/repository/org/clojure/clojure/1.5.1/clojure-1.5.1.jar clojure.main -e "(require '[clojure.core.reducers :as r]) (let [l (into [] (range 10000000))] (time (reduce + (map #(Math/sin (* % %)) l))))"
"Elapsed time: 5694.224824 msecs"
678.1151045768991

Performance counter stats for 'java -cp /home/francois/.m2/repository/org/clojure/clojure/1.5.1/clojure-1.5.1.jar clojure.main -e (require '[clojure.core.reducers :as r]) (let [l (into [] (range 10000000))] (time (reduce + (map #(Math/sin (* % %)) l))))':

      21365.047020 task-clock                # *2.324 CPUs utilized*
             9,443 context-switches          #    0.000 M/sec
               375 CPU-migrations            #    0.000 M/sec
           164,960 page-faults               #    0.008 M/sec
64,028,578,416 cycles # 2.997 GHz [83.21%] 39,016,283,425 stalled-cycles-frontend # 60.94% frontend cycles idle [83.26%] 21,038,585,232 stalled-cycles-backend # 32.86% backend cycles idle [66.77%]
    63,857,091,972 instructions              #    1.00  insns per cycle
# 0.61 stalled cycles per insn [83.29%] 11,161,960,110 branches # 522.440 M/sec [83.48%] 138,372,839 branch-misses # 1.24% of all branches [83.28%]

       9.195138860 seconds time elapsed

francois@laptop:~$

--
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
--- You received this message because you are subscribed to the Google Groups "Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to