PowerShell をやってて、だれもが一度は作る Format-MarkDown。
自分で作ったのはもってたのですが、人の作ったのを見る機会があったのでソースをみていました。
このソース、配列を扱うにあたって PowerShell でやらないほうがいいことをしてるので改善する流れをみてみましょう。
目次
改善してみる
配列は+=からListへ
すでに書いたことなのですが、これを適用するだけです。
つまり、配列に対して、+=
をするのはパフォーマンス影響が大きいということです。
数十程度ならいいのですが、数百、数千になるに従い影響は顕著に表れます。
Get-Member を繰り返さない
毎回毎回 Process で Get-Member を繰り返すのはやめます。初回に一発とればいいのです。
とはいえ、begin{}
で、パイプラインからの入力は取れないので process{}
のしょっぱなでとります。
改善内容
オリジナルは、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 とかは送ってないです(