diff options
Diffstat (limited to '')
-rw-r--r-- | README.md | 11 | ||||
-rw-r--r-- | bench.c | 8 |
2 files changed, 14 insertions, 5 deletions
@@ -2,11 +2,12 @@ Despite unix(7) offering much more features than pipe(7), it is much faster. There is however two features unix(7) does not have: there is no guarantee that small writes are atomic, there is not support for splice(2)/tee(2) which -is extremely efficient, and file descriptor hijacking is -not support. The latter is a double-sided sword: it [the -lack of support] increases security, but other processes' -file cannot be opened and programs must treat /dev/fd/ -paths especially. +is extremely efficient, vmsplice(2) and changing the +capacity (neither of which improves the performance +sufficiently), and file descriptor hijacking is not support. +The latter is a double-sided sword: it [the lack of support] +increases security, but other processes' file cannot be +opened and programs must treat /dev/fd/ paths especially. ![performance graph](graph.png) @@ -61,6 +61,10 @@ main(void) } pipe(rw); +#if 0 + if (fcntl(*rw, F_SETPIPE_SZ, 1 << 20) < 0) + return perror("fcntl F_SETPIPE_SZ"), 1; +#endif if (!fork()) { close(rw[1]); while (read(rw[0], buf, n) > 0); @@ -79,6 +83,10 @@ main(void) } pipe(rw); +#if 0 + if (fcntl(*rw, F_SETPIPE_SZ, 1 << 20) < 0) + return perror("fcntl F_SETPIPE_SZ"), 1; +#endif if (!fork()) { close(rw[1]); while (read(rw[0], buf, n) > 0); |