Quantcast
Viewing latest article 7
Browse Latest Browse All 10

Answer by HappyFace for How big is the pipe buffer?

The accepted answer adapted to zsh:

#+begin_src bsh.dash :results verbatim :exports both :wrap exampletest-buffer() {    test $# -ge 1 || { echo "usage: $0 write-size [wait-time]"; return 1; }    test $# -ge 2 || set -- "$@" 1    bytes_written=$(        {            exec 3>&1            {                perl -e '            $size = $ARGV[0];            $block = q(a) x $size;            $num_written = 0;            sub report { print STDERR $num_written * $size, qq(\n); }            report; while (defined syswrite STDOUT, $block) {                $num_written++; report;            }'"$1" 2>&3            } | (sleep "$2"; exec 0<&-);        } | tail -1                 )    printf "write size: %10d; bytes successfully before error: %d\n" \"$1" "$bytes_written"}unamefor i in {1..18} ; do    test-buffer $((2**i)) 1done#+end_src

Results:

#+begin_exampleDarwinwrite size:          2; bytes successfully before error: 65536write size:          4; bytes successfully before error: 65536write size:          8; bytes successfully before error: 65536write size:         16; bytes successfully before error: 65536write size:         32; bytes successfully before error: 65536write size:         64; bytes successfully before error: 65536write size:        128; bytes successfully before error: 65536write size:        256; bytes successfully before error: 65536write size:        512; bytes successfully before error: 65536write size:       1024; bytes successfully before error: 65536write size:       2048; bytes successfully before error: 65536write size:       4096; bytes successfully before error: 65536write size:       8192; bytes successfully before error: 65536write size:      16384; bytes successfully before error: 65536write size:      32768; bytes successfully before error: 65536write size:      65536; bytes successfully before error: 65536write size:     131072; bytes successfully before error: 0write size:     262144; bytes successfully before error: 0#+end_example

Viewing latest article 7
Browse Latest Browse All 10

Trending Articles