Clojure数组应如Java数组一样快

前端之家收集整理的这篇文章主要介绍了Clojure数组应如Java数组一样快前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我猜他们是同样的事情,但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);
    }
}

相比之下,使用IntBuffer类的Clojure程序几乎与Java代码一样快

(time
 (let [data (IntBuffer/allocate 100000000)]
   (dotimes [q 100000000]
     (.put data q q))))

解决方法

不要使用aset- *功能.只需使用aset:(aset数据q q).不要问我为什么aset- *功能在那里.只要我记得他们的使用是不鼓励的.

猜你在找的Java相关文章