[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: punkte zählen



Hallo Juergen,

sorry für die Verzögerung. Das Semester geht zu Ende und da wird es immer
nochmal stressig, aber ich wollte denoch ein paar Kommentare zu dem Thema
noch abgeben.

Juergen Christoffel <jc.debian@unser.net> wrote:
> On Tue, Feb 14, 2006 at 05:51:10PM +0000, Joerg Sommer wrote:
>> Juergen Christoffel <jc@unser.net> wrote:
> Warum ist ein Primzahltest kein besonders guter Test fuer eine Shell? Eine
> Shell ist ein Kommando-Interpreter, der im wesentlichen Eingaben
> analysiert, die resultierenden externen Kommandos aufruft, auf deren Ende
> wartet und dann das Ergebnis praesentiert bzw. intern abspeichert.

So viel Arithmetik steckt in dem Skript ja gar nicht drin. Vielmehr ist
es Auftrennen und Zusammenfügen von Zeichenketten und der Aufruf von
[ aka test. Durch die Schleifen hat man aber ein Massenweise
interpretieren der Anweisungen, sprich du testest damit wie gut der
Parser ist.

> Was waere ein guter Test? Da die meisten Shellscripts externe Kommandos
> aufrufen (selbst ein [...] ruft ja /bin/test auf) und auf die warten,
> haengt die Performance eines Scripts nicht unwesentlich von diesen
> Kommandos ab. Da Shellscripte eben eine Mischung aus interner Verarbeitung
> und externen Kommandos sind, ist es schwer, nur die Shell selbst zu testen.

Folgendes zeigt aber, dass keine externen Programme bei dem Skript
verwendet werden:
% dash -c 'set 1000; times; . archiv/programmieren/prim.sh >/dev/null;times'
0m0.000000s 0m0.000000s
0m0.000000s 0m0.000000s
0m0.450000s 0m0.000000s
0m0.000000s 0m0.000000s
% bash -c 'set 1000; times; . archiv/programmieren/prim.sh >/dev/null;times'
0m0.016s 0m0.004s
0m0.000s 0m0.000s
0m1.764s 0m0.044s
0m0.000s 0m0.000s

test ist bei wahrscheinlich allen Shells direkt implementiert. (bei dash,
posh und bash auf alle Fälle)

> Und selbst wenn eine andere Shell schneller als die zsh waere, die ich
> benutze, waere mir in der interaktiven Benutzung der Komfort z.B. der
> Completion oder der mehrzeiligen History-Edits wichtiger.

ACK. Aber das wollte ich damit auch nicht sagen. Für die interaktive
Benutzung ist es egal, ob das Skript 0.5 Sekunden oder 1.5 Sekunden
braucht. Aber in (fast) jedem Skript steht /bin/sh als Interpreter drin.
Daher sollte /bin/sh nicht eine Bash, sondern eine Dash sein. Denn ob
/etc/init.d/rc 1 Sekunde oder vielleicht 8 Sekunden braucht, fällt dann
schon ins Gewicht.

Schöne Grüße, Jörg.
-- 
Ein Mensch sieht ein und das ist wichtig,
nichts ist ganz flach und nichts ganz richtig.
                                               (Eugen Roth)



Reply to: