git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [RFC/PATCH v2 1/1] cygwin: Add fast_lstat() and fast_fstat() functions

From
Ramsay Jones <ramsay@ramsay1.demon.co.uk>
Date
Jul 18, 2013, 17:50 UTC
Message-ID
<51E82AE0.9050707@ramsay1.demon.co.uk>
In-Reply-To
<51E4C400.6000009@gmail.com>
Mark Levedahl wrote:
Show 77 quoted lines
> On 07/15/2013 10:06 PM, Torsten Bögershausen wrote:
>> On 2013-07-15 21.49, Junio C Hamano wrote:
>>> Mark Levedahl <mlevedahl@gmail.com> writes:
>>>
>>>>> In order to limit the adverse effects caused by this implementation,
>>>>> we provide a new "fast stat" interface, which allows us to use this
>>>>> only for interactions with the index (i.e. the cached stat data).
>>>>>
>>>>> Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
>>>>> ---
>>>> I've tested this on Cygwin 1.7 on WIndows 7 , comparing to the results
>>>> using your prior patch (removing the Cygwin specific lstat entirely)
>>>> and get the same results with both, so this seems ok from me.
>>>>
>>>> My comparison point was created by reverting your current patch from
>>>> pu, then reapplying your earlier patch on top, so the only difference
>>>> was which approach was used to address the stat functions.
>>>>
>>>> Caveats:
>>>> 1) I don't find any speed improvement of the current patch over the
>>>> previous one (the tests actually ran faster with the earlier patch,
>>>> though the difference was less than 1%).
>> Hm, measuring the time for the test suite is one thing,
>> did you measure the time of "git status" with and without the patch?
>>
>> (I don't have my test system at hand, so I can test in a few days/weeks)
> Timing for 5 rounds of "git status" in the git project. First, with the 
> current fast_lstat patches:
> /usr/local/src/git>for i in {1..5} ; do time git status >& /dev/null ; done
> 
> real    0m0.218s
> user    0m0.000s
> sys     0m0.218s
> 
> real    0m0.187s
> user    0m0.077s
> sys     0m0.109s
> 
> real    0m0.187s
> user    0m0.030s
> sys     0m0.156s
> 
> real    0m0.203s
> user    0m0.031s
> sys     0m0.171s
> 
> real    0m0.187s
> user    0m0.062s
> sys     0m0.124s
> 
> Now, with Ramsay's original patch just removing the non-Posix stat 
> functions:
> /usr/local/src/git>for i in {1..5} ; do time git status >& /dev/null ; done
> 
> real    0m0.218s
> user    0m0.046s
> sys     0m0.171s
> 
> real    0m0.187s
> user    0m0.015s
> sys     0m0.171s
> 
> real    0m0.187s
> user    0m0.015s
> sys     0m0.171s
> 
> real    0m0.187s
> user    0m0.047s
> sys     0m0.140s
> 
> real    0m0.187s
> user    0m0.031s
> sys     0m0.156s
> 
> 
> I see no difference in the above. (Yes, I checked multiple times that I 
> was using different executables).
Hmm, that looks good. :-D

Torsten reported a performance boost using the win32 stat() implementation on a linux git repo (2s -> 1s, if I recall correctly) on cygwin 1.7. Do you have a larger repo available to test?

If performance isn't an issue (it isn't for _me_), then I will happily re-submit my original patch (removing the win32 stat implementation).

[Hmm, I may do anyway!]

ATB, Ramsay Jones

Previous: Mark LevedahlNext: Torsten Bögershausen
Message 8 of 16 in “cygwin: Add fast_lstat() and fast_fstat() functions”
  1. 1/1 cygwin: Add fast_lstat() and fast_fstat() functionsRamsay Jones, Jul 10, 2013
  2. Mark LevedahlJul 14, 2013
  3. Junio C HamanoJul 15, 2013
  4. Torsten BögershausenJul 16, 2013
  5. Mark LevedahlJul 16, 2013
  6. Dmitry PotapovJul 16, 2013
  7. Mark LevedahlJul 16, 2013
  8. Ramsay JonesJul 18, 2013
  9. Torsten BögershausenJul 18, 2013
  10. Mark LevedahlJul 18, 2013
  11. Junio C HamanoJul 18, 2013
  12. Mark LevedahlJul 19, 2013
  13. Mark LevedahlJul 16, 2013
  14. Ramsay JonesJul 16, 2013
  15. Mark LevedahlJul 16, 2013
  16. Junio C HamanoJul 18, 2013

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.