Collections.rotate(list, -1);が妙に遅い

LinkedListに、10000件の文字列の要素を追加して、
10000回のローテーションを実行してみたら、

Collections.rotate(list, -1);

おもったより時間かかる。単位は、ミリ秒。


ローテーション java.util.LinkedList:7274

ローテーションする時間を調べてみたら、
java.util.LinkedListがjava.util.ArrayListよりおそい。


ローテーション java.util.LinkedList:7394
ローテーション java.util.ArrayList:2060

アルゴリズムとデータ構造の教科書的な知識では、
こういう操作は、ArrayListよりLinkedListのほうが速いはず。

ためしに、LinkedListのローテーションについて、

Collections.rotate(list, -1);

をやめて、

list.addLast(list.removeFirst());

としてみた。すると劇的に実行時間が改善。


ローテーション java.util.LinkedList:1
ローテーション java.util.ArrayList:2076

来週、ソースコードをなおさねば。
本番では、1万件どころか10万件でローテーションする想定なのさ。