Martin Wilck <mwilck@suse.com> wrote:
On Fri, 2019-02-08 at 17:35 +0100, Jan Engelhardt wrote:
On Friday 2019-02-08 15:03, Martin Wilck wrote:
For me the question is, what's the benefit?
Off the top of my head and not very scientifically measured, ./configure for kopano.spec completes 15% faster with pbosh.
That's truly interesting. But I can bounce back your argument: you could surely run "pbosh ./configure" to the same effect (what's pbosh, btw? did you mean posh?).
"posh" is not a shell but a joke. It is full of bugs and cannot be seen as a serious POSIX shell implementation. "pbosh" is a compile variant of "bosh" which is the maintained portable and enhanced Bourne Shell that allows to be compiled compatible to the SVr4 Bourne Shell (obosh), a minimal strict POSIX variant (pbosh) and an enhanced POSIX variant (bosh). People who like to run "configure" tests as benchmarks should know that there is a need to make sure that sub-shells are called correctly. You need to call something like: CONFIG_SHELL=$shell $shell ./configure
Btw the comparison is a bit unfair: "configure", by design, is written in the most portable shell dialect possible, forfeiting all chances for bash to catch up with optimized builtins.
This is not unfair. If you like to compare, I recommend you to use a ksh93 from 2008 which is the fastest shell ever and edit "configure" to switch off the important related ksh93 builtins. Note that ksh93 from 2008 is nearly twice as fast as bash. The most called programs are: rm cat sed tr mv in the order of usage. The reason why ksh93 is so fast is: - it uses vfork(), this is also true for bosh since 4 years. - it has a rewritten parser/interpreter that is larger (more code) but faster than the historic Bourne Shell This also applies to bosh - ksh93 does not fork for "(subcmd)". It rather creates a new set of "global variables" in a structure. This is ksh93 specific. - ksh93 uses an own i18n implementation with interface functions that better fit to the needs of a shell.
There is some evidence that bash is not the fastest of shells ( https://unix.stackexchange.com/questions/148035/is-dash-or-some-other-shell-... ). OTOH, shell script performance matters much less these days than it used to.
dash is approx. 30% faster than bash because it does not suport multi-byte characters.
But isn't that also an argument for having /bin/sh always point to bash? Like it or not, bash is the "de-facto standard" (yuck) shell today under Linux. People expect it to be that way.
BTW: Most of the bash "extensions" are taken from ksh93. The POSIX standard shell definition was derived from the features from ksh88 with [[ ]], (( )) and array variables removed. Jörg -- EMail:joerg@schily.net (home) Jörg Schilling D-13353 Berlin joerg.schilling@fokus.fraunhofer.de (work) Blog: http://schily.blogspot.com/ URL: http://cdrecord.org/private/ http://sf.net/projects/schilytools/files/' -- To unsubscribe, e-mail: opensuse-factory+unsubscribe@opensuse.org To contact the owner, e-mail: opensuse-factory+owner@opensuse.org