gpt4 book ai didi

java - 添加到大型 Java 集合,性能瓶颈

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:12:16 25 4
gpt4 key购买 nike

我正在尝试将一百万个对象添加到列表中。这样做所需的时间比我耐心等待的时间要长。进行每一步似乎也需要越来越长的时间。

    int size = 1000000;
Deque<DatastoreElement> content = new LinkedList<DatastoreElement>();

for (int i = 0; i < size; i++) {

String k = Utils.getRandomStringOfLength(20);
String v = Utils.getRandomStringOfLength(300); // goes faster with smaller number

int metaHash = random.nextInt(10) + 1;
KVPair kvp = new KVPair(k, v);
DatastoreElement dse = new DatastoreElement(metaHash, kvp);

content.addLast(dse); // confirmed problem is here

if (i % 10000 == 0) {
System.out.println(i);
}
}

我尝试将内容添加到 ListSet,结果非常相似。它启动很快,并在一些数字后窒息。

我应该使用什么集合来存储大量相似的元素?我在这里遗漏了一些简单的东西吗?

最佳答案

这个问题一般不会出现在集合中,不会出现在 LinkedList 中(具有 O(1) 添加特性) .

因此,可能的嫌疑人正在抖动/交换内存。 确保JVM有足够的内存,系统有更多..

LinkedList 切换到 ArrayList(或 ArrayDeque)将保持 O(1) 摊销 性能,但可能每个项目的开销略微。 (开销,以及这种减少是否重要,取决于添加的对象的大小和后备存储的填充率。)

关于java - 添加到大型 Java 集合,性能瓶颈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12081867/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com