[linux-l] Ruby: sehr cool, aber auch sehr laaaahm... wie geht's schneller?!

Oliver Bandel oliver at first.in-berlin.de
Mi Aug 23 14:01:48 CEST 2006


Hi,


On Wed, Aug 23, 2006 at 11:36:57AM +0200, Steffen Dettmer wrote:
> * Oliver Bandel wrote on Tue, Aug 22, 2006 at 19:50 +0200:
[...]
> > > Der RegEx kann optimieren, wenn's halt nicht am Anfang war und muss
> > > nicht weitersuchen, strstr weiss das aber ja nicht. Dann lieber
> > > substr auf strlen des "begin" und "eq" oder strcmp Vergleiche mit
> > > dem Ergebnis, strncmp sollte hier noch schneller sein, wenn man es
> > > hat. Sowas ist dann eigentlich immer sehr schnell, es "fasst keine
> > > nicht benötigen Bytes an", bei langen Zeilen hier natürlich sehr
> > > wichtig. Ich glaub, schneller kriegt man das dann nicht.
> > 
> > *Äääähem*, *Räääuüüüspeer*, ... ich wollte nicht am Perl optimieren,
> > sondern am Ruby....
> 
> Naja, die Problematik an sich sollte da die gleiche sein - am Ende kommt
> ja in beiden Fällen Maschinencode raus :)

Naja, ist es auch am Anfang schon. Auch die Sourcen liegen ja
im Maschinencode vor.
Es kommt aber in beiden Fällen kein Compilat heraus, jedenfalls
keines, das man sich anschauen kann... und bei Ruby scheint es mir,
ist das eine *reine* Interpretersprache, ohne vorheriges
umsetzen in zwischencode...?!
So scheint's jedenfalls bei der performance. Die Innereien habe ich mir
nicht angeschaut..


[...]
> > > Das langsame kommt dann wieder vom "gets" oder was man da nimmt, das
> > > muss mindestens newlines suchen.
> > 
> > In der C-Variante hatte ich fgets() genommen; aber mit max. 10000
> > Zeichen Buffersize. OK, hätte ich auch kürzer machen können (so lang
> > wie der Keyword-String), aber dann hätte man ja evtl. etliche Aufrufe,
> > wenn das nächste "\n" noch lange auf sich warten lässt....
> > 
> > .... Ich könnte auch sagen: Nach Ende des Headers suche maximal
> > 50 Zeilen und wenn das Keyword nicht gefunden wurde, gib auf,
> > es wird nicht ein solches File sein.
> > 
> > Naja, dieses ganze Optimierungszeugs wollte ich aber erst mal
> > nicht machen.
> 
> Die sind ja auch nicht ganz fair, weil sich das Verhalten ändert ;)
> 
> > Ich hatte so ein Tool schon mal angefangen, aber das dann nicht weiter
> > verfolgt. (Naja, wenn jemand das finanziert hätte, wäre es wohl schon
> > fertig ;-))
> 
> Na gut, dass Tool gibt's doch und heisst grep, oder?

Nööö, das grep ersetzt ja nur die eine Zeile da,
aber nicht das, was dann noch drum herum passieren sollte.
Nu steige ich bei Ruby ja gerade ein und dann schon so ein
seltsames Verhalten. Deswegen ist es über den Stand eines grep
noch nicht hinaus gekommen.
Sollte ja eigentlich mal mehr werden. Und da Ruby wegen der
netten Spracheigenschaften (vom Performance abgesehen) Perl
ersetzen soll, in meinem geScripte, doch dieser Weg.

Also, Shell halte ich ab einem bestimmten Level von
Aufgabenstellung ungeeignet. Und den Level setze ich wesentlich niedriger an,
als viele andere Leute.


> > Da ich gerade wieder in einem Umzug stecke und die letzten Wochen
> > Dielen geschliffen habe, sitz ich Abends eh mit Staub auf den Pupillen
> > am Rechner ;-) Und wenn man den dann Abends (wie es sich für einen
> > ordentlichen Dielenschleifer so gehört;-)) den Staub mit nem Bier
> > runter spült, ist's einem egal, ob man bei einer Sprache, die man
> > garnicht einsetzen will noch optimieren kann.
> 
> :-)
> 
> > Ich wollte doch bloß etwas Ruby machen.... aber das sollte sich doch
> > bitteschön wenigstens auch ein *bischen* optimieren lassen....
> 
> Naja, oder Du trinkst noch ein paar Bier mehr und dann ist auch das
> egal? :)

*lautlach*

Heheh, naja, ist nicht eigentlich *alles* egal?
(Ich meine auch *alles*, also *ALLES*. Also was noch lange über Linux labern,
 das ist dann selbstverständlich auch egal.)





> 
> > ...ausser, Ruby braucht auch bei 10 und auch bei 100 mal so vielen/großen
> > Files immernoch 3,6 Sekunden.... vielleicht geht das dann ja auch bei
> > 10 GB und 120 TB?!
> > "Hurraa, hurraa, egal was immer ich auch berechne, ich schaffe es in
> > 3,6 Sekunden!" :)
> 
> Ja, das wäre ein prima Grund, ruby zu nehmen. Auch für das Berechnen
> komplexer Sachen und so. Vielleicht ist das eine Ruby Eigenschaft. Ein
> Programm dauert immer 3,6 Sekunden. lol das wäre cool

Wieso _wäre_ das cool?

Das IST cool, und das ist die universelle Konstante der Informatik. ;-)



> 
> > > Ja, komisch...
> > > 
> > Ha, ha, ha, :( wenn Du nochmal "komisch" sagst, fange ich noch an zu
> > lachen... ;-(
> 
> :-) 
> 
> Komisch.
> 
> :-)
> 

*laechel*

(oooh, sorry, für's Lachen hat's doch nicht ganz gereicht ;-))


Gruß,
   Oliver



Mehr Informationen über die Mailingliste linux-l