unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#53606: 29.0.50; Very slow Customize buffer for bibtex-biblatex-entry-alist
@ 2022-01-28 15:03 Lars Ingebrigtsen
  2023-09-09 22:23 ` Mauro Aranda
  0 siblings, 1 reply; 12+ messages in thread
From: Lars Ingebrigtsen @ 2022-01-28 15:03 UTC (permalink / raw)
  To: 53606


`M-x customize-option RET bibtex-biblatex-entry-alist RET'

takes a very long time -- more than 20 seconds on this laptop.  It's a
long alist, but it shouldn't take that long.


In GNU Emacs 29.0.50 (build 9, x86_64-pc-linux-gnu, GTK+ Version 3.24.31, cairo version 1.16.0)
 of 2022-01-24 built on giant
Repository revision: 77b72f77b3a5d13fc6e71746dee2cf68305057e2
Repository branch: master
Windowing system distributor 'The X.Org Foundation', version 11.0.12014000
System Description: Debian GNU/Linux bookworm/sid

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no






^ permalink raw reply	[flat|nested] 12+ messages in thread

* bug#53606: 29.0.50; Very slow Customize buffer for bibtex-biblatex-entry-alist
  2022-01-28 15:03 bug#53606: 29.0.50; Very slow Customize buffer for bibtex-biblatex-entry-alist Lars Ingebrigtsen
@ 2023-09-09 22:23 ` Mauro Aranda
  2023-09-09 22:51   ` Mauro Aranda
  0 siblings, 1 reply; 12+ messages in thread
From: Mauro Aranda @ 2023-09-09 22:23 UTC (permalink / raw)
  To: 53606; +Cc: Lars Ingebrigtsen

Lars Ingebrigtsen <larsi@gnus.org> writes:

 > `M-x customize-option RET bibtex-biblatex-entry-alist RET'
 >
 > takes a very long time -- more than 20 seconds on this laptop.  It's a
 > long alist, but it shouldn't take that long.

I don't have any concrete ideas on how to speed it up on the Widget
library side.  But looking at the defcustom for
bibtex-biblatex-entry-alist I noted two things that can help to create
the Customize buffer more quickly:

1) It uses a custom widget derived from the lazy widget, but doesn't
provide a :tag.  That makes it look awful and giving it a proper :tag 
reduced
the buffer creation time somewhat in my testings.

2) More importantly, the bibtex-entry-alist widget looks like this:
(define-widget 'bibtex-entry-alist 'lazy
   "Format of `bibtex-BibTeX-entry-alist' and friends."
   :type '(repeat (group (string :tag "Entry type")
                         (string :tag "Documentation")
                         (repeat :tag "Required fields"
                                 (group (string :tag "Field")
                                        (option (choice :tag "Comment" 
:value nil
                                                        (const nil) string))
                                        (option (choice :tag "Init" 
:value nil
                                                        (const nil) 
string function))
                                        (option (choice :tag 
"Alternative" :value nil
                                                        (const nil) 
integer))))
                         (repeat :tag "Crossref fields"
                                 (group (string :tag "Field")
                                        (option (choice :tag "Comment" 
:value nil
                                                        (const nil) string))
                                        (option (choice :tag "Init" 
:value nil
                                                        (const nil) 
string function))
                                        (option (choice :tag 
"Alternative" :value nil
                                                        (const nil) 
integer))))
                         (repeat :tag "Optional fields"
                                 (group (string :tag "Field")
                                        (option (choice :tag "Comment" 
:value nil
                                                        (const nil) string))
                                        (option (choice :tag "Init" 
:value nil
                                                        (const nil) 
string function))
                                        (option (choice :tag 
"Alternative" :value nil
                                                        (const nil) 
integer)))))))

Why combine option and choice? That's redundant, specially since the
choice widget allows for the nil value.  Removing the `option's and just
leaving the `choice's should be equivalent in functionality, and in my
testings reduced the creation time to the half.

I ran customize-option 5 times and got:

With `option':
(172.526219636 69 6.120602505999997)

Without `option':
(86.260726994 42 3.5430049540000113)

This is without native compilation.

Based on the above results and since there's no lost in functionality, I
propose to make the changes to the bibtex-entry-alist widget. It is a
net gain in speed, and it might make the wait bearable.






^ permalink raw reply	[flat|nested] 12+ messages in thread

* bug#53606: 29.0.50; Very slow Customize buffer for bibtex-biblatex-entry-alist
  2023-09-09 22:23 ` Mauro Aranda
@ 2023-09-09 22:51   ` Mauro Aranda
  2023-09-10  5:01     ` Eli Zaretskii
  0 siblings, 1 reply; 12+ messages in thread
From: Mauro Aranda @ 2023-09-09 22:51 UTC (permalink / raw)
  To: 53606

On 9/9/23 19:23, Mauro Aranda wrote:
 > Based on the above results and since there's no lost in functionality, I
 > propose to make the changes to the bibtex-entry-alist widget. It is a
 > net gain in speed, and it might make the wait bearable.

Hmm, spoke too soon :-(.  Using option is not as redundant as I
thought it was.  Using `choice's alone would set all the values that
are nil in the group like so: ("author" nil nil nil), while using it
with `option' allows for setting it as: ("author")

So that's something to consider.






^ permalink raw reply	[flat|nested] 12+ messages in thread

* bug#53606: 29.0.50; Very slow Customize buffer for bibtex-biblatex-entry-alist
  2023-09-09 22:51   ` Mauro Aranda
@ 2023-09-10  5:01     ` Eli Zaretskii
  2023-09-10  9:49       ` Mauro Aranda
  0 siblings, 1 reply; 12+ messages in thread
From: Eli Zaretskii @ 2023-09-10  5:01 UTC (permalink / raw)
  To: Mauro Aranda; +Cc: 53606

