4
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?

More than 1 year has passed since last update.

PowerShellの起動時間をPSProfilerモジュールで確認してみる

Last updated at Posted at 2022-06-30

PowerShell Gallery - PSProfiler

PowerShellでは開始時に読み込むProfileに設定を記述することで、環境をカスタマイズすることができます。

ただしProfileに色々と処理を追加した結果、起動処理に時間がかかるようになることが多々あるかと思います。

そのような場合、Profileのどの部分で時間がかかっているか調べることになりますが。

PowerShell Galleryで公開されているPSProfilerモジュールを利用すれば、どの部分で時間がかかっているか簡単に調べることができます。

モジュールのインストール

下記コマンドでPsProfilerモジュールをインストールできます。
インストールするスコープはお好みで。

今回は2022年6月30日時点でpreview版となっている1.0.5-preview1をインストールしたかったため、-AllowPrerelease -Forceのオプションをつけています。

# スコープはCurrentUserでインストール
Install-Module -Name psprofiler -Scope CurrentUser -AllowPrerelease -Force

今回の環境

  • PowerShell 7.3.0-preview.5
  • PSProfiler 1.0.5-preview1

起動時間を計測してみる

PsProfilerではスクリプトの実行時間を計測してくれる、Measure-Scriptコマンドレットが提供され、このコマンドレットを利用します。

起動時間を調査する方法としては。

PowerShellで開始時にProfileを読み込まないオプション -NoProfile で起動して、Measure-Scriptで$profileを実行して計測します。

上記の流れをコマンドで実行すると下記のようになります。

# topオプションが使えるのは、1.0.5-preview1から
pwsh.exe -NoProfile -Command {Measure-Script -path $profile -Top 5}

コマンドを実行すると下記のように、各ステートメントでの実行時間が表示されるようになります。

今回オプションで-top 5としているため、実行時間の上位5つについては赤く表示されている事がわかります。

image.png

このようにして、処理に時間がかかっているステートメントを簡単に洗い出す事ができます。

参考サイト

Optimizing your $Profile

総評

起動プロファイルは色々とやりたい事を盛り込み始めると、起動に時間がかかるようになってしまう事がありますが、PSProfilerを使うことで簡易に調査が行なえます。

また今回は起動プロファイルでしたが、普通にスクリプトの実行時間を調査するにも有用となります。

4
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
4
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?