Полагаю, это одно и то же, но Clojure использует класс Array для манипулирования.
В любом случае, мне сказали, что в Clojure, если вам действительно нужна скорость, вы можете использовать массивы, но между следующими программами версия Java намного быстрее
(time
(let [data (int-array 100000000)]
(dotimes [q 100000000]
(aset-int data q q))))
_
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);
}
}
В отличие от этой программы Clojure, которая использует класс IntBuffer, почти так же быстро, как код Java
(time
(let [data (IntBuffer/allocate 100000000)]
(dotimes [q 100000000]
(.put data q q))))