> Date: Sat, 9 Sep 2023 19:51:23 -0300
> From: Mauro Aranda <maurooaranda@gmail.com>
> 
> On 9/9/23 19:23, Mauro Aranda wrote:
>  > Based on the above results and since there's no lost in functionality, I
>  > propose to make the changes to the bibtex-entry-alist widget. It is a
>  > net gain in speed, and it might make the wait bearable.
> 
> Hmm, spoke too soon :-(.  Using option is not as redundant as I
> thought it was.  Using `choice's alone would set all the values that
> are nil in the group like so: ("author" nil nil nil), while using it
> with `option' allows for setting it as: ("author")
> 
> So that's something to consider.

Thanks for looking into this issue.

Could you please profile this slow operation and post the completely
unfolded profile?  I think we should try to understand what exactly
takes so much time in this case.





^ permalink raw reply	[flat|nested] 12+ messages in thread

* bug#53606: 29.0.50; Very slow Customize buffer for bibtex-biblatex-entry-alist
  2023-09-10  5:01     ` Eli Zaretskii
@ 2023-09-10  9:49       ` Mauro Aranda
  2023-09-10 10:43         ` Eli Zaretskii
  0 siblings, 1 reply; 12+ messages in thread
From: Mauro Aranda @ 2023-09-10  9:49 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 53606

[-- Attachment #1: Type: text/plain, Size: 42644 bytes --]

On 10/9/23 02:01, Eli Zaretskii wrote:
 >> Date: Sat, 9 Sep 2023 19:51:23 -0300
 >> From: Mauro Aranda <maurooaranda@gmail.com>
 >>
 >> On 9/9/23 19:23, Mauro Aranda wrote:
 >>  > Based on the above results and since there's no lost in 
functionality, I
 >>  > propose to make the changes to the bibtex-entry-alist widget. It is a
 >>  > net gain in speed, and it might make the wait bearable.
 >>
 >> Hmm, spoke too soon :-(.  Using option is not as redundant as I
 >> thought it was.  Using `choice's alone would set all the values that
 >> are nil in the group like so: ("author" nil nil nil), while using it
 >> with `option' allows for setting it as: ("author")
 >>
 >> So that's something to consider.
 >
 > Thanks for looking into this issue.
 >
 > Could you please profile this slow operation and post the completely
 > unfolded profile?  I think we should try to understand what exactly
 > takes so much time in this case.

Here it is.  I also attach the result of C-x C-w in the report buffer,
just in case.

        25262  97%  - call-interactively
        25262  97%   - funcall-interactively
        25262  97%    - eval-last-sexp
        25262  97%     - elisp--eval-last-sexp
        25262  97%      - eval
        25262  97%       - progn
        25262  97%        - progn
        25258  97%         - customize-option
        25246  97%          - custom-buffer-create
        25246  97%           - custom-buffer-create-internal
        24870  96%            - mapcar
        24854  95%             - #<compiled -0x17c1d5ffa7b0b3ca>
        24854  95%              - widget-create
        24854  95%               - widget-apply
        24854  95%                - widget-default-create
        24854  95%                 - widget-apply
        24854  95%                  - custom-variable-value-create
        24842  95%                   - widget-create-child-and-convert
        24842  95%                    - widget-apply
        24842  95%                     - widget-default-create
        24838  95%                      - widget-apply
        24834  95%                       - widget-type-value-create
        24834  95%                        - widget-create-child-value
        24834  95%                         - widget-apply
        24834  95%                          - widget-default-create
        24834  95%                           - widget-apply
        24834  95%                            - 
widget-editable-list-value-create
        24834  95%                             - 
widget-editable-list-entry-create
        24690  95%                              - widget-create-child-value
        24690  95%                               - widget-apply
        24690  95%                                - widget-default-create
        24682  95%                                 - widget-apply
        24682  95%                                  - 
widget-group-value-create
        24670  95%                                   - 
widget-create-child-value
        24670  95%                                    - widget-apply
        24670  95%                                     - 
widget-default-create
        24334  93%                                      - widget-apply
        15974  61%                                       - 
widget-checklist-value-create
        15970  61%                                        - 
widget-checklist-add-item
         7107  27%                                         - 
widget-create-child
         7099  27%                                          - widget-apply
         7099  27%                                           - 
widget-default-create
         4187  16% delete-char
         2120   8%                                            - widget-apply
         2120   8%                                             - 
widget-choice-value-create
         2112   8%                                              - 
widget-create-child-value
         2108   8%                                               - 
widget-apply
         2108   8%                                                - 
widget-default-create
         1428 5%                                                   
delete-char
          308 1%                                                   princ
            4 0% re-search-forward
            4   0% widget-put
            4   0%                                              - 
widget-inline-p
            4   0% widget-get
           12   0%                                            - 
substitute-command-keys
            4   0%                                             - 
generate-new-buffer
            4   0% get-buffer-create
            4   0% make-closure
           12   0%                                            - 
widget-specify-button
           12   0%                                             - 
widget-apply
            8   0%                                              - 
widget-default-button-face-get
            4   0% widget-get
            4   0%                                               - 
widget-apply
            4   0%                                                - 
widget-default-button-face-get
            4   0% - widget-apply
            4   0% - widget-default-button-face-get
            4 0%                                                   - 
widget-apply
            4 0%                                                    - 
widget-default-button-face-get
            4 0%                                                     - 
widget-apply
            4 0%                                                      - 
widget-default-button-face-get
            4 0%                                                       - 
widget-apply
            4 0%                                                        
- widget-default-button-face-get
            4 0%                                                         
- widget-apply
            4 
0%                                                          - 
widget-default-button-face-get
            4 
0%                                                           - widget-apply
            4 
0%                                                            - 
widget-default-button-face-get
            4 0% widget-get
            8   0% re-search-forward
            4   0% undo-auto--undoable-change
            4   0% widget-get
            4   0% widget-put
            4   0% widget-get-indirect
            4   0%                                          - widget-copy
            4   0%                                           - widget-apply
            4   0%                                            - 
widget-types-copy
            4   0%                                             - mapcar
            4   0%                                              - 
widget-copy
            4   0% widget-apply
         4027  15%                                         - apply
         4027  15%                                          - 
widget-create-child-and-convert
         4007  15%                                           - widget-apply
         4007  15%                                            - 
widget-default-create
         2712  10% delete-char
          743   2%                                             - 
widget-apply
          739   2%                                              - 
widget-toggle-value-create
          492   1%                                               - 
widget-image-insert
          492   1%                                                - 
insert-image
            4   0% - add-text-properties
            4 0% undo-auto--undoable-change
          207   0%                                               - 
widget-image-find
          199   0%                                                - 
find-image
          152   0% - apply
          152   0% - create-image
          148 0%                                                   - 
image-type
          148 0%                                                    - 
image-type-from-file-header
           68 0%                                                     - 
insert-file-contents-literally
           64 0%                                                      - 
insert-file-contents
            4 0%                                                       - 
after-insert-file-set-coding
            4 0% find-new-buffer-file-coding-system
           60 0% file-readable-p
            4 0% image-type-from-buffer
            4 0%                                                     - 
#<compiled -0x1c8e7723716d5d9f>
            4 0% kill-buffer
            4 0% set-buffer-multibyte
            4 0% image-compute-scaling-factor
           43   0% - image-search-load-path
           31 0% file-readable-p
            8 0% expand-file-name
            4 0% image--set-property
           28   0%                                               - 
substitute-command-keys
           12   0%                                                - 
#<compiled -0x1c8e7723a0f1519f>
           12   0% - kill-buffer
            8   0% - replace-buffer-in-windows
            4 0% window-normalize-buffer
            4 0%                                                   - 
unrecord-window-buffer
            4 0%                                                    - 
assq-delete-all
            4 0% assoc-delete-all
            8   0%                                                - 
generate-new-buffer
            8 0% get-buffer-create
            8   0% widget-get
            4   0%                                               - 
widget-value
            4   0% widget-apply
           24   0%                                             - 
widget-specify-button
            8   0% widget-get
            4   0% make-overlay
            4   0% overlay-put
            4   0% functionp
           20   0% re-search-forward
            4   0%                                             - 
widget-clear-undo
            4   0% buffer-disable-undo
           16   0%                                           - apply
           16   0%                                            - 
widget-convert
           12   0%                                             - 
widget-value-convert-widget
           12   0% widget-get
         2492   9%                                         - 
widget-create-child-value
         2492   9%                                          - widget-apply
         2492   9%                                           - 
widget-default-create
         1300   5% delete-char
          956   3%                                            - widget-apply
          956   3%                                             - 
widget-choice-value-create
          956   3%                                              - 
widget-create-child-value
          956   3%                                               - 
widget-apply
          948   3%                                                - 
widget-default-create
          628 2%                                                   
delete-char
           80   0% - widget-apply
           80 0% widget-field-value-create
           52 0%                                                   princ
            8 0% re-search-forward
            8   0%                                                - 
#<compiled 0x66e1b40451af649>
            8   0% - widget-sexp-value-to-internal
            4 0%                                                    
string-match
            4   0% - pp-to-string
            4 0%                                                   - 
#<compiled -0x1c8e7722b2c0b59f>
            4 0% kill-buffer
           16   0%                                            - 
substitute-command-keys
            8   0%                                             - 
#<compiled -0x1c8e77397563719f>
            8   0%                                              - 
kill-buffer
            8   0%                                               - 
replace-buffer-in-windows
            8   0%                                                - 
unrecord-window-buffer
            4 0% window-prev-buffers
            4   0% - window-normalize-window
            4 0% window-live-p
            4   0%                                             - 
generate-new-buffer
            4   0% get-buffer-create
            8   0%                                            - 
widget-specify-button
            4   0% widget-get
            4   0%                                             - 
widget-apply
            4   0%                                              - 
widget-default-mouse-face-get
            4   0% widget-get
            4   0% re-search-forward
            4   0%                                            - 
widget-clear-undo
            4   0% buffer-disable-undo
         1864   7% delete-char
            8   0% re-search-forward
            4   0%                                         - widget-apply
            4   0%                                          - 
widget-default-deactivate
            4   0%                                           - 
widget-specify-inactive
            4   0% make-overlay
            4   0% widget--should-indent-p
            4   0% widget-get
         7848  30%                                       - 
widget-editable-list-value-create
         7828  30%                                        - 
widget-editable-list-entry-create
         4112  15%                                         - 
widget-create-child-value
         4088  15%                                          - widget-apply
         4088  15%                                           - 
widget-default-create
         3576  13%                                            - widget-apply
         3576  13%                                             - 
widget-group-value-create
         2864  11%                                              - 
widget-create-child-value
         2848  10%                                               - 
widget-apply
         2840  10%                                                - 
widget-default-create
         2084 8%                                                   
delete-char
            8 0% re-search-forward
            8   0%                                               - 
widget-copy
            4   0% widget-apply
            4   0% widget-get
            4   0% widget-put
          696   2% insert-char
            8   0%                                              - 
widget-match-inline
            4   0%                                               - 
widget-inline-p
            4   0% widget-get
            4   0%                                               - 
widget-apply
            4   0%                                                - 
widget-checklist-match-inline
            4   0% - widget-match-inline
            4   0% - widget-inline-p
            4 0%                                                   - 
widget-apply
            4 0% widget-choice-inline-bubbles-p
            4   0% widget--should-indent-p
          348   1% delete-char
            4   0%                                            - 
undo-auto--undoable-change
            4   0% undo-auto--boundary-ensure-timer
           20   0%                                          - widget-copy
           20   0%                                           - widget-apply
           20   0%                                            - 
widget-types-copy
           20   0%                                             - mapcar
           20   0%                                              - 
widget-copy
           20   0%                                               - 
widget-apply
           12   0%                                                - 
widget-types-copy
           12   0% - mapcar
           12   0% - widget-copy
           12 0%                                                   - 
widget-apply
           12 0%                                                    - 
widget-types-copy
           12 0%                                                     - 
mapcar
           12 0%                                                      - 
widget-copy
           12 0%                                                       - 
widget-apply
            8 0%                                                        
- widget-types-copy
            8 0%                                                         
- mapcar
            8 
0%                                                          - widget-copy
            8 0% widget-apply
            4   0% widget-get
         2472   9%                                         - apply
         2472   9%                                          - 
widget-create-child-and-convert
         2468   9%                                           - widget-apply
         2468   9%                                            - 
widget-default-create
         1784   6% delete-char
          336   1%                                             - 
widget-apply
          336   1%                                              - 
widget-push-button-value-create
            8   0%                                               - 
substitute-command-keys
            4   0% buffer-string
           12   0%                                             - 
widget-specify-button
            8   0%                                              - 
widget-apply
            8   0%                                               - 
widget-default-mouse-face-get
            8   0%                                                - 
widget-apply
            8   0% - widget-default-mouse-face-get
            8   0% - widget-apply
            4 0%                                                   - 
widget-default-mouse-face-get
            4 0%                                                    - 
widget-apply
            4 0%                                                     - 
widget-default-mouse-face-get
            4 0% widget-get
            4   0% widget-get
            4   0% re-search-forward
            4   0% widget-get
          932   3% delete-char
          152   0% insert-char
           16   0%                                        - 
widget-match-inline
           16   0%                                         - widget-apply
            8   0%                                          - 
widget-group-match
            8   0%                                           - 
widget-group-match-inline
            4   0%                                            - 
widget-match-inline
            4   0% widget-apply
            8   0%                                          - 
widget-editable-list-match
            8   0%                                           - 
widget-editable-list-match-inline
            8   0%                                            - 
widget-match-inline
            8   0%                                             - 
widget-apply
            8   0%                                              - 
widget-group-match
            8   0%                                               - 
widget-group-match-inline
            8   0%                                                - 
widget-match-inline
            8   0% - widget-apply
            8   0% - widget-checklist-match-inline
            4 0%                                                   - 
widget-match-inline
            4 0%                                                    - 
widget-inline-p
            4 0%                                                     - 
widget-apply
            4 0%                                                      - 
widget-choice-inline-bubbles-p
            4 0% widget-get
            4 0%                                                   - 
widget-checklist-match-up
            4 0%                                                    - 
widget-match-inline
            4 0%                                                     - 
widget-apply
            4 0%                                                      - 
widget-choice-match
            4 0%                                                       - 
widget-apply
            4 0% widget-restricted-sexp-match
          388   1% widget-field-value-create
          124   0%                                       - 
widget-editable-list-format-handler
          116   0%                                        - apply
          116   0%                                         - 
widget-create-child-and-convert
          116   0%                                          - widget-apply
          116   0%                                           - 
widget-default-create
           96   0% delete-char
           20   0%                                            - widget-apply
           20   0% widget-push-button-value-create
            8   0% insert-char
          264   1% delete-char
            4   0%                                      - 
widget-specify-sample
            4   0% widget-apply
            4   0%                                      - 
undo-auto--undoable-change
            4   0% undo-auto--boundary-ensure-timer
            4   0%                                      - 
substitute-command-keys
            4   0%                                       - #<compiled 
-0x1c8e77201f7fa59f>
            4   0%                                        - kill-buffer
            4   0%                                         - 
replace-buffer-in-windows
            4   0%                                          - 
unrecord-window-buffer
            4   0% window-prev-buffers
           12   0%                                     insert-char
            4   0%                                   delete-char
           92   0%                              - apply
           92   0%                               - 
widget-create-child-and-convert
           92   0%                                - widget-apply
           92   0%                                 - widget-default-create
           64   0%                                    delete-char
           16   0%                                  - widget-apply
           16   0% widget-push-button-value-create
           40   0%                                delete-char
            4   0% custom-magic-value-create
            8   0%                   - 
widget-add-documentation-string-button
            8   0%                    - apply
            8   0%                     - widget-create-child-and-convert
            8   0%                      - widget-apply
            8   0%                       - widget-default-create
            4   0%                          delete-char
            4   0%                        - widget-apply
            4   0% widget-documentation-string-value-create
            4   0%                   - custom-add-parent-links
            4   0%                    - mapatoms
            4   0%                     - #<compiled 0x2608cc6bf83bc8>
            4   0%                      - widget-create-child-and-convert
            4   0%                       - widget-apply
            4   0%                        - widget-default-create
            4   0%                           delete-char
           16   0%             - #<compiled -0xf2f5b00c7bd4f2d>
           16   0%              - widget-apply
           16   0%               - widget-default-value-inline
           16   0%                - widget-value
           16   0%                 - widget-apply
           16   0%                  - widget-editable-list-value-get
           16   0%                   - mapcar
           16   0%                    - #<compiled -0xf2f5b00c7bd4f2d>
           16   0%                     - widget-apply
           16   0%                      - widget-default-value-inline
           16   0%                       - widget-value
           16   0%                        - widget-apply
            8   0%                         - widget-editable-list-value-get
            8   0%                          - mapcar
            8   0%                           - #<compiled 
-0xf2f5b00c7bd4f2d>
            8   0%                            - widget-apply
            8   0%                             - widget-default-value-inline
            8   0%                              - widget-value
            8   0%                               - widget-apply
            8   0%                                - 
widget-editable-list-value-get
            8   0%                                 - mapcar
            4   0%                                  - #<compiled 
-0xf2f5b00c7bd4f2d>
            4   0%                                   - widget-apply
            4   0%                                    - 
widget-default-value-inline
            4   0%                                       widget-get
            8   0%                         - widget-checklist-value-get
            4   0%                          - widget-apply
            4   0%                           - widget-child-value-inline
            4   0%                            - widget-apply
            4   0%                             - widget-default-value-inline
            4   0%                              - widget-value
            4   0%                                 widget-apply
            4   0%                          - widget-value
            4   0%                             widget-apply
          368   1%              widget-setup
            8   0%            - mapc
            8   0%             - custom-magic-reset
            8   0%              - widget-value-set
            8   0%               - widget-apply
            8   0%                - widget-default-value-set
            8   0%                 - widget-apply
            4   0%                  - widget-default-delete
            4   0%                   - widget-apply
            4   0%                    - widget-children-value-delete
            4   0%                     - mapc
            4   0%                      - widget-delete
            4   0%                       - widget-apply
            4   0%                          widget-default-delete
            4   0%                  - widget-default-create
            4   0%                   - widget-apply
            4   0%                    - custom-magic-value-create
            4   0%                     - widget-create-child-and-convert
            4   0%                      - widget-apply
            4   0%                       - widget-default-create
            4   0%                          delete-char
            8   0%          - byte-code
            8   0%           - require
            8   0%            - load-with-code-conversion
            8   0%             - eval-buffer
            8   0%                read
            4   0%            read
            4   0%         - profiler-stop
            4   0%            profiler-cpu-log
          635   2%   Automatic GC
            4   0% - ...
            4   0%  - widget-types-convert-widget
            4   0%   - mapcar
            4   0%    - widget-convert
            4   0%     - widget-types-convert-widget
            4   0%      - mapcar
            4   0%       - widget-convert
            4   0%        - widget-types-convert-widget
            4   0%         - mapcar
            4   0%          - widget-convert
            4   0%           - widget-types-convert-widget
            4   0%            - mapcar
            4   0%             - widget-convert
            4   0%              - widget-apply
            4   0%               - #<compiled 0x66e1b40451af649>
            4   0%                - widget-sexp-value-to-internal
            4   0%                   pp-to-string


[-- Attachment #2: profiler-data --]
[-- Type: text/plain, Size: 50567 bytes --]


[profiler-profile "28.1" cpu #s(hash-table size 217 test equal rehash-size 1.5 rehash-threshold 0.8125 data ([read eval-buffer load-with-code-conversion require byte-code customize-option progn progn eval elisp--eval-last-sexp eval-last-sexp funcall-interactively call-interactively command-execute nil nil] 8 [pp-to-string widget-sexp-value-to-internal "#<compiled 0x66e1b40451af649>" widget-apply widget-convert mapcar widget-types-convert-widget widget-convert mapcar widget-types-convert-widget widget-convert mapcar widget-types-convert-widget widget-convert mapcar widget-types-convert-widget] 4 [read customize-option progn progn eval elisp--eval-last-sexp eval-last-sexp funcall-interactively call-interactively command-execute nil nil nil nil nil nil] 4 [widget-default-create widget-apply widget-create-child-and-convert custom-variable-value-create widget-apply widget-default-create widget-apply widget-create "#<compiled -0x17c1d5ffa7b0b3ca>" mapcar custom-buffer-create-internal custom-buffer-create customize-option progn progn eval] 4 [re-search-forward widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create] 8 [file-readable-p image-type-from-file-header image-type create-image apply find-image widget-image-find widget-toggle-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create widget-apply] 60 [re-search-forward widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create] 8 [delete-char widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create] 2084 [widget-apply widget-default-create widget-apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value] 4 [widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply] 460 [widget-choice-value-create widget-apply widget-default-create widget-apply widget-create-child widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value] 4 [delete-char widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create] 348 [delete-char widget-default-create widget-apply widget-create-child-and-convert apply widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value] 1784 [insert-file-contents insert-file-contents-literally image-type-from-file-header image-type create-image apply find-image widget-image-find widget-toggle-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create] 60 [image-type-from-buffer image-type-from-file-header image-type create-image apply find-image widget-image-find widget-toggle-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create widget-apply] 4 [delete-char widget-default-create widget-apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value] 2712 [widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply] 748 [widget-default-create widget-apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create] 504 [file-readable-p image-search-load-path find-image widget-image-find widget-toggle-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value] 31 [delete-char widget-default-create widget-apply widget-create-child-value widget-choice-value-create widget-apply widget-default-create widget-apply widget-create-child widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create] 1428 [widget-default-create widget-apply widget-create-child-and-convert apply widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create] 332 [substitute-command-keys widget-default-create widget-apply widget-create-child widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create] 4 [widget-default-create widget-apply widget-create-child widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create] 744 [insert-char widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply] 696 [delete-char widget-default-create widget-apply widget-create-child widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create] 4187 [delete-char widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create] 1864 [widget-image-find widget-toggle-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create] 8 [widget-get widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create] 4 [widget-default-create widget-apply widget-create-child-value widget-choice-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply] 180 [delete-char widget-default-create widget-apply widget-create-child-value widget-choice-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create] 628 [delete-char widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-type-value-create] 264 [delete-char widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create] 932 [widget-apply widget-copy mapcar widget-types-copy widget-apply widget-copy widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create] 8 [widget-apply widget-specify-sample widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value] 4 [widget-get widget-inline-p widget-match-inline widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply] 4 [substitute-command-keys widget-push-button-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert apply widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create] 4 [widget-apply widget-match-inline widget-group-match-inline widget-group-match widget-apply widget-match-inline widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value] 4 [widget-apply widget-default-mouse-face-get widget-apply widget-default-mouse-face-get widget-apply widget-specify-button widget-default-create widget-apply widget-create-child-and-convert apply widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value] 4 [delete-char widget-default-create widget-apply widget-create-child-value widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create] 1300 [widget-field-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value] 388 [widget-choice-inline-bubbles-p widget-apply widget-inline-p widget-match-inline widget-checklist-match-inline widget-apply widget-match-inline widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create] 4 [widget-push-button-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert apply widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply] 328 [get-buffer-create generate-new-buffer substitute-command-keys widget-toggle-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create] 8 [image--set-property find-image widget-image-find widget-toggle-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create] 4 [insert-char widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-type-value-create widget-apply widget-default-create widget-apply] 12 [insert-char widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create] 152 [widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create] 160 [undo-auto--undoable-change widget-default-create widget-apply widget-create-child widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create] 4 [insert-image widget-image-insert widget-toggle-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply] 488 [princ widget-default-create widget-apply widget-create-child-value widget-choice-value-create widget-apply widget-default-create widget-apply widget-create-child widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create] 308 [widget-get widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply] 4 [re-search-forward widget-default-create widget-apply widget-create-child-value widget-choice-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create] 8 [make-overlay widget-specify-inactive widget-default-deactivate widget-apply widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create] 4 [delete-char widget-default-create widget-apply widget-create-child-and-convert apply widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-type-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert] 64 [widget-default-create widget-apply widget-create-child-value widget-choice-value-create widget-apply widget-default-create widget-apply widget-create-child widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply] 368 [image-type-from-file-header image-type create-image apply find-image widget-image-find widget-toggle-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create] 8 [widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply] 160 [widget--should-indent-p widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply] 4 [make-overlay widget-specify-button widget-default-create widget-apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply] 4 [widget-apply widget-specify-button widget-default-create widget-apply widget-create-child widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value] 4 [widget-default-create widget-apply widget-create-child-value widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create] 204 [princ widget-default-create widget-apply widget-create-child-value widget-choice-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create] 52 [widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value] 4 [delete-char widget-default-create widget-apply widget-create-child-and-convert apply widget-editable-list-format-handler widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create] 96 [buffer-string substitute-command-keys widget-push-button-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert apply widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply] 4 [overlay-put widget-specify-button widget-default-create widget-apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply] 4 [substitute-command-keys widget-toggle-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create] 8 [re-search-forward widget-default-create widget-apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value] 20 [widget-field-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-choice-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value] 80 [widget-default-create widget-apply widget-create-child-and-convert apply widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-type-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert custom-variable-value-create] 12 [widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create] 8 [widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-type-value-create widget-apply] 60 [widget-get widget-specify-button widget-default-create widget-apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply] 8 [image-compute-scaling-factor create-image apply find-image widget-image-find widget-toggle-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply] 4 [widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-type-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert custom-variable-value-create widget-apply widget-default-create widget-apply widget-create] 12 [widget-copy widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create] 4 [widget-get widget-choice-inline-bubbles-p widget-apply widget-inline-p widget-match-inline widget-checklist-match-inline widget-apply widget-match-inline widget-group-match-inline widget-group-match widget-apply widget-match-inline widget-editable-list-match-inline widget-editable-list-match widget-apply widget-match-inline] 4 [window-normalize-buffer replace-buffer-in-windows kill-buffer "#<compiled -0x1c8e7723a0f1519f>" substitute-command-keys widget-toggle-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply] 4 [widget-get widget-value-convert-widget widget-convert apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply] 12 [widget-convert apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create] 4 [re-search-forward widget-default-create widget-apply widget-create-child-and-convert apply widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value] 4 [kill-buffer "#<compiled -0x1c8e7723716d5d9f>" image-type-from-file-header image-type create-image apply find-image widget-image-find widget-toggle-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create] 4 [delete-char widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-type-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert custom-variable-value-create widget-apply widget-default-create widget-apply] 40 [widget-apply widget-copy mapcar widget-types-copy widget-apply widget-copy widget-create-child widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create] 4 [widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply] 4 [widget-get widget-specify-button widget-default-create widget-apply widget-create-child-and-convert apply widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply] 4 [widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-type-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert custom-variable-value-create widget-apply] 4 [functionp widget-specify-button widget-default-create widget-apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply] 4 [string-match widget-sexp-value-to-internal "#<compiled 0x66e1b40451af649>" widget-apply widget-create-child-value widget-choice-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value] 4 [widget-specify-button widget-default-create widget-apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value] 4 [widget-push-button-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert apply widget-editable-list-format-handler widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value] 20 [widget-get widget-specify-button widget-default-create widget-apply widget-create-child-value widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value] 4 [undo-auto--boundary-ensure-timer undo-auto--undoable-change widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value] 4 [widget-push-button-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert apply widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-type-value-create widget-apply widget-default-create widget-apply] 16 [widget-get widget-toggle-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create] 8 [buffer-disable-undo widget-clear-undo widget-default-create widget-apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply] 4 [widget-get widget-default-create widget-apply widget-create-child widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create] 4 [widget-put widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create] 4 [widget-get widget-default-mouse-face-get widget-apply widget-specify-button widget-default-create widget-apply widget-create-child-value widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create] 4 [widget-apply widget-copy mapcar widget-types-copy widget-apply widget-copy mapcar widget-types-copy widget-apply widget-copy mapcar widget-types-copy widget-apply widget-copy widget-create-child-value widget-editable-list-entry-create] 4 [expand-file-name image-search-load-path find-image widget-image-find widget-toggle-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value] 8 [widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value] 4 [find-new-buffer-file-coding-system after-insert-file-set-coding insert-file-contents insert-file-contents-literally image-type-from-file-header image-type create-image apply find-image widget-image-find widget-toggle-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert apply] 4 [widget--should-indent-p widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create] 4 [widget-get widget-inline-p widget-choice-value-create widget-apply widget-default-create widget-apply widget-create-child widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create] 4 [re-search-forward widget-default-create widget-apply widget-create-child widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create] 8 [kill-buffer "#<compiled -0x1c8e7722b2c0b59f>" pp-to-string widget-sexp-value-to-internal "#<compiled 0x66e1b40451af649>" widget-apply widget-create-child-value widget-choice-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create] 4 [widget-get widget-default-mouse-face-get widget-apply widget-default-mouse-face-get widget-apply widget-default-mouse-face-get widget-apply widget-default-mouse-face-get widget-apply widget-specify-button widget-default-create widget-apply widget-create-child-and-convert apply widget-editable-list-entry-create widget-editable-list-value-create] 4 [widget-apply widget-copy widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply] 4 [widget-restricted-sexp-match widget-apply widget-choice-match widget-apply widget-match-inline widget-checklist-match-up widget-checklist-match-inline widget-apply widget-match-inline widget-group-match-inline widget-group-match widget-apply widget-match-inline widget-editable-list-match-inline widget-editable-list-match widget-apply] 4 [widget-group-match-inline widget-group-match widget-apply widget-match-inline widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create] 4 [get-buffer-create generate-new-buffer substitute-command-keys widget-default-create widget-apply widget-create-child widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply] 4 [widget-get widget-default-button-face-get widget-apply widget-specify-button widget-default-create widget-apply widget-create-child widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create] 4 [substitute-command-keys widget-default-create widget-apply widget-create-child-value widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create] 4 [image-search-load-path find-image widget-image-find widget-toggle-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create] 4 [widget-apply widget-copy mapcar widget-types-copy widget-apply widget-copy mapcar widget-types-copy widget-apply widget-copy mapcar widget-types-copy widget-apply widget-copy mapcar widget-types-copy] 8 [widget-put widget-default-create widget-apply widget-create-child widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create] 4 [widget-get-indirect widget-default-create widget-apply widget-create-child widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create] 4 [undo-auto--undoable-change add-text-properties insert-image widget-image-insert widget-toggle-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value] 4 [widget-create-child widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create] 4 [undo-auto--boundary-ensure-timer undo-auto--undoable-change widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value] 4 [make-closure substitute-command-keys widget-default-create widget-apply widget-create-child widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value] 4 [re-search-forward widget-default-create widget-apply widget-create-child-value widget-choice-value-create widget-apply widget-default-create widget-apply widget-create-child widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create] 4 [window-prev-buffers unrecord-window-buffer replace-buffer-in-windows kill-buffer "#<compiled -0x1c8e77201f7fa59f>" substitute-command-keys widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create] 4 [kill-buffer "#<compiled -0x1c8e772031488f9f>" substitute-command-keys widget-toggle-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create] 4 [widget-get widget-default-button-face-get widget-apply widget-default-button-face-get widget-apply widget-default-button-face-get widget-apply widget-default-button-face-get widget-apply widget-default-button-face-get widget-apply widget-default-button-face-get widget-apply widget-default-button-face-get widget-apply widget-default-button-face-get] 4 [widget-put widget-create-child-value widget-choice-value-create widget-apply widget-default-create widget-apply widget-create-child widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create] 4 [widget-get widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create] 4 [widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value] 4 [re-search-forward widget-default-create widget-apply widget-create-child-value widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create] 4 [window-prev-buffers unrecord-window-buffer replace-buffer-in-windows kill-buffer "#<compiled -0x1c8e77397563719f>" substitute-command-keys widget-default-create widget-apply widget-create-child-value widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create] 4 [get-buffer-create generate-new-buffer substitute-command-keys widget-default-create widget-apply widget-create-child-value widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply] 4 [insert-file-contents-literally image-type-from-file-header image-type create-image apply find-image widget-image-find widget-toggle-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create widget-apply] 4 [buffer-disable-undo widget-clear-undo widget-default-create widget-apply widget-create-child-value widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value] 4 [insert-char widget-editable-list-format-handler widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply] 8 [widget-get widget-create-child-and-convert apply widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create] 4 [widget-apply widget-value widget-toggle-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply] 4 [assoc-delete-all assq-delete-all unrecord-window-buffer replace-buffer-in-windows kill-buffer "#<compiled -0x1c8e77395de7999f>" substitute-command-keys widget-toggle-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create widget-apply] 4 [set-buffer-multibyte image-type-from-file-header image-type create-image apply find-image widget-image-find widget-toggle-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create widget-apply] 4 [delete-char widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-type-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert custom-variable-value-create] 4 [window-live-p window-normalize-window unrecord-window-buffer replace-buffer-in-windows kill-buffer "#<compiled -0x1c8e77234165359f>" substitute-command-keys widget-default-create widget-apply widget-create-child-value widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value] 4 [custom-magic-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert custom-variable-value-create widget-apply widget-default-create widget-apply widget-create "#<compiled -0x17c1d5ffa7b0b3ca>" mapcar custom-buffer-create-internal custom-buffer-create customize-option progn] 4 [delete-char widget-default-create widget-apply widget-create-child-and-convert apply widget-add-documentation-string-button custom-variable-value-create widget-apply widget-default-create widget-apply widget-create "#<compiled -0x17c1d5ffa7b0b3ca>" mapcar custom-buffer-create-internal custom-buffer-create customize-option] 4 [widget-documentation-string-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert apply widget-add-documentation-string-button custom-variable-value-create widget-apply widget-default-create widget-apply widget-create "#<compiled -0x17c1d5ffa7b0b3ca>" mapcar custom-buffer-create-internal custom-buffer-create] 4 [widget-get widget-default-value-inline widget-apply "#<compiled -0xf2f5b00c7bd4f2d>" mapcar widget-editable-list-value-get widget-apply widget-value widget-default-value-inline widget-apply "#<compiled -0xf2f5b00c7bd4f2d>" mapcar widget-editable-list-value-get widget-apply widget-value widget-default-value-inline] 4 [mapcar widget-editable-list-value-get widget-apply widget-value widget-default-value-inline widget-apply "#<compiled -0xf2f5b00c7bd4f2d>" mapcar widget-editable-list-value-get widget-apply widget-value widget-default-value-inline widget-apply "#<compiled -0xf2f5b00c7bd4f2d>" mapcar widget-editable-list-value-get] 4 [widget-apply widget-value widget-default-value-inline widget-apply widget-child-value-inline widget-apply widget-checklist-value-get widget-apply widget-value widget-default-value-inline widget-apply "#<compiled -0xf2f5b00c7bd4f2d>" mapcar widget-editable-list-value-get widget-apply widget-value] 4 [widget-apply widget-value widget-checklist-value-get widget-apply widget-value widget-default-value-inline widget-apply "#<compiled -0xf2f5b00c7bd4f2d>" mapcar widget-editable-list-value-get widget-apply widget-value widget-default-value-inline widget-apply "#<compiled -0xf2f5b00c7bd4f2d>" mapcar] 4 [delete-char widget-default-create widget-apply widget-create-child-and-convert "#<compiled 0x2608cc6bf83bc8>" mapatoms custom-add-parent-links custom-variable-value-create widget-apply widget-default-create widget-apply widget-create "#<compiled -0x17c1d5ffa7b0b3ca>" mapcar custom-buffer-create-internal custom-buffer-create] 4 [widget-default-delete widget-apply widget-delete mapc widget-children-value-delete widget-apply widget-default-delete widget-apply widget-default-value-set widget-apply widget-value-set custom-magic-reset mapc custom-buffer-create-internal custom-buffer-create customize-option] 4 [delete-char widget-default-create widget-apply widget-create-child-and-convert custom-magic-value-create widget-apply widget-default-create widget-apply widget-default-value-set widget-apply widget-value-set custom-magic-reset mapc custom-buffer-create-internal custom-buffer-create customize-option] 4 [widget-setup custom-buffer-create-internal custom-buffer-create customize-option progn progn eval elisp--eval-last-sexp eval-last-sexp funcall-interactively call-interactively command-execute nil nil nil nil] 368 [Automatic\ GC nil] 635 [profiler-cpu-log profiler-stop progn progn eval elisp--eval-last-sexp eval-last-sexp funcall-interactively call-interactively command-execute nil nil nil nil nil nil] 4)) (25853 36556 160586 303000) nil]

^ permalink raw reply	[flat|nested] 12+ messages in thread

* bug#53606: 29.0.50; Very slow Customize buffer for bibtex-biblatex-entry-alist
  2023-09-10  9:49       ` Mauro Aranda
@ 2023-09-10 10:43         ` Eli Zaretskii
  2023-09-10 10:50           ` Ihor Radchenko
  2023-09-10 12:41           ` Mauro Aranda
  0 siblings, 2 replies; 12+ messages in thread
From: Eli Zaretskii @ 2023-09-10 10:43 UTC (permalink / raw)
  To: Mauro Aranda; +Cc: 53606

> Date: Sun, 10 Sep 2023 06:49:29 -0300
> Cc: 53606@debbugs.gnu.org
> From: Mauro Aranda <maurooaranda@gmail.com>
> 
> On 10/9/23 02:01, Eli Zaretskii wrote:
>  > Could you please profile this slow operation and post the completely
>  > unfolded profile?  I think we should try to understand what exactly
>  > takes so much time in this case.
> 
> Here it is.  I also attach the result of C-x C-w in the report buffer,
> just in case.

So the hot spot seems to be widget-checklist-add-item, is that right?
And inside that widget-create-child and widget-apply?





^ permalink raw reply	[flat|nested] 12+ messages in thread

* bug#53606: 29.0.50; Very slow Customize buffer for bibtex-biblatex-entry-alist
  2023-09-10 10:43         ` Eli Zaretskii
@ 2023-09-10 10:50           ` Ihor Radchenko
  2023-09-10 12:41           ` Mauro Aranda
  1 sibling, 0 replies; 12+ messages in thread
From: Ihor Radchenko @ 2023-09-10 10:50 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 53606, Mauro Aranda

Eli Zaretskii <eliz@gnu.org> writes:

>> Here it is.  I also attach the result of C-x C-w in the report buffer,
>> just in case.
>
> So the hot spot seems to be widget-checklist-add-item, is that right?
> And inside that widget-create-child and widget-apply?

No, I think. Reverse call tree shows

       17747  68% - delete-char
       14911  57%  + widget-default-create
        1864   7%  + widget-checklist-add-item
         972   3%  + widget-editable-list-entry-create
        3320  12% + widget-default-create

which likely corresponds to ";; Parse % escapes in format." code,
present in `widget-default-create', `widget-checklist-add-item', and
`widget-editable-list-entry-create'.

-- 
Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at <https://orgmode.org/>.
Support Org development at <https://liberapay.com/org-mode>,
or support my work at <https://liberapay.com/yantar92>





^ permalink raw reply	[flat|nested] 12+ messages in thread

* bug#53606: 29.0.50; Very slow Customize buffer for bibtex-biblatex-entry-alist
  2023-09-10 10:43         ` Eli Zaretskii
  2023-09-10 10:50           ` Ihor Radchenko
@ 2023-09-10 12:41           ` Mauro Aranda
  2023-09-18 11:07             ` Mauro Aranda
  1 sibling, 1 reply; 12+ messages in thread
From: Mauro Aranda @ 2023-09-10 12:41 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 53606

On 10/9/23 07:43, Eli Zaretskii wrote:
 >> Date: Sun, 10 Sep 2023 06:49:29 -0300
 >> Cc: 53606@debbugs.gnu.org
 >> From: Mauro Aranda <maurooaranda@gmail.com>
 >>
 >> On 10/9/23 02:01, Eli Zaretskii wrote:
 >>  > Could you please profile this slow operation and post the completely
 >>  > unfolded profile?  I think we should try to understand what exactly
 >>  > takes so much time in this case.
 >>
 >> Here it is.  I also attach the result of C-x C-w in the report buffer,
 >> just in case.
 >
 > So the hot spot seems to be widget-checklist-add-item, is that right?

I think so.  The checklist widgets were my first suspects, since
creating them is rather slow.

 > And inside that widget-create-child and widget-apply?

I don't think those functions could be the bottleneck.  Most likely it
is the widget-default-create function that those functions end up
calling.  So yes, widget-default-create in general, and
widget-checklist-value-create in particular should be investigated for
speeding them up, but I don't have any ideas at the moment.






^ permalink raw reply	[flat|nested] 12+ messages in thread

* bug#53606: 29.0.50; Very slow Customize buffer for bibtex-biblatex-entry-alist
  2023-09-10 12:41           ` Mauro Aranda
@ 2023-09-18 11:07             ` Mauro Aranda
  2023-12-21 11:51               ` Ihor Radchenko
  0 siblings, 1 reply; 12+ messages in thread
From: Mauro Aranda @ 2023-09-18 11:07 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: Ihor Radchenko, 53606

[-- Attachment #1: Type: text/plain, Size: 2315 bytes --]

On 10/9/23 09:41, Mauro Aranda wrote:
 > On 10/9/23 07:43, Eli Zaretskii wrote:
 > >> Date: Sun, 10 Sep 2023 06:49:29 -0300
 > >> Cc: 53606@debbugs.gnu.org
 > >> From: Mauro Aranda <maurooaranda@gmail.com>
 > >>
 > >> On 10/9/23 02:01, Eli Zaretskii wrote:
 > >>  > Could you please profile this slow operation and post the 
completely
 > >>  > unfolded profile?  I think we should try to understand what exactly
 > >>  > takes so much time in this case.
 > >>
 > >> Here it is.  I also attach the result of C-x C-w in the report buffer,
 > >> just in case.
 > >
 > > So the hot spot seems to be widget-checklist-add-item, is that right?
 >
 > I think so.  The checklist widgets were my first suspects, since
 > creating them is rather slow.
 >
 > > And inside that widget-create-child and widget-apply?
 >
 > I don't think those functions could be the bottleneck.  Most likely it
 > is the widget-default-create function that those functions end up
 > calling.  So yes, widget-default-create in general, and
 > widget-checklist-value-create in particular should be investigated for
 > speeding them up, but I don't have any ideas at the moment.

I focused on the format handling, since there's no need to insert the
escape formats in the buffer.  So I rearranged the 4 functions that
handle the format to avoid it and here are the figures I got, when
running:
(benchmark-run 5
   (customize-option 'bibtex-biblatex-entry-alist))

 From master, inserting either :format or :entry-format:
(130.200276352 291 3.1221133909999996)

Without inserting it:
(38.244185927000004 266 2.795578699)

| How?                 | Total elapsed time (5 repetitions) | Avg | 
Times faster |
|----------------------+------------------------------------+-------+--------------|
| inserting format     |                             130.20 | 26.04 
|            1 |
| not inserting format |                              38.24 | 7.65 
|          3.4 |

All data is without native compilation.  I'd appreciate if someone could
at least run it once with native compilation, with and without my patch.


I attach a patch with the changes, and the new profiler report, but I'm
inclined to leave it as it is if the patch gets accepted.

[-- Attachment #2: 0001-Speed-up-widget-creation-Bug-53606.patch --]
[-- Type: text/x-patch, Size: 13513 bytes --]

From a413d93c6215710c669912e3ed7d5e02857b5635 Mon Sep 17 00:00:00 2001
From: Mauro Aranda <maurooaranda@gmail.com>
Date: Sun, 17 Sep 2023 21:00:02 -0300
Subject: [PATCH] Speed up widget creation (Bug#53606)

* lisp/wid-edit.el (widget-default-create, widget-checklist-add-item)
(widget-radio-add-item, widget-editable-list-entry-create): Don't
insert format escapes into the buffer, only to delete them after.
This avoids calls to delete-char and makes widget creation about 3
times faster.
---
 lisp/wid-edit.el | 252 +++++++++++++++++++++++++----------------------
 1 file changed, 136 insertions(+), 116 deletions(-)

diff --git a/lisp/wid-edit.el b/lisp/wid-edit.el
index 74412414113..e9ad4f3855e 100644
--- a/lisp/wid-edit.el
+++ b/lisp/wid-edit.el
@@ -1670,78 +1670,85 @@ widget-default-completions
 (defun widget-default-create (widget)
   "Create WIDGET at point in the current buffer."
   (widget-specify-insert
-   (let ((from (point))
-	 button-begin button-end
-	 sample-begin sample-end
-	 doc-begin doc-end
-	 value-pos)
-     (insert (widget-get widget :format))
-     (goto-char from)
+   (let ((str (widget-get widget :format))
+         (onext 0) (next 0)
+         button-begin button-end
+         sample-begin sample-end
+         doc-begin doc-end
+         value-pos)
      ;; Parse escapes in format.
-     (while (re-search-forward "%\\(.\\)" nil t)
-       (let ((escape (char-after (match-beginning 1))))
-	 (delete-char -2)
-	 (cond ((eq escape ?%)
-		(insert ?%))
-	       ((eq escape ?\[)
-		(setq button-begin (point))
-		(insert (widget-get-indirect widget :button-prefix)))
-	       ((eq escape ?\])
-		(insert (widget-get-indirect widget :button-suffix))
-		(setq button-end (point)))
-	       ((eq escape ?\{)
-		(setq sample-begin (point)))
-	       ((eq escape ?\})
-		(setq sample-end (point)))
-	       ((eq escape ?n)
-		(when (widget-get widget :indent)
-		  (insert ?\n)
-		  (insert-char ?\s (widget-get widget :indent))))
-	       ((eq escape ?t)
-		(let ((image (widget-get widget :tag-glyph))
-		      (tag (substitute-command-keys
-			    (widget-get widget :tag))))
-		  (cond (image
-			 (widget-image-insert widget (or tag "image") image))
-			(tag
-			 (insert tag))
-			(t
-			 (princ (widget-get widget :value)
-				(current-buffer))))))
-	       ((eq escape ?d)
-		(let ((doc (widget-get widget :doc)))
-		  (when doc
-		    (setq doc-begin (point))
-		    (insert (substitute-command-keys doc))
-		    (while (eq (preceding-char) ?\n)
-		      (delete-char -1))
-		    (insert ?\n)
-		    (setq doc-end (point)))))
-	       ((eq escape ?h)
-		(widget-add-documentation-string-button widget))
-	       ((eq escape ?v)
-		(if (and button-begin (not button-end))
-		    (widget-apply widget :value-create)
-		  (setq value-pos (point))))
-	       (t
-		(widget-apply widget :format-handler escape)))))
+     (while (string-match "%\\(.\\)" str next)
+       (setq next (match-end 1))
+       ;; If we skipped some literal text, insert it.
+       (when (/= (- next onext) 2)
+         (insert (substring str onext (- next 2))))
+       (let ((escape (string-to-char (match-string 1 str))))
+         (cond ((eq escape ?%)
+                (insert ?%))
+               ((eq escape ?\[)
+                (setq button-begin (point))
+                (insert (widget-get-indirect widget :button-prefix)))
+               ((eq escape ?\])
+                (insert (widget-get-indirect widget :button-suffix))
+                (setq button-end (point)))
+               ((eq escape ?\{)
+                (setq sample-begin (point)))
+               ((eq escape ?\})
+                (setq sample-end (point)))
+               ((eq escape ?n)
+                (when (widget-get widget :indent)
+                  (insert ?\n)
+                  (insert-char ?\s (widget-get widget :indent))))
+               ((eq escape ?t)
+                (let ((image (widget-get widget :tag-glyph))
+                      (tag (substitute-command-keys
+                            (widget-get widget :tag))))
+                  (cond (image
+                         (widget-image-insert widget
+                                              (or tag "image") image))
+                        (tag
+                         (insert tag))
+                        (t
+                         (princ (widget-get widget :value)
+                                (current-buffer))))))
+               ((eq escape ?d)
+                (let ((doc (widget-get widget :doc)))
+                  (when doc
+                    (setq doc-begin (point))
+                    (insert (substitute-command-keys doc))
+                    (while (eq (preceding-char) ?\n)
+                      (delete-char -1))
+                    (insert ?\n)
+                    (setq doc-end (point)))))
+               ((eq escape ?h)
+                (widget-add-documentation-string-button widget))
+               ((eq escape ?v)
+                (if (and button-begin (not button-end))
+                    (widget-apply widget :value-create)
+                  (setq value-pos (point))))
+               (t
+                (widget-apply widget :format-handler escape))))
+       (setq onext next))
+     ;; Insert remaining literal text, if any.
+     (when (> (length str) next)
+       (insert (substring str next)))
      ;; Specify button, sample, and doc, and insert value.
      (and button-begin button-end
-	  (widget-specify-button widget button-begin button-end))
+          (widget-specify-button widget button-begin button-end))
      (and sample-begin sample-end
-	  (widget-specify-sample widget sample-begin sample-end))
+          (widget-specify-sample widget sample-begin sample-end))
      (and doc-begin doc-end
-	  (widget-specify-doc widget doc-begin doc-end))
+          (widget-specify-doc widget doc-begin doc-end))
      (when value-pos
        (goto-char value-pos)
        (widget-apply widget :value-create)))
    (let ((from (point-min-marker))
-	 (to (point-max-marker)))
+         (to (point-max-marker)))
      (set-marker-insertion-type from t)
      (set-marker-insertion-type to nil)
      (widget-put widget :from from)
-     (widget-put widget :to to)))
-  (widget-clear-undo))
+     (widget-put widget :to to))
+   (widget-clear-undo)))
 
 (defun widget-default-format-handler (_widget escape)
   (error "Unknown escape `%c'" escape))
