Мне нужно проанализировать большой файл с разделителями каналов, чтобы подсчитать количество записей, чей 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 минуты, чтобы завершить тот же файл.