使用参数指定 Leaf 或 Container 是否对cmdlet-PathType
的效率有任何影响?Test-Path
更多的是一个学术问题,因为我无法想象这里的任何收益都可以忽略不计。
使用参数指定 Leaf 或 Container 是否对cmdlet-PathType
的效率有任何影响?Test-Path
更多的是一个学术问题,因为我无法想象这里的任何收益都可以忽略不计。
在较高级别上,指定-PathType Leaf
会稍微增加Test-Path
操作的开销,因为它必须测试两件事而不是一件事 - 项目存在并且它不是容器。
最后,性能影响在很大程度上取决于底层提供商。提供FileSystem
者可以非常快速地确定现有项目是否是容器类型,但不能保证所有提供者都是这种情况——这取决于底层数据存储的性质和实现细节
我运行了以下代码:
$result1 = measure-command {
for ($i = 1; $i -lt 101; $i++)
{
test-path C:\windows\temp
}
}
然后我跑了:
$result2 = measure-command {
for ($i = 1; $i -lt 101; $i++)
{
test-path C:\windows\temp -PathType leaf
}
}
有趣$result1
的是 31 毫秒,$result2
而 36 毫秒。似乎添加-pathtype leaf
确实会增加开销,但除非您正在测试很多路径,否则它应该可以忽略不计。