Я рефакторинг некоторого старого (ish) кода, и я использовал два подхода для создания некоторых массивов и упорядоченных словарей, например ...
[Collections.Specialized.OrderedDictionary]@{}
и
New-Object Collections.Specialized.OrderedDictionary
Интересно, какой из этих двух подходов к созданию экземпляров массивов и хеш-таблиц / словарей лучше? FWIW, мне нужен код, который не зависит от версии от PS2.0 через текущий. Производительность - это вторичная проблема.
FWIW, похоже, что первое намного лучше с точки зрения производительности. Я пытался
Measure-Command {
foreach ($i in 1..10000) {
$array1 = [Collections.Specialized.OrderedDictionary]@{}
}
}
Measure-Command {
foreach ($i in 1..10000) {
$array2 = New-Object Collections.Specialized.OrderedDictionary
}
}
и получил 34 миллисекунды против 278 миллисекунд. Конечно, я не создаю 10K экземпляров, и при этом производительность не является основным приоритетом, а не является низкой производительностью в 278 миллисекунд, даже если это был приоритет. Но это, безусловно, показывает, что в процессе есть большая разница, даже если конечный результат на самом деле тот же.