加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

Clojure数组应如Java数组一样快

发布时间:2020-12-14 05:06:32 所属栏目:Java 来源:网络整理
导读:我猜他们是同样的事情,但Clojure使用Array类来操作. 无论如何,我被告知在Clojure中,如果你真的需要速度,那么你可以使用数组,但在以下程序之间,Java版本要快得多 (time (let [data (int-array 100000000)] (dotimes [q 100000000] (aset-int data q q)))) _ p
我猜他们是同样的事情,但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- *功能在那里.只要我记得他们的使用是不鼓励的.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读