@@ -2464,14 +2471,15 @@ widget-checklist-add-item
 	  (buttons (widget-get widget :buttons))
 	  (button-args (or (widget-get type :sibling-args)
 			   (widget-get widget :button-args)))
-	  (from (point))
+          (str (widget-get widget :entry-format))
+          (onext 0) (next 0)
 	  child button)
-     (insert (widget-get widget :entry-format))
-     (goto-char from)
      ;; Parse % escapes in format.
-     (while (re-search-forward "%\\([bv%]\\)" nil t)
-       (let ((escape (char-after (match-beginning 1))))
-	 (delete-char -2)
+     (while (string-match "%\\([bv%]\\)" str next)
+       (setq next (match-end 1))
+       (when (/= (- next onext) 2)
+         (insert (substring str onext (- next 2))))
+       (let ((escape (string-to-char (match-string 1 str))))
 	 (cond ((eq escape ?%)
 		(insert ?%))
 	       ((eq escape ?b)
@@ -2492,7 +2500,10 @@ widget-checklist-add-item
 			     (widget-create-child-value
 			      widget type (car (cdr chosen)))))))
 	       (t
-		(error "Unknown escape `%c'" escape)))))
+                (error "Unknown escape `%c'" escape))))
+       (setq onext next))
+     (when (> (length str) next)
+       (insert (substring str next)))
      ;; Update properties.
      (and button child (widget-put child :button button))
      (and button (widget-put widget :buttons (cons button buttons)))
