This is the mail archive of the cygwin 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]
Other format: [Raw text]

Re: performance problems


On Jun  6 11:31, Corinna Vinschen wrote:
> On Jun  2 18:32, Brian Dessent wrote:
> > In order to implement stat(), cygwin has to call NtQueryInformationFile
> > (GetFileInformationByHandle for 9x/me) and this requires the file to be
> > opened.  Thus the reason that stat takes forever is that each file has
> 
> There would be a theoretical way around this.  NtQueryDirectoryFile allows
> to get all information about a file (with a prominent exception) without
> having to open the file.  Instead you just need the handle to the parent
> directory.  We don't have the infrastructure in Cygwin right now to use
> this method easily, but it could speed up stat when, for instance, the file
> is in the current working directory or if the process has called opendir on
> the parent directory of the file.

Further testing of the NtQueryDirectoryFile function shows that it's not
usable as I imagined.  If you want to retrieve information about a single
file without disturbing the current opendir/readdir, it's necessary to
open the directory again.  The directory handle used in the current
opendir/readdir is not usable for this purpose.  Neither is a duplicated
handle of it.  Oh boy.

Looks like the only useful way to use it is caching the results.  As far
as that's useful.


Corinna

-- 
Corinna Vinschen                  Please, send mails regarding Cygwin to
Cygwin Project Co-Leader          mailto:cygwin@cygwin.com
Red Hat, Inc.

--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/


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