From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: David Kastrup Newsgroups: gmane.emacs.devel Subject: Progress report on git-blame (was: RFC - cleaning up /etc) Date: Sat, 25 Jan 2014 02:06:43 +0100 Organization: Organization?!? Message-ID: <87fvoceuos.fsf_-_@fencepost.gnu.org> References: <20140109140226.57D6C38085A@snark.thyrsus.com> <20140110155121.GA8178@thyrsus.com> <20140111205925.GC17111@thyrsus.com> <87y52mdoha.fsf@fencepost.gnu.org> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Trace: ger.gmane.org 1390612029 19438 80.91.229.3 (25 Jan 2014 01:07:09 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Sat, 25 Jan 2014 01:07:09 +0000 (UTC) To: emacs-devel@gnu.org Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Sat Jan 25 02:07:15 2014 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1W6riM-0001c1-TU for ged-emacs-devel@m.gmane.org; Sat, 25 Jan 2014 02:07:15 +0100 Original-Received: from localhost ([::1]:49445 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1W6riM-0003NP-Cw for ged-emacs-devel@m.gmane.org; Fri, 24 Jan 2014 20:07:14 -0500 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:55300) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1W6riD-0003NE-Pu for emacs-devel@gnu.org; Fri, 24 Jan 2014 20:07:11 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1W6ri3-0005jd-W4 for emacs-devel@gnu.org; Fri, 24 Jan 2014 20:07:05 -0500 Original-Received: from plane.gmane.org ([80.91.229.3]:54047) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1W6ri3-0005j7-PO for emacs-devel@gnu.org; Fri, 24 Jan 2014 20:06:55 -0500 Original-Received: from list by plane.gmane.org with local (Exim 4.69) (envelope-from ) id 1W6ri2-0001Tq-7S for emacs-devel@gnu.org; Sat, 25 Jan 2014 02:06:54 +0100 Original-Received: from x2f3ec65.dyn.telefonica.de ([2.243.236.101]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Sat, 25 Jan 2014 02:06:54 +0100 Original-Received: from dak by x2f3ec65.dyn.telefonica.de with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Sat, 25 Jan 2014 02:06:54 +0100 X-Injected-Via-Gmane: http://gmane.org/ Original-Lines: 66 Original-X-Complaints-To: usenet@ger.gmane.org X-Gmane-NNTP-Posting-Host: x2f3ec65.dyn.telefonica.de X-Face: 2FEFf>]>q>2iw=B6, xrUubRI>pR&Ml9=ao@P@i)L:\urd*t9M~y1^:+Y]'C0~{mAl`oQuAl \!3KEIp?*w`|bL5qr,H)LFO6Q=qx~iH4DN; i"; /yuIsqbLLCh/!U#X[S~(5eZ41to5f%E@'ELIi$t^ Vc\LWP@J5p^rst0+('>Er0=^1{]M9!p?&:\z]|;&=NP3AhB!B_bi^]Pfkw User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3.50 (gnu/linux) Cancel-Lock: sha1:9NAJ7vzjldC35x5BiRpOv20IgNg= X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 80.91.229.3 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:169035 Archived-At: --=-=-= Content-Type: text/plain David Kastrup writes: > Lars Magne Ingebrigtsen writes: > >> a `C-x v g' that's so slow it's unusable (but David is fixing that), > > Will still take a year to trickle down to typical users. Man, my fix > better be good with everybody taking its efficacy for granted. Taking the following test job: --=-=-= Content-Type: text/x-sh Content-Disposition: inline; filename=blametest.sh #/bin/sh cd /tmp rm -rf testit mkdir testit cd testit git init for inc in 8 4 3 7 2 9 5 6 1 do seq 252000 -$inc 0 > testfile git add testfile git commit -m "Run with increment $inc" done time git blame testfile >/dev/null --=-=-= Content-Type: text/plain my current code (which is not ready for submission as it does not support all options of git-blame yet) takes 2 seconds for the git-blame step as opposed to the 40 seconds the system binary does. That's at least encouraging and one can expect some of that to be pure output time. For blaming src/xdisp.c, however, it only drops the execution time from 3:00 minutes to about half. 30 seconds of that is system time, and it is basically identical to before. So while I have made good progress on the "lots of tiny changes" behavior, the "so slow it's unusable" angle for real-world files will likely require meddling with when and how and why I/O is being done (or conceivably memory allocation/deallocation). And in that area, I've not yet done or even profiled anything, so I have no clue how much can be done. It's possible that repository repacking could help independently. At least having gotten the linear list operation thrashing out of the way will help with further profiling. Of course, the actual output is identical (or a progress report would not have made much sense). Top memory usage also is very much the same (about 340MB for blaming src/xdisp.c). -- David Kastrup --=-=-=--