We compare various ways of reading the first line of stdin. In our test the first \n
is the 14th character.
File | Notable function used | Number of calls to read |
---|---|---|
single.c |
read |
15 |
stdio.c |
fread |
2 |
buffered.c |
read , memchr |
2 |
single.zig |
read |
14 |
until.zig |
readUntilDelimiter |
14 |
stream.zig |
streamUntilDelimiter |
14 |
buffered.zig |
bufferedReader |
1 |
$ make run
cc single.c -o single
cc stdio.c -o stdio
cc buffered.c -o buffered
zig build-exe single.zig --name single.exe
zig build-exe until.zig --name until.exe
zig build-exe stream.zig --name stream.exe
zig build-exe buffered.zig --name buffered.exe
for bin in single stdio buffered single.exe until.exe stream.exe buffered.exe; do echo -n " - $bin: "; echo "Hello World !\nNooo\nKO" | strace -e read ./$bin 2>&1 >/dev/null | grep read | wc -l ; done
- single: 15
- stdio: 2
- buffered: 2
- single.exe: 14
- until.exe: 14
- stream.exe: 14
- buffered.exe: 1