@@ -2646,16 +2657,17 @@ widget-radio-add-item
 	  (buttons (widget-get widget :buttons))
 	  (button-args (or (widget-get type :sibling-args)
 			   (widget-get widget :button-args)))
-	  (from (point))
+          (str (widget-get widget :entry-format))
+          (onext 0) (next 0)
 	  (chosen (and (null (widget-get widget :choice))
 		       (widget-apply type :match value)))
 	  child button)
-     (insert (widget-get widget :entry-format))
-     (goto-char from)
      ;; Parse % escapes in format.
-     (while (re-search-forward "%\\([bv%]\\)" nil t)
-       (let ((escape (char-after (match-beginning 1))))
-	 (delete-char -2)
+     (while (string-match "%\\([bv%]\\)" str next)
+       (setq next (match-end 1))
+       (when (/= (- next onext) 2)
+         (insert (substring str onext (- next 2))))
+       (let ((escape (string-to-char (match-string 1 str))))
 	 (cond ((eq escape ?%)
 		(insert ?%))
 	       ((eq escape ?b)
@@ -2671,7 +2683,10 @@ widget-radio-add-item
 		(unless chosen
 		  (widget-apply child :deactivate)))
 	       (t
-		(error "Unknown escape `%c'" escape)))))
+                (error "Unknown escape `%c'" escape))))
+       (setq onext next))
+     (when (> (length str) next)
+       (insert (substring str next)))
      ;; Update properties.
      (when chosen
        (widget-put widget :choice type))
