Jam*_*sev 7 java collections performance
我正在尝试将一百万个对象添加到列表中.这样做的时间比我耐心等待的时间长.随着每一步的进行,似乎也需要越来越长的时间.
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);
}
}
Run Code Online (Sandbox Code Playgroud)
我尝试添加内容List,Set结果非常相似.它会快速启动并在一些数字后扼流圈.
我应该使用什么样的集合来存储大量相似的元素?我在这里想念一些简单的东西吗
小智 11
此问题是不与在一般集合,并且不与LinkedList如图所示(已经O(1)添加特性).
因此可能的嫌疑人是内存的颠簸/交换.确保JVM有足够的内存,系统有更多..
从切换LinkedList到ArrayList(或ArrayDeque)将继续O(1) 摊销的性能,但可能有轻微每个项目的开销更少.(开销,如果这种减少甚至重要,取决于添加的对象的大小和后备存储的填充率.)
| 归档时间: |
|
| 查看次数: |
468 次 |
| 最近记录: |