有效地计算文件中的行数

xeh*_*puk 0 powershell

我正在尝试计算一个不太小的文本文件(多个 MB)中的行数。我在这里找到的答案表明:

(Get-Content foo.txt | Measure-Object -Line).Lines
Run Code Online (Sandbox Code Playgroud)

这有效,但性能很差。我猜整个文件被加载到内存中,而不是逐行流式传输。

我用 Java 创建了一个测试程序来比较性能:

(Get-Content foo.txt | Measure-Object -Line).Lines
Run Code Online (Sandbox Code Playgroud)

纯 Java 解决方案的速度提高了约 80 倍。

是否有一种内置的方法可以以可比的性能完成这项任务?如果这很重要,我使用的是 PowerShell 4.0。

mjo*_*nor 5

看看这是否比您当前的方法快:

$count = 0 
Get-Content foo.txt -ReadCount 2000 |
 foreach { $Count += $_.count } 

$count
Run Code Online (Sandbox Code Playgroud)