文件
我有一个 1.39 GB 的 csv 文件:
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 10/4/2021 1:23 PM 1397998768 XBTUSD.csv
WSL - 通过 NTFS
wc -l 在 WSL 中。通过/mnt/c/Users访问文件。
较慢,因为文件在 NTFS 端。
$ time wc -l XBTUSD.csv
41695261 XBTUSD.csv
real 0m10.935s
user 0m0.951s
sys 0m1.427s
WSL - Linux 端的文件。
wc -l 在 WSL 中。文件在/tmp。
time wc -l /tmp/XBTUSD.csv
41695261 /tmp/XBTUSD.csv
real 0m0.447s
user 0m0.258s
sys 0m0.189s
标准 PowerShell 方法
Measure-Command { Get-Content .\XBTUSD.csv | Measure-Object -Line }
Days : 0
Hours : 0
Minutes : 7
Seconds : 52
Milliseconds : 353
Ticks : 4723537381
TotalDays : 0.00546705715393518
TotalHours : 0.131209371694444
TotalMinutes : 7.87256230166667
TotalSeconds : 472.3537381
TotalMilliseconds : 472353.7381
在 PowerShell 中使用 LINQ 方法:ReadLines 和 Count
Measure-Command {
[System.Linq.Enumerable]::Count(
[System.IO.File]::ReadLines((ls .\XBTUSD.csv).FullName))
}
Days : 0
Hours : 0
Minutes : 0
Seconds : 7
Milliseconds : 263
Ticks : 72636842
TotalDays : 8.40704189814815E-05
TotalHours : 0.00201769005555556
TotalMinutes : 0.121061403333333
TotalSeconds : 7.2636842
TotalMilliseconds : 7263.6842
在 PowerShell 中切换
Measure-Command {
$count = 0; switch -File .\XBTUSD.csv { default { ++$count } }; $count
}
Days : 0
Hours : 0
Minutes : 0
Seconds : 44
Milliseconds : 975
Ticks : 449752555
TotalDays : 0.000520546938657407
TotalHours : 0.0124931265277778
TotalMinutes : 0.749587591666667
TotalSeconds : 44.9752555
TotalMilliseconds : 44975.2555
总结
-
WSL 中最快的是 wc -l。
-
PowerShell 中最快的是 LINQ 方法