【发布时间】:2017-01-01 23:59:06
【问题描述】:
为什么对于 big n,LinkedList 比常规数组慢 10 倍(没有新分配):
Deque<Boolean> tail = new LinkedList<>();
for (int i = 1; i <= n; i++) {
tail.addFirst(true);
tail.pollLast();
}
我的第一个猜测是 gc 时间,但它只需要 3.5 秒中的 100 毫秒。 找出这背后原因的最佳方法是什么?
【问题讨论】:
-
链表要求每增加一个元素就分配一个新节点。数组或
ArrayList不会,因为您将一次性分配大量插槽来保存元素。分配需要时间。 -
你可以在这里找到你的答案。请看stackoverflow.com/questions/1589813/…。
标签: java performance garbage-collection allocation