]> git.ipfire.org Git - thirdparty/autoconf.git/commitdiff
mawk suffers a severe performance loss when using `sub' with a
authorAkim Demaille <akim@epita.fr>
Fri, 28 Apr 2000 09:46:55 +0000 (09:46 +0000)
committerAkim Demaille <akim@epita.fr>
Fri, 28 Apr 2000 09:46:55 +0000 (09:46 +0000)
changing value.  On the `configure' script of the fileutils:
mawk '{ sub (/foo/, foo++) }'                  -> 14s.
mawk '{ if ($0 ~ /foo/) sub (/foo/, foo++) }'  -> 0.03s.
mawk '{ sub (/foo/, foo) }'                    -> 0.03s.

* autoconf.sh (task script, AWK script): Run `sub (__oline__,
oline)' only in the lines that match `__oline__'.
Suggested by Paul Eggert.

ChangeLog
autoconf.in
autoconf.sh
bin/autoconf.in

index 79e1531737c63b45b28c71e46c24b32281ec230e..173933bb6dba9d886ae861aa76b692e4580b0afc 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,15 @@
+2000-04-28  Akim Demaille  <akim@epita.fr>
+
+       mawk suffers a severe performance loss when using `sub' with a
+       changing value.  On the `configure' script of the fileutils:
+       mawk '{ sub (/foo/, foo++) }'                  -> 14s.
+       mawk '{ if ($0 ~ /foo/) sub (/foo/, foo++) }'  -> 0.03s.
+       mawk '{ sub (/foo/, foo) }'                    -> 0.03s.
+
+       * autoconf.sh (task script, AWK script): Run `sub (__oline__,
+       oline)' only in the lines that match `__oline__'.
+       Suggested by Paul Eggert.
+
 2000-04-28  Akim Demaille  <akim@epita.fr>
 
        * autoconf.sh (options handling::-W*): Strip two leading chars, not
index d5e296e331a8e1f0d0c9045855db726cab15f314..db19c30e1f9035072e9050aff0f504c26a8f1807 100644 (file)
@@ -308,8 +308,9 @@ case $task in
         }
       duplicate = 0
       oline++
-      while (sub(/__oline__/, oline))
-        continue
+      if ($0 ~ /__oline__/)
+        while (sub(/__oline__/, oline))
+          continue
       while (sub(/@<:@/, "["))
         continue
       while (sub(/@:>@/, "]"))
index d5e296e331a8e1f0d0c9045855db726cab15f314..db19c30e1f9035072e9050aff0f504c26a8f1807 100644 (file)
@@ -308,8 +308,9 @@ case $task in
         }
       duplicate = 0
       oline++
-      while (sub(/__oline__/, oline))
-        continue
+      if ($0 ~ /__oline__/)
+        while (sub(/__oline__/, oline))
+          continue
       while (sub(/@<:@/, "["))
         continue
       while (sub(/@:>@/, "]"))
index d5e296e331a8e1f0d0c9045855db726cab15f314..db19c30e1f9035072e9050aff0f504c26a8f1807 100644 (file)
@@ -308,8 +308,9 @@ case $task in
         }
       duplicate = 0
       oline++
-      while (sub(/__oline__/, oline))
-        continue
+      if ($0 ~ /__oline__/)
+        while (sub(/__oline__/, oline))
+          continue
       while (sub(/@<:@/, "["))
         continue
       while (sub(/@:>@/, "]"))