On Thursday, 21 January 2016 at 14:56:13 UTC, Saurabh Das wrote:
On Thursday, 21 January 2016 at 14:32:52 UTC, Saurabh Das wrote:
On Thursday, 21 January 2016 at 13:42:11 UTC, Edwin van Leeuwen wrote:
On Thursday, 21 January 2016 at 09:39:30 UTC, data pulverizer wrote:
  StopWatch sw;
  sw.start();
  auto buffer = std.file.readText("Acquisition_2009Q2.txt");
  auto records = csvReader!row_type(buffer, '|').array;
  sw.stop();


Is it csvReader or readText that is slow? i.e. could you move sw.start(); one line down (after the readText command) and see how long just the csvReader part takes?

Please try this:

auto records = File("Acquisition_2009Q2.txt").byLine.joiner("\n").csvReader!row_type('|').array;

Can you put up some sample data and share the number of records in the file as well.

Actually since you're aiming for speed, this might be better:

sw.start();
auto records = File("Acquisition_2009Q2.txt").byChunk(1024*1024).joiner.map!(a => cast(dchar)a).csvReader!row_type('|').array
sw.stop();

Please do verify that the end result is the same - I'm not 100% confident of the cast.

Thanks,
Saurabh

@Saurabh I have tried your latest suggestion and the time reduces fractionally to:

Time (s): 6.345

the previous suggestion actually increased the time

@Edwin van Leeuwen The csvReader is what takes the most time, the readText takes 0.229 s

Reply via email to