[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Automake-NG] [PATCH 00/11] Several changes to parallel-tests suppor
From: |
Akim Demaille |
Subject: |
Re: [Automake-NG] [PATCH 00/11] Several changes to parallel-tests support |
Date: |
Wed, 9 May 2012 18:03:28 +0200 |
Le 9 mai 2012 à 13:11, Stefano Lattarini a écrit :
>> I have one worry though: what about runtime performances? Sure,
>> late binding provides more features, but it might be costly. Do
>> you have means to evaluate that we have no serious regressions?
>>
> Not really (even if I didn't notice any slowdown in during use of
> the Automake testsuite); do you want me to run some measurements?
>
> (And this makes me think: should we add a "performance" testsuite
> in Automake, offering a quick and convenient way to measure how a
> changeset impacts performances? And if yes: would you have any
> suggestion on how to set this up?)
Yes, I think you should at least try to make some measurements.
Deeply nested Make macros can be extremely costly, especially
because they are not lazy, this is really call by name: when used
several times, they are evaluated several times. There must be
some good reason for this, but then result is longer compilation,
which is _bad_.
I can't find the references ATM, but I remember I read about
some build system at Google that removes all this dynamic aspect
that exist in Makefiles, which resulted in a much lighter impact
of the tool itself on the build time.
> But back to the point: notice that the pre-existing implementation of
> the parallel testsuite harness already made quite an extensive use of
> late bindings in the definition of $(TESTS) (to allow things like
> overriding of TESTS and TEST_LOGS at make runtime), and this has never
> had any negative impact on the performances.
I was not referring especially to this, but for instance the fact
that uniqueness of files to distribute is now on the responsability
of $(sort) instead of being a static cost. Again, that's just an
example, and probably one where this added cost is probably negligible,
as it should appear only for dist* targets.
Consider this as a general concern. Plain "make all" should be as fast
as possible, so beware of macros that could be repeatedly used in
a regular build. Tests and dist are definitely less critical (well,
especially dist).
>> Also, I don't know if it's part of your specs for automake-ng,
>> but, performance-wise *and* from the point of view of semantics,
>> *and* of syntax, I am very fond of this new feature of GNU Make 3.82:
>>
>> * New special target: .ONESHELL instructs make to invoke a single instance
>> of the shell and provide it with the entire recipe, regardless of how many
>> lines it contains.
>>
> Ugh, no please. Some times it is very useful to split a recipe in distinct
> shell invocations, and the '.ONESHELL' directive would prevent us from
> doing so (as, AFAIK, it acts on a global level, not on a target-specific
> level).
>
> More importantly: I want Automake-NG to work with at least GNU make 3.81 as
> well (and also GNU make 3.80, it that's not too difficult), so using a
> feature introduced in 3.82 is a big no-no.
While I completely agree with, and expected, your second argument,
I confess I do not understand the first one. IMHO it should have been
the rule from day 1 in Make that the whole recipe be evaluated by
a single shell invocation, with set -e. The obfuscation of the
recipes is painful. So I rather think that it should be the opposite:
the much rarer cases where "it is very useful to split a recipe in distinct
shell invocations" should be the ones that are (slightly) harder to write.
I agree that going to this model is a completely change, but hey,
if Automake-ng does not make this move, I believe it will just
never happen.
I'm not trying to force anything here, I'm just grieving for something
I really like.
- [Automake-NG] [PATCH 02/11] [ng] refactor: get rid of am__EXEEXT (automake conditional and %transform), (continued)
- [Automake-NG] [PATCH 02/11] [ng] refactor: get rid of am__EXEEXT (automake conditional and %transform), Stefano Lattarini, 2012/05/09
- [Automake-NG] [PATCH 01/11] [ng] check: big refactoring with semantic changes in parallel-tests support, Stefano Lattarini, 2012/05/09
- [Automake-NG] [PATCH 08/11] [ng] check: AM_LAZY_CHECK="yes", not RECHECK_TESTS="", for lazy re-runs, Stefano Lattarini, 2012/05/09
- [Automake-NG] [PATCH 07/11] [ng] check: refactor: split recipes for check-TESTS and recheck, Stefano Lattarini, 2012/05/09
- [Automake-NG] [PATCH 06/11] [ng] check: minor refactoring (prefer make time over recipe time), Stefano Lattarini, 2012/05/09
- [Automake-NG] [PATCH 11/11] [ng] check: per-suffix dependencies for test cases, Stefano Lattarini, 2012/05/09
- [Automake-NG] [PATCH 10/11] [ng] check: few minor simplifications, Stefano Lattarini, 2012/05/09
- [Automake-NG] [PATCH 09/11] [ng] tests: remove overly picky test cases (and fix few typos), Stefano Lattarini, 2012/05/09
- Re: [Automake-NG] [PATCH 00/11] Several changes to parallel-tests support, Akim Demaille, 2012/05/09
- Re: [Automake-NG] [PATCH 00/11] Several changes to parallel-tests support, Stefano Lattarini, 2012/05/09
- Re: [Automake-NG] [PATCH 00/11] Several changes to parallel-tests support,
Akim Demaille <=
- Re: [Automake-NG] [PATCH 00/11] Several changes to parallel-tests support, Stefano Lattarini, 2012/05/09
- Re: [Automake-NG] [PATCH 00/11] Several changes to parallel-tests support, Bob Friesenhahn, 2012/05/09
- Re: [Automake-NG] [PATCH 00/11] Several changes to parallel-tests support, Stefano Lattarini, 2012/05/10
- Re: [Automake-NG] [PATCH 00/11] Several changes to parallel-tests support, Bob Friesenhahn, 2012/05/10
- Re: [Automake-NG] [PATCH 00/11] Several changes to parallel-tests support, Stefano Lattarini, 2012/05/10
- Re: [Automake-NG] [PATCH 00/11] Several changes to parallel-tests support, Bob Friesenhahn, 2012/05/10
- Re: [Automake-NG] [PATCH 00/11] Several changes to parallel-tests support, Bob Friesenhahn, 2012/05/10
- Re: [Automake-NG] [PATCH 00/11] Several changes to parallel-tests support, Stefano Lattarini, 2012/05/10
- Re: [Automake-NG] [PATCH 00/11] Several changes to parallel-tests support, Bob Friesenhahn, 2012/05/10
- Re: [Automake-NG] [PATCH 00/11] Several changes to parallel-tests support, Stefano Lattarini, 2012/05/10