使用 -PathType 参数如何影响 Test-Path 的效率?

How is the efficiency of Test-Path affected by using the -PathType parameter?

使用 -PathType 参数指定 Leaf 或 Container 对 Test-Path cmdlet 的效率有任何影响吗?

更多的是学术问题,因为我无法想象这里的任何收获都可以忽略不计。

在高层次上,指定 -PathType Leaf 会给 Test-Path 操作增加轻微的开销,因为它必须测试 2 件事 而不是一个 - 即项目存在 并且 它不是容器。

最终,性能影响在很大程度上取决于底层提供程序。 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 确实会增加开销,但除非您正在测试大量路径,否则它应该可以忽略不计。