PowerShell 各种自定义对象方法的性能大比拼

堪称《神曲》的PowerShell自定义对象性能大比拼 3


对于喜欢拿来主义的我们,看到这样的文章自然会汗颜,这与牛不牛无关,而关乎的是一个人对待技术的热情以及对待实践的态度。作为普通的脚本入门者,我达到目的即可罢休,很少会去关注性能问题,优化问题。

我们知道在PowerShell 中有好几种方式可以自定义对象:

  • 借助Add-Member
$Object = New-Object PSObject
$Object | Add-Member -MemberType NoteProperty -Name Name -Value Boe -PassThru |
Add-Member -MemberType NoteProperty -Name Number -Value 1 -PassThru |
Add-Member -MemberType NoteProperty -Name ID -Value 007 -PassThru
  • 使用Select-Object
$Object = '' | Select-Object Name, Number, ID
$Object.Name = 'Boe'
$Object.Number = 1
$Object.ID = 007
  • 初始化PSObject
New-Object PSObject -Property @{
Name = 'Boe'
Number = 1
ID = 007
}
  • 初始化OrderedPSObject
New-Object pscustomobject -Property([ordered]@{
Name= 'Boe'
Number = 1
ID = 007
})
  • 使用[pscustomobject]强制类型转换
[pscustomobject]@{
Name= 'Boe'
Number = 1
ID = 007
}
  • 使用[pscustomobject][ordered]强制类型转换
[pscustomobject][ordered]@{
Name= 'Boe'
Number = 1
ID = 007
}

为了比较这几种方法的性能,Boe Prox可谓是绞尽脑汁,劳苦功高。它专门写了一个脚本Start-CustomObjectPerformanceTest.ps1。我们先看看一张脚本执行效果图:

PowerShell 各种自定义对象方法的性能对比测试脚本执行效果图

PowerShell 各种自定义对象方法的性能对比测试脚本执行效果图

同时非常辛苦地在Excel表格中给对数据手动处理,并绘制出了几张图表。

PowerShell 各种自定义对象方法的性能大比拼

PowerShell 各种自定义对象方法的性能大比拼

PowerShell 各种自定义对象方法的性能大比拼

PowerShell 各种自定义对象方法的性能大比拼

PowerShell 各种自定义对象方法的性能大比拼

PowerShell 各种自定义对象方法的性能大比拼

PowerShell 各种自定义对象方法的性能大比拼

PowerShell 各种自定义对象方法的性能大比拼

PowerShell 各种自定义对象方法的性能大比拼

PowerShell 各种自定义对象方法的性能大比拼

问题已经很明显了,为了更加明显,这一次,我们把时间纵坐标固定住,再看一次:

PowerShell 各种自定义对象方法的性能大比拼

PowerShell 各种自定义对象方法的性能大比拼

PowerShell 各种自定义对象方法的性能大比拼

PowerShell 各种自定义对象方法的性能大比拼

PowerShell 各种自定义对象方法的性能大比拼

PowerShell 各种自定义对象方法的性能大比拼

PowerShell 各种自定义对象方法的性能大比拼

PowerShell 各种自定义对象方法的性能大比拼

PowerShell 各种自定义对象方法的性能大比拼

PowerShell 各种自定义对象方法的性能大比拼

尽管在测试过程中,可能会有有网络,机器性能等方面的误差。但是至此为止,PowerShell自定义对象用哪个方法好,相信你我已了然于胸。

最后再次感谢Boe Prox!

本文引用自:Custom PowerShell Objects and Performance Revisited

本文链接: https://www.pstips.net/performance-of-custom-psobject.html
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!

关于 Mooser Lee

我是一个Powershell的爱好者,创建了PowerShell中文博客,热衷于Powershell技术的搜集和分享。本站部分内容来源于互联网,不足之处敬请谅解,并欢迎您批评指正。

回复 penshine 取消回复

您的电子邮箱地址不会被公开。 必填项已用*标注

3 条评论 “堪称《神曲》的PowerShell自定义对象性能大比拼