Windows でコマンドやバッチ処理にかかる時間を調べたいときのやり方を紹介します。具体的には、Linux の time コマンドと同じようなことをWindowsでもPowerShellのコマンドを使って実施可能です。
コマンド・スクリプト・バッチ処理にかかる時間を計測する
使うコマンドとしては、Measure-Command コマンドになります。
使い方は以下の通り、Measure-Command に続けて{}カッコの中に計測したいコマンド処理やバッチファイルを指定するだけです。
1 |
PS > Measure-Command { COMMAND } |
使い方の例としては、Linuxでいうfindコマンドでファイルを探す時間を計測したり、ファイルを圧縮・解凍する時間を計測したりなどで利用できますね。
正しく時間を計測できるのか
以下の約1分で完了する処理をPSのスクリプトとして用意して、その処理時間をMeasure-Command コマンドで確認してみます。
1 2 3 4 5 6 7 8 9 |
$Count=1 while ( $Count -le 59 ) { write-host $(Get-Date -Format "yyyy/MM/dd HH:mm:ss") sleep 1 $Count++ } |
では実際にMeasure-Commandで確認します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
PS > Measure-Command { C:\Work\datetime.ps1 } 2019/01/05 23:39:31 2019/01/05 23:39:32 2019/01/05 23:39:33 : : 2019/01/05 23:40:28 2019/01/05 23:40:29 2019/01/05 23:40:30 Days : 0 Hours : 0 Minutes : 0 Seconds : 59 Milliseconds : 491 Ticks : 594912815 TotalDays : 0.000688556498842593 TotalHours : 0.0165253559722222 TotalMinutes : 0.991521358333333 TotalSeconds : 59.4912815 ★ TotalMilliseconds : 59491.2815 |
TotalSeconds の行が処理時間(秒)の合計になります。ちゃんと計測できているようです。
なので、秒数の合計だけ確認したければ、以下のように指定すればよいですね。
1 2 3 4 5 6 7 8 9 10 |
PS > (Measure-Command { C:\Work\datetime.ps1 }).TotalSeconds 2019/01/05 23:45:29 2019/01/05 23:45:30 2019/01/05 23:45:31 : : 2019/01/05 23:46:25 2019/01/05 23:46:26 2019/01/05 23:46:27 59.5598892 ★ |
コマンドプロンプトで実行する方法
もちろんコマンドプロンプトでも実行できます。PowerShellなにそれおいしいの?な人もまだいると思いますので使い方をば。
コマンドプロンプトを起動して、以下のようにPowerShellを呼び出すことができます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
>powershell -command "Measure-Command { C:\Work\datetime.ps1 }" : : 2019/01/05 23:40:37 2019/01/05 23:40:38 Days : 0 Hours : 0 Minutes : 0 Seconds : 59 Milliseconds : 525 Ticks : 595258050 TotalDays : 0.000688956076388889 TotalHours : 0.0165349458333333 TotalMinutes : 0.99209675 TotalSeconds : 59.525805 TotalMilliseconds : 59525.805 |
秒数だけとりたい場合も以下のように同じように実行可能。
1 2 3 4 5 6 7 |
>powershell -command "(Measure-Command { C:\Work\datetime.ps1 }).TotalSeconds" : : 2019/01/05 23:46:31 2019/01/05 23:46:32 59.7091634 |
まとめ
LinuxでできることはだいたいPowerShellでできますね。コマンドプロンプトだけでは面倒だったり、そもそもできなかったりすることもPowerShellであれば結構簡単にできちゃいます。
以上です。
↓↓↓ 持っていると便利な一冊 ↓↓↓