Нужна помощь в улучшении производительности скрипта PowerShell по разбору разделенного текста

Мне нужно разобрать большой файл с разделителями для подсчета количества записей, 5-я колонка которых соответствует и не соответствует моим критериям.

PS C:\temp> gc .\items.txt -readcount 1000 | `
  ? { $_ -notlike "HEAD" } | `
  % { foreach ($s in $_) { $s.split("|")[4] } } | `
  group -property {$_ -ge 256} -noelement | `
  ft –autosize

Эта команда делает то, что я хочу, возвращая вывод, подобный этому:

  Count Name
  ----- ----
1129339 True
2013703 False

Однако, для тестового файла размером 500 МБ, эта команда занимает около 5,5 минут, как измеряет Measure-Command. Обычный файл имеет размер более 2 ГБ, где ожидание 20+ минут является нежелательно долгим.

Видите ли вы способ улучшить производительность этой команды?

Например, есть ли способ определить оптимальное значение для параметра ReadCount команды Get-Content? Без него на один и тот же файл уходит 8,8 минуты.

6
задан neontapir 17 January 2012 в 21:26
поделиться