From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Alan Mackenzie Newsgroups: gmane.emacs.devel Subject: Re: Unbearably slow editing in .h files Date: Thu, 3 Apr 2008 09:14:00 +0000 Message-ID: <20080403091400.GA1937@muc.de> References: <200801271954.m0RJsmBm003714@sallyv1.ics.uci.edu> <479DAC55.8070302@gmx.at> <200801300258.m0U2w9rr005169@sallyv1.ics.uci.edu> <47B9E0B1.1090908@gmx.at> <20080223224901.GB3476@muc.de> <47C0A376.8080105@gmx.at> <20080402220710.GC1283@muc.de> <200804022347.m32NlqS5010556@sallyv1.ics.uci.edu> NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Trace: ger.gmane.org 1207213103 8331 80.91.229.12 (3 Apr 2008 08:58:23 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Thu, 3 Apr 2008 08:58:23 +0000 (UTC) Cc: martin rudalics , Stefan Monnier , emacs-devel@gnu.org To: Dan Nicolaescu Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Thu Apr 03 10:58:54 2008 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([199.232.76.165]) by lo.gmane.org with esmtp (Exim 4.50) id 1JhLHa-0002Od-15 for ged-emacs-devel@m.gmane.org; Thu, 03 Apr 2008 10:58:54 +0200 Original-Received: from localhost ([127.0.0.1] helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1JhLGx-0005oC-Mr for ged-emacs-devel@m.gmane.org; Thu, 03 Apr 2008 04:58:15 -0400 Original-Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1JhLGs-0005lU-AC for emacs-devel@gnu.org; Thu, 03 Apr 2008 04:58:10 -0400 Original-Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1JhLGr-0005j4-4C for emacs-devel@gnu.org; Thu, 03 Apr 2008 04:58:09 -0400 Original-Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1JhLGq-0005id-Qa for emacs-devel@gnu.org; Thu, 03 Apr 2008 04:58:08 -0400 Original-Received: from colin.muc.de ([193.149.48.1] helo=mail.muc.de) by monty-python.gnu.org with esmtps (TLS-1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1JhLGq-0007rK-7G for emacs-devel@gnu.org; Thu, 03 Apr 2008 04:58:08 -0400 Original-Received: (qmail 4363 invoked by uid 3782); 3 Apr 2008 08:58:05 -0000 Original-Received: from acm.muc.de (p57AF6627.dip.t-dialin.net [87.175.102.39]) by colin2.muc.de (tmda-ofmipd) with ESMTP; Thu, 03 Apr 2008 10:58:02 +0200 Original-Received: (qmail 2536 invoked by uid 1000); 3 Apr 2008 09:14:00 -0000 Content-Disposition: inline In-Reply-To: <200804022347.m32NlqS5010556@sallyv1.ics.uci.edu> User-Agent: Mutt/1.5.9i X-Delivery-Agent: TMDA/1.1.5 (Fettercairn) X-Primary-Address: acm@muc.de X-detected-kernel: by monty-python.gnu.org: FreeBSD 4.6-4.9 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:94249 Archived-At: Hi, Dan! On Wed, Apr 02, 2008 at 04:47:52PM -0700, Dan Nicolaescu wrote: > Alan Mackenzie writes: > > Hi, Martin and Stefan, > > On Sat, Feb 23, 2008 at 11:51:34PM +0100, martin rudalics wrote: > > > Evening Alan, > > > > What is add-log-current-defun using c-beginning-of-defun for? > > > Visit lisp.h, go to the end of the buffer, and do > > > M-x RET c-beginning-of-defun RET > > > Convincing? > > I have just fixed this problem (I hope!) in both the Emacs-22 > > branch and the trunk. Basically, the contorted functionality in > > add-log.el has been superseded by optimised routines in cc-cmds.el. > > On my 1.2 GHz Athlon machine, C-x 4 a now takes around 4 seconds at > > the end of lisp.h, in the trunk. It's somewhat faster in the > > Emacs-22 branch, but I don't know why. > > I think this is fast enough. > Can it be faster? Might sound like a joke, but it's a serious > question. Just to clarify, that 4 seconds is in the extreme case (lisp.h) that brought the problem to light. In a typical case, the action is "instantaneous". When finding (or failing to find) a function name, the new implementation is more than an order of magnitude faster than the old. For a macro name, it takes about as long as the old. > `diff-add-change-log-entries-other-window' uses this (calls it once per > diff hunk), and it is nice to let it run on largish diff buffers to > quickly produce a skeleton for a ChangeLog . Hey, I didn't know you could do this. Thanks for telling me! :-) (Actually, until I looked at this bug report, I didn't realise you could do C-x 4 a in an elisp or C file - I thought it would only work when done in ChangeLog itself.) > Is the slowdown still caused by the fact that is hard to distinguish a > K&R functions from variable declarations? Again, it's a massive speedup, not a slowdown. Isn't it? To the extent that it's still slower than it might be, yes it's the K&R stuff making it slow. The function which takes time is c-in-knr-argdecl (cc-engine.el, ~L6317). Actually, this function gets called twice. It would take a lot of refactoring to make it get called only once. > Thanks > --dan -- Alan.