mmap file performance
    Andy Valencia 
    dont at spam.me
       
    Thu Apr 11 16:23:44 UTC 2024
    
    
  
On Thursday, 11 April 2024 at 14:54:36 UTC, Steven Schveighoffer 
wrote:
> For a repeatable comparison, you should provide the code which 
> does 1MB reads.
With pleasure:
import std.stdio : writeln, File, stderr;
const uint BUFSIZE = 1024*1024;
private uint
countnl(File f)
{
     uint res = 0;
     char[BUFSIZE] buf;
     while (!f.eof) {
         auto sl = f.rawRead(buf);
         foreach (c; sl) {
             if (c == '\n') {
                 res += 1;
             }
         }
     }
     return res;
}
private uint
procfile(in string fn) {
     import std.exception : ErrnoException;
     File f;
     try {
         f = File(fn, "r");
     } catch(ErrnoException e) {
         stderr.writeln("Can't open: ", fn);
         return 0;
     }
     uint res = countnl(f);
     f.close();
     return res;
}
void
main(in string[] argv)
{
     foreach (fn; argv[1 .. $]) {
         uint res;
         res = procfile(fn);
         writeln(fn, ": ", res);
     }
}
    
    
More information about the Digitalmars-d-learn
mailing list