Haruchunのブログ

大学生の'春'のお勉強の備忘録

【Python】㉖timeモジュール

f:id:Haruchun:20200521113653p:plain

 

始めに

前回は、日時を扱うモジュールであるdatetimeモジュールについて学んでいきました。

今回は、プログラムの実行速度を測るモジュールであるtimeモジュールについて学んでいきましょう。

 

前回の記事はこちら

haruchun.hatenablog.com

 

モジュールについてはこちら

haruchun.hatenablog.com

 

 

 

早さの比較

プログラムには、実行速度が速いプログラムと実行速度の遅いプログラムがあります。

早速比較してみましょう。

 

例➀プログラム速度の比較

Rakeさんの『100万回の”I love you”』を例にしようと思います。

 

まずは、for文を使用してI love youを100万回表示するプログラムを書きます。

f:id:Haruchun:20200521112101p:plain

 

 

続いて、文字列に対して*演算子を使用して表示します。

*演算子は、文字列を指定した回数だけ、繰り返します。

f:id:Haruchun:20200521102325p:plain

 

実行してみて、実際に差があることは分かりますが、どの程度差があるか正確には分かりませんよね。

そのため、次に紹介するtimeモジュールを使用します。

 

 

timeモジュール

timeモジュールはプログラムの実行時間を測定します。

timeモジュールには様々な機能がありますが、現在の時間を求めるにはtime関数を使用します。

----------

time.time()

----------

多くの環境では、time関数は1970年の1月1日0時0分0秒からの経過時間を表示します。

 

また、開始時間を変数に代入し、終了時間から減算すれば、経過時間が求められます。

 

例②timeモジュール

先ほど使用した2つのプログラムを少々書き換えて、実行時間を計測しようと思います。

for文

f:id:Haruchun:20200521112426p:plain

 

*演算子

f:id:Haruchun:20200521112612p:plain

 

上記の結果より、for文の実行時間は5.9秒程度。

*演算子は、0.016秒程度でした。

このことから、for文は*演算子よりも368.75倍、約370倍程度の時間がかかることが分かります。

 

文字列を連結する処理は、何度も繰り返すと意外に時間がかかることがあります。

*演算子は、最終的な文字列に必要なメモリ領域をあらかじめ確保してから処理を行うために、メモリ領域の拡大や文字列のコピーといった処理が行われず、高速処理できているためと思われます。

 

 

 

終わりに

今回はプログラムの実行速度を測るモジュールである、timeモジュールについて学んでいきました。

プログラムの実行速度なんて、あまり気にしていなかったので、このように可視化されるとわかりやすいですよね。

次回は、いよいよ機会学習に突入してきましょう。