1

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

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

4

2 回答 2

1

在较高级别上,指定-PathType Leaf会稍微增加Test-Path操作的开销,因为它必须测试两件事而不是一件事 - 项目存在并且它不是容器。

最后,性能影响在很大程度上取决于底层提供商。提供FileSystem者可以非常快速地确定现有项目是否是容器类型,但不能保证所有提供者都是这种情况——这取决于底层数据存储的性质和实现细节

于 2018-02-01T12:02:54.677 回答
0

我运行了以下代码:

$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确实会增加开销,但除非您正在测试很多路径,否则它应该可以忽略不计。

于 2018-02-01T12:21:45.767 回答