1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[PowerShell]Stopwatchクラスで簡単に時間計測

Posted at

PowerShellで処理時間を計測したいとき、System.Diagnostics.Stopwatch クラスが便利です。
他の言語では、開始時刻と終了時刻の差を求めたりしますが、Stopwatch クラスを使うと楽にできます。

この記事では、Stopwatchクラスの基本的な使い方と、処理の進捗を表示しながら時間を計測するサンプルを紹介します。

Stopwatchクラスの基本

Stopwatchは、処理の開始・停止・経過時間の取得が簡単にできるタイマーです。

# Stopwatchのインスタンスを作成
$sw = [System.Diagnostics.Stopwatch]::StartNew()

# 計測したい処理
Start-Sleep -Seconds 3

# 計測終了
$sw.Stop()

# 結果表示
Write-Host ("処理時間: {0:N3} 秒" -f $sw.Elapsed.TotalSeconds)

実行すると、処理時間: 3.000 秒 のように表示されます。

一定間隔で処理時間を表示する

Stopwatchは単に計測するだけでなく、処理中に進捗や経過時間を表示することも可能です。

$sw = [System.Diagnostics.Stopwatch]::StartNew()

for ($i = 1; $i -le 5; $i++) {
    Start-Sleep -Seconds 1
    Write-Host ("経過時間: {0:N3} 秒" -f $sw.Elapsed.TotalSeconds)
}

$sw.Stop()
Write-Host ("総処理時間: {0:N3} 秒" -f $sw.Elapsed.TotalSeconds)

Stopwatchの便利ポイント

処理を途中で停止・再開ができます。

$sw.Stop()
# 他の処理
$sw.Start()  # 再開
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?