D and i/o
Jonathan Marler
johnnymarler at gmail.com
Sun Nov 10 07:40:09 UTC 2019
On Sunday, 10 November 2019 at 07:16:31 UTC, bioinfornatics wrote:
> On Saturday, 9 November 2019 at 23:39:09 UTC, bioinfornatics
> wrote:
>> Dear,
>>
>> In my field we are io bound thus I would like to have our
>> tools fast as I can read a file.
>>
>> Thus I started some dummy bench which count the number of
>> lines.
>> The result is compared to wc -l command. The line counting is
>> only a pretext to evaluate the io, this process can be
>> switched by any io processing. Thus we use much as possible
>> the buffer instead the byLine range. Moreover such range imply
>> that the buffer was read once before to be ready to process.
>>
>>
>> https://github.com/bioinfornatics/test_io
>>
>> Ideally I would like to process a shared buffer through
>> multiple core and run a simd computation. But it is not yet
>> done.
>
> If you have some scripts or enhancements you are welcome
>
> Currently results show that naïve implementation is at least
> twice time slower than wc, up to 5 slower for // scripts
Here's an example implementation of wc using mmap:
#!/usr/bin/env rdmd
import std.stdio, std.algorithm, std.mmfile;
void main(string[] args)
{
foreach (arg; args[1..$])
{
auto file = new MmFile(arg, MmFile.Mode.read, 0, null);
auto content = cast(char[])file.opSlice;
writefln("%s", content.count('\n'));
}
}
More information about the Digitalmars-d
mailing list