[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Unexpected delay in using arguments.
From: |
Stephane Chazelas |
Subject: |
Re: Unexpected delay in using arguments. |
Date: |
Tue, 14 Aug 2018 23:21:58 +0100 |
User-agent: |
NeoMutt/20171215 |
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