@@ -2948,51 +2963,56 @@ widget-editable-list-entry-create
   ;; Create a new entry to the list.
   (let ((type (nth 0 (widget-get widget :args)))
 	;; (widget-push-button-gui widget-editable-list-gui)
+        (str (widget-get widget :entry-format))
+        (onext 0) (next 0)
 	child delete insert)
     (widget-specify-insert
-     (save-excursion
-       (and (widget--should-indent-p)
-            (widget-get widget :indent)
-            (insert-char ?\s (widget-get widget :indent)))
-       (insert (widget-get widget :entry-format)))
-     ;; Parse % escapes in format.
-     (while (re-search-forward "%\\(.\\)" nil t)
-       (let ((escape (char-after (match-beginning 1))))
-	 (delete-char -2)
-	 (cond ((eq escape ?%)
-		(insert ?%))
-	       ((eq escape ?i)
-		(setq insert (apply 'widget-create-child-and-convert
-				    widget 'insert-button
-				    (widget-get widget :insert-button-args))))
-	       ((eq escape ?d)
-		(setq delete (apply 'widget-create-child-and-convert
-				    widget 'delete-button
-				    (widget-get widget :delete-button-args))))
-	       ((eq escape ?v)
-		(if conv
-		    (setq child (widget-create-child-value
-				 widget type value))
-		  (setq child (widget-create-child-value
-			       widget type (widget-default-get type)))))
-	       (t
-		(error "Unknown escape `%c'" escape)))))
-     (let ((buttons (widget-get widget :buttons)))
-       (if insert (push insert buttons))
-       (if delete (push delete buttons))
-       (widget-put widget :buttons buttons))
-     ;; After creating the entry, we must check if we should indent the
-     ;; following entry.  This is necessary, for example, to keep the correct
-     ;; indentation of editable lists inside group widgets.
-     (and (widget--should-indent-p t)
+     (and (widget--should-indent-p)
           (widget-get widget :indent)
-          (insert-char ?\s (widget-get widget :indent)))
-     (let ((entry-from (point-min-marker))
-	   (entry-to (point-max-marker)))
-       (set-marker-insertion-type entry-from t)
-       (set-marker-insertion-type entry-to nil)
-       (widget-put child :entry-from entry-from)
-       (widget-put child :entry-to entry-to)))
+          (insert-char ?\s (widget-get widget :indent))))
+    ;; Parse % escapes in format.
+    (while (string-match "%\\(.\\)" str next)
+      (setq next (match-end 1))
+      (when (/= (- next onext) 2)
+        (insert (substring str onext (- next 2))))
+      (let ((escape (string-to-char (match-string 1 str))))
+        (cond ((eq escape ?%)
+               (insert ?%))
+              ((eq escape ?i)
+               (setq insert (apply 'widget-create-child-and-convert
+                                   widget 'insert-button
+                                   (widget-get widget :insert-button-args))))
+              ((eq escape ?d)
+               (setq delete (apply 'widget-create-child-and-convert
+                                   widget 'delete-button
+                                   (widget-get widget :delete-button-args))))
+              ((eq escape ?v)
+               (if conv
+                   (setq child (widget-create-child-value
+                                widget type value))
+                 (setq child (widget-create-child-value
+                              widget type (widget-default-get type)))))
+              (t
+               (error "Unknown escape `%c'" escape))))
+      (setq onext next))
+    (when (> (length str) next)
+      (insert (substring str next)))
+    (let ((buttons (widget-get widget :buttons)))
+      (if insert (push insert buttons))
+      (if delete (push delete buttons))
+      (widget-put widget :buttons buttons))
+    ;; After creating the entry, we must check if we should indent the
+    ;; following entry.  This is necessary, for example, to keep the correct
+    ;; indentation of editable lists inside group widgets.
+    (and (widget--should-indent-p t)
+         (widget-get widget :indent)
+         (insert-char ?\s (widget-get widget :indent)))
+    (let ((entry-from (point-min-marker))
+          (entry-to (point-max-marker)))
+      (set-marker-insertion-type entry-from t)
+      (set-marker-insertion-type entry-to nil)
+      (widget-put child :entry-from entry-from)
+      (widget-put child :entry-to entry-to))
     (if insert (widget-put insert :widget child))
     (if delete (widget-put delete :widget child))
     child))
