首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >powershell性能: Get-ChildItem与Get-ChildItem _ Where-Object

powershell性能: Get-ChildItem与Get-ChildItem _ Where-Object
EN

Stack Overflow用户
提问于 2018-09-12 11:16:12
回答 1查看 1.3K关注 0票数 3

我尝试了几个选项来迭代我的目录,并在以下命令之间获得了巨大的性能差异:

缓慢:

代码语言:javascript
复制
Get-ChildItem -Directory -Force -Recurse -Depth 3 -Include '$tf'

快:

代码语言:javascript
复制
Get-ChildItem -Directory -Force -Recurse -Depth 3 | Where-Object Name -eq '$tf'

有人能解释一下为什么第一句比第二句慢得多吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-12 11:41:43

Get-ChildItem是一个提供程序cmdlet --这意味着它的大部分实际工作被卸载到底层提供者,在您的情况下,很可能是FileSystem提供程序。

提供程序本身实际上不支持-Include/-Exclude参数,这是cmdlet需要处理的为数不多的事情之一--对于文件系统提供程序来说,这是一项超繁重的双重工作,因为cmdlet需要通过文件系统层次结构进行递归,以确定它是需要应用排除还是基于父目录名的包含,您可以使用看看这里是如何实现的。

因此,通过对文件系统提供程序使用-Include,您将要求PowerShell做大量的双重工作。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52293871

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档