PowerShellをやってて、だれもが一度は作るFormat-MarkDown。
自分で作ったのはもってたのですが、人の作ったのを見る機会があったのでソースをみていました。
このソース、配列を扱うにあたってPowerShellでやらないほうがいいことをしてるので改善する流れをみてみましょう。
改善してみる
配列は+=からListへ
すでに書いたことなのですが、これを適用するだけです。
つまり、配列に対して、+=をするのはパフォーマンス影響が大きいということです。
数十程度ならいいのですが、数百、数千になるに従い影響は顕著に表れます。
Get-Member を繰り返さない
毎回毎回ProcessでGet-Memberを繰り返すのはやめます。初回に一発とればいいのです。
とはいえ、begin{}で、パイプラインからの入力は取れないのでbegin{}のしょっぱなでとります。
改善内容
オリジナルは、Format-Markdown.Original.ps1です。 改善した方が、Format-Markdown.New.ps1です。
改善結果
66 Propery * 162 Process = 10692要素での影響です。
安定のMeasure-Commandで計測してみましょう。
Measure-Command {ps | Format-Markdown}
1秒あまり高速化できています。
# 改善前 TotalSeconds : 5.8757014 # 改善後 TotalSeconds : 4.2137417
とはいえおそいですね。この辺はつらいものがあります。
まとめ
作者の@pcgeek86は、GitHubにこのスクリプトおいてないんですよねー。
なのでPRとかは送ってないです。