私は、100000項目のStringを持つLinkedListを持っています。get、remove、addなどのインデックスを持つ操作を実行すると、同じメカニズムに見えます。 まず、Node [index]にアクセスするためにリストをブラウズし、別の操作を行います。 は "get"とNodeの項目だけを参照します。 しかし、なぜ "取得" 操作であるJavaでLinkedListを削除(インデックス)するよりも遅くなるのはなぜですか?
for(int index=99999;index>=0;index--){
links.get(index);
}
"削除" 操作よりもたくさんのより多くの時間がかかるナノ秒単位で時間を取得:15083052805ナノ秒単位で
for(int index=99999;index>=0;index--){
links.remove(index);
}
デル時間:2310625
のLinkedListの関数:
public E get(int index) {
checkElementIndex(index);
return node(index).item;
}
public E remove(int index) {
checkElementIndex(index);
return unlink(node(index));
}
ベンチマークの前にJVMを適切にウォームアップしましたか? –
有用なリンク[正しいベンチマーク](https://stackoverflow.com/questions/504103/how-do-i-write-a-correct-micro-benchmark-in-java#answer-513259)、[堅牢なベンチマーク]( – matoni
また、99999はベンチマークでは十分ではありません。 – syntagma