git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
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.

  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).