byLine and readln performance with LDC

Jon D via digitalmars-d-ldc digitalmars-d-ldc at puremagic.com
Tue Dec 8 17:34:33 PST 2015


I'm seeing dramatically slower runtime performance using byLine 
and readln when compiling with LDC than with DMD. Has anyone seen 
this behavior?

Example:

import std.stdio: File, KeepTerminator, writeln;

void main(string[] args) {
     if (args.length != 2) {
         writeln("Provide exactly one filename");
         return;
     }

     auto inputStream = args[1].File();
     size_t lc = 0;
     foreach (line; inputStream.byLine(KeepTerminator.yes)) {
         ++lc;
     }
     writeln(lc);
}

Using a 1.7gb, 37 million line file:
  - ldc2 (-release -O):  37 seconds
  - dmd (-release -O):   4 seconds

Same results with readln rather than byLine.  However, byChunk is 
fast, even with small chunks like 40 bytes.

This is using:  Mac OS X (10.10.5);  DMD 2.068; LDC 0.16.1

--Jon


More information about the digitalmars-d-ldc mailing list