Foreach与Foreach-Object的性能区别

本文通过实验对比了PowerShell中Foreach与Foreach-Object两种遍历方式的性能差异。结果显示,在处理大量数据时,Foreach的效率远高于Foreach-Object,两者相差约200倍。此外还解释了这两种遍历方式在内存使用上的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在PowerShell中有两个从字面上看非常相似的语句就是Foreach与Foreach-Object了,那么多这两个语句之间除了写法不同,性能上哪个更快呢下面写同时让这两个语句处理10万个对象,在去计算它们所消耗的时间。

function Foreach_test
{
 foreach($i in 1..100000)
 {
  $i
 }
}

function Foreach_Object_test
{
 1..100000|ForEach-Object{$_}
}

Write-Host "Foreach-Object Statement: $(Measure-Command{Foreach_Object_test}|%{$_.TotalMilliseconds}) Milliseconds"
Write-Host "Foreach Statement: $(Measure-Command{Foreach_test}|%{$_.TotalMilliseconds}) Milliseconds"
Write-Host "============================"
Write-Host "Foreach-Object Statement: $(Measure-Command{Foreach_Object_test}|%{$_.TotalMilliseconds}) Milliseconds"
Write-Host "Foreach Statement: $(Measure-Command{Foreach_test}|%{$_.TotalMilliseconds}) Milliseconds"
Write-Host "============================"
Write-Host "Foreach-Object Statement: $(Measure-Command{Foreach_Object_test}|%{$_.TotalMilliseconds}) Milliseconds"
Write-Host "Foreach Statement: $(Measure-Command{Foreach_test}|%{$_.TotalMilliseconds}) Milliseconds"
Write-Host "============================"

 

根据结果,我们可以发现foreach的效率速度远远快于foreach-object,整整相差了200多倍。

foreach(){}
要在同一次聚集所有的对象,所以需要足够多的内存
foreach-object
每次只读写一个对象所以只需要极少的内存存储。

不过最终无论使用哪个都可以,这完全着眼于手边的解决方案而定。一般数量的执行使用foreach足矣了。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值