Return to Video

18-05 Stopwatch

  • 0:01 - 0:06
    物事がどれだけの時間を要するのか理解するために
    Pythonインタプリタで試してみましょう
  • 0:06 - 0:10
    ここにコードの実行時間を計る関数を書きました
  • 0:10 - 0:13
    ストップウォッチで時間を計ります
  • 0:13 - 0:18
    正確な時間を得るためには
    とても長いものを実行させる必要があります
  • 0:18 - 0:21
    Pythonにはtimeモジュールがあります
  • 0:21 - 0:26
    時間を測定するためのtime.clock関数です
  • 0:26 - 0:30
    ストップウォッチを用意して
    十分長い実行時間を要するプログラムを実行すると
  • 0:30 - 0:33
    どれほど時間がかかるのか把握できます
  • 0:33 - 0:35
    このtimeモジュールを利用すれば
  • 0:35 - 0:41
    秒数に評価するtimeモジュールによって
    より正確な時間が得られます
  • 0:41 - 0:47
    time.clockの値は数秒で
    現在のプロセッサタイムを出します
  • 0:47 - 0:51
    この開始点はまったくの任意ですが重要なのは
  • 0:51 - 0:53
    これを2度呼び出すことです
  • 0:53 - 0:57
    1度目の呼び出しで開始し 2度目で停止します
  • 0:57 - 1:00
    これを変数startとstopに保存します
  • 1:00 - 1:04
    これによりコードを実行するために
    費やす時間が分かります
  • 1:04 - 1:07
    関数はご覧のとおりです
  • 1:07 - 1:10
    変数startを現在の時刻に設定することから開始し
  • 1:10 - 1:13
    コードを実行します
  • 1:13 - 1:16
    何が実行されるかはあとでお話しします
  • 1:16 - 1:19
    現在の時間とstartの時間との間を計算します
  • 1:19 - 1:21
    それにより実行時間が分かります
  • 1:21 - 1:24
    実行にかかった時間とコードの結果の両方を渡します
  • 1:24 - 1:27
    とてもワクワクすることが起こりますよ
  • 1:27 - 1:32
    使うのはevalです evalでPython式における
  • 1:32 - 1:35
    あらゆる文字列を評価することができます
  • 1:35 - 1:38
    この文字列を渡しますがevalに文字列を
  • 1:38 - 1:40
    渡したらコードとしてそれを実行します
  • 1:41 - 1:45
    time_executionには何を渡しても構いません
  • 1:45 - 1:48
    startから実行が終わるまでの時間を出し
  • 1:48 - 1:51
    コード実行の結果も出します
  • 1:51 - 1:54
    このようにtime_execution関数を定義しました
  • 1:54 - 1:58
    Python式を評価するために要する時間が分かります
  • 1:58 - 2:00
    これまで使用してきたようなWebブラウザIDを通して
  • 2:00 - 2:03
    実行する代わりにいくつかテストを実行します
  • 2:03 - 2:07
    私のデスクトップコンピュータで実行することで
    直接Pythonシェルを実行します
  • 2:07 - 2:10
    より正確な時間測定を行うためです
  • 2:10 - 2:14
    私たちが提供するWebブラウザインターフェースを
    使用しても計測できます
  • 2:14 - 2:17
    問題はプログラムを実行する時間に制限があり
  • 2:17 - 2:21
    あまり正確な時間が得られないことです
  • 2:21 - 2:24
    Pythonシェルでこれらを実行します
    Pythonをインストールしてあるなら
  • 2:24 - 2:26
    自分で試してみてください
  • 2:26 - 2:30
    使用方法はWebサイトで見ることができますが
    クラスで続ける必要が
  • 2:30 - 2:32
    必ずしもあるわけではないので
    time_executionがどのように
  • 2:32 - 2:35
    機能するのかだけ示します
  • 2:35 - 2:37
    サンプルを試してみましょう
  • 2:39 - 2:42
    1 + 1の実行時間を計ります
  • 2:42 - 2:46
    簡単な2つの数値を追加し
    time_executionを実行すると
  • 2:46 - 2:49
    どれほど時間がかかるのか確認します
  • 2:49 - 2:54
    2つの結果が得られます 1足す1は2になりますね
  • 2:54 - 2:58
    2つ目がかかった時間になります
  • 2:58 - 3:01
    読みにくいですが冒頭は8.3のようですね
  • 3:01 - 3:05
    そのあとにeー05が続きますがこれは
  • 3:05 - 3:09
    指数表現を使用するという意味です
    ー05は少数点を意味し
  • 3:09 - 3:15
    小数点後にゼロを4つつけるという意味です
  • 3:15 - 3:21
    なので実際は0.000083...秒の意味です
  • 3:21 - 3:26
    実行にかかった時間を秒数にすると
    0.00008となります
  • 3:26 - 3:33
    もう1度同じことを試しても
    まったく同じ結果を得られるわけではありません
  • 3:33 - 3:37
    これは機械内で起きている
    他の要因に左右されるからです
  • 3:37 - 3:39
    まったく同じ解答は得られません
  • 3:39 - 3:41
    しかしとても小さな数値ですね
  • 3:41 - 3:44
    あと数回試してもこの小さな数値を
    目にし続けることになります
  • 3:44 - 3:49
    より複雑なものを追加して行った場合
    やはりとても小さな数値が得られます
  • 3:49 - 3:51
    マイクロ秒という小さな数値です
  • 3:51 - 3:55
    実際のプロセッサタイムそのものは
    おそらくこれらよりも
  • 3:55 - 3:59
    低いものになりますが機械内には
    他にも起きているものがありますので
  • 3:59 - 4:01
    正確な時間を計るためには
    他の動作を停止させる必要があります
  • 4:01 - 4:05
    もっと長いものを試してさらに確認してみましょう
  • 4:05 - 4:10
    この確認ではより実際に近い評価は分かりません
Title:
18-05 Stopwatch
Description:

18-05 Stopwatch

more » « less
Video Language:
English
Team:
Udacity
Project:
CS101 - Intro to Computer Science
Duration:
04:14

Japanese subtitles

Revisions