次を実行すると:
Measure-Command -Expression {gci -Path C:\ -Recurse -ea SilentlyContinue | where Extension -eq ".txt"}
Measure-Command -Expression {gci -Path C:\ -Filter *.txt -Recurse -ea SilentlyContinue}
2 番目の式は、パイプラインを使用する必要がないため、最初の式よりも常に高速です。
パイプライン メソッドで、PowerShell がドライブを再帰し、オブジェクトのコレクションを where 句に渡したのではないかと考えました。これは、アイテムをもう一度反復処理する必要があるためですが、最初の式を実行すると、それが返されることがわかるため、除外しました。再帰的に出力します。では、なぜ Pipeline メソッドが遅いのでしょうか?