如果我运行以下命令:
Measure-Command -Expression {gci -Path C:\ -Recurse -ea SilentlyContinue | where Extension -eq ".txt"}
Measure-Command -Expression {gci -Path C:\ -Filter *.txt -Recurse -ea SilentlyContinue}
第二个表达式总是比第一个更快,我猜是因为它不必使用管道。
我想也许在 Pipeline 方法中,PowerShell 递归了我的驱动器并将一组对象传递给 where 子句,这将不得不再次遍历这些项目,但我排除了这一点,因为如果你运行第一个表达式,你可以看到它返回输出,因为它是递归的。那么为什么 Pipeline 方法比较慢呢?