On Thu, Jun 21, 2018 at 10:57:40AM +0200, Maximilian Pichler wrote:

> >         dd ibs=1 count=n
> 
> Nice, this is about three time as fast as bs=1. Both are much slower
> than 'ghead -c'.

I think they meant dd and just didn't care about efficiency:

  http://austingroupbugs.net/bug_view_page.php?bug_id=407

Does ghead -c beat a simple buffer loop?

Daniel
#include <stdio.h>
#include <stdlib.h>

#define BUFSIZE 65536

int main(int argc, char *argv[])
{
        char buf[BUFSIZE];
        size_t n, r;

        if (argc != 2 || (n = atoi(argv[1])) < 1) {
                fprintf(stderr, "usage: %s number\n", argv[0]);
                return (1);
        }
        do {
                r = fread(buf, 1, n > BUFSIZE ? BUFSIZE : n, stdin);
                if (r > 0) {
                        fwrite(buf, 1, r, stdout);
                        n -= r;
                }
        } while (r > 0 && n > 0);
        return (0);
}

Reply via email to