[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#52593: 28.0.90; (thing-at-point thing) has so much overhead since co
From: |
Eli Zaretskii |
Subject: |
bug#52593: 28.0.90; (thing-at-point thing) has so much overhead since commit 7db376e560448e61485ba054def8c82b21f33d6a |
Date: |
Sat, 18 Dec 2021 09:48:40 +0200 |
> From: Kang Niu <isgniuk@gmail.com>
> Date: Sat, 18 Dec 2021 13:59:24 +0800
>
> 1. emacs -q
> 2. Load a elpa package, symbol-overlay, which has
> symbol-overlay-post-command in post-command-hook
> 3. Open a file buffer, enable symbol-overlay-mode
> 4. Hold C-n, symbol-overlay-post-command will call thing-at-point frequently
> and the cpu profiler-report is as
> follows
>
> Samples % Function
> 29500 93% - symbol-overlay-post-command
> 29497 93% - if
> 29480 93% - string=
> 29474 93% - symbol-overlay-get-symbol
> 29471 93% - or
> 29466 93% - thing-at-point
> 29447 93% - save-restriction
> 29129 92% narrow-to-region
> 309 0% + let
> 13 0% + symbol-overlay-remove-temp
> 1388 4% + command-execute
> 269 0% + redisplay_internal (C function)
> 216 0% + ...
> 191 0% + timer-event-handler
> 20 0% + internal-timer-start-idle
> 15 0% jit-lock--antiblink-post-command
> 11 0% + undo-auto--add-boundary
> 4 0% + clear-minibuffer-message
>
> The cpu profiler-report of the same process with thingatpt.el before commit
> 7db376e560448e61485ba054def8c82b21f33d6a is as follows:
>
> Samples % Function
> 3859 42% + redisplay_internal (C function)
> 2895 31% + command-execute
> 892 9% + ...
> 689 7% + timer-event-handler
> 618 6% - symbol-overlay-post-command
> 611 6% - if
> 576 6% - string=
> 563 6% - symbol-overlay-get-symbol
> 563 6% - or
> 557 6% - thing-at-point
> 557 6% - let
> 545 5% - cond
> 510 5% - let
> 493 5% - bounds-of-thing-at-point
> 493 5% - if
> 478 5% - let
> 471 5% - condition-case
> 471 5% - progn
> 451 4% - save-excursion
> 261 2% + funcall
> 182 2% + let
> 4 0% get
Thanks. The NEWS entry about the change you mention says the feature
of respecting fields in thing-at-point is only active when the buffer
uses fields.
The implementation uses
(save-restriction
(narrow-to-region (field-beginning) (field-end))
AFAICT, field-beginning returns BOB and field-end returns EOB, when
there are no fields in the buffer. Looking at the code of
narrow-to-region, I see that it basically does very little when called
with BOB and EOB as its arguments. So it is strange that
narrow-to-region takes such a large percent of CPU time in the
profile. If you make narrow-to-region return immediately when called
with BOB and EOB, does the profile change in any way?
- bug#52593: 28.0.90; (thing-at-point thing) has so much overhead since commit 7db376e560448e61485ba054def8c82b21f33d6a, Kang Niu, 2021/12/18
- bug#52593: 28.0.90; (thing-at-point thing) has so much overhead since commit 7db376e560448e61485ba054def8c82b21f33d6a,
Eli Zaretskii <=
- Message not available
- bug#52593: 28.0.90; (thing-at-point thing) has so much overhead since commit 7db376e560448e61485ba054def8c82b21f33d6a, Eli Zaretskii, 2021/12/19
- bug#52593: 28.0.90; (thing-at-point thing) has so much overhead since commit 7db376e560448e61485ba054def8c82b21f33d6a, Lars Ingebrigtsen, 2021/12/19
- bug#52593: 28.0.90; (thing-at-point thing) has so much overhead since commit 7db376e560448e61485ba054def8c82b21f33d6a, Kang Niu, 2021/12/19
- bug#52593: 28.0.90; (thing-at-point thing) has so much overhead since commit 7db376e560448e61485ba054def8c82b21f33d6a, Lars Ingebrigtsen, 2021/12/19
- bug#52593: 28.0.90; (thing-at-point thing) has so much overhead since commit 7db376e560448e61485ba054def8c82b21f33d6a, Kang Niu, 2021/12/19
- bug#52593: 28.0.90; (thing-at-point thing) has so much overhead since commit 7db376e560448e61485ba054def8c82b21f33d6a, Kang Niu, 2021/12/19
- bug#52593: 28.0.90; (thing-at-point thing) has so much overhead since commit 7db376e560448e61485ba054def8c82b21f33d6a, Lars Ingebrigtsen, 2021/12/19
- bug#52593: 28.0.90; (thing-at-point thing) has so much overhead since commit 7db376e560448e61485ba054def8c82b21f33d6a, Lars Ingebrigtsen, 2021/12/19
- bug#52593: 28.0.90; (thing-at-point thing) has so much overhead since commit 7db376e560448e61485ba054def8c82b21f33d6a, Lars Ingebrigtsen, 2021/12/19
- Message not available
- bug#52593: 28.0.90; (thing-at-point thing) has so much overhead since commit 7db376e560448e61485ba054def8c82b21f33d6a, Lars Ingebrigtsen, 2021/12/20