In message <[EMAIL PROTECTED]>, Shankar Unni writes:
>I guess the big question now is: how would Peter "prove" to anyone's 
>liking that ash+getopts ~= ash-getopts in performance (and nowhere near 
>"bash")?  Is there some acceptance criterion that anyone's willing to 
>spell out? PTC is fine, but it's hard to evaluate a patch unless an 
>objective (or even subjective) performance criterion is spelled out..

Well, in this case, it turns out to be fairly easy to demonstrate, simply
because the ash in /bin/sh *has* the getopts code, all it's missing is the
entry in the builtin command table.  Because the command table lookup only
checks string equality if first letter matches, the total code executed is
roughly
        if (*a[x].string == *n && (unexecuted)
        goto increment
        ++x;
        if (x < MAX_X)
on each command hit.  This is, quite clearly, lost in the noise.  You can
verify this (I did) with
        $ strings /bin/sh.exe | grep getopts
which prints the usage message found only in the actual getopts function.

Note also that, on the gcc configure script, the difference between /bin/sh
and bash is maybe 5 seconds on a script that takes nearly 3 minutes.  It's
hard for me to imagine this being the source of the word "abysmal"; I'm
assuming something else was changed.  Maybe different optimizer flags were
used on /bin/bash back then, which produced worse results?

-s

--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/

Reply via email to