From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Alan Mackenzie Newsgroups: gmane.emacs.devel Subject: CC Mode with font-lock-maximum-decoration 2 [Was Major modes using `widen' is a good, even essential, programming practice.] Date: Mon, 8 Aug 2022 15:05:29 +0000 Message-ID: References: <835yj4xhh7.fsf@gnu.org> <83y1w0w0gk.fsf@gnu.org> <83pmhcvugm.fsf@gnu.org> <83czdbwjfr.fsf@gnu.org> <837d3jvu9f.fsf@gnu.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="15713"; mail-complaints-to="usenet@ciao.gmane.io" Cc: emacs-devel@gnu.org To: Eli Zaretskii Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Mon Aug 08 17:07:49 2022 Return-path: Envelope-to: ged-emacs-devel@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1oL4M9-0003qs-5G for ged-emacs-devel@m.gmane-mx.org; Mon, 08 Aug 2022 17:07:49 +0200 Original-Received: from localhost ([::1]:50290 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oL4M8-0005Cg-5A for ged-emacs-devel@m.gmane-mx.org; Mon, 08 Aug 2022 11:07:48 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:52832) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oL4K0-0003V0-5C for emacs-devel@gnu.org; Mon, 08 Aug 2022 11:05:36 -0400 Original-Received: from colin.muc.de ([193.149.48.1]:12515 helo=mail.muc.de) by eggs.gnu.org with smtp (Exim 4.90_1) (envelope-from ) id 1oL4Jw-0006hh-Je for emacs-devel@gnu.org; Mon, 08 Aug 2022 11:05:34 -0400 Original-Received: (qmail 74471 invoked by uid 3782); 8 Aug 2022 15:05:30 -0000 Original-Received: from acm.muc.de (p4fe1582e.dip0.t-ipconnect.de [79.225.88.46]) (using STARTTLS) by colin.muc.de (tmda-ofmipd) with ESMTP; Mon, 08 Aug 2022 17:05:30 +0200 Original-Received: (qmail 7576 invoked by uid 1000); 8 Aug 2022 15:05:29 -0000 Content-Disposition: inline In-Reply-To: <837d3jvu9f.fsf@gnu.org> X-Submission-Agent: TMDA/1.3.x (Ph3nix) X-Primary-Address: acm@muc.de Received-SPF: pass client-ip=193.149.48.1; envelope-from=acm@muc.de; helo=mail.muc.de X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.29 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-mx.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.io gmane.emacs.devel:293270 Archived-At: Hello, Eli. On Mon, Aug 08, 2022 at 14:39:56 +0300, Eli Zaretskii wrote: > > Date: Mon, 8 Aug 2022 09:58:29 +0000 > > Cc: gregory@heytings.org, emacs-devel@gnu.org > > From: Alan Mackenzie [ .... ] > > > I don't know what makes it [CC Mode with > > > font-lock-maximum-decoration 2] slow, but it feels sluggish in even > > > the simplest editing operations, and font-lock updates are slow as > > > well. I don't think that's entirely true. I've just measured the font-locking time, and (let's call it) CC Mode/2 fontifies at 72% the speed of Emacs Lisp Mode. I don't think it's reasonable to expect more than that, given that C is more complicated than Lisp. I think it more likely that the before/after-change-functions in CC Mode/2 are excessive, and making it look like fontification is slow. For this measurement, I started with subr.el, and appended copies of it to itself, then took functions off the end, to make it the same size as xdisp.c. xdisp.c is 1209233 bytes, my .el buffer was 1209371 bytes. I used M-: (benchmark-run 1 (time-scroll-b)) on each buffer, with: (defun time-scroll-b (&optional arg) ; For use in `benchmark-run'. (condition-case nil (while t (if arg (scroll-down) (scroll-up)) (sit-for 0)) (error nil))) .. The exact results were: (xdisp.c): (5.7370774540000005 9 0.7672129740000013) (elisp): (4.1201735589999995 5 0.42918214299999846). This was, of course, on an optimised build on GNU/Linux using the Linux console, both measurements starting at BOB, having typed and deleted a character to erase existing font-locking. > > How about us opening a bug report for CC Mode's speed with > > font-lock-maximum-decoration = 2? > Consider it open. I'm sure I complained about this more than once > already, and yet here we are. [ .... ] -- Alan Mackenzie (Nuremberg, Germany).