From: Eli Zaretskii <eliz@gnu.org>
To: Daniel Barkalow <barkalow@iabervon.org>
Cc: raa.lkml@gmail.com, Johannes.Schindelin@gmx.de, ae@op5.se,
tsuna@lrde.epita.fr, git@vger.kernel.org, make-w32@gnu.org
Subject: Re: Switching from CVS to GIT
Date: Tue, 16 Oct 2007 06:30:11 +0200 [thread overview]
Message-ID: <uodezisvg.fsf@gnu.org> (raw)
In-Reply-To: <Pine.LNX.4.64.0710151859590.7638@iabervon.org> (message from Daniel Barkalow on Mon, 15 Oct 2007 20:45:02 -0400 (EDT))
> Date: Mon, 15 Oct 2007 20:45:02 -0400 (EDT)
> From: Daniel Barkalow <barkalow@iabervon.org>
> cc: Alex Riesen <raa.lkml@gmail.com>, Johannes.Schindelin@gmx.de, ae@op5.se,
> tsuna@lrde.epita.fr, git@vger.kernel.org, make-w32@gnu.org
>
> I believe the hassle is that readdir doesn't necessarily report a README in
> a directory which is supposed to have a README, when it has a readme
> instead.
Sorry I'm asking potentially stupid questions out of ignorance: why
would you want readdir to return `README' when you have `readme'?
> I think we want O(n) comparison of sorted lists, which doesn't
> work if equivalent names don't sort the same.
You comparison function should be case-insensitive on Windows, or am I
missing something?
> > > - no acceptable level of performance in filesystem and VFS (readdir,
> > > stat, open and read/write are annoyingly slow)
> >
> > With what libraries? Native `stat' and `readdir' are quite fast.
> > Perhaps you mean the ported glibc (libgw32c), where `readdir' is
> > indeed painfully slow, but then you don't need to use it.
>
> We want getting stat info, using readdir to figure out what files exist,
> for 106083 files in 1603 directories with a hot cache to take under 1s;
> otherwise "git status" takes a noticeable amount of time with a medium-big
> project, and we want people to be able to get info on what's changed
> effectively instantly. My impression is that Windows' native stat and
> readdir are plenty fast for what normal Windows programs want, but we
> actually expect reasonable performance on an unreasonably-big
> metadata-heavy input.
If that's the issue, then it's not a good idea to call `stat' and
`readdir' on Windows at all. `stat' is a single system call on Posix
systems, while on Windows it usually needs to go out of its way
calling half a dozen system services to gather the `struct stat' info.
You need to call something like FindFirstFile, which can do the job of
`stat' and `readdir' together (and of `fnmatch', if you need to filter
only some files) in one go. I don't know whether this will scan 100K
files under one second (maybe I will try it one of these days), but it
will definitely be faster than `readdir'+`stat' by maybe as much as an
order of magnitude.
> > > - no real "mmap" (which kills perfomance and complicates code)
> >
> > You only need mmap because you are accustomed to use it on GNU/Linux.
>
> I believe the need here is quick setup and fast access to sparse portions
> of several 100M files. It's hard to beat a page fault for read speed.
If you need memory-mapped files, they are available on Windows. I
thought the original comment about `mmap' was because it was used to
allocate memory, not read files into memory.
> We also expect to be able to make a sequence of file system operations
> such that programs starting at any time see the same database as the files
> containing the database get restructured.
Sorry, I don't understand this; please tell more about the operations,
``the same database'' issue (what database?) and what do you mean by
``the files containing the database get restructured''.
> A unixy pipeline was convenient
Windows supports pipelines with almost 100% the same functionality as
Posix. Again, perhaps I'm missing something.
next prev parent reply other threads:[~2007-10-16 4:30 UTC|newest]
Thread overview: 120+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <1192293466.17584.95.camel@homebase.localnet>
[not found] ` <uy7e6keyv.fsf@gnu.org>
[not found] ` <1192381040.4908.57.camel@homebase.localnet>
2007-10-14 17:10 ` Switching from CVS to GIT Benoit SIGOURE
2007-10-14 18:06 ` Marco Costalba
2007-10-14 18:20 ` Johannes Schindelin
2007-10-15 5:35 ` Martin Langhoff
2007-10-14 18:27 ` Andreas Ericsson
2007-10-14 18:39 ` Johannes Schindelin
2007-10-14 19:09 ` Andreas Ericsson
2007-10-14 20:14 ` Johannes Schindelin
2007-10-14 22:14 ` Alex Riesen
2007-10-14 22:41 ` Eli Zaretskii
2007-10-14 23:45 ` Johannes Schindelin
2007-10-15 0:36 ` Brian Dessent
2007-10-15 1:22 ` Johannes Schindelin
2007-10-15 1:24 ` Johannes Schindelin
2007-10-15 6:04 ` Eli Zaretskii
2007-10-15 7:56 ` Steffen Prohaska
2007-10-15 8:20 ` Eli Zaretskii
2007-10-15 8:47 ` Johannes Schindelin
2007-10-15 11:09 ` Eli Zaretskii
2007-10-15 12:31 ` Johannes Sixt
2007-10-15 12:37 ` Eli Zaretskii
2007-10-15 18:29 ` Paul Smith
2007-10-15 9:23 ` Steffen Prohaska
2007-10-15 11:06 ` Eli Zaretskii
2007-10-15 4:12 ` Eli Zaretskii
2007-10-15 8:34 ` Johannes Schindelin
2007-10-15 9:02 ` Benoit SIGOURE
2007-10-15 17:56 ` Alex Riesen
2007-10-15 18:37 ` Brian Dessent
2007-10-15 18:44 ` Johannes Schindelin
2007-10-15 19:07 ` Brian Dessent
2007-10-15 19:27 ` Johannes Schindelin
2007-10-15 20:24 ` Linus Torvalds
2007-10-15 20:36 ` Johannes Schindelin
2007-10-15 19:42 ` Alex Riesen
2007-10-15 19:48 ` Eli Zaretskii
2007-10-15 19:58 ` Johannes Schindelin
2007-10-15 21:06 ` Eli Zaretskii
2007-10-15 20:05 ` Brian Dessent
2007-10-15 20:19 ` Johannes Schindelin
2007-10-15 20:43 ` Steffen Prohaska
2007-10-15 20:46 ` Johannes Schindelin
2007-10-16 2:24 ` Nguyen Thai Ngoc Duy
2007-10-16 4:16 ` Eli Zaretskii
2007-10-16 10:09 ` Nguyen Thai Ngoc Duy
2007-10-16 12:18 ` Eli Zaretskii
2007-10-16 6:17 ` Steffen Prohaska
2007-10-15 21:08 ` Eli Zaretskii
2007-10-15 20:05 ` Mark Watts
2007-10-15 4:06 ` Eli Zaretskii
2007-10-15 5:56 ` Eli Zaretskii
2007-10-15 8:44 ` Johannes Schindelin
2007-10-15 8:56 ` David Kastrup
2007-10-15 8:57 ` David Kastrup
2007-10-15 17:49 ` Alex Riesen
2007-10-15 18:25 ` Dave Korn
2007-10-15 18:34 ` Johannes Schindelin
2007-10-15 19:34 ` Alex Riesen
2007-10-15 17:53 ` Alex Riesen
2007-10-14 23:55 ` Andreas Ericsson
2007-10-16 0:45 ` Daniel Barkalow
2007-10-16 4:30 ` Eli Zaretskii [this message]
2007-10-16 5:14 ` Andreas Ericsson
2007-10-16 6:25 ` Eli Zaretskii
2007-10-16 7:07 ` Daniel Barkalow
2007-10-16 12:29 ` Johannes Schindelin
2007-10-16 12:38 ` Peter Karlsson
2007-10-16 13:04 ` Eli Zaretskii
2007-10-16 12:53 ` Eli Zaretskii
2007-10-16 12:59 ` David Kastrup
2007-10-16 13:15 ` Johannes Schindelin
2007-10-16 15:47 ` Dave Korn
2007-10-16 15:56 ` David Brown
2007-10-16 16:04 ` Nicolas Pitre
2007-10-16 16:23 ` Dave Korn
2007-10-16 18:06 ` Christopher Faylor
2007-10-16 16:59 ` Andreas Ericsson
2007-10-16 7:14 ` Steffen Prohaska
2007-10-16 12:33 ` Johannes Schindelin
2007-10-16 13:16 ` Steffen Prohaska
2007-10-16 13:21 ` Johannes Schindelin
2007-10-16 13:50 ` Steffen Prohaska
2007-10-16 14:14 ` Johannes Schindelin
2007-10-16 14:36 ` Steffen Prohaska
2007-10-16 15:12 ` Eli Zaretskii
2007-10-17 19:33 ` Robin Rosenberg
2007-10-16 5:56 ` Daniel Barkalow
2007-10-16 7:03 ` Eli Zaretskii
2007-10-16 12:39 ` Johannes Schindelin
2007-10-16 12:47 ` David Kastrup
2007-10-16 13:16 ` Eli Zaretskii
2007-10-16 13:24 ` Johannes Schindelin
2007-10-16 15:02 ` Eli Zaretskii
2007-10-16 15:18 ` Johannes Schindelin
2007-10-16 15:43 ` Eli Zaretskii
2007-10-16 17:04 ` Daniel Barkalow
2007-10-16 6:06 ` David Kastrup
2007-10-16 6:42 ` Johannes Sixt
2007-10-16 7:17 ` Eli Zaretskii
2007-10-14 22:59 ` Dave Korn
2007-10-15 0:01 ` Johannes Schindelin
2007-10-15 17:36 ` Alex Riesen
2007-10-15 0:03 ` David Brown
2007-10-15 6:08 ` Eli Zaretskii
2007-10-15 10:16 ` Andreas Ericsson
2007-10-15 10:38 ` Johannes Sixt
2007-10-15 10:52 ` Andreas Ericsson
2007-10-15 11:16 ` Dave Korn
2007-10-15 0:46 ` Michael Gebetsroither
2007-10-15 17:38 ` Alex Riesen
2007-10-15 19:26 ` David Kastrup
2007-10-15 19:30 ` Alex Riesen
2007-10-16 11:13 ` Peter Karlsson
2007-10-15 5:43 ` Martin Langhoff
2007-10-15 6:39 ` Johannes Sixt
2007-10-15 23:12 ` Shawn O. Pearce
2007-10-16 6:10 ` Johannes Sixt
2007-10-16 6:21 ` Shawn O. Pearce
2007-10-16 6:29 ` Johannes Sixt
2007-10-16 15:16 ` Johannes Schindelin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=uodezisvg.fsf@gnu.org \
--to=eliz@gnu.org \
--cc=Johannes.Schindelin@gmx.de \
--cc=ae@op5.se \
--cc=barkalow@iabervon.org \
--cc=git@vger.kernel.org \
--cc=make-w32@gnu.org \
--cc=raa.lkml@gmail.com \
--cc=tsuna@lrde.epita.fr \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).