一般的にはリスト内包表記の方がパフォーマンスがいいそうです。 今回は、自分で for 文とリスト内包表記のパフォーマンスを比較してみました。
環境
- Python 3.5.2
- jupyter-1.0.0
WSL の Ubuntu に Jupyter Notebook をインストールしましたの通り Jupyter Notebook をインストールしておきました。
for Statements
次のようにセルに入力して結果を確認しました。
i = 0
for x in range(0, 1000000):
i += 1
i
# 1000000
100 万回 for で繰り返しました。
時間を測りました。
%%time
i = 0
for x in range(0, 1000000):
i += 1
# 98 ms ± 737 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)
98 ms でした。
List Comprehensions
次のようにセルに入力して結果を確認しました。
j = sum([1 for x in range(0, 1000000)])
j
# 1000000
100 万のリストの内包表記です。
時間を測りました。
%%timeit
j = sum([1 for x in range(0, 1000000)])
# 75.2 ms ± 608 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)
75.2 ms でした。
終わり
100 万回を繰り返す for Statements と List Comprehensions の処理を記述しました。 平均で、 for Statements は 98 ms 、 List Comprehensions は 75.2 ms でした。 for Statements が 20ms 程度遅かったです。
微妙な差かもしれませんが、やっぱり内包表記を使った方がいいみたいでした。