需要帮助提高PowerShell分隔文本解析脚本的性能

neo*_*pir 6 powershell performance delimited-text

我需要解析一个大的管道分隔文件来计算第5列符合并且不符合我的标准的记录数.

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

这个命令做我想要的,返回如下输出:

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

但是,对于500 MB的测试文件,此命令需要大约5.5分钟才能运行,如Measure-Command所测量.典型的文件超过2 GB,等待20多分钟的时间长得不合需要.

您是否看到了提高此命令性能的方法?

例如,有没有办法确定Get-Content的ReadCount的最佳值?没有它,完成相同的文件需要8.8分钟.

Gis*_*sli 4

您尝试过 StreamReader 吗?我认为 Get-Content 在对其执行任何操作之前会将整个文件加载到内存中。

StreamReader类