Python の for Statements(for 文) と List Comprehensions (リスト内包表記)のパフォーマンスを比較してみました

一般的にはリスト内包表記の方がパフォーマンスがいいそうです。 今回は、自分で 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 程度遅かったです。

微妙な差かもしれませんが、やっぱり内包表記を使った方がいいみたいでした。