この記事で何がしたいか?
Qiitaの「軽い気持ちでLinkedListを使ったら休出する羽目になった話」を見て、
どの程度APIのパフォーマンスに影響が出るのか気になったのでテスト。
実施条件
1.iteratorのfor文(条件式とi++で回すタイプ)
2.拡張for文
上記タイプで処理時間に差が出る模様の為、どちらも試してみた。
結論
1万件程度のデータ数であれば、たいして問題にならない。
10万件を超えるような場合は大きな障害を生む可能性がある。
実施詳細
ランダムアクセス以外
まず、問題となったLinkedListのランダムアクセス以外をテスト

前述通り、上記グラフにはLinkedListをランダムアクセス(get(index))した結果は追加していない。
ArrayListは50万件処理しても、get(i)と拡張for文にさほど大差はなく、LinkedListも拡張for文なら問題ないパフォーマンスとなっている。
ランダムアクセス
先ほどのグラフにLinkedListを追加してみた。

もはやLinkedListのランダムアクセス以外が、処理時間に差がありすぎて限りなく0に見える。
50万件の処理時間は最大で155,848msとなり、リストからただ値を取得するだけで約2分30秒かかる恐ろしいパフォーマンスを誇る。
また、要素が10万件程度でも、約4秒程度かかってしまっている為、パフォーマンスを気にする場面では通常のfor文は使用しないようにしたい。
ランダムアクセスの処理時間グラフ
LinkedListの50万件の処理時間をグラフ化すると以下のようになる。

なぜそうなるのか?
APIを確認したところ、下記の記述となっている。
→リストが増えると、それなりに処理時間は伸びるけどget自体の時間は変わらないよ。という解釈ができる。