我一直在使用 CSV 提供程序来加载大约 300k 到 1M 行(50~120megs)的文件。它工作得很好而且速度很快。它可以在一秒钟内加载大多数文件。这是 Windows 上加载大约 400k 行和 25 个字段的文件的 64 位 FSI 的输出。
#time
let Csv2 = CsvFile.Parse(testfile)
let parsedRows = Csv2.Rows |> Seq.toArray
#time
--> Timing now on
Real: 00:00:00.056, CPU: 00:00:00.093, GC gen0: 0, gen1: 0, gen2: 0
但是当我将相同的文件加载到 Deedle
#time
let dCsv = Frame.ReadCsv(testfile)
#time;;
--> Timing now on
Real: 00:01:39.197, CPU: 00:01:41.119, GC gen0: 6324, gen1: 417, gen2: 13
它需要超过1m 40s。我知道需要一些额外的时间,因为 Deedle 比上面的静态 csv 解析器做得更多,但超过 1m 40s 秒似乎很高。我可以以某种方式缩短它吗?