微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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 data q q)
。不要问我为什么有3功能。只要我记得不鼓励使用它们。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。