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