2018-08-14 11:25:04 -0400, Chet Ramey: [...] > If you build a profiling version of bash, you'll find that about 75% of > that time is spent copying the list of arguments around, since you have > to save and restore it each time you call f1. Looking at making that more > efficient has been a low-level task for a while now. [...]
To save and restore that list of arguments, you only need to save and restore one pointer. I don't see why you'd need to copy the full list of pointers let alone the text of the arguments. Note that it makes scripts using functions and that receive a large number of arguments (think of scripts called as find . -exec myscript {} + for instance) terribly inefficient. find / -xdev -exec bash -c 'f(){ :;}; for i do f; done' bash {} + (do nothing in a function for all the files in my root file system) takes 4 seconds in dash and 9 minutes (135 times as much) in bash. -- Stephane