当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] Measure-Command:速度比较(Foreach 与 Foreach-Object)

作者:精品下载站 日期:2024-12-14 07:20:12 浏览:16 分类:玩电脑

Measure-Command:速度比较(Foreach 与 Foreach-Object)


Measure-Command 测量命令或脚本完成所需的时间。这对于处理大量数据尤其重要。

测量命令

在第一个示例中,我通过搜索文件名为 Windows 的所有文件来测量命令 Get-ChildItem。

Measure-Command {Get-Childitem -Path c: -File -Recurse -ErrorAction SilentlyContinue | Where-Object Name -eq "Windows"}

[玩转系统] Measure-Command:速度比较(Foreach 与 Foreach-Object)

大约花了44秒。那很快。我有一块SSD。

比较

Foreach对象

现在,让我们用 Foreach-Object 来测量另一个命令:

Measure-Command {0..1000000 | Foreach-Object $_}

[玩转系统] Measure-Command:速度比较(Foreach 与 Foreach-Object)

8秒。不错。

福里奇

如果我用 foreach 而不是 Foreach-Object 做同样的事情,那么我必须接受,我的速度要快得多。

$i=0
Measure-Command {foreach ($i in 0..1000000) {$i++}}

[玩转系统] Measure-Command:速度比较(Foreach 与 Foreach-Object)

3.5秒。微软解释了为什么会这样:

https://blogs.technet.microsoft.com/heyscriptingguy/2014/07/08/getting-to-know-foreach-and-foreach-object/

结论

Foreach 消耗更多内存,但速度更快。所有对象都存储在内存中。使用 Foreach-Object,对象被一个接一个地处理,并且每个对象的结果通过管道立即输出。不管怎样,我最喜欢的是 Foreach-Object。 ?

更多信息:https://www.pluralsight.com/blog/tutorials/measure-powershell-scripts-speed。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