emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Low redisplay performance (23 regression)


From: Tobias C. Rittweiler
Subject: Re: Low redisplay performance (23 regression)
Date: Wed, 29 Apr 2009 19:35:52 +0200
User-agent: Gnus/5.110006 (No Gnus v0.6) Emacs/23.0.60 (gnu/linux)

Stefan Monnier <address@hidden> writes:

> > As I use `end-of-defun' in my customized
> > `font-lock-extend-region-functions' this does have an impact on the
> > overall performance of fontification for me on large files.
>
> I don't think the size of the file (aka buffer) should make
> a difference.  

Yes, I meant to write on large defuns. I test this on a file which
contains defuns spanning up to 500-600 lines.


> And I can't think of a good reason why EOD should take a
> non-negligible amount of time compared to running
> font-lock-fontify-region on a whole defun at a time.

Find the below profiling outputs. The first is for Emacs 22.1.1, the
second for 23.0.92.1 (checked out, and built today.)

I used `elp' to do the profiling. I profiled the slime package, the
font-lock package, and the jit-lock package. As well as
`beginning-of-defun', `beginning-of-defun-raw', and `end-of-defun'.

Then I open a file, and scroll down to the end using Page Down.

(`slime-extend-region-for-defun' is a font-lock extend-region function
which calls `slime-region-for-extended tlf-at-point' which in turns call
`slime-region-for-tlf-at-point' which calls `end-of-defun' once, and
`beginning-of-defun' several times. `slime-search-suppressed-forms' is a
marker function on `font-lock-keywords'.)

You'll see in the profiling output that basically all functions run
slower on 23.x. It's still fast enough except for the extreme cases of
defuns spanning over 500 lines.

I'm not sure how much you can do with this information. But I can concur
with the OP that there does seem to be a performance regression.

  -T.

PS.

GNU Emacs 22.1.1

Function Name                                              Call Count  Elapsed 
Time  Average Time
=========================================================  ==========  
============  ============
jit-lock-function                                          478         
6.0523169999  0.0126617510
jit-lock-fontify-now                                       478         
6.0471380000  0.0126509163
font-lock-fontify-region                                   478         
5.9743459999  0.0124986317
font-lock-default-fontify-region                           478         
5.9653550000  0.0124798221
slime-extend-region-for-font-lock                          954         
2.8670120000  0.0030052536
font-lock-fontify-keywords-region                          478         
2.2039999999  0.0046108786
slime-region-for-tlf-at-point                              924         
1.9189019999  0.0020767337
end-of-defun                                               1848        
1.6501459999  0.0008929361
slime-region-for-extended-tlf-at-point                     461         1.213281 
     0.0026318459
slime-search-suppressed-forms                              922         
1.0144610000  0.0011002830
font-lock-fontify-syntactically-region                     478         0.747676 
     0.0015641757
beginning-of-defun-raw                                     4233        
0.5864199999  0.0001385353
beginning-of-defun                                         2382        
0.5515089999  0.0002315319
slime-forward-sexp                                         220         
0.0974470000  0.0004429409
slime-forward-cruft                                        220         
0.0939059999  0.0004268454
slime-eval-feature-conditional                             444         
0.0917369999  0.0002066148
slime-lisp-features                                        444         
0.0813829999  0.0001832950
slime-forward-blanks                                       220         
0.0522439999  0.0002374727
font-lock-extend-region-wholelines                         954         
0.0449930000  4.716...e-05
slime-forward-any-comment                                  220         
0.0356580000  0.0001620818
font-lock-unfontify-region                                 478         
0.0288390000  6.033...e-05
font-lock-default-unfontify-region                         478         
0.0204609999  4.280...e-05
slime-pre-command-hook                                     106         
0.0053909999  5.085...e-05
slime-connection                                           444         
0.0053260000  1.199...e-05
font-lock-extend-region-multiline                          954         
0.0042749999  4.481...e-06
slime-keywordify                                           444         
0.0030740000  6.923...e-06
slime-connected-p                                          922         
0.0023909999  2.593...e-06
font-lock-set-defaults                                     484         
0.0016050000  3.316...e-06
jit-lock-context-fontify                                   7           
0.0012900000  0.0001842857
slime-forward-reader-conditional                           220         
0.0011560000  5.254...e-06
slime-current-connection                                   444         
0.0010020000  2.256...e-06
font-lock-mode                                             8           
0.0009860000  0.0001232500
font-lock-default-function                                 8           
0.0007859999  9.824...e-05
font-lock-mode-internal                                    2           0.000696 
     0.000348
slime-post-command-hook                                    106         
0.0006859999  6.471...e-06
font-lock-turn-on-thing-lock                               2           0.000424 
     0.000212
jit-lock-register                                          2           
0.0003670000  0.0001835000
jit-lock-mode                                              2           0.000339 
     0.0001695
jit-lock-refontify                                         2           
0.0003019999  0.0001509999
font-lock-compile-keywords                                 2           0.000188 
     9.4e-05
slime-lisp-mode-hook                                       1           7.9e-05  
     7.9e-05
font-lock-compile-keyword                                  32          6.7e-05  
     2.09375e-06
slime-mode                                                 1           6.3e-05  
     6.3e-05
font-lock-change-mode                                      1           5.3e-05  
     5.3e-05
font-lock-add-keywords                                     2           4.6e-05  
     2.3e-05
slime-setup-command-hooks                                  1           3.4e-05  
     3.4e-05
slime-add-local-hook                                       2           
2.100...e-05  1.050...e-05
font-lock-remove-keywords                                  2           
2.100...e-05  1.050...e-05
font-lock-value-in-major-mode                              5           1.1e-05  
     2.2e-06
font-lock-eval-keywords                                    2           9e-06    
     4.5e-06
slime-setup-first-change-hook                              1           5e-06    
     5e-06
slime-add-easy-menu                                        1           4e-06    
     4e-06
font-lock-choose-keywords                                  1           3e-06    
     3e-06


------------------------------------------------------------

GNU Emacs 23.0.92.1

jit-lock-function                                          478         
9.4705599999  0.0198128870
jit-lock-fontify-now                                       478         
9.4663009999  0.0198039769
font-lock-fontify-region                                   478         
9.4454880000  0.0197604351
font-lock-default-fontify-region                           478         
9.4372980000  0.0197433012
font-lock-fontify-keywords-region                          478         4.463293 
     0.0093374330
slime-extend-region-for-font-lock                          954         
3.9002370000  0.0040882987
slime-region-for-tlf-at-point                              924         
2.8002330000  0.0030305551
end-of-defun                                               1848        
2.5033839999  0.0013546450
slime-region-for-extended-tlf-at-point                     461         
1.6439540000  0.0035660607
slime-search-suppressed-forms                              922         
1.5033249999  0.0016305043
font-lock-fontify-syntactically-region                     478         
1.0036810000  0.0020997510
beginning-of-defun-raw                                     4233        
0.4824060000  0.0001139631
beginning-of-defun                                         2382        
0.4037609999  0.0001695050
slime-eval-feature-conditional                             444         
0.0967099999  0.0002178153
slime-lisp-features                                        444         
0.0876879999  0.0001974954
slime-forward-sexp                                         220         
0.0707279999  0.0003214909
slime-forward-cruft                                        220         
0.0670999999  0.0003049999
slime-forward-any-comment                                  220         0.04091  
     0.0001859545
font-lock-unfontify-region                                 478         
0.0276759999  5.789...e-05
slime-forward-blanks                                       220         
0.0211710000  9.623...e-05
font-lock-default-unfontify-region                         478         
0.0208749999  4.367...e-05
slime-pre-command-hook                                     111         
0.0053809999  4.847...e-05
slime-connection                                           444         
0.0052940000  1.192...e-05
font-lock-extend-region-multiline                          954         
0.0036339999  3.809...e-06
font-lock-extend-region-wholelines                         954         
0.0034359999  3.601...e-06
slime-keywordify                                           444         
0.0028710000  6.466...e-06
slime-connected-p                                          922         
0.0023109999  2.506...e-06
font-lock-set-defaults                                     484         
0.0016920000  3.495...e-06
jit-lock-context-fontify                                   7           0.001305 
     0.0001864285
slime-forward-reader-conditional                           220         
0.0010509999  4.777...e-06
slime-current-connection                                   444         
0.0009630000  2.168...e-06
font-lock-mode                                             8           0.000752 
     9.4e-05
slime-post-command-hook                                    111         
0.0006969999  6.279...e-06
font-lock-default-function                                 8           0.00055  
     6.875e-05
font-lock-mode-internal                                    2           0.000459 
     0.0002295
font-lock-compile-keywords                                 2           0.000271 
     0.0001355
font-lock-turn-on-thing-lock                               2           0.000151 
     7.55e-05
jit-lock-register                                          2           9.6e-05  
     4.8e-05
font-lock-compile-keyword                                  32          
8.500...e-05  2.656...e-06
jit-lock-mode                                              2           7.1e-05  
     3.55e-05
slime-lisp-mode-hook                                       1           6.7e-05  
     6.7e-05
slime-mode                                                 1           5.9e-05  
     5.9e-05
font-lock-change-mode                                      1           5.2e-05  
     5.2e-05
font-lock-add-keywords                                     2           4.6e-05  
     2.3e-05
jit-lock-refontify                                         2           3.7e-05  
     1.85e-05
slime-setup-command-hooks                                  1           3.2e-05  
     3.2e-05
font-lock-remove-keywords                                  2           
2.100...e-05  1.050...e-05
slime-add-local-hook                                       2           1.8e-05  
     9e-06
font-lock-eval-keywords                                    2           1.5e-05  
     7.5e-06
font-lock-value-in-major-mode                              5           1.1e-05  
     2.2e-06
slime-setup-first-change-hook                              1           5e-06    
     5e-06
font-lock-choose-keywords                                  1           4e-06    
     4e-06
slime-add-easy-menu                                        1           3e-06    
     3e-06





reply via email to

[Prev in Thread] Current Thread [Next in Thread]