4 ms·
Care to explain why?
by HorizonXP 14y ago
Care to explain why?
- niggler 14y ago(you can find more info in the manpage for your shell) $ cat foo | bar ends up creating two processes and a pipe. The foo file is first read by cat and then written onto the pipe (which bar then reads). $ <foo bar is an input redirection: foo is opened for reading and bar's standard input fd is set to that open file (so the file's data is only read once)
- blibble 14y agofor reading files and transferring over the network: the limit is always going to be the IO devices, not an extra context switch and a few extra copies...
- 1337p337 14y agos/always/usually/. Depending on the disks involved and your network hardware (either a super-fast link, or even a system with a slow CPU and cheap network hardware that expects the drivers to do the heavy lifting in software), it actually could end up CPU-constrained. But for the usual case where it is I/O-constrained, you can often get files across more quickly by throwing CPU at reducing the total amount of bandwidth required by, e.g., using something like bzip or pbzip: pbzip2 < file | nc $host $port And on the other side: nc -l $port | pbzip2 -d > file