Cygwin Filesystem Performance degradation 1.7.5 vs 1.7.7, and methods for improving performance

Derry Shribman derry@hola.org
Wed Sep 29 20:35:00 GMT 2010


Hi,

 > If it's known that the application doesn't ever use the "heavy" parts of
 > stat() in any of its code, then substituting xstat() for stat() globally
 > only needs to happen once in the code as well.

It needs to be replaced in the following places:
- detection code added in autoconf
- define in a header
#ifdef HAVE_XSTAT
#define STRUCT_FAST_STAT struct xstat
#define FAST_STAT(...) xstat(__VA_ARGS__)
#else
#define STRUCT_FAST_STAT struct stat
#define FAST_STAT(...) stat(__VA_ARGS__)
#endif

And now need to search/replace in every single file where 'struct stat' and 
'stat()' appear to change them to STRUCT_FAST_STAT, and FAST_STAT()

This is a BIG change.

And the problem is that it does not have a GLOBAL effect on the program. It only 
affects the code compiled directly, not the code linked together with the 
application. So if a program uses libraries (/lib/libxxx.a or /lib/libxxx.so), 
the above will not affect the libs the program uses.

Derry

On 9/29/2010 10:13 PM, Larry Hall (Cygwin Developers) wrote:
> On 9/29/2010 3:25 PM, Derry Shribman wrote:
>> Hi,
>>
>> Q) how much code needs to be modified to get this to work?
>> A) just add
>> #ifdef __CYGWIN__
>> setenv("CYGWIN", "no_ino no_nlink");
>> #endif
>> In the code. ONCE!
>
> If it's known that the application doesn't ever use the "heavy" parts of
> stat() in any of its code, then substituting xstat() for stat() globally
> only needs to happen once in the code as well.
>
> So it sounds to me like if xstat existed right now in Cygwin, you'd be just
> as content with it for application use as some Cygwin-specific environment
> variable. Or was there another point for application use that I missed?
>



More information about the Cygwin-developers mailing list