大致答案:
Clojure代码中最重要的优化是在中使用类型化的原始数学is-prime?
,例如:
(set! *unchecked-math* true) ;; at top of file to avoid using BigIntegers
(defn ^:static is-prime? [^long n]
(loop [i (long 2)]
(if (zero? (mod n i))
false
(if (>= (inc i) n) true (recur (inc i))))))
有了这一改进,我让Clojure在0.635秒内完成了10k(即,在您的列表中排名第二快,击败Scala)
请注意,在某些情况下,您可能会在基准测试中打印代码- 这不是一个好主意,因为它会使结果失真,尤其是print
在第一次使用像这样的函数导致IO子系统或类似东西初始化的情况下!