3 simple steps to make booting/shutdown faster...

Behdad Esfahbod behdad at behdad.org
Mon Feb 18 01:12:26 UTC 2008


On Sun, 2008-02-17 at 16:40 -0800, Andrew Farris wrote:
> Behdad Esfahbod wrote:
> >> On Sun, 17 Feb 2008 08:15:20 -0800, Arjan van de Ven wrote
> >>
> >>>> This should really be fixed in bash to short-circuit.
> >>> well......... not sure it can be done in the bash language.
> >>> (it may well guarantee that both get executed)
> > 
> > There's nothing to execute there.  All the expansions happen first, so
> > if you have things like [ -n "$something" -a "`id`" = 0 ], the `id` call
> > is made before passing control to "test".  The short-circuit would just
> > happen in the evaluation in test.  There's no user-visible difference
> > there.
> 
> If thats the case shouldn't a statement like that always be nested so that `id` 
> is not called if it is not necessary, possibly saving many disk accesses?  It 
> would seem that using the more complex constructs could be much slower if all 
> the cases are evaluated before testing any of them.

I believe that's correct.  The initial case that Arjan brought up though
was [ -f somefile -a -f anotherfile ].  That doesn't have this problem.

/me is surprised that this kind of micro-optimizing has such drastic
effects that Arjan has measured.

-- 
behdad
http://behdad.org/

"Those who would give up Essential Liberty to purchase a little
 Temporary Safety, deserve neither Liberty nor Safety."
        -- Benjamin Franklin, 1759




More information about the fedora-devel-list mailing list