[Issue 21593] Only update file time if file to be written already exists

d-bugmail at puremagic.com d-bugmail at puremagic.com
Sat Jan 30 13:57:25 UTC 2021


https://issues.dlang.org/show_bug.cgi?id=21593

Andrei Alexandrescu <andrei at erdani.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |andrei at erdani.com

--- Comment #2 from Andrei Alexandrescu <andrei at erdani.com> ---
Not knowing about this I wrote another one:
https://issues.dlang.org/show_bug.cgi?id=21594. Will copy the text from there
here, and close that one:

It turns out that oftentimes the generated object file for a given .d file is
identical to the preexisting one:

* The build is triggered by a change in a dependent file that was not material
to building this object file (most often)
* Only unittests were changed and this is not a unittest build
* Only documentation was changed

In that case it's worth reading the existing object file (block by block) and
comparing it against the object file to be written.

* If the object files are different, proceed with writing as usual.
* If the file are identical, do NOT overwrite the file. Do touch it to announce
to tbe build system that the build has been done.

This should be particularly gainful on SSD drives, which are much cheaper to
read than to write.

Comparison of files should be done block by block, not by slurping the entire
object file. This is because once the headers are different all time spent
reading the rest of the file is wasted.

--


More information about the Digitalmars-d-bugs mailing list