Mailinglist Archive: opensuse-de (4938 mails)

< Previous Next >
Zeit messen? (was: Re: Problem mit sed/regex;;)
  • From: marc.schiffbauer@xxxxxxxxxxxxxx (Marc Schiffbauer)
  • Date: Thu May 25 15:25:43 2000
  • Message-id: <392D45F7.634D1BB1@xxxxxxxxxxxxxx>



David Haller wrote:

Hallo Marc, Bernd, Liste,

Und nocheinmal melde ich mich ;)

Ich habe noch ein wenig experimentiert und Marc musste auch noch
Leerzeichen ersetzen, wodurch meine Version (mal wieder) fehlschlug.

Ich habe dabei in einem script 5 Funktionen definiert in denen jew.
eine Ersetzungsmethode verwendet wurde, wobei ich unten nur eine
"Prototyp-funktion" angebe (das script gibts ggfs. per PM) und
dann (per Schleife ueber alle Funktionen) die Dauer gemessen.

==== snip ====
#!/bin/bash
VAR1=usr
DIR="/usr/src/linux/include/linux/*" # (386 Dateien)

<methode>() {
for VARIN in `ls -d $DIR`;
do
for VAR2 in "dh" "dh/bin" "dh/temp/test dir/bin" \
"dh/temp dir/test dir/bin";
do
<Ersetzung>
#echo "$VAROUT"
done
done
}

time <methode>
exit 0
==== snap ====

Folgende Methoden habe ich verwendet (jew. in der Zeile <Ersetzung>):

1. Eine Variante nur mit sed:

VAROUT=`echo $VARIN | sed s/$VAR1/"$(echo "$(echo "$VAR2" | \
sed s/"\/"/'\\\\'"\/"/g)" | sed s/"\ "/'\\\\'"\ "/g)"/`

=> real 0m53.727s user 0m7.380s sys 0m9.700s

2. Eine leichte Variation von 1 die schneller sein sollte:

VAROUT=`echo $VARIN | sed s/$VAR1/"$(echo "$VAR2" | \
sed -e s/"\/"/'\\\\'"\/"/g -e s/"\ "/'\\\\'"\ "/g)"/`

=> real 0m51.885s user 0m4.530s sys 0m10.980s

Hmja, schon besser...

3. Ein sed durch eine Shellersetzung ersetzt:

VAROUT=`echo $VARIN | sed s/$VAR1/"$(echo -e "${VAR2//\//\\\\/}" | \
sed s/"\ "/'\\\\'"\ "/g)"/`

=> real 0m52.139s user 0m4.890s sys 0m10.720s

Hm. Die muss wegen dem "echo |" langsamer sein...

4. Bernd Brodesser's Variante

VAROUT=`echo $VARIN | sed "s|$VAR1|$VAR2|"`

=> real 0m18.392s user 0m2.610s sys 0m3.610s

Aber Hallo! Das ist schon besser ;)

5. Meine "finale" Version ganz ohne sed:

VAROUT="${VARIN//$VAR1/$VAR2}"

=> real 0m0.312s user 0m0.270s sys 0m0.020s

kaum schlagbar :)


Wie hast du die Zeit gemessen?

Gruss
-Marc


--
+------------------------------------------------------------------+
| --> http://www.links2linux.de <-- Von Linux-Usern fuer Linux-User|
| |
+---Registered-Linux-User-#136487------------http://counter.li.org +

---------------------------------------------------------------------
To unsubscribe, e-mail: suse-linux-unsubscribe@xxxxxxxx
For additional commands, e-mail: suse-linux-help@xxxxxxxx


< Previous Next >
Follow Ups
References