[PATCH] time: Avoid alignment gaps in __tzfile_read
Paul Eggert
eggert@cs.ucla.edu
Sun Feb 3 17:06:00 GMT 2019
Florian Weimer wrote:
> This is a long-term allocation, and
> the reading of the file happens only once per allocation, so I do think
> that the additional __fread_unlocked call is not a problem from a
> performance perspective.
The upstream code uses a single 'read' call, bypassing stdio entirely. It
doesn't even stat the file; all it does is 'access' (if a relative filename, for
security reasons), 'open', 'read', 'close'. I wonder why glibc went to stdio for
this? Seems overkill. In practice, I'd think going back to syscalls would gain
more performance than any of the stuff we've talked about so far.
Anyway - if we're moving things around, how about putting 'leaps' before
'transitions' instead of after? This will eliminate alignment gaps just as well
in practice, and it will allow us to do one fread instead of two.
PS. While you're in the neighborhood, the leap second correction field (struct
leap.change) can be 'int' instead of 'long int', as the TZif format allows only
32 bits of (signed) correction.
More information about the Libc-alpha
mailing list