This piece of code is very slow. Execution from the slime-repl on my netbook takes a couple minutes.
(def test-array (make-array Integer/TYPE 400 400 3))
(doseq [x (range 400), y (range 400), z (range 3)]
(aset test-array x y z 0))
Conversely, this code runs really fast:
(def max-one (apply max (map (fn [w] (apply max (map #(first %) w))) test-array)))
(def max-two (apply max (map (fn [w] (apply max (map #(second %) w))) test-array)))
(def max-three (apply max (map (fn [w] (apply max (map #(last %) w))) test-array)))
Does this have something to do with chunked sequences? Is my first example just written wrong?
You're hitting Java reflection. This blog post has a workaround:
http://clj-me.cgrand.net/2009/10/15/multidim-arrays/
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With