如何解决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 举报,一经查实,本站将立刻删除。