WindowsやLinuxでコマンドの処理時間を計測する方法

WindowsやLinuxでコマンドの処理時間を計測する方法

WindowsやLinuxで、時間のかかる処理をコマンドで実行する場合、どれぐらいの処理時間が掛かったかを確認したりログに記録しておきたいときがあります。

そこでここでは、WindowsやLinuxでコマンドを実行したときの処理時間を計測する方法を解説します。

Windowsの場合

WindowsでコマンドプロンプトやPowerShellで実行するコマンドの処理時間を計測したいときは、PowerShellのMeasure-Commandコマンドレットを使うのがおすすめです。

Windowsコマンド

Windowsコマンド(コマンドプロンプト)で処理時間を計測したいときは、以下のようにコマンドを実行します。

> powershell -C Measure-Command {計測したいコマンド}

たとえば、フォルダーやファイルをコピーする際によく利用するrobocopyコマンドの処理時間を計測したいときは、以下のようにコマンドを実行します。

> powershell -C Measure-Command {robocopy E:Source F:\Dest test.data}

バッチファイルなら、以下のようにコマンドを実行します。

> powershell -C Measure-Command {cmd /c E:\filecopy.bat}

Measure-Commandコマンドレットの実行結果には、以下のように計測時間が日・時・分・秒で表示されますが、大抵の場合必要となるのはTotalSecondsやTotalMinutesあたりでしょう。

WindowsやLinuxでコマンドの処理時間を計測する方法

たとえば、処理時間を秒で表示したいときは、以下のようにコマンドを実行すれば、TotalSecondsだけを結果として表示させることができます。

> powershell -C (Measure-Command {robocopy E:Source F:\Dest test.data}).TotalSeconds

WindowsやLinuxでコマンドの処理時間を計測する方法

PowerShell

PowerShellで処理時間を計測したいときは、以下のようにコマンドを実行します。

PS> Measure-Command {計測したいコマンド}

たとえば、フォルダーやファイルをコピーする際に使用するCopy-Itemコマンドレットの処理時間を計測したいときは、以下のようにコマンドを実行します。

PS> Measure-Command {Copy-Item "E:\Source\test.data" -Destination "F:\Dest"}

PowerShellスクリプト(PS1ファイル)の処理時間を計測したいときは、以下のようにコマンドを実行します。

PS> Measure-Command {E:\filecopy.ps1}

Linuxの場合

Linuxでコマンドやシェルスクリプトの処理時間を計測したいときは、timeコマンドを使うのが一般的です。

コマンドの処理時間を計測したいときは、以下のようにコマンドを実行します。

> time 計測したいコマンド

たとえば、/var/log配下のファイルで「crit」という文字列を含むファイルを検索するのにかかる時間を計測したいときは、以下のようにコマンドを実行します。

# time grep "crit" -rl /var/log

コマンドの実行結果には以下の3つの時間が表示されており、処理時間を確認したい場合はおおむねrealに表示されている時間を確認するとよいでしょう。

  • real:コマンドの実行にかかった時間
  • user:コマンドの実行で使用したユーザーCPU時間
  • sys:コマンドの実行で使用したシステムCPU時間

WindowsやLinuxでコマンドの処理時間を計測する方法