From: Jeff King <peff@peff.net> To: Linus Torvalds <torvalds@linux-foundation.org> Cc: Luke Lu <git@vicaya.com>, Christer Weinigel <christer@weinigel.se>, Tom Tobin <korpios@korpios.com>, git@vger.kernel.org Subject: Re: On Tabs and Spaces Date: Wed, 17 Oct 2007 22:45:53 -0400 Message-ID: <20071018024553.GA5186@coredump.intra.peff.net> (raw) In-Reply-To: <alpine.LFD.0.999.0710171753020.26902@woody.linux-foundation.org> On Wed, Oct 17, 2007 at 05:59:27PM -0700, Linus Torvalds wrote: > It happens. We do de-spacification in the kernel occasionally when it is > an annoyance. Usually it shows up in patches, though - exactly because > code which adds spaces instead of tabs won't line up correctly in the > diff. You have made this claim several times, and I really don't understand it. If I have 8 spaces, then a diff line will have either " ", "+", or "-" followed by 8 spaces. If I use a hard tab, then the tab will end up only taking up 7 spaces because of the nature of tabs. This might matter if I'm comparing non-diff code to diff code. But in a diff, _everything_ is indented by exactly one space, so it all lines up. Is there something I'm missing? > So it doesn't matter *which* one you use (all spaces or all tabs) in that > sense. Yes, I agree with that (even with an all-tabs policy, there are still mangled and incorrect patches that come in -- and the maintainer rejects or fixes them). Which was what I was trying to point out with my question (though I was also curious to hear your answer): all-space versus all-tab is largely a matter of preference. And that means that people who want git to change to _their_ preference are just being silly. > And smaller *is* faster. Do something like this on the kernel: > > GIT_PAGER= time git grep sched_fair > > and then do the same thing with the kernel sources blown up by 20% by > de-tabification. Guess which one is 20% slower? I was about to tell you that you're full of it, but there really is a slowdown: $ cd linux-2.6 $ GIT_PAGER= time git grep sched_fair >/dev/null 0.34user 0.94system 0:01.30elapsed 98%CPU (0avgtext+0avgdata 0maxresident)k 0inputs+0outputs (0major+7548minor)pagefaults 0swaps $ find . -name .git -prune -o -type f | xargs perl -pi -e 's/\t/ /g' $ git-commit -a -m de-tabify $ git-repack -a -d $ GIT_PAGER= time git grep sched_fair >/dev/null 0.42user 1.06system 0:01.54elapsed 96%CPU (0avgtext+0avgdata 0maxresident)k 0inputs+0outputs (0major+7591minor)pagefaults 0swaps It's actually about 16%. Gah, I can't believe I've not only been sucked into a tab vs spaces discussion, but now I've actually wasted time doing a performance comparison on it. As an aside, that commit was enough to trigger a "git-gc --auto", which was my first experience with it. It's actually kind of annoying (especially since I was about to repack -a -d). -Peff
next prev parent reply other threads:[~2007-10-18 2:46 UTC|newest] Thread overview: 100+ messages / expand[flat|nested] mbox.gz Atom feed top 2007-10-16 6:45 Michael Witten 2007-10-16 7:04 ` Shawn O. Pearce 2007-10-16 7:27 ` Michael Witten 2007-10-16 17:20 ` Andreas Ericsson 2007-10-16 17:40 ` Sam Ravnborg 2007-10-16 23:09 ` Petr Baudis 2007-10-17 3:41 ` David 2007-10-17 11:32 ` Andy Parkins 2007-10-16 8:30 ` Adam Piatyszek 2007-10-16 9:04 ` Lars Hjemli 2007-10-16 10:16 ` Adam Piatyszek 2007-10-16 15:26 ` Jeffrey C. Ollie 2007-10-16 15:51 ` Michael Witten 2007-10-16 17:06 ` Jari Aalto 2007-10-16 19:20 ` Linus Torvalds 2007-10-16 19:36 ` Mike Hommey 2007-10-16 19:47 ` Linus Torvalds 2007-10-16 19:51 ` Linus Torvalds 2007-10-16 20:32 ` Matthieu Moy 2007-10-16 20:18 ` Tom Tobin 2007-10-16 23:05 ` Linus Torvalds 2007-10-16 23:51 ` Christer Weinigel 2007-10-17 0:45 ` Linus Torvalds 2007-10-17 3:08 ` Michael Witten 2007-10-17 3:29 ` Linus Torvalds 2007-10-17 7:17 ` Luke Lu 2007-10-17 9:09 ` Michael Witten 2007-10-17 10:03 ` Luke Lu 2007-10-17 10:21 ` Nikolai Weibull 2007-10-17 11:23 ` Michael Witten 2007-10-17 22:02 ` Jari Aalto 2007-10-17 22:36 ` Andreas Ericsson 2007-10-17 23:38 ` Jari Aalto 2007-10-18 4:31 ` Dmitry Torokhov 2007-10-18 8:19 ` Jari Aalto 2007-10-18 11:34 ` Petr Baudis 2007-10-18 11:39 ` Nikolai Weibull 2007-10-22 3:39 ` Miles Bader 2007-10-18 7:15 ` David Kågedal 2007-10-18 5:42 ` Mike Hommey 2007-10-18 10:36 ` Jari Aalto 2007-10-17 15:53 ` Linus Torvalds 2007-10-17 18:05 ` Johannes Schindelin 2007-10-17 18:25 ` Tom Tobin 2007-10-17 18:54 ` Linus Torvalds 2007-10-17 19:33 ` Tom Tobin 2007-10-17 19:44 ` Linus Torvalds 2007-10-17 19:48 ` Nicolas Pitre 2007-10-17 19:52 ` Josh England 2007-10-17 19:53 ` Linus Torvalds 2007-10-17 21:21 ` Christer Weinigel 2007-10-17 22:03 ` Linus Torvalds 2007-10-18 6:25 ` David Kastrup 2007-10-17 22:11 ` Johannes Schindelin 2007-10-17 23:17 ` Christer Weinigel 2007-10-17 23:44 ` Johannes Schindelin 2007-10-18 0:31 ` Christer Weinigel 2007-10-18 6:02 ` Andreas Ericsson 2007-10-18 7:12 ` David Kågedal 2007-10-17 23:53 ` Linus Torvalds 2007-10-17 20:31 ` David Kastrup 2007-10-17 21:08 ` Johannes Schindelin 2007-10-17 19:47 ` Jan Wielemaker 2007-10-18 0:32 ` Jeff King 2007-10-18 0:59 ` Linus Torvalds 2007-10-18 2:45 ` Jeff King [this message] 2007-10-18 3:03 ` david 2007-10-18 3:00 ` Jeff King 2007-10-18 3:32 ` Linus Torvalds 2007-10-18 4:17 ` Linus Torvalds 2007-10-18 3:13 ` Linus Torvalds 2007-10-18 3:23 ` Jeff King 2007-10-18 4:41 ` [PATCH] Add a message explaining that automatic GC is about to start koreth 2007-10-18 4:44 ` Steven Grimm 2007-10-18 5:01 ` Jeff King 2007-10-18 5:11 ` Shawn O. Pearce 2007-10-18 13:52 ` Brian Gernhardt 2007-10-18 14:16 ` Steven Grimm 2007-10-18 18:08 ` Jeff King 2007-10-19 0:16 ` Shawn O. Pearce 2007-10-19 1:12 ` [PATCH] git-gc: improve wording of --auto notification Jeff King 2007-10-19 1:24 ` Shawn O. Pearce 2007-10-19 1:26 ` Jeff King 2007-10-18 14:21 ` [PATCH] Add a message explaining that automatic GC is about to start Nicolas Pitre 2007-10-18 4:52 ` On Tabs and Spaces Nicolas Pitre 2007-10-18 4:54 ` Jeff King 2007-10-18 4:55 ` Jeff King 2007-10-17 16:08 ` David Kastrup 2007-10-17 17:44 ` Nicolas Pitre 2007-10-17 19:52 ` David Kastrup 2007-10-17 17:51 ` Sean 2007-10-17 5:56 ` David Kastrup 2007-10-16 20:56 ` Sam Ravnborg 2007-10-18 3:31 ` Paul Wankadia 2007-10-18 4:22 ` Linus Torvalds 2007-10-18 4:36 ` Dmitry Potapov 2007-10-16 17:23 ` Andreas Ericsson 2007-10-16 18:34 ` Jan-Benedict Glaw 2007-10-16 18:51 ` Andreas Ericsson 2007-10-20 13:54 ` Robin Rosenberg
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 List information: http://vger.kernel.org/majordomo-info.html * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20071018024553.GA5186@coredump.intra.peff.net \ --to=peff@peff.net \ --cc=christer@weinigel.se \ --cc=git@vger.kernel.org \ --cc=git@vicaya.com \ --cc=korpios@korpios.com \ --cc=torvalds@linux-foundation.org \ --subject='Re: On Tabs and Spaces' \ /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
git@vger.kernel.org list mirror (unofficial, one of many) This inbox may be cloned and mirrored by anyone: git clone --mirror https://public-inbox.org/git git clone --mirror http://ou63pmih66umazou.onion/git git clone --mirror http://czquwvybam4bgbro.onion/git git clone --mirror http://hjrcffqmbrq6wope.onion/git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V1 git git/ https://public-inbox.org/git \ git@vger.kernel.org public-inbox-index git Example config snippet for mirrors. Newsgroups are available over NNTP: nntp://news.public-inbox.org/inbox.comp.version-control.git nntp://ou63pmih66umazou.onion/inbox.comp.version-control.git nntp://czquwvybam4bgbro.onion/inbox.comp.version-control.git nntp://hjrcffqmbrq6wope.onion/inbox.comp.version-control.git nntp://news.gmane.io/gmane.comp.version-control.git note: .onion URLs require Tor: https://www.torproject.org/ code repositories for project(s) associated with this inbox: https://80x24.org/mirrors/git.git AGPL code for this site: git clone https://public-inbox.org/public-inbox.git