Проблема производительности с массивом Clojure

Эта часть кода является очень медленной. Выполнение от слизи-repl на моем нетбуке берет пару минут.

(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))

С другой стороны этот код работает действительно быстро:

(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)))

Это имеет некоторое отношение к разделенным на блоки последовательностям? Мой первый пример просто записан неправильно?

5
задан dbyrne 13 June 2010 в 22:38
поделиться