Mail Archives: cygwin-developers/2000/03/15/05:02:45
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
- Raw text -