From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Daniel Colascione Newsgroups: gmane.emacs.devel Subject: Re: cc-mode fontification feels random Date: Fri, 11 Jun 2021 11:28:18 -0700 Message-ID: <9ac329c9-772e-1b3c-be7b-894ac1899d31@dancol.org> References: <62e438b5-d27f-1d3c-69c6-11fe29a76d74@dancol.org> <83fsxsdxhu.fsf@gnu.org> <83pmwudgw3.fsf@gnu.org> <83k0n2cjg5.fsf@gnu.org> <83im2lbqmv.fsf@gnu.org> <179f6e4fa40.2816.cc5b3318d7e9908e2c46732289705cb0@dancol.org> <83fsxpbpn9.fsf@gnu.org> <83k0n09tkp.fsf@gnu.org> <83eed89s73.fsf@gnu.org> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="21773"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.8.1 Cc: acm@muc.de, emacs-devel@gnu.org, monnier@iro.umontreal.ca, rms@gnu.org, rudalics@gmx.at To: Eli Zaretskii Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Fri Jun 11 20:32:13 2021 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 1lrlwy-0005SQ-V6 for ged-emacs-devel@m.gmane-mx.org; Fri, 11 Jun 2021 20:32:13 +0200 Original-Received: from localhost ([::1]:56692 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lrlwx-00063I-Ny for ged-emacs-devel@m.gmane-mx.org; Fri, 11 Jun 2021 14:32:11 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:49966) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lrltL-0005BV-CV for emacs-devel@gnu.org; Fri, 11 Jun 2021 14:28:27 -0400 Original-Received: from dancol.org ([2600:3c01:e000:3d8::1]:56920) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lrltI-0005YJ-Pa; Fri, 11 Jun 2021 14:28:27 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=dancol.org; s=x; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:MIME-Version:Date: Message-ID:From:References:Cc:To:Subject:Sender:Reply-To:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:List-Subscribe: List-Post:List-Owner:List-Archive; bh=ZP6yzEjpO0GlOftmvdheXZTa/9Q7EHF00G3/na89iv8=; b=VF4gYTkXIRpm6gFbutnFPx/Usm FxUHaQbC/VxBnlG9u5J3BiSP+cfkUjvKYGwIPA/QNLWw1LH5IBlltqW+MEwtuY++ES201zThludBm KQNKSG7BCt/QP/63F2w93/ooXv1bx2zOFcKJEfdqcPbg1odchNPzMOfItU08WsT6nO3rUQkGYy0lg DPyIgG1PGeBwNE4nksixquqbGrBQbQ5ECJcXknAtf5p/hDHWgUWr/h3IGZ/cEmip2tIpnEU/x82mz 4tkK2ve54tNtu3TlVJWv440YRo8KrZ1DFoQyj2gZzAuGAew2mYJKNsHm2GCywtcOxziYq6QVuMynw c0BU0Mzw==; Original-Received: from [2600:1012:b02e:3652:8166:6cb4:1287:b413] (port=57894) by dancol.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.89) (envelope-from ) id 1lrltE-0001Fv-Kn; Fri, 11 Jun 2021 11:28:20 -0700 In-Reply-To: <83eed89s73.fsf@gnu.org> Content-Language: en-US Received-SPF: pass client-ip=2600:3c01:e000:3d8::1; envelope-from=dancol@dancol.org; helo=dancol.org X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, NICE_REPLY_A=-0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.23 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:270712 Archived-At: On 6/11/21 11:22 AM, Eli Zaretskii wrote: >> Cc: rudalics@gmx.at, monnier@iro.umontreal.ca, rms@gnu.org, >> emacs-devel@gnu.org >> From: Daniel Colascione >> Date: Fri, 11 Jun 2021 11:02:34 -0700 >> >>>> 0.026s, 0.025s, 0.026s, 0.078s, 0.026s, 0.027s. >>>> >>>> That is, with the exception of the fourth timing, the scroll operation >>>> takes a little over 1/40 second. >>>> >>>> This is in an Emacs-28 compiled with default optimisation, on a 4 >>>> year-old first generation Ryzen machine. >>>> >>>> For me personally, this scrolling speed, in conjunction with >>>> fast-but-imprecise-scrolling, is acceptable. I also accept there are >>>> people with slower machines. >>> I suggest to compare these times with Emacs 23 to see how we >>> regressed. >> Regression is acceptable in exchange for correctness so long as absolute >> performance is adequate. We're not using 80486s anymore. > Here are my times using an optimized build of Emacs 27.2 on a 3.4GHz > Core i7 box: > > 0.015625 > 0.03125 > 0.015625 > 0.046875 > 0.09375 > 0.0625 > 0.015625 > 0.03125 > 0.015625 > 0.03125 > 0.015625 > 0.03125 > > You consider this to be adequate performance for a single > window-scroll? (I don't have an optimized build of Emacs 28, but > there's no reason to believe it is faster; quite the opposite.) native-comp? > > And here's the top part of the profile while running the above > benchmark: > > - redisplay_internal (C function) 159 65% > - jit-lock-function 158 65% > - jit-lock-fontify-now 158 65% > - jit-lock--run-functions 158 65% > - run-hook-wrapped 158 65% > - # 158 65% > - font-lock-fontify-region 157 65% > - c-font-lock-fontify-region 157 65% > - font-lock-default-fontify-region 146 60% > - font-lock-fontify-keywords-region 143 59% > - c-font-lock-declarations 97 40% > - c-find-decl-spots 97 40% > - # 73 30% > - c-forward-decl-or-cast-1 38 15% > - c-forward-type 22 9% > - c-check-qualified-type 7 2% > > We can stick our heads in the sand as much as we want, but facts are > stubborn things. Hrm. That doesn't seem consistent with Alan's report that we spend a ton of time doing work like deciding whether a brace occurs at top-level. My question stands: what core facilities can we add to accelerate cc-mode's parsing here? There's got to be some efficiency we can gain here.