From: Mike Frysinger Date: Thu, 12 Jan 2023 02:40:04 +0000 (-0500) Subject: dirstamp: use append too instead of truncate X-Git-Tag: v1.16i~74 X-Git-Url: http://git.ipfire.org/gitweb/gitweb.cgi?a=commitdiff_plain;h=054b02ce444c6c65dc5cfa68e67741ce43e76b1b;p=thirdparty%2Fautomake.git dirstamp: use append too instead of truncate We changed the depfiles logic to use >> (append) instead of > (truncate) due to it being slightly faster & nicer to the disk. Do the same with the dirstamp files as we only need the files to exist -- we don't care about their content, and we never put anything in them ourselves. If someone else were to, we clean them up normally with `make clean`. Simple test case on my Linux 6.1 w/ext4 on SSD: @: > foo.txt for (i = 0; i < 1000000; ++i) close(open("foo.txt", O_WRONLY|O_CREAT|O_TRUNC, 0666)); -> 769 msec @: >>foo.txt for (i = 0; i < 1000000; ++i) close(open("foo.txt", O_WRONLY|O_CREAT|O_APPEND, 0666)); -> 2 sec --- diff --git a/bin/automake.in b/bin/automake.in index 306913279..1c13a3187 100644 --- a/bin/automake.in +++ b/bin/automake.in @@ -7902,7 +7902,7 @@ sub require_build_directory $output_rules .= ("$dirstamp:\n" . "\t\@\$(MKDIR_P) $directory\n" - . "\t\@: > $dirstamp\n"); + . "\t\@: >>$dirstamp\n"); return $dirstamp; }