Hi, On Thu, 20 Jul 2017, Junio C Hamano wrote: > Jonathan Tan <jonathantanmy@xxxxxxxxxx> writes: > > > In sha1_loose_object_info(), use access() (indirectly invoked through > > has_loose_object()) instead of lstat() if we do not need the on-disk > > size, as it should be faster on Windows [1]. > > That sounds as if Windows is the only thing that matters. "It is > faster in general, and is much faster on Windows" would have been > more convincing, and "It isn't slower, and is much faster on > Windows" would also have been OK. Do we have any measurement, or > this patch does not yield any measuable gain? > > By the way, the special casing of disk_sizep (which is only used by > the batch-check feature of cat-file) is somewhat annoying with or > without this patch, but this change makes it even more so by adding > an extra indentation level. I do not think of a way to make it less > annoying offhand, and I do not think this change needs to address it > in any way, but I am mentioning this as a hint to bystanders who may > want to find something small that can be cleaned up ;-) I actually found a separate piece of information in the meantime: https://blogs.msdn.microsoft.com/oldnewthing/20071023-00/?p=24713#comment-562083 i.e. _waccess() is implemented in the same way our mingw_lstat() implementation is: by calling the very same GetFileAttributes() code path. So it has exactly the same performance characteristics, and I was wrong. But this whole thread taps into a gripe I have with parts of Git's code base: part of the code is not clear at all in its intent by virtue of calling whatever POSIX function may seem to give the answer for the intended question, instead of implementing a function whose name says precisely what question is asked. In this instance, we do not call a helper get_file_size(). Oh no. That would make it too obvious. We call lstat() instead -- under the assumption that the whole world runs on Linux, really, because let's be honest about it: lstat() implementations all differ in subtle ways and we really only test on Linux. The obviousness of something like get_file_size() would be so refreshing to these tired eyes. Oh, and it would make it much easier to maintain ports to other Operating Systems, most notably Windows. Ciao, Dscho