On 2022-05-02, Karl Berry <k...@freefriends.org> wrote:
>     - @echo '# dummy' >$@-t && $(am__mv) $@-t $@
>     + @: >>$@
>
> 1) does it actually speed anything up?

The answer seems to be a resounding "yes".  I tried one of my packages
on an old slow PC, and changing this one line in Makefile.in cuts almost
5 seconds off of the depfiles generation step in config.status.

(All .deps directories manually deleted between runs as otherwise the
rule commands will not be executed).

  Before (x5):
  % time config.status Makefile depfiles
  real  0m15.320s
  real  0m15.210s
  real  0m15.210s
  real  0m15.210s
  real  0m15.220s

  After (x5):
  % time config.status Makefile depfiles
  real  0m10.650s
  real  0m10.550s
  real  0m10.550s
  real  0m10.550s
  real  0m10.650s

That 5 seconds is a relatively small part of total configure runtime but
it is noticeable.

So if make implementations have no problem including empty files (I tried
a few and all seem OK with it) then it seems like a win.

> 2) without the mv I fear we are no longer noticing write failure

I think it's OK.  All shells that I know of set a failure status when
redirection fails, at least for simple commands like that.

One possible gotcha is that redirections on the : command are not always
reliably performed by older shells.

There might not be any real world problem because configure sets SHELL
in the Makefile to one that probably does not exhibit any problem.  If
it matters, performing the redirection with "exec" instead of ":" should
work in every shell and have pretty much identical performance.

Cheers,
  Nick

Reply via email to