From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Eli Zaretskii Newsgroups: gmane.emacs.devel Subject: Re: macOS metal rendering engine in mac port Date: Sat, 29 May 2021 23:03:52 +0300 Message-ID: <83zgwd489j.fsf@gnu.org> References: <83k0ni6pje.fsf@gnu.org> <83eedq6mvm.fsf@gnu.org> <83zgwd6gk3.fsf@gnu.org> <83bl8t5vu6.fsf@gnu.org> <83a6od5tqh.fsf@gnu.org> <834kel5qp3.fsf@gnu.org> Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="481"; mail-complaints-to="usenet@ciao.gmane.io" Cc: alan@idiocy.org, emacs-devel@gnu.org To: Aaron Jensen Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Sat May 29 22:05:35 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 1ln5DD-000ARx-9n for ged-emacs-devel@m.gmane-mx.org; Sat, 29 May 2021 22:05:35 +0200 Original-Received: from localhost ([::1]:52508 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ln5DB-0001a7-Hy for ged-emacs-devel@m.gmane-mx.org; Sat, 29 May 2021 16:05:33 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:48764) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ln5BT-0000qd-3l for emacs-devel@gnu.org; Sat, 29 May 2021 16:03:50 -0400 Original-Received: from fencepost.gnu.org ([2001:470:142:3::e]:51910) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ln5BQ-0005D6-Q2; Sat, 29 May 2021 16:03:44 -0400 Original-Received: from 84.94.185.95.cable.012.net.il ([84.94.185.95]:3154 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ln5BQ-0003NH-Dx; Sat, 29 May 2021 16:03:44 -0400 In-Reply-To: (message from Aaron Jensen on Sat, 29 May 2021 12:30:49 -0700) 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:270097 Archived-At: > From: Aaron Jensen > Date: Sat, 29 May 2021 12:30:49 -0700 > Cc: Alan Third , emacs-devel@gnu.org > > > OK, but still: assq_no_quit should be very fast. > > Sure, it's fast when you call it once, but it's not being called once. > It's being called enough times that it adds 10ms to every key press > when I have line numbers on and 1000+ faces. In a 64-bit optimized build, assq_no_quit's loop body is just 10 machine instructions. With 1200 faces, searching all of them once should take something like 500 nanoseconds, i.e. 0.5 microsecond. Does this match the times you see and the number of times the function is called? Also, please note that typing a single character redisplays just one line, the one where point is. That perhaps needs to merge 4 or 5 faces. So I'm not sure how come this could add 10ms to every keypress: you'd need 20,000 calls of assq_no_quit to account for 10ms. How come we call assq_no_quit 20k times when processing insertion of a single character? > > > My theme is set up like this: > > > https://github.com/aaronjensen/nano-emacs/blob/master/nano-theme.el > > > > I see a lot of :inherit there. I'm quite sure this exacerbates the > > problem, as each :inherit needs to recursively search for and access > > the attributes of the parent face. > > It only navigates the parent when the face matches, yes? Which face matches what? Emacs needs to access the parent face each time it merges the inheriting face with another one, because it needs to resolve all the attributes of each face it merges.