らふのプログラミングメモ

プログラミングメモです。

プログラム内の処理にかかる時間を計測してみよう

プログラミングをやっていると、
「この処理ってどのくらい時間かかってるの?」
と思ったことがあるかと思います。

また処理の実行時間を測って、Aの処理とBの処理、どっちのほうが早いのか?
など確認したい時もあるかと思います。

そんな時に実行時間を計測する方法をピックアップして
まとめたいと思います。

まずはtime.time() を使ってみよう

例: 空のリスト(y)を準備して、100万個のデータをappendしてみよう

  • time.time()の使い方
import time()
time.time()

これで今の時間を取得することができます。

  • 実際やってみよう
import time
#スタート時のシステム時間を入手
before = time.time()

y = []
for i in range(1000000):
    y.append(i)

#for文終了時のシステム時間を入手
after = time.time()

t = after - before

結果:0.11580109596252441 s

time.perf_counter()を使ってみよう

先ほどと同じ例を使ってやってみよう。

  • time.perf_counter()
import time()
time.perf_counter()

これで今の時間を取得することができます。

import time
#スタート時のシステム時間を入手
before = time.perf_counter()

y = []
for i in range(1000000):
    y.append(i)

#for文終了時のシステム時間を入手
after = time.perf_counter()

t = after - before

結果:0.11933905400007916 s

どちらを使った方がいいの?

より正確な時間を計測したいのであれば、
time.perf_counter()を使ったほうがいいそうです
(time.perf_counter()のほうがより正確なシステム時間を計測できるため)

ですが、大まかな処理の時間を知りたいだけであれば、
どちらを使っても大丈夫ではないかな。と思います。
(それより、複数回実行し平均値を取って比較したほうがいいかな?と思います)

<最終更新日:2021/09/01>
2021/09/01 投稿

if-else文での内包表記

昨日に引き続き、内包表記をまとめていきたいと思います。

↓昨日の記事(リストの内包表記)はこちら。

rafu.hatenablog.jp

if-else文でも内包表記ができる?

if-else文の内包表記をやってみよう!

例:
以下のような条件のyの値を求めたいとする
y = x + 1 (x≧0)
y = -x + 1 (x<0)

  • if-else文を使って書いてみよう。

例をif-else文で書くと以下のようになります。

if x >= 0:
    y = x + 1
else:
    y = -x + 1
  • 内包表記を使って書いてみよう。

さきほどの例を内包表記を使って書いてみよう。

y = x + 1 if x >= 0 else -x + 1

どちらの方法でも結果は以下のようになります。
x = 1のとき y = 2
x = -2のとき y = 3
となります。

  • 説明:
# [Trueの時の式 if 条件 else Falseの時の式]
# Trueの時の式:x + 1
# 条件:x >= 0
# Falseの時の式:-x + 1
y = x + 1 if x >= 0 else -x + 1

<最終更新日:2021/08/31>
2021/08/31 投稿