Перечисляя массив является самым быстрым способом:
$max = ''
foreach ($el in $arr) {
if ($el -gt $max) {
$max = $el
}
}
$max
Или использовать SortedSet из .NET 4 рамок (built-in since Win 8), это в 2 раза быстрее, чем Measure-Object, но в два раза медленнее, чем ручной перечислению выше. Все еще может быть полезно, если вы планируете сортировать данные без дубликатов быстро: это быстрее, чем встроенный Sort-Object.
([Collections.Generic.SortedSet[string]]$arr).max
Очевидно, это будет выделить память для индекса массива, а не фактические данные, как это будет повторно из существующего массива. Если вы беспокоитесь об этом, просто заставить вывоз мусора с [gc]::Collect()
Не ожидал, что просто выяснить/мин значение макс должен взять ручной цикл в Powershell. Спасибо за ваш ответ! – DanEng
Ух, нет, см. Другой ответ на простой и короткий код. Мне просто нравятся мои сценарии мгновенно при работе с большими объемами данных в файлах журналов и т. Д., Поэтому я продвинул ручную перечисление, так как это в несколько раз быстрее, чем cmdlet Sort/Sort-Object. – wOxxOm