Clojure performance for solving Project Euler 72 (counting proper reduced fractions)
(time (solve))

=&gt; "Elapsed time: 27363.381633 msecs"


Replace aset with aset-int:

(defn solve []
  (let [limit 1000000
        phi (int-array (range (inc limit)))]
    (loop [i 2 acc 0]
      (if (= i (aget phi i))
        (loop [j i]
          (if (&lt;= j limit)
            (do (aset-int phi j (/ (* (aget phi j) (dec i)) i))
              (recur (+ j i))))))
      (if (&lt; i limit)
        (recur (inc i) (+ acc (aget phi i)))
        acc))))

(time (solve))

=&gt; "Elapsed time: 443.570909 msecs"


This is still three times slower than the Java, but not out of sight. 

I thought the original might be using type reflection, but ...

(set! *warn-on-reflection* true)


... produces no response to the original code.