From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Michael Albinus Newsgroups: gmane.emacs.devel Subject: Re: Testing the new VC code Date: Mon, 24 Nov 2014 20:39:45 +0100 Message-ID: <87bnnwqtfi.fsf@gmx.de> References: <20141123215659.2CA0C382F79@snark.thyrsus.com> <874mtp58a9.fsf@fencepost.gnu.org> <20141124083310.GA29913@thyrsus.com> <87zjbh3r98.fsf@fencepost.gnu.org> <20141124094929.GA32148@thyrsus.com> <87k32k51ka.fsf@fencepost.gnu.org> <20141124104616.GA1744@thyrsus.com> <87fvd8steg.fsf@gmx.de> <20141124130355.GA5432@thyrsus.com> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain X-Trace: ger.gmane.org 1416858115 5693 80.91.229.3 (24 Nov 2014 19:41:55 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Mon, 24 Nov 2014 19:41:55 +0000 (UTC) Cc: David Kastrup , emacs-devel@gnu.org To: "Eric S. Raymond" Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Mon Nov 24 20:41:44 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 1XszW4-0000fO-4i for ged-emacs-devel@m.gmane.org; Mon, 24 Nov 2014 20:41:44 +0100 Original-Received: from localhost ([::1]:54270 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XszW3-0000Np-P6 for ged-emacs-devel@m.gmane.org; Mon, 24 Nov 2014 14:41:43 -0500 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:44471) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XszUJ-0007Ap-8A for emacs-devel@gnu.org; Mon, 24 Nov 2014 14:40:01 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1XszUD-0003s9-8E for emacs-devel@gnu.org; Mon, 24 Nov 2014 14:39:55 -0500 Original-Received: from mout.gmx.net ([212.227.15.18]:55231) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XszUC-0003s3-UQ; Mon, 24 Nov 2014 14:39:49 -0500 Original-Received: from detlef.gmx.de ([87.146.34.98]) by mail.gmx.com (mrgmx001) with ESMTPSA (Nemesis) id 0MFcg9-1Xgfh9449N-00Edyt; Mon, 24 Nov 2014 20:39:47 +0100 User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.0.50 (gnu/linux) X-Provags-ID: V03:K0:YA+AOP0Q57mHotl2nqxfijBJINsOJm6++CZLgB8vklN+sWRan+Q kmDZUAIfEHEJusbNPyDBmvEZO1UXWnBmXOESPzAs98NSGYRir8WcwuX5Z7HLo3Ib78oeRLD c0t7qtFfiWyqp3hCOoMeS/saq1FJAB90LH1UyGUDUR8Gza/vvYW+oOGuPAT9pyepdF3Vmvb KvaWq7ZEEMmqwfd/iTvGw== X-UI-Out-Filterresults: notjunk:1; X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [generic] X-Received-From: 212.227.15.18 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:178207 Archived-At: "Eric S. Raymond" writes: > I would be *delighted* to have you test it. Others should pile in as > well. I can test thoroughly under git and RCS. I'm not really > worried about any of the other back ends except CVS and SVN, but those > could be trouble spots. Well, these days I'm on a business trip, so I can access my main machine at home remotely only. On that machine, I have different files under version control for CVS, Bzr, Git and Hg. The Hg version I cannot test, because there is no mercurial on the local machine, and so the remote tests for Hg are refused. The local machine (at work) is connected to the machine at home via ssh, tunneled through http. Not very fast. That remote machine is called "ford"- On the local machine I have compiled recent Emacs up to commit 6dbaf0471927829126025f57315db02d78255790 Author: Leo Liu Date: Mon Nov 24 22:57:53 2014 +0800 And there is another compiled Emacs with your patch on top of this commit 52ba817b903337a9fd58fc10772cec425190a596 Author: Eric S. Raymond Date: Mon Nov 24 08:03:56 2014 -0500 1. Test: Check a file not under vc (let ((vc-handled-backends '(CVS Bzr Git Hg)) (tramp-verbose 0) ;; Do not loose time in Tramp. (file "/pscp:ford:/usr/local/src/dbus-1.5.12/dbus/dbus.h")) (file-exists-p file) ;; Take initial connection time out of profiling. (elp-reset-all) (elp-instrument-function 'vc-registered) (dotimes (i 1000) (vc-registered file)) (elp-results)) Not patched Emacs => vc-registered 3000 439.78873400 0.1465962446 Patched Emacs => vc-registered 3000 429.92892599 0.1433096419 Your version is even a little bit faster. IIRC, the heuristic functions weren't such good for Tramp, because they have used process calls instead of file existence checks. Tramp internal optimizations do not work then. 2. Test: Check a file under CVS control. The CVS repository is on savannah (let ((vc-handled-backends '(CVS)) (tramp-verbose 0) ;; Do not loose time in Tramp. (file "/pscp:ford:/usr/local/src/tramp-2-1-stable/ChangeLog")) (file-exists-p file) ;; Take initial connection time out of profiling. (elp-reset-all) (elp-instrument-function 'vc-state) (dotimes (i 1000) (vc-state file)) (elp-results)) Not patched Emacs => vc-state 1000 0.0019950000 1.995...e-06 Patched Emacs => vc-state 1000 0.0267269999 2.672...e-05 Your version is not bad, but a factor of 13 slower. So if you have a slow connection to your CVS repository, caching would help. 3. Test: Check a file under Bzr control (let ((vc-handled-backends '(Bzr)) (tramp-verbose 0) ;; Do not loose time in Tramp. (file "/pscp:ford:/usr/local/src/emacs.sv/ChangeLog")) (file-exists-p file) ;; Take initial connection time out of profiling. (elp-reset-all) (elp-instrument-function 'vc-state) (dotimes (i 1000) (vc-state file)) (elp-results)) Not patched Emacs => vc-state 1000 0.0019390000 1.939...e-06 Patched Emacs => vc-state 1000 0.0030969999 3.096...e-06 1.5 times slower. Maybe acceptable. 4. Test: Check a file under Git control (let ((vc-handled-backends '(Git)) (tramp-verbose 0) ;; Do not loose time in Tramp. (file "/pscp:ford:/usr/local/src/emacs/ChangeLog")) (file-exists-p file) ;; Take initial connection time out of profiling. (elp-reset-all) (elp-instrument-function 'vc-state) (dotimes (i 1000) (vc-state file)) (elp-results)) Not patched Emacs => vc-state 1000 0.3676199999 0.0003676199 Patched Emacs => vc-state 1000 0.4226959999 0.0004226959 Again, your version is slower (15%). More surprising, both versions are much slower than with Bzr. I guess one could improve the code for git. Best regards, Michael.