This is the mail archive of the cygwin-developers@sourceware.cygnus.com mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: Cygwin performance (was [ANN] PW32 the...)



I have moved this thread to cygwin-developers because those
details are not of interest in the base list, IMHO.

Egor Duda wrote:
> [...]
> basically, reason is following: ls uses "stat" syscall to obtain file
> information. stat returns a handful of parameters, including inode,
> permissions and others. to obtain _all_ that info, cygwin must open file
> (see stat_worker function at winsup/cygwin/syscalls.cc). opening every
> file on network share is pretty slow.
> 
> luckily, most of time application don't need _all_ stat information.
> for example, if you need to get file time or owner or size only,
> there's no need to open file. so, some time ago i've proposed to make
> cygwin1.dll export function "stat_lite", which works similar to
> "stat", but receives additional flags, showing which fields are of
> [...]

No matter of the possible speed up, I don't like this solution
because of...

> note: you have to recompile your application to utilize "stat_lite"
> function.

... that result.

I'm absolutely sure to get a speed up by the following, without
the need of another stat-function:

The current implementation of fhandler_disk_file::fstat() calls
three different functions which each opens the file independently:
get_file_owner(), get_file_group(), get_file_attribute(). I've
already planned to eliminate the first two functions. Instead,
the complete functionality should be offered by get_file_attribute().
This makes sense, because get_file_attribute already knows user
and group. I hope to increase speed noticable that way.

Ah, one hint: This wouldn't change anything when ntsec is OFF. But
in that case neither get_file_owner() nor get_file_group() nor
get_file_attribute() could slowing down things...

Corinna

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]