這可能是一個哲學問題,但我想知道以下兩個條目從速度和效率的角度來看有何不同。在PowerShell中我有2個物體看起來像這樣的:Where-Object或Compare-Object哪個更好?
$ObjectA = @()
1..10 | foreach-object{
$obj = New-Object System.Object
$obj | Add-Member -Type NoteProperty -Name index -Value $_
$ObjectA += $obj
}
$ObjectB = @()
5..15 | foreach-0bject{
$obj = New-Object System.Object
$obj | Add-Member -Type NoteProperty -Name index -Value $_
$ObjectB += $obj
}
現在,我想的是存在於兩個對象。我可以通過2種方法中的其中一種來做。
解決方案1:
$ObjectA | foreach-object{
$ind = $_
$matching = $ObjectB | where {$_ -eq $ind}
if (![string]::IsNullOrEmpty($matching)){
##do stuff with the match
}
}
解決方案2:
$matches = Compare-Object $ObjectA $ObjectB -Property index | where {$_.SideIndicator -eq '=='} -PassThru
$matches | foreach-object {
##do stuff with the matches.
}
我的問題是,當我的對象數組變得非常大,其人會(30K +)是從一個更好的解決方案性能角度?我不知道Compare-Object cmdlet如何在內部工作,所以我真的不知道。或者沒有關係?
在此先感謝。
您是否嘗試過使用測量命令? – mjolinor
最好採用更大的樣本集。並嘗試不同的場景,如集合中的隨機分佈。 – EBGreen