autoconf
[Top][All Lists]
Advanced

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

Re: autoconf 2.5x slowness analysis


From: Michael Matz
Subject: Re: autoconf 2.5x slowness analysis
Date: Tue, 13 Nov 2001 03:11:20 +0100 (MET)

Hi,

On 12 Nov 2001, Akim Demaille wrote:

> | Forthermore I believe the definition of m4_car is wrong.  If I test
> | m4_foreach with the example in the explanation in m4sugar.m4... :
> |
> |  m4_define(a, 1)dnl
> |  m4_define(b, 2)dnl
> |  m4_define(c, 3)dnl
> |  m4_foreach([f], m4_split([a (b c)]), [echo f
> |  ])dnl
> |
> | ... the output is:
> | echo 1
> | echo (2
> | echo 3)
>
> Because split has changed too.

Hmm, no.  I copy&pasted the exact definition out of m4sugar.m4 (of
m4_foreach and all used macros) into a new .m4 file, added the above
test-commands, and that was the output, so I used the unchanged def of
m4_foreach and everything (of course I also used that file as my
playground for the other tests, so may be I screwed something, but I
believe not).  Anyway...

> I have one question though: did you run the test suite?

... I now did with autoconf-2.52.

> How does your proposal behave?

With the below patch applied directly to autoconf-2.52 this is the result:

=============================
All 155 tests were successful
=============================

;-)


Ciao,
Michael.
-- 
2001-11-11  Michael Matz  <address@hidden>

        * m4sugar.m4 (_m4_foreach): Make it linear instead quadratic.
        (m4_car2): New.
        (m4_car): Properly quote arguments.

diff -urp autoconf-2.52/m4sugar.m4 autoconf-2.52-matz/m4sugar.m4
--- autoconf-2.52/m4sugar.m4    Wed Jul 18 13:11:14 2001
+++ autoconf-2.52-matz/m4sugar.m4       Tue Nov 13 02:58:01 2001
@@ -671,11 +671,12 @@ m4_define([m4_foreach],
 [m4_pushdef([$1])_m4_foreach($@)m4_popdef([$1])])

 # Low level macros used to define m4_foreach.
-m4_define([m4_car], [$1])
+m4_define([m4_car], [[$1]])
+m4_define([m4_car2], address@hidden)
 m4_define([_m4_foreach],
 [m4_if(m4_quote($2), [], [],
        [m4_define([$1], [m4_car($2)])$3[]_m4_foreach([$1],
-                                                     [m4_shift($2)],
+                                             m4_car2(m4_shift($2)),
                                                      [$3])])])






reply via email to

[Prev in Thread] Current Thread [Next in Thread]