From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED.blaine.gmane.org!not-for-mail From: Robert Pluim Newsgroups: gmane.emacs.bugs Subject: bug#39133: 28.0.50; Emacs slowdown on special char Date: Tue, 14 Jan 2020 17:24:05 +0100 Message-ID: References: <83lfqa5aa2.fsf@gnu.org> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Injection-Info: blaine.gmane.org; posting-host="blaine.gmane.org:195.159.176.226"; logging-data="245011"; mail-complaints-to="usenet@blaine.gmane.org" Cc: Evgeny Zajcev , 39133@debbugs.gnu.org To: Eli Zaretskii Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Tue Jan 14 17:25:14 2020 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by blaine.gmane.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.89) (envelope-from ) id 1irP0E-0011EG-62 for geb-bug-gnu-emacs@m.gmane-mx.org; Tue, 14 Jan 2020 17:25:14 +0100 Original-Received: from localhost ([::1]:43066 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1irP0D-0008WD-0G for geb-bug-gnu-emacs@m.gmane-mx.org; Tue, 14 Jan 2020 11:25:13 -0500 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:57247) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1irP03-0008UX-Jd for bug-gnu-emacs@gnu.org; Tue, 14 Jan 2020 11:25:04 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1irP02-0000Fw-Co for bug-gnu-emacs@gnu.org; Tue, 14 Jan 2020 11:25:03 -0500 Original-Received: from debbugs.gnu.org ([209.51.188.43]:55718) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1irP02-0000Fg-9B for bug-gnu-emacs@gnu.org; Tue, 14 Jan 2020 11:25:02 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1irP02-0005zl-4m for bug-gnu-emacs@gnu.org; Tue, 14 Jan 2020 11:25:02 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Robert Pluim Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 14 Jan 2020 16:25:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 39133 X-GNU-PR-Package: emacs Original-Received: via spool by 39133-submit@debbugs.gnu.org id=B39133.157901905422971 (code B ref 39133); Tue, 14 Jan 2020 16:25:02 +0000 Original-Received: (at 39133) by debbugs.gnu.org; 14 Jan 2020 16:24:14 +0000 Original-Received: from localhost ([127.0.0.1]:33458 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1irOzF-0005yR-PS for submit@debbugs.gnu.org; Tue, 14 Jan 2020 11:24:14 -0500 Original-Received: from mail-wr1-f46.google.com ([209.85.221.46]:46204) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1irOzF-0005yC-0O for 39133@debbugs.gnu.org; Tue, 14 Jan 2020 11:24:13 -0500 Original-Received: by mail-wr1-f46.google.com with SMTP id z7so12743640wrl.13 for <39133@debbugs.gnu.org>; Tue, 14 Jan 2020 08:24:12 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:references:date:in-reply-to:message-id :mime-version:content-transfer-encoding; bh=wvb7F2prjRaAUSkxxWH1A24fsF07KXsSWyOt7q5xdkQ=; b=Zhjmm90gruWNvv7gwwPfeJ8xD2Q6Ye44KCeMbQXTvkTMM7mvtlnoPxan8pmc7riaFg cIVxwj6DwKnf714ZDQuhajvYbOhkODgOJWC1bdYe/2qM4P6BKVXKDXU2MKCwUHy5wui5 cAe/6XBX1fVu4ZqBoh7tLQrJv1inY0Z5T5UicYyWC3ZZ5bO78ZkY2aLsgDhcB8nT1PK7 LMuJOo6TmRYFKvLZHz185wM4GdrhrKe2Lj/HS8Ug7cpohNOYjxl/IQjHR9pnXYlMlUAw dK/I6iMMxPFiEEv3CMG5LgSYhXLqTlsVstsXQltIWY3I7WFBpet3e6ksOuhijSr8P0es Rk2A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:references:date:in-reply-to :message-id:mime-version:content-transfer-encoding; bh=wvb7F2prjRaAUSkxxWH1A24fsF07KXsSWyOt7q5xdkQ=; b=dUY5LDM5tUaG2uoi4ahz8vqHZrwGuEywTCEjnfarL/5jHBI85iEZIf9q1q81EiRtX2 Rc4+0iwwYwIzBvi/6BfI8qHEkeUNMNJJQ3yvsVtN7oGB28RXhbjEkTG6iwn0fWGl7C2b 6oB87pR69iN4HaXOn7tQNwk0dk1pF0XpngHZ0D3CIY4RqDyd1s0EoIMsVTQPVD6A9Pxn cdhMmT5KvN2Gxg95i/wO6GFKLrf2nIpY+HlvLAOP6J5kS4DZZyJLJGNpKoPvZz6ANpl4 rlLwJ/4X4K+XEdwk8YwQAayYK6EU75SJHpol5pvD19wWYDQY5qllaqkhhj8/4hupCXfl iFeQ== X-Gm-Message-State: APjAAAUALi9AJY6wEMSg9NMHmUmBjkEEYfqo8lMI7+jRKlnKKpuzB7BE wM3ofh49wKWF1KsOl0LrU5hnDjifJqI= X-Google-Smtp-Source: APXvYqzzOrGlg1c+UgM7FQEBWPyNLpEkemF323LNTfqFOSj2v8DQ8JDiaJn9MpxCE9bfEHtTEhrizg== X-Received: by 2002:a05:6000:1047:: with SMTP id c7mr26692873wrx.341.1579019046513; Tue, 14 Jan 2020 08:24:06 -0800 (PST) Original-Received: from rpluim-mac ([149.5.228.1]) by smtp.gmail.com with ESMTPSA id u8sm19243036wmm.15.2020.01.14.08.24.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 14 Jan 2020 08:24:05 -0800 (PST) In-Reply-To: <83lfqa5aa2.fsf@gnu.org> (Eli Zaretskii's message of "Tue, 14 Jan 2020 17:26:45 +0200") X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.51.188.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: "bug-gnu-emacs" Xref: news.gmane.org gmane.emacs.bugs:174575 Archived-At: >>>>> On Tue, 14 Jan 2020 17:26:45 +0200, Eli Zaretskii said: >> From: Evgeny Zajcev >> Date: Tue, 14 Jan 2020 16:21:23 +0300 >>=20 >> I'm experiencing extreme Emacs slowdown when VARIATION SELECTOR-16 c= har >> is used somewhere in Emacs buffer. For example, I just executed: >>=20 >> (insert "a\xfe0f") >>=20 >> in *scratch* buffer. Moving cursor (when this char is visible) beco= me >> unbearable. Here is the results of cpu profiling: >>=20 >> - command-execute 77= 6 62% >> - call-interactively 776= 62% >> - funcall-interactively 675 = 54% >> - previous-line 476 = 38% >> - line-move 476 3= 8% >> - line-move-1 476 38% >> + vertical-motion 225 18% Eli> Does it help to set inhibit-compacting-font-caches non-nil? >> As I remember I did not experienced something similar in Emacs 26/27 Eli> I don't think Emacs < 27 supported variation selectors, did it? It=CA=BCs coming from the caching in ftcrfont_glyph_extents: row =3D glyph / METRICS_NCOLS_PER_ROW; <=3D=3D glyph =3D=3D 0xFFFFFFFF, r= ow -> 0x1FFFFFF col =3D glyph % METRICS_NCOLS_PER_ROW; if (row >=3D ftcrfont_info->metrics_nrows) { ftcrfont_info->metrics =3D xrealloc (ftcrfont_info->metrics, sizeof (struct font_metrics *) * (row + 1)); memset (ftcrfont_info->metrics + ftcrfont_info->metrics_nrows, 0, (sizeof (struct font_metrics *) * (row + 1 - ftcrfont_info->metrics_nrows))); ftcrfont_info->metrics_nrows =3D row + 1; <=3D=3D=3D we=CA=BCre updat= ing metrics_nrows, lets look in ftfont.h } ftfont.h: #ifdef USE_CAIRO cairo_scaled_font_t *cr_scaled_font; /* Scale factor from the bitmap strike metrics in 1/64 pixels, used as the hb_position_t value in HarfBuzz, to those in (scaled) pixels. The value is 0 for scalable fonts. */ double bitmap_position_unit; /* Font metrics cache. */ struct font_metrics **metrics; short metrics_nrows; ^^^^^ oops! Now we end up calling xrealloc every time we enter ftctfont_glyph_extents for that glyph. Of course, I don=CA=BCt think glyph should be 0xFFFFFFFF, but that=CA=BCs a different problem. Robert