GNU bug report logs -
#49547
[PATCH v2 2/4] home-services: Add home-run-on-change-service-type
Previous Next
Full log
Message #10 received at 49547 <at> debbugs.gnu.org (full text, mbox):
[Message part 1 (text/plain, inline)]
Andrew Tropin schreef op ma 05-07-2021 om 18:39 [+0300]:
> + (define (equal-regulars? file1 file2)
> + "Check if FILE1 and FILE2 are bit for bit identical."
> + (let* ((cmp-binary #$(file-append
> + (@ (gnu packages base) diffutils) "/bin/cmp"))
> + (status (system* cmp-binary file1 file2)))
> + (= status 0)))
Is there any particular reason to shell out to "cmp" instead
of doing the comparison in Guile? Starting a process isn't
the most efficient thing.
Try "time /run/current-system/profile/bin echo", on my system,
it takes about 2--3 milliseconds for "echo" to finish
even though it only had to print a newline character.
Compare with "time echo" (to use the shell built-in "echo"),
it takes 0.000s seconds on my system.
3 milliseconds isn't much by itself, but this can accumulate,
so I would implement the comparison in Guile.
As an optimisation, you could look at the value returned by "lstat".
If the 'size' is different, then 'equal-regulars?' can return #f
without reading the file. If the 'inode' and 'device' are equal,
then 'equal-regulars?' can return #t I think (at least on conventional
file systems like btrfs and ext4).
Greetings,
Maxime.
[signature.asc (application/pgp-signature, inline)]
This bug report was last modified 3 years and 271 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.