Clojure数组应该和Java数组一样快吗
我猜它们是一样的,但是Clojure使用Array类进行操作 无论如何,我被告知,在Clojure中,如果你真的需要速度,那么你可以使用数组,但是在以下程序之间,Java版本要快得多Clojure数组应该和Java数组一样快吗,java,arrays,clojure,Java,Arrays,Clojure,我猜它们是一样的,但是Clojure使用Array类进行操作 无论如何,我被告知,在Clojure中,如果你真的需要速度,那么你可以使用数组,但是在以下程序之间,Java版本要快得多 (time (let [data (int-array 100000000)] (dotimes [q 100000000] (aset-int data q q)))) _ 不要使用aset-*函数。只需使用aset:(aset数据q)。不要问我为什么有aset-*函数。只要我记得,他们的使用
(time
(let [data (int-array 100000000)]
(dotimes [q 100000000]
(aset-int data q q))))
_
不要使用
aset-*
函数。只需使用aset
:(aset数据q)
。不要问我为什么有aset-*
函数。只要我记得,他们的使用是不被鼓励的。你介意公布你的结果吗?+1因为与aset
相同的基准测试运行速度快了大约十倍。没有与Java版本进行比较。
public class Array{
public static void main(String[] args){
long start = System.currentTimeMillis();
int[] data = new int[100000000];
for(int q = 0;q < data.length;q++){
data[q] = q;
}
System.out.println(System.currentTimeMillis() - start);
}
}
(time
(let [data (IntBuffer/allocate 100000000)]
(dotimes [q 100000000]
(.put data q q))))