-- 
2.34.1


[-- Attachment #3: profiler-data-no-inserting --]
[-- Type: text/plain, Size: 39601 bytes --]


[profiler-profile "28.1" cpu #s(hash-table size 145 test equal rehash-size 1.5 rehash-threshold 0.8125 data ([read eval-buffer load-with-code-conversion require byte-code customize-option progn progn eval elisp--eval-last-sexp eval-last-sexp funcall-interactively call-interactively command-execute nil nil] 4 [macroexp--all-forms "#<compiled -0x60853496ded3bb1>" macroexp--expand-all macroexp--all-forms "#<compiled -0x60853496ded3bb1>" macroexp--expand-all macroexpand--all-toplevel internal-macroexpand-for-load eval-buffer load-with-code-conversion require byte-code customize-option progn progn eval] 4 [read customize-option progn progn eval elisp--eval-last-sexp eval-last-sexp funcall-interactively call-interactively command-execute nil nil nil nil nil nil] 8 [widget-get widget-value-convert-widget widget-convert mapcar widget-types-convert-widget widget-convert mapcar widget-types-convert-widget widget-convert mapcar widget-types-convert-widget widget-convert mapcar widget-types-convert-widget widget-convert widget-type-match] 4 [make-overlay widget-specify-button widget-default-create widget-apply widget-create-child-and-convert custom-variable-value-create widget-apply widget-default-create widget-apply widget-create "#<compiled 0x200e28cd8396fcf>" mapcar custom-buffer-create-internal custom-buffer-create customize-option progn] 4 [widget-default-create widget-apply widget-create-child-value widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create] 468 [insert-file-contents insert-file-contents-literally image-type-from-file-header image-type create-image apply find-image widget-image-find widget-toggle-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create] 24 [widget-get-indirect widget-default-create widget-apply widget-create-child-and-convert apply widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value] 4 [expand-file-name image-search-load-path find-image widget-image-find widget-toggle-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value] 16 [buffer-disable-undo widget-clear-undo widget-default-create widget-apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply] 4 [widget-get widget-create-child-value widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply] 8 [widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create] 168 [widget-default-create widget-apply widget-create-child-value widget-choice-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply] 136 [widget-field-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value] 316 [widget-default-create widget-apply widget-create-child widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create] 1371 [widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value] 4 [insert-char widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create] 176 [insert-image widget-image-insert widget-toggle-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply] 460 [insert-char widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply] 656 [widget-push-button-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert apply widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply] 308 [widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply] 424 [add-text-properties insert-image widget-image-insert widget-toggle-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create] 4 [string-match widget-default-create widget-apply widget-create-child-value widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create] 4 [image-search-load-path find-image widget-image-find widget-toggle-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create] 4 [kill-buffer "#<compiled -0x1c8af3864116699f>" substitute-command-keys widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply] 4 [match-string widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create] 4 [widget-default-create widget-apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create] 4 [substitute-command-keys widget-push-button-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert apply widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create] 8 [widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply] 340 [widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value] 4 [widget-default-create widget-apply widget-create-child-value widget-choice-value-create widget-apply widget-default-create widget-apply widget-create-child widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply] 376 [undo-auto--undoable-change widget-default-create widget-apply widget-create-child-value widget-choice-value-create widget-apply widget-default-create widget-apply widget-create-child widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create] 4 [princ widget-default-create widget-apply widget-create-child-value widget-choice-value-create widget-apply widget-default-create widget-apply widget-create-child widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create] 324 [kill-buffer "#<compiled -0x1c8af3841881059f>" image-type-from-file-header image-type create-image apply find-image widget-image-find widget-toggle-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create] 4 [featurep widget-image-insert widget-toggle-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply] 4 [widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply] 308 [widget-default-create widget-apply widget-create-child-and-convert apply widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create] 12 [looking-at image-type-from-buffer image-type-from-file-header image-type create-image apply find-image widget-image-find widget-toggle-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create] 4 [substitute-command-keys widget-push-button-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert apply widget-editable-list-format-handler widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply] 4 [undo-auto--boundary-ensure-timer undo-auto--undoable-change widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply] 4 [widget-get widget-specify-inactive widget-default-deactivate widget-apply widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create] 4 [princ widget-default-create widget-apply widget-create-child-value widget-choice-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create] 80 [widget-specify-button widget-default-create widget-apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value] 4 [file-readable-p image-type-from-file-header image-type create-image apply find-image widget-image-find widget-toggle-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create widget-apply] 32 [append insert-file-contents-literally image-type-from-file-header image-type create-image apply find-image widget-image-find widget-toggle-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create] 4 [get-buffer-create generate-new-buffer image-type-from-file-header image-type create-image apply find-image widget-image-find widget-toggle-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create] 4 [match-string widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create] 4 [widget-apply widget-copy widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply] 4 [widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-type-value-create widget-apply] 76 [string-match widget-default-create widget-apply widget-create-child widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create] 8 [generate-new-buffer substitute-command-keys widget-default-create widget-apply widget-create-child widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value] 4 [plist-get coding-system-type find-new-buffer-file-coding-system after-insert-file-set-coding insert-file-contents insert-file-contents-literally image-type-from-file-header image-type create-image apply find-image widget-image-find widget-toggle-value-create widget-apply widget-default-create widget-apply] 4 [insert-char widget-editable-list-format-handler widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply] 8 [framep-on-display display-graphic-p widget-image-find widget-toggle-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create] 4 [file-readable-p image-search-load-path find-image widget-image-find widget-toggle-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value] 36 [widget-apply widget-specify-button widget-default-create widget-apply widget-create-child widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value] 8 [widget-image-find widget-toggle-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create] 4 [kill-buffer "#<compiled -0x1c8af385edddb39f>" substitute-command-keys widget-default-create widget-apply widget-create-child widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply] 8 [buffer-enable-undo widget-clear-undo widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value] 4 [substitute-command-keys widget-default-create widget-apply widget-create-child-value widget-choice-value-create widget-apply widget-default-create widget-apply widget-create-child widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create] 4 ["#<compiled -0x189981ea312f002d>" widget-apply widget-create-child-value widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create] 4 [string-match widget-default-create widget-apply widget-create-child-and-convert apply widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-type-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert] 4 [widget-field-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-choice-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value] 60 [insert-char widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-type-value-create widget-apply widget-default-create widget-apply] 20 [widget-apply widget-copy mapcar widget-types-copy widget-apply widget-copy mapcar widget-types-copy widget-apply widget-copy mapcar widget-types-copy widget-apply widget-copy widget-create-child-value widget-editable-list-entry-create] 8 [make-overlay widget-specify-inactive widget-default-deactivate widget-apply widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create] 4 [widget-put widget-specify-button widget-default-create widget-apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply] 4 [plist-get widget-convert apply widget-create-child-and-convert apply widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value] 4 [string-match widget-sexp-value-to-internal "#<compiled 0x6b91569ed400009>" widget-apply widget-create-child-value widget-choice-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value] 4 [window-normalize-window unrecord-window-buffer replace-buffer-in-windows kill-buffer "#<compiled -0x1c8af383ee9b4b9f>" image-type-from-file-header image-type create-image apply find-image widget-image-find widget-toggle-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert] 4 [widget-apply widget-match-inline widget-checklist-match-inline widget-apply widget-match-inline widget-group-match-inline widget-group-match widget-apply widget-match-inline widget-editable-list-match-inline widget-editable-list-match widget-apply widget-match-inline widget-group-match-inline widget-group-match widget-apply] 4 ["#<compiled -0x189981ea312f002d>" widget-apply widget-value widget-toggle-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create] 4 [widget-push-button-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert apply widget-editable-list-format-handler widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value] 8 [window-list-1 replace-buffer-in-windows kill-buffer "#<compiled -0x1c8af383bd92779f>" image-type-from-file-header image-type create-image apply find-image widget-image-find widget-toggle-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert apply] 4 [window-width image-compute-scaling-factor create-image apply find-image widget-image-find widget-toggle-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create] 4 [format-decode insert-file-contents insert-file-contents-literally image-type-from-file-header image-type create-image apply find-image widget-image-find widget-toggle-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert apply widget-checklist-add-item] 4 [generate-new-buffer pp-to-string widget-sexp-value-to-internal "#<compiled 0x6b91569ed400009>" widget-apply widget-create-child-value widget-choice-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply] 4 [widget-get widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create] 4 [substitute-command-keys widget-default-create widget-apply widget-create-child widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create] 8 [widget-apply widget-create-child-value widget-choice-value-create widget-apply widget-default-create widget-apply widget-create-child widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create] 4 [widget-choice-inline-bubbles-p widget-apply widget-inline-p widget-choice-value-create widget-apply widget-default-create widget-apply widget-create-child widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply] 4 [widget-get widget-get-indirect widget-default-create widget-apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply] 4 [widget-toggle-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply] 4 [widget--should-indent-p widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create] 8 [widget-get widget-default-button-face-get widget-apply widget-default-button-face-get widget-apply widget-specify-button widget-default-create widget-apply widget-create-child widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create] 4 [widget-apply widget-default-mouse-face-get widget-apply widget-default-mouse-face-get widget-apply widget-specify-button widget-default-create widget-apply widget-create-child widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create] 4 [get-buffer-create generate-new-buffer substitute-command-keys widget-toggle-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create] 4 [widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-type-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert custom-variable-value-create widget-apply widget-default-create widget-apply widget-create] 4 [append widget-toggle-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create] 4 [set-window-prev-buffers unrecord-window-buffer replace-buffer-in-windows kill-buffer "#<compiled -0x1c8af38232c5e59f>" substitute-command-keys widget-toggle-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create] 4 [widget-push-button-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert apply widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-type-value-create widget-apply widget-default-create widget-apply] 4 [string-match widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create] 4 [widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply] 4 [generate-new-buffer-name generate-new-buffer substitute-command-keys widget-default-create widget-apply widget-create-child widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply] 4 [widget-get-indirect widget-default-create widget-apply widget-create-child widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create] 4 [assq-delete-all unrecord-window-buffer replace-buffer-in-windows kill-buffer "#<compiled -0x1c8af3b0cfaee19f>" substitute-command-keys widget-push-button-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert apply widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create] 4 [append widget-editable-list-match-inline widget-editable-list-match widget-apply widget-match-inline widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value] 4 [replace-buffer-in-windows kill-buffer "#<compiled -0x1c8af38369e8019f>" substitute-command-keys widget-default-create widget-apply widget-create-child widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create] 4 [string-match widget-default-create widget-apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value] 4 [widget-get widget-default-mouse-face-get widget-apply widget-default-mouse-face-get widget-apply widget-default-mouse-face-get widget-apply widget-default-mouse-face-get widget-apply widget-default-mouse-face-get widget-apply widget-default-mouse-face-get widget-apply widget-default-mouse-face-get widget-apply widget-default-mouse-face-get] 4 [widget-group-match-inline widget-group-match widget-apply widget-match-inline widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create] 4 [substitute-command-keys widget-toggle-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create] 4 [widget-get widget-create-child widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply] 4 [replace-buffer-in-windows kill-buffer "#<compiled -0x1c8af3b035efeb9f>" substitute-command-keys widget-toggle-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value] 4 [string-to-char widget-default-create widget-apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value] 4 [buffer-string substitute-command-keys widget-default-create widget-apply widget-create-child widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value] 4 [widget-get widget-default-create widget-apply widget-create-child-value widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create] 4 [widget-match-inline widget-checklist-match-inline widget-apply widget-match-inline widget-group-match-inline widget-group-match widget-apply widget-match-inline widget-editable-list-match-inline widget-editable-list-match widget-apply widget-match-inline widget-group-match-inline widget-group-match widget-apply widget-match-inline] 4 [replace-buffer-in-windows kill-buffer "#<compiled -0x1c8af385ec61d99f>" substitute-command-keys widget-default-create widget-apply widget-create-child-value widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create] 4 [widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-type-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert custom-variable-value-create widget-apply] 4 [widget-get widget-choice-inline-bubbles-p widget-apply widget-inline-p widget-choice-value-create widget-apply widget-default-create widget-apply widget-create-child widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create] 8 [undo-auto--undoable-change insert-char widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create] 4 [widget-apply widget-choice-match widget-apply widget-match-inline widget-checklist-match-inline widget-apply widget-match-inline widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create] 4 [custom-magic-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert custom-variable-value-create widget-apply widget-default-create widget-apply widget-create "#<compiled 0x200e28cd8396fcf>" mapcar custom-buffer-create-internal custom-buffer-create customize-option progn] 4 [widget-apply "#<compiled -0xf214aae4a43c62d>" mapcar widget-editable-list-value-get widget-apply widget-value widget-default-value-inline widget-apply "#<compiled -0xf214aae4a43c62d>" mapcar widget-editable-list-value-get widget-apply widget-value widget-default-value-inline widget-apply "#<compiled -0xf214aae4a43c62d>"] 12 [widget-get widget-default-value-inline widget-apply "#<compiled -0xf214aae4a43c62d>" mapcar widget-editable-list-value-get widget-apply widget-value widget-default-value-inline widget-apply "#<compiled -0xf214aae4a43c62d>" mapcar widget-editable-list-value-get widget-apply widget-value widget-default-value-inline] 4 [mapcar widget-editable-list-value-get widget-apply widget-value widget-default-value-inline widget-apply "#<compiled -0xf214aae4a43c62d>" mapcar widget-editable-list-value-get widget-apply widget-value widget-default-value-inline widget-apply "#<compiled -0xf214aae4a43c62d>" mapcar widget-editable-list-value-get] 4 ["#<compiled 0x1c52983bfc51a7>" mapatoms custom-add-parent-links custom-variable-value-create widget-apply widget-default-create widget-apply widget-create "#<compiled 0x200e28cd8396fcf>" mapcar custom-buffer-create-internal custom-buffer-create customize-option progn progn eval] 4 [widget-default-delete widget-apply widget-default-value-set widget-apply widget-value-set custom-magic-reset mapc custom-buffer-create-internal custom-buffer-create customize-option progn progn eval elisp--eval-last-sexp eval-last-sexp funcall-interactively] 4 [widget-setup custom-buffer-create-internal custom-buffer-create customize-option progn progn eval elisp--eval-last-sexp eval-last-sexp funcall-interactively call-interactively command-execute nil nil nil nil] 364 [Automatic\ GC nil] 541)) (25864 11653 301113 472000) nil]

[-- Attachment #4: profiler-results-no-inserting --]
[-- Type: text/plain, Size: 29129 bytes --]

        6967  92% - command-execute
        6967  92%  - call-interactively
        6967  92%   - funcall-interactively
        6967  92%    - eval-last-sexp
        6967  92%     - elisp--eval-last-sexp
        6967  92%      - eval
        6967  92%       - progn
        6967  92%        - progn
        6967  92%         - customize-option
        6951  92%          - custom-buffer-create
        6951  92%           - custom-buffer-create-internal
        6583  87%            - mapcar
        6583  87%             - #<compiled 0x200e28cd8396fcf>
        6583  87%              - widget-create
        6583  87%               - widget-apply
        6583  87%                - widget-default-create
        6583  87%                 - widget-apply
        6583  87%                  - custom-variable-value-create
        6579  87%                   - widget-create-child-and-convert
        6579  87%                    - widget-apply
        6579  87%                     - widget-default-create
        6575  87%                      - widget-apply
        6571  87%                       - widget-type-value-create
        6571  87%                        - widget-create-child-value
        6571  87%                         - widget-apply
        6571  87%                          - widget-default-create
        6571  87%                           - widget-apply
        6571  87%                            - widget-editable-list-value-create
        6571  87%                             - widget-editable-list-entry-create
        6559  87%                              - widget-create-child-value
        6559  87%                               - widget-apply
        6559  87%                                - widget-default-create
        6555  87%                                 - widget-apply
        6555  87%                                  - widget-group-value-create
        6535  86%                                   - widget-create-child-value
        6535  86%                                    - widget-apply
        6535  86%                                     - widget-default-create
        6459  85%                                      - widget-apply
        6459  85%                                       - widget-editable-list-value-create
        6459  85%                                        - widget-editable-list-entry-create
        6459  85%                                         - widget-create-child-value
        6451  85%                                          - widget-apply
        6451  85%                                           - widget-default-create
        6451  85%                                            - widget-apply
        6451  85%                                             - widget-group-value-create
        6439  85%                                              - widget-create-child-value
        6435  85%                                               - widget-apply
        6435  85%                                                - widget-default-create
        6115  81%                                                 - widget-apply
        4075  54%                                                  - widget-checklist-value-create
        4071  54%                                                   - widget-checklist-add-item
        2163  28%                                                    - widget-create-child
        2159  28%                                                     - widget-apply
        2159  28%                                                      - widget-default-create
         724   9%                                                       - widget-apply
         724   9%                                                        - widget-choice-value-create
         712   9%                                                         - widget-create-child-value
         712   9%                                                          - widget-apply
         708   9%                                                           - widget-default-create
         324   4%                                                              princ
           4   0%                                                              undo-auto--undoable-change
           4   0%                                                              substitute-command-keys
          12   0%                                                         - widget-inline-p
          12   0%                                                          - widget-apply
          12   0%                                                           - widget-choice-inline-bubbles-p
           8   0%                                                              widget-get
          32   0%                                                       - substitute-command-keys
          12   0%                                                        - #<compiled -0x1c8af385edddb39f>
          12   0%                                                         - kill-buffer
           4   0%                                                            replace-buffer-in-windows
           8   0%                                                        - generate-new-buffer
           4   0%                                                           generate-new-buffer-name
           4   0%                                                          buffer-string
          20   0%                                                       - widget-specify-button
          20   0%                                                        - widget-apply
           8   0%                                                         - widget-default-mouse-face-get
           8   0%                                                          - widget-apply
           8   0%                                                           - widget-default-mouse-face-get
           8   0%                                                            - widget-apply
           4   0%                                                             - widget-default-mouse-face-get
           4   0%                                                              - widget-apply
           4   0%                                                               - widget-default-mouse-face-get
           4   0%                                                                - widget-apply
           4   0%                                                                 - widget-default-mouse-face-get
           4   0%                                                                  - widget-apply
           4   0%                                                                   - widget-default-mouse-face-get
           4   0%                                                                    - widget-apply
           4   0%                                                                     - widget-default-mouse-face-get
           4   0%                                                                      - widget-apply
           4   0%                                                                       - widget-default-mouse-face-get
           4   0%                                                                          widget-get
           4   0%                                                         - widget-default-button-face-get
           4   0%                                                          - widget-apply
           4   0%                                                           - widget-default-button-face-get
           4   0%                                                              widget-get
           8   0%                                                         string-match
           4   0%                                                         widget-get-indirect
           4   0%                                                       widget-get
         776  10%                                                    - widget-create-child-value
         768  10%                                                     - widget-apply
         764  10%                                                      - widget-default-create
         284   3%                                                       - widget-apply
         284   3%                                                        - widget-choice-value-create
         284   3%                                                         - widget-create-child-value
         284   3%                                                          - widget-apply
         276   3%                                                           - widget-default-create
          80   1%                                                              princ
          60   0%                                                            - widget-apply
          60   0%                                                               widget-field-value-create
           8   0%                                                           - #<compiled 0x6b91569ed400009>
           8   0%                                                            - widget-sexp-value-to-internal
           4   0%                                                               string-match
           4   0%                                                             - pp-to-string
           4   0%                                                                generate-new-buffer
           4   0%                                                         string-match
           4   0%                                                         widget-get
           4   0%                                                       - substitute-command-keys
           4   0%                                                        - #<compiled -0x1c8af385ec61d99f>
           4   0%                                                         - kill-buffer
           4   0%                                                            replace-buffer-in-windows
           4   0%                                                        #<compiled -0x189981ea312f002d>
           8   0%                                                       widget-get
         684   9%                                                    - apply
         684   9%                                                     - widget-create-child-and-convert
         680   9%                                                      - widget-apply
         680   9%                                                       - widget-default-create
         652   8%                                                        - widget-apply
         652   8%                                                         - widget-toggle-value-create
         468   6%                                                          - widget-image-insert
         464   6%                                                           - insert-image
           4   0%                                                              add-text-properties
           4   0%                                                             featurep
         156   2%                                                          - widget-image-find
         148   1%                                                           - find-image
          92   1%                                                            - apply
          92   1%                                                             - create-image
          88   1%                                                              - image-type
          88   1%                                                               - image-type-from-file-header
          36   0%                                                                - insert-file-contents-literally
          32   0%                                                                 - insert-file-contents
           4   0%                                                                  - after-insert-file-set-coding
           4   0%                                                                   - find-new-buffer-file-coding-system
           4   0%                                                                    - coding-system-type
           4   0%                                                                       plist-get
           4   0%                                                                    format-decode
           4   0%                                                                   append
          32   0%                                                                  file-readable-p
          12   0%                                                                - #<compiled -0x1c8af3841881059f>
          12   0%                                                                 - kill-buffer
           8   0%                                                                  - replace-buffer-in-windows
           4   0%                                                                   - unrecord-window-buffer
           4   0%                                                                      window-normalize-window
           4   0%                                                                     window-list-1
           4   0%                                                                - image-type-from-buffer
           4   0%                                                                   looking-at
           4   0%                                                                - generate-new-buffer
           4   0%                                                                   get-buffer-create
           4   0%                                                              - image-compute-scaling-factor
           4   0%                                                                 window-width
          56   0%                                                            - image-search-load-path
          36   0%                                                               file-readable-p
          16   0%                                                               expand-file-name
           4   0%                                                           - display-graphic-p
           4   0%                                                              framep-on-display
          16   0%                                                          - substitute-command-keys
           8   0%                                                           - #<compiled -0x1c8af38232c5e59f>
           8   0%                                                            - kill-buffer
           8   0%                                                             - replace-buffer-in-windows
           4   0%                                                              - unrecord-window-buffer
           4   0%                                                                 set-window-prev-buffers
           4   0%                                                           - generate-new-buffer
           4   0%                                                              get-buffer-create
           4   0%                                                          - widget-value
           4   0%                                                           - widget-apply
           4   0%                                                              #<compiled -0x189981ea312f002d>
           4   0%                                                            append
           8   0%                                                        - widget-specify-button
           4   0%                                                           widget-put
           4   0%                                                        - widget-clear-undo
           4   0%                                                           buffer-disable-undo
           4   0%                                                        - widget-get-indirect
           4   0%                                                           widget-get
           4   0%                                                          string-match
           4   0%                                                          string-to-char
           4   0%                                                        widget-get
           8   0%                                                    - widget-apply
           8   0%                                                     - widget-default-deactivate
           8   0%                                                      - widget-specify-inactive
           4   0%                                                         widget-get
           4   0%                                                         make-overlay
           8   0%                                                      widget--should-indent-p
           4   0%                                                      match-string
           4   0%                                                      string-match
        1704  22%                                                  - widget-editable-list-value-create
        1692  22%                                                   - widget-editable-list-entry-create
         832  11%                                                    - widget-create-child-value
         832  11%                                                     - widget-apply
         832  11%                                                      - widget-default-create
         664   8%                                                       - widget-apply
         664   8%                                                        - widget-group-value-create
         656   8%                                                           insert-char
           4   0%                                                           widget-create-child-value
         340   4%                                                    - apply
         340   4%                                                     - widget-create-child-and-convert
         336   4%                                                      - widget-apply
         336   4%                                                       - widget-default-create
         320   4%                                                        - widget-apply
         320   4%                                                         - widget-push-button-value-create
          12   0%                                                          - substitute-command-keys
           4   0%                                                           - #<compiled -0x1c8af3b0cfaee19f>
           4   0%                                                            - kill-buffer
           4   0%                                                             - replace-buffer-in-windows
           4   0%                                                              - unrecord-window-buffer
           4   0%                                                                 assq-delete-all
           4   0%                                                          widget-get-indirect
           4   0%                                                      - apply
           4   0%                                                       - widget-convert
           4   0%                                                          plist-get
         176   2%                                                      insert-char
           4   0%                                                    - undo-auto--undoable-change
           4   0%                                                       undo-auto--boundary-ensure-timer
          12   0%                                                   - widget-match-inline
          12   0%                                                    - widget-apply
          12   0%                                                     - widget-group-match
          12   0%                                                      - widget-group-match-inline
           8   0%                                                       - widget-match-inline
           8   0%                                                        - widget-apply
           8   0%                                                         - widget-editable-list-match
           8   0%                                                          - widget-editable-list-match-inline
           8   0%                                                           - widget-match-inline
           8   0%                                                            - widget-apply
           8   0%                                                             - widget-group-match
           8   0%                                                              - widget-group-match-inline
           8   0%                                                               - widget-match-inline
           8   0%                                                                - widget-apply
           8   0%                                                                 - widget-checklist-match-inline
           8   0%                                                                  - widget-match-inline
           4   0%                                                                     widget-apply
         316   4%                                                    widget-field-value-create
          20   0%                                                  - widget-editable-list-format-handler
          12   0%                                                   - apply
          12   0%                                                    - widget-create-child-and-convert
          12   0%                                                     - widget-apply
          12   0%                                                      - widget-default-create
          12   0%                                                       - widget-apply
          12   0%                                                        - widget-push-button-value-create
           4   0%                                                           substitute-command-keys
           8   0%                                                     insert-char
           4   0%                                                 - substitute-command-keys
           4   0%                                                  - #<compiled -0x1c8af3864116699f>
           4   0%                                                     kill-buffer
           4   0%                                                   match-string
           4   0%                                                 - widget-clear-undo
           4   0%                                                    buffer-enable-undo
           4   0%                                               - widget-copy
           4   0%                                                  widget-apply
           8   0%                                              - widget-match-inline
           8   0%                                               - widget-apply
           4   0%                                                - widget-editable-list-match
           4   0%                                                 - widget-editable-list-match-inline
           4   0%                                                    append
           4   0%                                                - widget-checklist-match-inline
           4   0%                                                 - widget-match-inline
           4   0%                                                  - widget-apply
           4   0%                                                   - widget-choice-match
           4   0%                                                      widget-apply
           4   0%                                              - insert-char
           4   0%                                                 undo-auto--undoable-change
           8   0%                                          - widget-copy
           8   0%                                           - widget-apply
           8   0%                                            - widget-types-copy
           8   0%                                             - mapcar
           8   0%                                              - widget-copy
           8   0%                                               - widget-apply
           8   0%                                                - widget-types-copy
           8   0%                                                 - mapcar
           8   0%                                                  - widget-copy
           8   0%                                                   - widget-apply
           8   0%                                                    - widget-types-copy
           8   0%                                                     - mapcar
           8   0%                                                      - widget-copy
           8   0%                                                         widget-apply
          20   0%                                     insert-char
           8   0%                              - apply
           8   0%                               - widget-create-child-and-convert
           8   0%                                - widget-apply
           8   0%                                 - widget-default-create
           4   0%                                    string-match
           4   0%                                  - widget-apply
           4   0%                                     widget-push-button-value-create
           4   0%                         custom-magic-value-create
           4   0%                      - widget-specify-button
           4   0%                         make-overlay
           4   0%                   - custom-add-parent-links
           4   0%                    - mapatoms
           4   0%                       #<compiled 0x1c52983bfc51a7>
         364   4%              widget-setup
           4   0%            - mapc
           4   0%             - custom-magic-reset
           4   0%              - widget-value-set
           4   0%               - widget-apply
           4   0%                - widget-default-value-set
           4   0%                 - widget-apply
           4   0%                    widget-default-delete
           8   0%          - byte-code
           8   0%           - require
           8   0%            - load-with-code-conversion
           8   0%             - eval-buffer
           4   0%                read
           4   0%              - internal-macroexpand-for-load
           4   0%               - macroexpand--all-toplevel
           4   0%                - macroexp--expand-all
           4   0%                 - #<compiled -0x60853496ded3bb1>
           4   0%                  - macroexp--all-forms
           4   0%                   - macroexp--expand-all
           4   0%                    - #<compiled -0x60853496ded3bb1>
           4   0%                       macroexp--all-forms
           8   0%            read
         541   7%   Automatic GC
          24   0% - ...
          20   0%  - widget-editable-list-value-get
          20   0%   - mapcar
          20   0%    - #<compiled -0xf214aae4a43c62d>
          20   0%     - widget-apply
          20   0%      - widget-default-value-inline
          20   0%       - widget-value
          20   0%        - widget-apply
          20   0%         - widget-editable-list-value-get
          20   0%          - mapcar
          20   0%           - #<compiled -0xf214aae4a43c62d>
          20   0%            - widget-apply
          20   0%             - widget-default-value-inline
          20   0%              - widget-value
          20   0%               - widget-apply
          20   0%                - widget-editable-list-value-get
          20   0%                 - mapcar
          16   0%                  - #<compiled -0xf214aae4a43c62d>
          16   0%                   - widget-apply
           4   0%                    - widget-default-value-inline
           4   0%                       widget-get
           4   0%  - widget-type-match
           4   0%   - widget-convert
           4   0%    - widget-types-convert-widget
           4   0%     - mapcar
           4   0%      - widget-convert
           4   0%       - widget-types-convert-widget
           4   0%        - mapcar
           4   0%         - widget-convert
           4   0%          - widget-types-convert-widget
           4   0%           - mapcar
           4   0%            - widget-convert
           4   0%             - widget-types-convert-widget
           4   0%              - mapcar
           4   0%               - widget-convert
           4   0%                - widget-value-convert-widget
           4   0%                   widget-get

^ permalink raw reply related	[flat|nested] 12+ messages in thread

* bug#53606: 29.0.50; Very slow Customize buffer for bibtex-biblatex-entry-alist
  2023-09-18 11:07             ` Mauro Aranda
@ 2023-12-21 11:51               ` Ihor Radchenko
  2024-11-17 22:51                 ` Roland Winkler
  0 siblings, 1 reply; 12+ messages in thread
From: Ihor Radchenko @ 2023-12-21 11:51 UTC (permalink / raw)
  To: Mauro Aranda; +Cc: Eli Zaretskii, 53606

Mauro Aranda <maurooaranda@gmail.com> writes:

> I focused on the format handling, since there's no need to insert the
> escape formats in the buffer.  So I rearranged the 4 functions that
> handle the format to avoid it and here are the figures I got, when
> running:
> (benchmark-run 5
>    (customize-option 'bibtex-biblatex-entry-alist))
>
>  From master, inserting either :format or :entry-format:
> (130.200276352 291 3.1221133909999996)
>
> Without inserting it:
> (38.244185927000004 266 2.795578699)
> ...
> All data is without native compilation.  I'd appreciate if someone could
> at least run it once with native compilation, with and without my patch.

I do not see much difference with native compilation:

- without the patch :: (134.779200699 247 4.294675525)
- with the patch :: (39.828912859 249 3.881637917)

But your patch is still making things faster.

-- 
Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at <https://orgmode.org/>.
Support Org development at <https://liberapay.com/org-mode>,
or support my work at <https://liberapay.com/yantar92>





^ permalink raw reply	[flat|nested] 12+ messages in thread

* bug#53606: 29.0.50; Very slow Customize buffer for bibtex-biblatex-entry-alist
  2023-12-21 11:51               ` Ihor Radchenko
@ 2024-11-17 22:51                 ` Roland Winkler
  2024-11-18 12:15                   ` Eli Zaretskii
  0 siblings, 1 reply; 12+ messages in thread
From: Roland Winkler @ 2024-11-17 22:51 UTC (permalink / raw)
  To: 53606

I looked at this old bug again (while working on BibTeX mode), and I
noticed that one piece of information was missing in this thread that
could be helpful:

Lars filed this report against Emacs 29.  Back then, I had still access
to emacs 25.1 and 27.1.  On the same machine emacs 25.1 needed about 2s,
whereas 27.1 needed 20s to initialize the customize buffer for
bibtex-biblatex-entry-alist.  So it seems something in the customize or
widget library was changed that resulted in the slowdown.  Nothing
changed on the side of BibTeX mode back then.

I just filed bug #74409 that is also about the customize buffer for
bibtex-biblatex-entry-alist.  It is likewise about a problem that exists
only with more recent versions of emacs.  But I do not know whether
these problems are truly related, or some symptoms just happen to be
similar.






^ permalink raw reply	[flat|nested] 12+ messages in thread

* bug#53606: 29.0.50; Very slow Customize buffer for bibtex-biblatex-entry-alist
  2024-11-17 22:51                 ` Roland Winkler
@ 2024-11-18 12:15                   ` Eli Zaretskii
  0 siblings, 0 replies; 12+ messages in thread
From: Eli Zaretskii @ 2024-11-18 12:15 UTC (permalink / raw)
  To: Roland Winkler; +Cc: 53606

> From: Roland Winkler <winkler@gnu.org>
> Date: Sun, 17 Nov 2024 16:51:07 -0600
> 
> I looked at this old bug again (while working on BibTeX mode), and I
> noticed that one piece of information was missing in this thread that
> could be helpful:
> 
> Lars filed this report against Emacs 29.  Back then, I had still access
> to emacs 25.1 and 27.1.  On the same machine emacs 25.1 needed about 2s,
> whereas 27.1 needed 20s to initialize the customize buffer for
> bibtex-biblatex-entry-alist.  So it seems something in the customize or
> widget library was changed that resulted in the slowdown.  Nothing
> changed on the side of BibTeX mode back then.

Running the recipe after "M-x profiler-start RET RET" might show which
part(s) of the code take most of the time.





^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2024-11-18 12:15 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-01-28 15:03 bug#53606: 29.0.50; Very slow Customize buffer for bibtex-biblatex-entry-alist Lars Ingebrigtsen
2023-09-09 22:23 ` Mauro Aranda
2023-09-09 22:51   ` Mauro Aranda
2023-09-10  5:01     ` Eli Zaretskii
2023-09-10  9:49       ` Mauro Aranda
2023-09-10 10:43         ` Eli Zaretskii
2023-09-10 10:50           ` Ihor Radchenko
2023-09-10 12:41           ` Mauro Aranda
2023-09-18 11:07             ` Mauro Aranda
2023-12-21 11:51               ` Ihor Radchenko
2024-11-17 22:51                 ` Roland Winkler
2024-11-18 12:15                   ` Eli Zaretskii

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).