On 6/28/20 4:21 PM, Robert Elz wrote: > I noticed that explanation, but like Dennis, I fail to see how the > complicated version does any more than pretend there are less forks > happening. Was the speed of this actually measured, and if so, where > are the comparative results?
Sure, and that can be pointed out, but that's a long way away from what Dennis actually said, which is "why not just use a function", implying that the use or not of a function is relevant here. > Either way, to make the conversion, the date command needs to be run > (in the complicated version, setbuf as well, which means an extra exec > at least) - running a command means a fork, and all we have to start > with is bash, so bash needs to fork to run date, each time it needs > to run. > > What evidence is there that the complicated way, with all of its extra > file opens, etc, is faster than the simple way, or involves less forks? IIRC bash will (if it can) optimize out $(cmd) to fork+exec cmd, rather than fork bash, then fork+exec cmd. Perhaps the OP is assuming that the fifo dance will result in one fork, rather than two? Pointing out this flawed assumption is a useful data point, saying "why not just use a function" is not. (In fact, I'd assume the $(function) is actively a bad idea as it would prevent bash from optimizing out the $(/usr/bin/date) fork.) -- Eli Schwartz Arch Linux Bug Wrangler and Trusted User
signature.asc
Description: OpenPGP digital signature