制作一个像这样的数组,它代表我正在寻找的内容:
$array = @(1..50000).foreach{[PSCustomObject]@{Index=$PSItem;Property1='Hello!';Property2=(Get-Random)}}
Run Code Online (Sandbox Code Playgroud)
获取索引属性“43122”的项目的最快方法是什么?
我有一些想法,但我觉得必须有一种更快的方法:
measure-command {$array | where-object index -eq 43122} | % totalmilliseconds
420.3766
Run Code Online (Sandbox Code Playgroud)
measure-command {$array.where{$_ -eq 43122}} | % totalmilliseconds
155.1342
Run Code Online (Sandbox Code Playgroud)
measure-command {$ht = @{};$array.foreach{$ht[$PSItem.index] = $psitem}} | % totalmilliseconds
124.0821
measure-command {$ht.43122} | % totalmilliseconds
3.4076
Run Code Online (Sandbox Code Playgroud)
有没有比先构建哈希表更快的方法?也许是不同的 .NET 数组类型,例如某种特殊类型的索引列表,我可以最初将其存储在其中,然后运行一个方法来根据唯一属性提取项目?
powershell ×1