unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
* Low redisplay performance (23 regression)
@ 2009-04-20 21:58 David Reitter
  2009-04-20 22:31 ` Deniz Dogan
                   ` (4 more replies)
  0 siblings, 5 replies; 58+ messages in thread
From: David Reitter @ 2009-04-20 21:58 UTC (permalink / raw)
  To: Emacs-Devel devel

I've been noticing a substantial slowdown in redisplay performance.   
Scrolling down emacs.c in fundamental-mode takes about 2 seconds in  
Emacs 22 (Carbon port), and 3 seconds in Emacs 23 (NS port).

With font-lock-mode (in c-mode) enabled, the difference is even larger:

About 2.5 seconds in Emacs 22, and more than 7 seconds in 23/NS.

The effect interacts with the display of overlays etc. in the header  
line.  When turning that off, I get about 2.5 seconds in Emacs 22, and  
still more than 4 seconds in 23/NS.  (All values estimated manually  
from several tries.)

I'm wondering if others get the same on other platforms comparing 22  
and 23, or if this is a problem specifically in the NS port (for  
example, with setting drawing color or the like).





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

* Re: Low redisplay performance (23 regression)
  2009-04-20 21:58 Low redisplay performance (23 regression) David Reitter
@ 2009-04-20 22:31 ` Deniz Dogan
  2009-04-20 22:33 ` Chong Yidong
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 58+ messages in thread
From: Deniz Dogan @ 2009-04-20 22:31 UTC (permalink / raw)
  To: David Reitter; +Cc: Emacs-Devel devel

2009/4/20 David Reitter <david.reitter@gmail.com>:
> I've been noticing a substantial slowdown in redisplay performance.
>  Scrolling down emacs.c in fundamental-mode takes about 2 seconds in Emacs
> 22 (Carbon port), and 3 seconds in Emacs 23 (NS port).
>
> With font-lock-mode (in c-mode) enabled, the difference is even larger:
>
> About 2.5 seconds in Emacs 22, and more than 7 seconds in 23/NS.
>
> The effect interacts with the display of overlays etc. in the header line.
>  When turning that off, I get about 2.5 seconds in Emacs 22, and still more
> than 4 seconds in 23/NS.  (All values estimated manually from several
> tries.)
>
> I'm wondering if others get the same on other platforms comparing 22 and 23,
> or if this is a problem specifically in the NS port (for example, with
> setting drawing color or the like).

I haven't really done any real testing, but I recall the difference
being quite noticable when I switched from 22 to 23.

--
Deniz Dogan




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

* Re: Low redisplay performance (23 regression)
  2009-04-20 21:58 Low redisplay performance (23 regression) David Reitter
  2009-04-20 22:31 ` Deniz Dogan
@ 2009-04-20 22:33 ` Chong Yidong
  2009-04-20 23:20   ` David Reitter
  2009-04-21  3:15   ` Eli Zaretskii
  2009-04-21 14:56 ` William Xu
                   ` (2 subsequent siblings)
  4 siblings, 2 replies; 58+ messages in thread
From: Chong Yidong @ 2009-04-20 22:33 UTC (permalink / raw)
  To: David Reitter; +Cc: Emacs-Devel devel

David Reitter <david.reitter@gmail.com> writes:

> I'm wondering if others get the same on other platforms comparing 22
> and 23, or if this is a problem specifically in the NS port (for
> example, with setting drawing color or the like).

On GNU/Linux, I do not experience much of a difference in performance
between Emacs 22 and Emacs 23.

If you are trying to track down the problem, you could first try to see
if the problem is occurring in Lisp or in the C code.  For instance,
does scrolling in buffers trigger GCs?  Is there any difference in
performance if you disable the tool-bar or other parts of the graphical
display?




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

* Re: Low redisplay performance (23 regression)
  2009-04-20 22:33 ` Chong Yidong
@ 2009-04-20 23:20   ` David Reitter
  2009-04-21  3:15   ` Eli Zaretskii
  1 sibling, 0 replies; 58+ messages in thread
From: David Reitter @ 2009-04-20 23:20 UTC (permalink / raw)
  To: Chong Yidong; +Cc: Emacs-Devel devel

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

On Apr 20, 2009, at 6:33 PM, Chong Yidong wrote:

> David Reitter <david.reitter@gmail.com> writes:
>
>> I'm wondering if others get the same on other platforms comparing 22
>> and 23, or if this is a problem specifically in the NS port (for
>> example, with setting drawing color or the like).
>
> On GNU/Linux, I do not experience much of a difference in performance
> between Emacs 22 and Emacs 23.
>
> If you are trying to track down the problem, you could first try to  
> see
> if the problem is occurring in Lisp or in the C code.  For instance,
> does scrolling in buffers trigger GCs?  Is there any difference in
> performance if you disable the tool-bar or other parts of the  
> graphical
> display?


I've run Shark over it (profiling tool).
For the Carbon port, it looks uneventful.
For NS /23, I get 24% time spent in mark_object and another 6% in  
garbage_collect.  [Does this indicate consing?]
The 16% in display_mode_lines would support what I observed regarding  
the header line (even though I thought the effect was more than that).

Note that I have (setq redisplay-dont-pause t), because otherwise it  
skips a lot of pages.  Note that it does that too when scrolling line  
by line; for the trace below, I scrolled page-wise.

Regarding display elements: the tool-bar doesn't matter, but the  
header line makes a big difference.  Using a simpler header line (no  
properties, no overlays) improves the speed.  But note that I've used  
the same header line in both Carbon/22 and NS/23.
Unfortunately there doesn't seem to be anything specific about the  
header line that causes the slowdown in NS/23, except that (setq  
header-line-format "Hello") speeds up the scrolling.  But even without  
header line do I see a marked regression compared to 22.



	0.0%	69.2%	Aquamacs	start	
	0.0%	69.2%	Aquamacs	 main	
	0.0%	69.2%	Aquamacs	  Frecursive_edit	
	0.0%	69.2%	Aquamacs	   recursive_edit_1	
	0.0%	69.2%	Aquamacs	    command_loop	
	0.0%	69.2%	Aquamacs	     internal_catch	
	0.0%	69.2%	Aquamacs	      command_loop_2	
	0.0%	69.2%	Aquamacs	       internal_condition_case	
	0.0%	69.2%	Aquamacs	        command_loop_1	
	0.0%	55.9%	Aquamacs	         read_key_sequence	
	0.0%	55.9%	Aquamacs	          read_char	
	0.0%	50.6%	Aquamacs	           redisplay_internal	
	0.0%	38.8%	Aquamacs	            redisplay_windows	
	0.0%	38.8%	Aquamacs	             internal_condition_case_1	
	0.0%	38.8%	Aquamacs	              redisplay_window_0	
	0.0%	38.8%	Aquamacs	               redisplay_window	
	0.0%	17.9%	Aquamacs	                try_window	
	0.1%	17.7%	Aquamacs	                 display_line	
	0.0%	16.2%	Aquamacs	                  get_next_display_element	
	0.1%	16.2%	Aquamacs	                   next_element_from_buffer	
	0.0%	15.5%	Aquamacs	                    handle_stop	
	0.0%	11.5%	Aquamacs	                     handle_fontified_prop	
	0.0%	11.5%	Aquamacs	                      safe_call1	
	0.0%	11.5%	Aquamacs	                       safe_call	
	0.0%	11.5%	Aquamacs	                        internal_condition_case_2	
	0.0%	11.5%	Aquamacs	                         Ffuncall	
	1.4%	6.0%	Aquamacs	                          Fgarbage_collect	
	0.0%	1.3%	Aquamacs	                           lisp_free	
	0.1%	0.7%	libSystem.B.dylib	                            free	
	0.5%	0.6%	libSystem.B.dylib	                             szone_free	
	0.1%	0.1%	libSystem.B.dylib	                               
tiny_free_list_add_ptr	
	0.0%	0.0%	libSystem.B.dylib	                              __spin_lock	
	0.0%	0.0%	libSystem.B.dylib	                               
dyld_stub__spin_lock	
	0.1%	0.1%	libSystem.B.dylib	                             szone_size	
	0.0%	0.0%	libSystem.B.dylib	                              
malloc_zone_free	
	0.5%	0.5%	Aquamacs	                            mem_find	
	0.0%	0.0%	Aquamacs	                            unexec_free	
	0.0%	1.2%	Aquamacs	                           mark_vectorlike	
	0.3%	1.1%	Aquamacs	                           mem_delete	
	0.0%	0.5%	Aquamacs	                           mark_object	
	0.0%	0.3%	Aquamacs	                            
balance_intervals_internal	
	0.1%	0.2%	Aquamacs	                           truncate_undo_list	
	0.0%	0.0%	Aquamacs	                           mark_stack	
	0.0%	0.0%	Aquamacs	                           lisp_align_free	
	0.0%	5.5%	Aquamacs	                          funcall_lambda	
	0.0%	0.0%	Aquamacs	                      Fget_char_property	
	0.0%	3.9%	Aquamacs	                     handle_face_prop	
	0.0%	0.0%	Aquamacs	                     handle_display_prop	
	0.0%	0.0%	Aquamacs	                     handle_invisible_prop	
	0.0%	0.0%	Aquamacs	                     handle_composition_prop	
	0.0%	0.0%	Aquamacs	                     get_overlay_strings	
	0.0%	0.3%	Aquamacs	                    composition_reseat_it	
	0.0%	0.3%	Aquamacs	                    compute_stop_pos	
	0.3%	0.7%	Aquamacs	                  x_produce_glyphs	
	0.0%	0.3%	Aquamacs	                  append_space_for_newline	
	0.1%	0.1%	Aquamacs	                  compute_line_metrics	
	0.0%	0.0%	libSystem.B.dylib	                  __memcpy	
	0.0%	0.0%	Aquamacs	                  handle_line_prefix	
	0.0%	0.0%	Aquamacs	                  set_iterator_to_next	
	0.0%	0.0%	Aquamacs	                  prepare_desired_row	
	0.0%	0.0%	Aquamacs	                  reseat_at_next_visible_line_start	
	0.0%	0.0%	Aquamacs	                  recenter_overlay_lists	
	0.0%	0.0%	Aquamacs	                  get_char_face_and_encoding	
	0.0%	0.1%	Aquamacs	                 start_display	
	0.0%	0.0%	Aquamacs	                 recenter_overlay_lists	
	0.0%	0.0%	Aquamacs	                 init_iterator	
	0.0%	0.0%	Aquamacs	                 append_space_for_newline	
	0.0%	16.1%	Aquamacs	                display_mode_lines	
	0.0%	4.4%	Aquamacs	                update_window_fringes	
	0.0%	0.2%	Aquamacs	                update_frame_tool_bar	
	0.0%	0.1%	Aquamacs	                set_vertical_scroll_bar	
	0.0%	0.0%	Aquamacs	                set_buffer_internal_1	
	0.0%	0.0%	Aquamacs	                reconsider_clip_changes	
	0.0%	10.3%	Aquamacs	            update_frame	
	0.0%	1.5%	Aquamacs	            prepare_menu_bars	
	0.0%	0.0%	Aquamacs	            echo_area_display	
	0.0%	0.0%	Aquamacs	            select_frame_for_redisplay	
	0.0%	0.0%	Aquamacs	            clear_window_matrices	
	0.0%	0.0%	Aquamacs	            clear_desired_matrices	
	0.0%	2.7%	Aquamacs	           sit_for	
	0.0%	1.2%	Aquamacs	           show_help_echo	
	0.0%	0.6%	Aquamacs	           safe_run_hooks	
	0.0%	0.5%	Aquamacs	           wait_reading_process_output	
	0.0%	0.2%	Aquamacs	           detect_input_pending_run_timers	
	0.0%	0.0%	Aquamacs	           read_avail_input	
	0.0%	0.0%	Aquamacs	          follow_key	
	0.0%	10.2%	Aquamacs	         call3	
	0.0%	3.0%	Aquamacs	         safe_run_hooks	
	0.0%	0.0%	Aquamacs	         adjust_point_for_property	
	0.0%	0.0%	Aquamacs	        cmd_error	
	0.0%	24.5%	Aquamacs	mark_object	
	0.0%	4.3%	Aquamacs	mark_vectorlike	
	0.6%	0.7%	mach_kernel	lo_alltraps	
	0.0%	0.5%	mach_kernel	lo_mach_scall	
	0.0%	0.2%	mach_kernel	i386_astintr	
	0.0%	0.1%	Aquamacs	traverse_intervals_noorder	
	0.0%	0.1%	mach_kernel	lo_unix_scall	
	0.0%	0.1%	Aquamacs	mark_buffer	
	0.0%	0.1%	Aquamacs	mark_interval_tree	
	0.0%	0.1%	mach_kernel	thread_continue	
	0.0%	0.0%	mach_kernel	IOWorkLoop::threadMain()	
	0.0%	0.0%	Aquamacs	Frecursive_edit	
	0.0%	0.0%	libSystem.B.dylib	thread_start	
	0.0%	0.0%	mach_kernel	thread_call_enter_delayed	
	0.0%	0.0%	Aquamacs	read_char	
	0.0%	0.0%	mach_kernel	ml_set_interrupts_enabled	
	0.0%	0.0%	mach_kernel	mach_msg_receive_continue	
	0.0%	0.0%	Aquamacs	display_mode_element	


[-- Attachment #2: smime.p7s --]
[-- Type: application/pkcs7-signature, Size: 2193 bytes --]

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

* Re: Low redisplay performance (23 regression)
  2009-04-20 22:33 ` Chong Yidong
  2009-04-20 23:20   ` David Reitter
@ 2009-04-21  3:15   ` Eli Zaretskii
  2009-04-21 12:36     ` Juanma Barranquero
  1 sibling, 1 reply; 58+ messages in thread
From: Eli Zaretskii @ 2009-04-21  3:15 UTC (permalink / raw)
  To: Chong Yidong; +Cc: david.reitter, emacs-devel

> From: Chong Yidong <cyd@stupidchicken.com>
> Date: Mon, 20 Apr 2009 18:33:24 -0400
> Cc: Emacs-Devel devel <emacs-devel@gnu.org>
> 
> David Reitter <david.reitter@gmail.com> writes:
> 
> > I'm wondering if others get the same on other platforms comparing 22
> > and 23, or if this is a problem specifically in the NS port (for
> > example, with setting drawing color or the like).
> 
> On GNU/Linux, I do not experience much of a difference in performance
> between Emacs 22 and Emacs 23.

And I see no difference on Windows.




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

* Re: Low redisplay performance (23 regression)
  2009-04-21  3:15   ` Eli Zaretskii
@ 2009-04-21 12:36     ` Juanma Barranquero
  2009-04-21 13:51       ` David Reitter
  2009-04-21 18:58       ` Eli Zaretskii
  0 siblings, 2 replies; 58+ messages in thread
From: Juanma Barranquero @ 2009-04-21 12:36 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: david.reitter, Chong Yidong, emacs-devel

On Tue, Apr 21, 2009 at 05:15, Eli Zaretskii <eliz@gnu.org> wrote:

> And I see no difference on Windows.

I see it. On my setup, doing line-by-line scrolling, Emacs 22.1 is
able to scroll a large file (for example, lisp/ChangeLog) keeping up
with the keyboard typematic rate without breaking a sweat. Emacs 23 is
unable and every now and then resorts to recentering (which I hate).
Thanks to hard work by Chong, it now happens only occasionally,
instead of once every two or three screenfuls; I just witnessed it
five or six times scrolling up to line 2,000 of lisp/ChangeLog.
Fortunately, it's not every day that I scroll hundreds of lines
line-by-line, so it is bearable. But there's no doubt there is a
performance regression with respect to Emacs 22

    Juanma




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

* Re: Low redisplay performance (23 regression)
  2009-04-21 12:36     ` Juanma Barranquero
@ 2009-04-21 13:51       ` David Reitter
  2009-04-21 14:20         ` Juanma Barranquero
  2009-04-21 18:58       ` Eli Zaretskii
  1 sibling, 1 reply; 58+ messages in thread
From: David Reitter @ 2009-04-21 13:51 UTC (permalink / raw)
  To: Juanma Barranquero; +Cc: Eli Zaretskii, Chong Yidong, emacs-devel

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

On Apr 21, 2009, at 8:36 AM, Juanma Barranquero wrote:
> instead of once every two or three screenfuls; I just witnessed it
> five or six times scrolling up to line 2,000 of lisp/ChangeLog.
> Fortunately, it's not every day that I scroll hundreds of lines
> line-by-line, so it is bearable. But there's no doubt there is a
> performance regression with respect to Emacs 22

Is this correlated for you with font locking?
Does it happen during page-wise scrolling as well?
(Without redisplay-dont-pause set, it skips a lot of pages for me.)

Let's say the page-wise scrolling performance under NS on my up-to- 
date machine is IMHO unbearable, with font-locking and tabbar enabled.

[-- Attachment #2: smime.p7s --]
[-- Type: application/pkcs7-signature, Size: 2193 bytes --]

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

* Re: Low redisplay performance (23 regression)
  2009-04-21 13:51       ` David Reitter
@ 2009-04-21 14:20         ` Juanma Barranquero
  0 siblings, 0 replies; 58+ messages in thread
From: Juanma Barranquero @ 2009-04-21 14:20 UTC (permalink / raw)
  To: David Reitter; +Cc: Eli Zaretskii, Chong Yidong, emacs-devel

On Tue, Apr 21, 2009 at 15:51, David Reitter <david.reitter@gmail.com> wrote:

> Is this correlated for you with font locking?

Only slightly. With font-locking disabled scrolling seems
(subjectively, I've not done any measurement) a bit faster, but I
still see pauses and jumps.

> Does it happen during page-wise scrolling as well?

Page scrolling is quite fast, though I see occasional pauses every now and then.

    Juanma




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

* Re: Low redisplay performance (23 regression)
  2009-04-20 21:58 Low redisplay performance (23 regression) David Reitter
  2009-04-20 22:31 ` Deniz Dogan
  2009-04-20 22:33 ` Chong Yidong
@ 2009-04-21 14:56 ` William Xu
  2009-04-21 15:30   ` David Reitter
  2009-04-29 10:17 ` Tobias C. Rittweiler
  2009-04-29 18:38 ` Dan Nicolaescu
  4 siblings, 1 reply; 58+ messages in thread
From: William Xu @ 2009-04-21 14:56 UTC (permalink / raw)
  To: emacs-devel

David Reitter <david.reitter@gmail.com> writes:

> With font-lock-mode (in c-mode) enabled, the difference is even larger:
>
> About 2.5 seconds in Emacs 22, and more than 7 seconds in 23/NS.

Is my macbook too fast?  With font-lock-mode enabled (23/NS), page
scrolling in buffer emacs.c responds nearly instantly.  I see no delay
at all.


,----[ macbook ]
| - CPU: 2.2 GHz Intel Core 2 Duo
| - Mem: 4 GB 667 MHz DDR2 SDRAM
`----

-- 
William

http://xwl.appspot.com





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

* Re: Low redisplay performance (23 regression)
  2009-04-21 14:56 ` William Xu
@ 2009-04-21 15:30   ` David Reitter
  2009-04-22 14:25     ` William Xu
  0 siblings, 1 reply; 58+ messages in thread
From: David Reitter @ 2009-04-21 15:30 UTC (permalink / raw)
  To: William Xu; +Cc: emacs-devel

On Apr 21, 2009, at 10:56 AM, William Xu wrote:

> David Reitter <david.reitter@gmail.com> writes:
>
>> With font-lock-mode (in c-mode) enabled, the difference is even  
>> larger:
>>
>> About 2.5 seconds in Emacs 22, and more than 7 seconds in 23/NS.
>
> Is my macbook too fast?  With font-lock-mode enabled (23/NS), page
> scrolling in buffer emacs.c responds nearly instantly.  I see no delay
> at all.

I can't see a delay when scrolling just one page.  The above figures  
are for scrolling page-wise through the whole buffer.

I've tried building with -O9 and tune settings for the CPU - this  
doesn't see to do much.




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

* Re: Low redisplay performance (23 regression)
  2009-04-21 12:36     ` Juanma Barranquero
  2009-04-21 13:51       ` David Reitter
@ 2009-04-21 18:58       ` Eli Zaretskii
  2009-04-21 19:07         ` Eli Zaretskii
                           ` (2 more replies)
  1 sibling, 3 replies; 58+ messages in thread
From: Eli Zaretskii @ 2009-04-21 18:58 UTC (permalink / raw)
  To: Juanma Barranquero; +Cc: david.reitter, cyd, emacs-devel

> From: Juanma Barranquero <lekktu@gmail.com>
> Date: Tue, 21 Apr 2009 14:36:28 +0200
> Cc: david.reitter@gmail.com, Chong Yidong <cyd@stupidchicken.com>,
> 	emacs-devel@gnu.org
> 
> On Tue, Apr 21, 2009 at 05:15, Eli Zaretskii <eliz@gnu.org> wrote:
> 
> > And I see no difference on Windows.
> 
> I see it. On my setup, doing line-by-line scrolling, Emacs 22.1

For the record, I compared with Emacs 22.3.

> is able to scroll a large file (for example, lisp/ChangeLog) keeping up
> with the keyboard typematic rate without breaking a sweat. Emacs 23 is
> unable and every now and then resorts to recentering (which I hate).

Is this in "emacs -Q"?

Anyway, is the slow-down you see close to the OP's reported factor of
almost 3?  Or is it just slow-down?




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

* Re: Low redisplay performance (23 regression)
  2009-04-21 18:58       ` Eli Zaretskii
@ 2009-04-21 19:07         ` Eli Zaretskii
  2009-04-21 23:24           ` Juanma Barranquero
  2009-04-21 20:19         ` David Reitter
  2009-04-21 23:16         ` Low redisplay performance (23 regression) Juanma Barranquero
  2 siblings, 1 reply; 58+ messages in thread
From: Eli Zaretskii @ 2009-04-21 19:07 UTC (permalink / raw)
  To: lekktu, david.reitter, cyd, emacs-devel

> Date: Tue, 21 Apr 2009 21:58:21 +0300
> From: Eli Zaretskii <eliz@gnu.org>
> Cc: david.reitter@gmail.com, cyd@stupidchicken.com, emacs-devel@gnu.org
> 
> > is able to scroll a large file (for example, lisp/ChangeLog) keeping up
> > with the keyboard typematic rate without breaking a sweat. Emacs 23 is
> > unable and every now and then resorts to recentering (which I hate).
> 
> Is this in "emacs -Q"?
> 
> Anyway, is the slow-down you see close to the OP's reported factor of
> almost 3?  Or is it just slow-down?

Another idea: could this be somehow related to the fact that your
setup uses UTF-8 as the default encoding?  What happens if you set
your system so that the default is Latin-1, say?




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

* Re: Low redisplay performance (23 regression)
  2009-04-21 18:58       ` Eli Zaretskii
  2009-04-21 19:07         ` Eli Zaretskii
@ 2009-04-21 20:19         ` David Reitter
  2009-04-21 20:53           ` Chong Yidong
  2009-04-22 15:30           ` Daniel Clemente
  2009-04-21 23:16         ` Low redisplay performance (23 regression) Juanma Barranquero
  2 siblings, 2 replies; 58+ messages in thread
From: David Reitter @ 2009-04-21 20:19 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: Juanma Barranquero, cyd, emacs-devel

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

On Apr 21, 2009, at 2:58 PM, Eli Zaretskii wrote:
>> is able to scroll a large file (for example, lisp/ChangeLog)  
>> keeping up
>> with the keyboard typematic rate without breaking a sweat. Emacs 23  
>> is
>> unable and every now and then resorts to recentering (which I hate).
>
> Is this in "emacs -Q"?

Not in my case, although I'm using the same setup in 22 and 23.

> Anyway, is the slow-down you see close to the OP's reported factor of
> almost 3?  Or is it just slow-down?

Note that the most dramatic changes are due to my header line (tabbar)  
and also face remapping:

(setq face-remapping-alist nil header-line-format nil)

(NB, I have backported the face remapping functionality to 22, so I  
believe am comparing like for like.)

Without face-remapping and header line, I estimate the slowdown is  
about 20% for me, a noticeable difference.



[-- Attachment #2: smime.p7s --]
[-- Type: application/pkcs7-signature, Size: 2193 bytes --]

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

* Re: Low redisplay performance (23 regression)
  2009-04-21 20:19         ` David Reitter
@ 2009-04-21 20:53           ` Chong Yidong
  2009-04-21 22:15             ` David Reitter
  2009-04-22 15:30           ` Daniel Clemente
  1 sibling, 1 reply; 58+ messages in thread
From: Chong Yidong @ 2009-04-21 20:53 UTC (permalink / raw)
  To: David Reitter; +Cc: Juanma Barranquero, Eli Zaretskii, emacs-devel

David Reitter <david.reitter@gmail.com> writes:

> Without face-remapping and header line, I estimate the slowdown is
> about 20% for me, a noticeable difference.

Try something for me:

  M-: (setq mode-line-format "") RET

This removes everything from the mode-line.  Does it make any
difference?




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

* Re: Low redisplay performance (23 regression)
  2009-04-21 20:53           ` Chong Yidong
@ 2009-04-21 22:15             ` David Reitter
  0 siblings, 0 replies; 58+ messages in thread
From: David Reitter @ 2009-04-21 22:15 UTC (permalink / raw)
  To: Chong Yidong; +Cc: Juanma Barranquero, Eli Zaretskii, emacs-devel

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

On Apr 21, 2009, at 4:53 PM, Chong Yidong wrote:

> David Reitter <david.reitter@gmail.com> writes:
>
>> Without face-remapping and header line, I estimate the slowdown is
>> about 20% for me, a noticeable difference.
>
> Try something for me:
>
>  M-: (setq mode-line-format "") RET
>
> This removes everything from the mode-line.  Does it make any
> difference?

I tried (setq mode-line-format) and it doesn't make a noticeable  
difference.

I also tried (setq header-line-format "Hello"), which was reasonably  
fast.

Removing various face properties set for parts of the header line  
seems to make it go faster.

To recap, removing the more diverse face settings in face-remapping- 
alist helps, too.  Also, removing font-locking helps.

Given the evidence, I wonder

1. Is the header line is drawn more often than it should? (scrolling  
shouldn't redraw it).
2. Does changing / setting / finding faces now incur more of a penalty  
now compared to 22.3?


[-- Attachment #2: smime.p7s --]
[-- Type: application/pkcs7-signature, Size: 2193 bytes --]

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

* Re: Low redisplay performance (23 regression)
  2009-04-21 18:58       ` Eli Zaretskii
  2009-04-21 19:07         ` Eli Zaretskii
  2009-04-21 20:19         ` David Reitter
@ 2009-04-21 23:16         ` Juanma Barranquero
  2 siblings, 0 replies; 58+ messages in thread
From: Juanma Barranquero @ 2009-04-21 23:16 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: david.reitter, cyd, emacs-devel

On Tue, Apr 21, 2009 at 20:58, Eli Zaretskii <eliz@gnu.org> wrote:

> For the record, I compared with Emacs 22.3.

Last time I tested, Emacs 22.3 (or EMACS_22_BASE) was as fast as 22.1.

> Is this in "emacs -Q"?

Yes. Emacs -Q, and then

(setq scroll-preserve-screen-position 'always
      scroll-conservatively           most-positive-fixnum
      scroll-step                     0

> Anyway, is the slow-down you see close to the OP's reported factor of
> almost 3?  Or is it just slow-down?

No. As I said, it is somewhat slower than 22.3, but it is adequate.

    Juanma




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

* Re: Low redisplay performance (23 regression)
  2009-04-21 19:07         ` Eli Zaretskii
@ 2009-04-21 23:24           ` Juanma Barranquero
  0 siblings, 0 replies; 58+ messages in thread
From: Juanma Barranquero @ 2009-04-21 23:24 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: david.reitter, cyd, emacs-devel

On Tue, Apr 21, 2009 at 21:07, Eli Zaretskii <eliz@gnu.org> wrote:

> Another idea: could this be somehow related to the fact that your
> setup uses UTF-8 as the default encoding?  What happens if you set
> your system so that the default is Latin-1, say?

I set UTF-8 in my init.el, not the environment. With Emacs -Q I'm
letting Emacs choose language environment:

 current-language-environment => "Spanish"

 C-h C <RET>

Coding system for saving this buffer:
  Not set locally, use the default.
Default coding system (for new files):
  1 -- iso-latin-1-dos (alias: iso-8859-1-dos latin-1-dos)

Coding system for keyboard input:
  = -- no-conversion (alias: binary)

Coding system for terminal output:
  nil
Coding system for inter-client cut and paste:
  U -- utf-16le-dos

Defaults for subprocess I/O:
  decoding: - -- undecided-dos (alias: dos)

  encoding: - -- undecided-unix (alias: unix)


Priority order for recognizing coding systems when reading files:
  1. iso-latin-1 (alias: iso-8859-1 latin-1)
  2. utf-8 (alias: mule-utf-8)
  3. iso-2022-7bit
  4. iso-2022-7bit-lock (alias: iso-2022-int-1)
  5. iso-2022-8bit-ss2
  6. emacs-mule
  7. raw-text
  8. iso-2022-jp (alias: junet)
  9. in-is13194-devanagari (alias: devanagari)
  10. chinese-iso-8bit (alias: cn-gb-2312 euc-china euc-cn cn-gb gb2312)
  11. utf-8-auto
  12. utf-8-with-signature
  13. utf-16
  14. utf-16be-with-signature (alias: utf-16-be)
  15. utf-16le-with-signature (alias: utf-16-le)
  16. utf-16be
  17. utf-16le
  18. japanese-shift-jis (alias: shift_jis sjis)
  19. chinese-big5 (alias: big5 cn-big5 cp950)
  20. undecided

etc.

    Juanma




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

* Re: Low redisplay performance (23 regression)
  2009-04-21 15:30   ` David Reitter
@ 2009-04-22 14:25     ` William Xu
  0 siblings, 0 replies; 58+ messages in thread
From: William Xu @ 2009-04-22 14:25 UTC (permalink / raw)
  To: emacs-devel

David Reitter <david.reitter@gmail.com> writes:

>> Is my macbook too fast?  With font-lock-mode enabled (23/NS), page
>> scrolling in buffer emacs.c responds nearly instantly.  I see no delay
>> at all.
>
> I can't see a delay when scrolling just one page.  The above figures are for
> scrolling page-wise through the whole buffer.

Hmm.. Does "page-wise" scrolling means keeping pressing C-v (or,
scroll-up) until the end of the buffer? Works well for me too...   


-- 
William

http://xwl.appspot.com





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

* Re: Low redisplay performance (23 regression)
  2009-04-21 20:19         ` David Reitter
  2009-04-21 20:53           ` Chong Yidong
@ 2009-04-22 15:30           ` Daniel Clemente
  2009-04-22 15:50             ` David Reitter
  2009-04-22 22:58             ` YAMAMOTO Mitsuharu
  1 sibling, 2 replies; 58+ messages in thread
From: Daniel Clemente @ 2009-04-22 15:30 UTC (permalink / raw)
  To: emacs-devel


  I haven't compared Emacs 22 and 23, but from a subjective point of view I have noticed that latest Emacs 23 feels slow and updates too much for a modern computer. Some particular problems I noticed randomly:

 - if I hold C-n, I don't see the cursor while it is moving down; I only see it jump when I have released the key. C-p works faster. This happened when I had lots of CEDET buffers open (not even parsing)

 - just switching to an Emacs frame (from another window in the window manager) paints the screen progressively; this happens in tenths of second but so slowly that you can track the updated zone while it moves from top to bottom. This can be due to the video driver, X, window manager, …

 - sometimes, the buffer is updated noticeably two times in succession; this happened with org-mode files (latest org-mode from Git). This could also be from Org.


>
> Note that the most dramatic changes are due to my header line (tabbar) and also
> face remapping:
>

  Note that tabbar lowers the performance by a large factor. It seems the function tabbar-buffer-update-groups is run after each keypress which involves a movement on the buffer, a buffer change or a message.
  Try to disable it temporarily. The problem of the visually lost C-n went away when I turned it off.
  To test how much it is called, something like this can be useful:

(defadvice tabbar-buffer-update-groups (before beep-whenever-you-redisplay-buffers activate)
(shell-command "beep -l 50")
)



-- Daniel





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

* Re: Low redisplay performance (23 regression)
  2009-04-22 15:30           ` Daniel Clemente
@ 2009-04-22 15:50             ` David Reitter
  2009-04-22 16:28               ` Chong Yidong
  2009-04-22 22:58             ` YAMAMOTO Mitsuharu
  1 sibling, 1 reply; 58+ messages in thread
From: David Reitter @ 2009-04-22 15:50 UTC (permalink / raw)
  To: Daniel Clemente; +Cc: emacs-devel

On Apr 22, 2009, at 11:30 AM, Daniel Clemente wrote:

>  I haven't compared Emacs 22 and 23, but from a subjective point of  
> view I have noticed that latest Emacs 23 feels slow and updates too  
> much for a modern computer. Some particular problems I noticed  
> randomly:
>
> - if I hold C-n, I don't see the cursor while it is moving down; I  
> only see it jump when I have released the key. C-p works faster.  
> This happened when I had lots of CEDET buffers open (not even parsing)
>
> - just switching to an Emacs frame (from another window in the  
> window manager) paints the screen progressively; this happens in  
> tenths of second but so slowly that you can track the updated zone  
> while it moves from top to bottom. This can be due to the video  
> driver, X, window manager, …
>
> - sometimes, the buffer is updated noticeably two times in  
> succession; this happened with org-mode files (latest org-mode from  
> Git). This could also be from Org.

I can corroborate these observations (subjectively FWIW) with  
different modes such as SLIME and on NS (on OS X).  So I don't think  
it's anything system-related (drivers, X, etc).

>  Note that tabbar lowers the performance by a large factor. It seems  
> the function tabbar-buffer-update-groups is run after each keypress  
> which involves a movement on the buffer, a buffer change or a message.
>  Try to disable it temporarily. The problem of the visually lost C-n  
> went away when I turned it off.
>  To test how much it is called, something like this can be useful:

Thanks, but I don't use tabbar in this way (my branch is found here:  
[1]), so this function doesn't get called.

Note that if I run tabbar, but just set header-line-format to  
something simpler (without all those faces), then I get a substantial  
speedup.


However, the point here is that these slowdowns with tabbar, SLIME,  
org-mode and whatever did not occur in Emacs 22.  This is going to be  
bad for any user.




[1] git://github.com/davidswelt/aquamacs-emacs.git



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

* Re: Low redisplay performance (23 regression)
  2009-04-22 15:50             ` David Reitter
@ 2009-04-22 16:28               ` Chong Yidong
  2009-04-22 18:26                 ` David Reitter
  0 siblings, 1 reply; 58+ messages in thread
From: Chong Yidong @ 2009-04-22 16:28 UTC (permalink / raw)
  To: David Reitter; +Cc: Daniel Clemente, emacs-devel

David Reitter <david.reitter@gmail.com> writes:

> I can corroborate these observations (subjectively FWIW) with
> different modes such as SLIME and on NS (on OS X).  So I don't think
> it's anything system-related (drivers, X, etc).
>
> Note that if I run tabbar, but just set header-line-format to
> something simpler (without all those faces), then I get a substantial
> speedup.

So, the slowdown may be related to displaying multiple faces?  I have
not experienced anything like this, myself.  If you do M-x
list-faces-display and scroll through that buffer, is there a slowdown?

It's possible that tabbar is doing something with its face computation
that is much more expensive on Emacs 23 than on Emacs 22; I don't have
time to look at its code, however.




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

* Re: Low redisplay performance (23 regression)
  2009-04-22 16:28               ` Chong Yidong
@ 2009-04-22 18:26                 ` David Reitter
  2009-04-23 13:34                   ` Willem Rein Oudshoorn
  0 siblings, 1 reply; 58+ messages in thread
From: David Reitter @ 2009-04-22 18:26 UTC (permalink / raw)
  To: Chong Yidong; +Cc: Daniel Clemente, emacs-devel

On Apr 22, 2009, at 12:28 PM, Chong Yidong wrote:
> So, the slowdown may be related to displaying multiple faces?  I have
> not experienced anything like this, myself.  If you do M-x
> list-faces-display and scroll through that buffer, is there a  
> slowdown?

Yes, definitely, but if and only if face-remapping-alist is enabled  
(remapping the default face).
With the tabbar enabled, scrolling down that buffer takes about twice  
as long, depending on how many tabs I show.
Without the tabbar, I estimate the slowdown is about 20-30%.

> It's possible that tabbar is doing something with its face computation
> that is much more expensive on Emacs 23 than on Emacs 22; I don't have
> time to look at its code, however.


As above, it's not just the tabbar; doing something relatively simple  
with face-remapping-alist already shows the effect.

I've been working on coming up with a reproducible standalone  
example.  Perhaps, if the others who can reproduce, could attempt the  
same, we'd get somewhere.






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

* Re: Low redisplay performance (23 regression)
  2009-04-22 15:30           ` Daniel Clemente
  2009-04-22 15:50             ` David Reitter
@ 2009-04-22 22:58             ` YAMAMOTO Mitsuharu
  2009-04-23  1:01               ` ftx font driver [Re: Low redisplay performance (23 regression)] Kenichi Handa
  1 sibling, 1 reply; 58+ messages in thread
From: YAMAMOTO Mitsuharu @ 2009-04-22 22:58 UTC (permalink / raw)
  To: Daniel Clemente; +Cc: emacs-devel

>>>>> On Wed, 22 Apr 2009 17:30:37 +0200, Daniel Clemente <dcl441-bugs@yahoo.com> said:

>   I haven't compared Emacs 22 and 23, but from a subjective point of
> view I have noticed that latest Emacs 23 feels slow and updates too
> much for a modern computer. Some particular problems I noticed
> randomly:

Which font backend driver are you using?  You can check it with (cdr
(assq 'font-backend (frame-parameters))).  I found the ftx font driver
was much slower than the xft one partly because of repeated
calculations of font metrics.  (So I added some cache code to
ftcrfont.c in my latest cairo patch posted here).

				     YAMAMOTO Mitsuharu
				mituharu@math.s.chiba-u.ac.jp




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

* ftx font driver [Re: Low redisplay performance (23 regression)]
  2009-04-22 22:58             ` YAMAMOTO Mitsuharu
@ 2009-04-23  1:01               ` Kenichi Handa
  2009-04-23  7:31                 ` YAMAMOTO Mitsuharu
  0 siblings, 1 reply; 58+ messages in thread
From: Kenichi Handa @ 2009-04-23  1:01 UTC (permalink / raw)
  To: YAMAMOTO Mitsuharu; +Cc: dcl441-bugs, emacs-devel

In article <wlzle8i9cf.wl%mituharu@math.s.chiba-u.ac.jp>, YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp> writes:

>>>>>> On Wed, 22 Apr 2009 17:30:37 +0200, Daniel Clemente <dcl441-bugs@yahoo.com> said:
> >   I haven't compared Emacs 22 and 23, but from a subjective point of
> > view I have noticed that latest Emacs 23 feels slow and updates too
> > much for a modern computer. Some particular problems I noticed
> > randomly:

> Which font backend driver are you using?  You can check it with (cdr
> (assq 'font-backend (frame-parameters))).  I found the ftx font driver
> was much slower than the xft one partly because of repeated
> calculations of font metrics.  (So I added some cache code to
> ftcrfont.c in my latest cairo patch posted here).

Please exlain why it calculates font metrics repeatedly.

As ftx font driver is not used by default on any platforms,
it is not tested well and I myself don't remember the code
well.

---
Kenichi Handa
handa@m17n.org




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

* Re: ftx font driver [Re: Low redisplay performance (23 regression)]
  2009-04-23  1:01               ` ftx font driver [Re: Low redisplay performance (23 regression)] Kenichi Handa
@ 2009-04-23  7:31                 ` YAMAMOTO Mitsuharu
  2009-04-23 11:22                   ` Kenichi Handa
  0 siblings, 1 reply; 58+ messages in thread
From: YAMAMOTO Mitsuharu @ 2009-04-23  7:31 UTC (permalink / raw)
  To: Kenichi Handa; +Cc: dcl441-bugs, emacs-devel

>>>>> On Thu, 23 Apr 2009 10:01:12 +0900, Kenichi Handa <handa@m17n.org> said:

>>> I haven't compared Emacs 22 and 23, but from a subjective point of
>>> view I have noticed that latest Emacs 23 feels slow and updates
>>> too much for a modern computer. Some particular problems I noticed
>>> randomly:

>> Which font backend driver are you using?  You can check it with
>> (cdr (assq 'font-backend (frame-parameters))).  I found the ftx
>> font driver was much slower than the xft one partly because of
>> repeated calculations of font metrics.  (So I added some cache code
>> to ftcrfont.c in my latest cairo patch posted here).

> Please exlain why it calculates font metrics repeatedly.

> As ftx font driver is not used by default on any platforms, it is
> not tested well and I myself don't remember the code well.

There might be the case that the Xft library is not installed, does
not have a sufficient version, or not found by configure for some
reasons (e.g., PKG_CONFIG_PATH is not set appropriately).  In such
cases, the ftx font driver is selected as a default.  Of course, you
can reproduce such a situation with --without-xft.

The result of time profiling using Shark.app indicates that
FT_Load_Glyph called from ftfont_text_extents takes much time and
calculates font metrics repeatedly without caching.  In particular,
it's really slow if the font is actually in a gzipped PCF format.

				     YAMAMOTO Mitsuharu
				mituharu@math.s.chiba-u.ac.jp

	0.0%	99.7%	emacs	start	
	0.0%	99.7%	emacs	 main	
	0.0%	99.7%	emacs	  Frecursive_edit	
	0.0%	99.7%	emacs	   recursive_edit_1	
	0.0%	99.7%	emacs	    command_loop	
	0.0%	99.7%	emacs	     internal_catch	
	0.0%	99.7%	emacs	      command_loop_2	
	0.0%	99.7%	emacs	       internal_condition_case	
	0.0%	99.7%	emacs	        command_loop_1	
	0.0%	79.4%	emacs	         call3	
	0.0%	79.4%	emacs	          Ffuncall	
	0.0%	79.4%	emacs	           Fcall_interactively	
	0.0%	79.4%	emacs	            Ffuncall	
	0.0%	69.9%	emacs	             Fscroll_down	
	0.0%	69.9%	emacs	              scroll_command	
	0.0%	69.9%	emacs	               window_scroll	
	0.0%	25.1%	emacs	                pos_visible_p	
	0.0%	22.4%	emacs	                 move_it_to	
	0.0%	22.4%	emacs	                  move_it_in_display_line_to	
	0.0%	22.3%	emacs	                   x_produce_glyphs	
	0.0%	22.2%	emacs	                    get_per_char_metric	
	0.0%	22.2%	emacs	                     ftfont_text_extents	
	0.0%	22.2%	libfreetype.6.dylib	                      FT_Load_Glyph	
	0.1%	22.0%	libfreetype.6.dylib	                       PCF_Glyph_Load	
	0.0%	21.8%	libfreetype.6.dylib	                        FT_Stream_Seek	
	0.0%	21.8%	libfreetype.6.dylib	                         ft_gzip_stream_io	
	0.0%	21.8%	libfreetype.6.dylib	                          ft_gzip_file_io	
	0.0%	21.8%	libfreetype.6.dylib	                           ft_gzip_file_skip_output	
	21.3%	21.8%	libfreetype.6.dylib	                            ft_gzip_file_fill_output	
	0.5%	0.5%	libfreetype.6.dylib	                             ft_gzip_file_fill_input	
	0.0%	0.1%	libfreetype.6.dylib	                        ft_glyphslot_alloc_bitmap	
	0.0%	0.1%	libfreetype.6.dylib	                        FT_Stream_Read	
	0.0%	0.1%	libfreetype.6.dylib	                       ft_glyphslot_clear	
	0.0%	0.1%	emacs	                    get_char_face_and_encoding	
	0.0%	0.0%	emacs	                    get_it_property	
	0.0%	0.0%	emacs	                   get_next_display_element	
	0.0%	0.0%	emacs	                   set_iterator_to_next	
	0.0%	2.1%	emacs	                 display_mode_line	
	0.0%	0.7%	emacs	                 line_bottom_y	
	0.0%	22.5%	emacs	                move_it_to	
	0.0%	22.5%	emacs	                 move_it_in_display_line_to	
	0.0%	22.4%	emacs	                  x_produce_glyphs	
	0.0%	22.3%	emacs	                   get_per_char_metric	
	0.0%	22.3%	emacs	                    ftfont_text_extents	
	0.0%	22.3%	libfreetype.6.dylib	                     FT_Load_Glyph	
	0.0%	22.2%	libfreetype.6.dylib	                      PCF_Glyph_Load	
	0.0%	22.0%	libfreetype.6.dylib	                       FT_Stream_Seek	
	0.0%	22.0%	libfreetype.6.dylib	                        ft_gzip_stream_io	
	0.0%	22.0%	libfreetype.6.dylib	                         ft_gzip_file_io	
	0.0%	21.9%	libfreetype.6.dylib	                          ft_gzip_file_skip_output	
	21.5%	21.9%	libfreetype.6.dylib	                           ft_gzip_file_fill_output	
	0.0%	0.0%	libfreetype.6.dylib	                          ft_gzip_file_reset	
	0.0%	0.1%	libfreetype.6.dylib	                       FT_Stream_Read	
	0.0%	0.1%	libfreetype.6.dylib	                       ft_glyphslot_alloc_bitmap	
	0.0%	0.0%	libfreetype.6.dylib	                       ft_synthesize_vertical_metrics	
	0.0%	0.1%	libfreetype.6.dylib	                      ft_glyphslot_clear	
	0.0%	0.1%	emacs	                   get_char_face_and_encoding	
	0.0%	0.0%	emacs	                   get_it_property	
	0.0%	0.1%	emacs	                  get_next_display_element	
	0.0%	0.0%	emacs	                  set_iterator_to_next	
	0.0%	0.0%	emacs	                 recenter_overlay_lists	
	0.0%	21.7%	emacs	                move_it_vertically_backward	
	0.0%	0.6%	emacs	                move_it_by_lines	
	0.0%	9.5%	emacs	             Fscroll_up	
	0.0%	20.3%	emacs	         read_key_sequence	
	0.0%	0.0%	emacs	         resize_echo_area_exactly	
	0.0%	0.0%	emacs	         start_hourglass	
	0.0%	0.0%	emacs	         safe_run_hooks	
	0.0%	0.0%	emacs	         Fcommand_remapping	
	0.1%	0.1%	mach_kernel	lo_alltraps	
	0.0%	0.1%	mach_kernel	lo_mach_scall	
	0.0%	0.0%	mach_kernel	lo_unix_scall	
	0.0%	0.0%	mach_kernel	i386_astintr	
	0.0%	0.0%	mach_kernel	IOWorkLoop::threadMain()	
	0.0%	0.0%	mach_kernel	thread_call_enter_delayed	
	0.0%	0.0%	mach_kernel	uiomove	




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

* Re: ftx font driver [Re: Low redisplay performance (23 regression)]
  2009-04-23  7:31                 ` YAMAMOTO Mitsuharu
@ 2009-04-23 11:22                   ` Kenichi Handa
  2009-04-23 12:38                     ` Chong Yidong
  0 siblings, 1 reply; 58+ messages in thread
From: Kenichi Handa @ 2009-04-23 11:22 UTC (permalink / raw)
  To: YAMAMOTO Mitsuharu; +Cc: dcl441-bugs, emacs-devel

In article <wlvdov9673.wl%mituharu@math.s.chiba-u.ac.jp>, YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp> writes:

> > As ftx font driver is not used by default on any platforms, it is
> > not tested well and I myself don't remember the code well.

> There might be the case that the Xft library is not installed, does
> not have a sufficient version, or not found by configure for some
> reasons (e.g., PKG_CONFIG_PATH is not set appropriately).  In such
> cases, the ftx font driver is selected as a default.  Of course, you
> can reproduce such a situation with --without-xft.

Ah, you are right.  I should have written "usually" instead
of "by default". 

> The result of time profiling using Shark.app indicates that
> FT_Load_Glyph called from ftfont_text_extents takes much time and
> calculates font metrics repeatedly without caching.  In particular,
> it's really slow if the font is actually in a gzipped PCF format.

[...]
> 	0.0%	22.2%        FT_Load_Glyph	
> 	0.1%	22.0%         PCF_Glyph_Load	
> 	0.0%	21.8%          FT_Stream_Seek	
> 	0.0%	21.8%           ft_gzip_stream_io	
> 	0.0%	21.8%            ft_gzip_file_io	
> 	0.0%	21.8%             ft_gzip_file_skip_output	
> 	21.3%	21.8%              ft_gzip_file_fill_output	
> 	0.5%	0.5%                ft_gzip_file_fill_input	

Ummm, I didn't realize this calling sequence.  I agree that
we surely need some kind of caching mechanism.  But, it
seems that FreeType itself has that mechanism called "Cache
Sub-System".  Perhaps, we should use it.

---
Kenichi Handa
handa@m17n.org




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

* Re: ftx font driver [Re: Low redisplay performance (23 regression)]
  2009-04-23 11:22                   ` Kenichi Handa
@ 2009-04-23 12:38                     ` Chong Yidong
  2009-04-23 14:56                       ` Stefan Monnier
  0 siblings, 1 reply; 58+ messages in thread
From: Chong Yidong @ 2009-04-23 12:38 UTC (permalink / raw)
  To: Kenichi Handa; +Cc: dcl441-bugs, YAMAMOTO Mitsuharu, emacs-devel

Kenichi Handa <handa@m17n.org> writes:

> Ummm, I didn't realize this calling sequence.  I agree that
> we surely need some kind of caching mechanism.  But, it
> seems that FreeType itself has that mechanism called "Cache
> Sub-System".  Perhaps, we should use it.

Unless this is extremely simple to implement, let's leave this for after
the release.

Maybe we should add a warning message to configure that marks the ftx
backend as experimental; i.e., telling people that they should build
--without-freetype if libxft is unavailable.




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

* Re: Low redisplay performance (23 regression)
  2009-04-22 18:26                 ` David Reitter
@ 2009-04-23 13:34                   ` Willem Rein Oudshoorn
  2009-04-23 22:45                     ` Miles Bader
  0 siblings, 1 reply; 58+ messages in thread
From: Willem Rein Oudshoorn @ 2009-04-23 13:34 UTC (permalink / raw)
  To: emacs-devel

Maybe related, but what I noticed is that when I do:

emacs -Q

M-x list-charset-chars
    mule-unicode-0100-24ff

scrolling in the resulting buffer is extremely slow.  
PgUp PgDn, C-n C-p will eat up 100% and it is very jerky.

This is both on mswindows and Mac OS X.  

Mac OS X:
GNU Emacs 23.0.60.5 (i386-apple-darwin9.5.0, NS apple-appkit-949.35) of 2009-01-06 on Silver-2.local

MS Windows:
23.0.60.1 2009-01-01 on LENNART-69DE564 (patched)

Kind regards,
Wim Oudshoorn





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

* Re: ftx font driver [Re: Low redisplay performance (23 regression)]
  2009-04-23 12:38                     ` Chong Yidong
@ 2009-04-23 14:56                       ` Stefan Monnier
  2009-04-24  1:09                         ` Kenichi Handa
  0 siblings, 1 reply; 58+ messages in thread
From: Stefan Monnier @ 2009-04-23 14:56 UTC (permalink / raw)
  To: Chong Yidong; +Cc: dcl441-bugs, emacs-devel, YAMAMOTO Mitsuharu, Kenichi Handa

>> Ummm, I didn't realize this calling sequence.  I agree that
>> we surely need some kind of caching mechanism.  But, it
>> seems that FreeType itself has that mechanism called "Cache
>> Sub-System".  Perhaps, we should use it.

> Unless this is extremely simple to implement, let's leave this for after
> the release.

> Maybe we should add a warning message to configure that marks the ftx
> backend as experimental; i.e., telling people that they should build
> --without-freetype if libxft is unavailable.

Could someone describe the purpose of the ftx backend?  Obviously,
someone went to the trouble to write it, so there must have been some
reason why we want to support it, but from what I read above, I get the
impression that nowadays e could just scrap it altogether since xft
works better.


        Stefan




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

* Re: Low redisplay performance (23 regression)
  2009-04-23 13:34                   ` Willem Rein Oudshoorn
@ 2009-04-23 22:45                     ` Miles Bader
  2009-05-06 13:28                       ` Willem Rein Oudshoorn
  0 siblings, 1 reply; 58+ messages in thread
From: Miles Bader @ 2009-04-23 22:45 UTC (permalink / raw)
  To: emacs-devel

Willem Rein Oudshoorn <woudshoo@xs4all.nl> writes:
> M-x list-charset-chars
>     mule-unicode-0100-24ff
>
> scrolling in the resulting buffer is extremely slow.  
> PgUp PgDn, C-n C-p will eat up 100% and it is very jerky.
>
> This is both on mswindows and Mac OS X.  

Have you tried doing it (scrolling through the buffer) _twice_?

On debian, paging through the buffer the first time through is pretty
slow, presumably because it's rendering tons of new characters on every
page, but if I go back and do it again it's very fast (not perceptibly
different than pages full of normal text).  I assume there must be a
fair-amount of caching going on...

-Miles

-- 
Saa, shall we dance?  (from a dance-class advertisement)





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

* Re: ftx font driver [Re: Low redisplay performance (23 regression)]
  2009-04-23 14:56                       ` Stefan Monnier
@ 2009-04-24  1:09                         ` Kenichi Handa
  2009-04-24  2:01                           ` Stefan Monnier
  0 siblings, 1 reply; 58+ messages in thread
From: Kenichi Handa @ 2009-04-24  1:09 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: cyd, dcl441-bugs, mituharu, emacs-devel

In article <jwvk55be7y4.fsf-monnier+emacs@gnu.org>, Stefan Monnier <monnier@iro.umontreal.ca> writes:

> Could someone describe the purpose of the ftx backend?  Obviously,
> someone went to the trouble to write it, so there must have been some
> reason why we want to support it, but from what I read above, I get the
> impression that nowadays e could just scrap it altogether since xft
> works better.

I wrote ftx backend before writing xft backend because the
documentation of Xft library was poor (even now so) and it
was easier to debug the font-backend mechanism with ftx
backend (because it directly uses freetype).

I don't know how many systems have X but not Xft, but if
there exists such a system, ftx backend is still necessary.

---
Kenichi Handa
handa@m17n.org




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

* Re: ftx font driver [Re: Low redisplay performance (23 regression)]
  2009-04-24  1:09                         ` Kenichi Handa
@ 2009-04-24  2:01                           ` Stefan Monnier
  2009-04-24  3:52                             ` Chong Yidong
  2009-04-25 14:38                             ` Chong Yidong
  0 siblings, 2 replies; 58+ messages in thread
From: Stefan Monnier @ 2009-04-24  2:01 UTC (permalink / raw)
  To: Kenichi Handa; +Cc: cyd, dcl441-bugs, mituharu, emacs-devel

> I don't know how many systems have X but not Xft, but if
> there exists such a system, ftx backend is still necessary.

You mean

   I don't know how many systems have X and freetype but not Xft, but if
   there exists such a system, ftx backend is still useful.

I think it's perfectly OK to say "if you have X and freetype, either
install xft, or live without anti-aliasing".  IIUC that means I'd get
rid of the ftx backend.


        Stefan




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

* Re: ftx font driver [Re: Low redisplay performance (23 regression)]
  2009-04-24  2:01                           ` Stefan Monnier
@ 2009-04-24  3:52                             ` Chong Yidong
  2009-04-25 14:38                             ` Chong Yidong
  1 sibling, 0 replies; 58+ messages in thread
From: Chong Yidong @ 2009-04-24  3:52 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: dcl441-bugs, emacs-devel, mituharu, Kenichi Handa

Stefan Monnier <monnier@iro.umontreal.ca> writes:

> I think it's perfectly OK to say "if you have X and freetype, either
> install xft, or live without anti-aliasing".  IIUC that means I'd get
> rid of the ftx backend.

How bout the following?  (It should be fairly safe.)

*** trunk/configure.in.~1.591.~	2009-04-19 21:34:45.000000000 -0400
--- trunk/configure.in	2009-04-23 23:43:54.000000000 -0400
***************
*** 133,139 ****
  OPTION_DEFAULT_ON([png],[don't compile with PNG image support])
  OPTION_DEFAULT_ON([rsvg],[don't compile with SVG image support])
  
- OPTION_DEFAULT_ON([freetype],[don't use Freetype for local font support])
  OPTION_DEFAULT_ON([xft],[don't use XFT for anti aliased fonts])
  OPTION_DEFAULT_ON([libotf],[don't use libotf for OpenType font support])
  OPTION_DEFAULT_ON([m17n-flt],[don't use m17n-flt for text shaping])
--- 133,138 ----
***************
*** 1270,1276 ****
  if test "${HAVE_NS}" = yes; then
    window_system=nextstep
    with_xft=no
-   with_freetype=no
    # set up packaging dirs
    exec_prefix=${ns_appbindir}
    libexecdir=${ns_appbindir}/libexec
--- 1269,1274 ----
***************
*** 1844,1854 ****
  ### Start of font-backend (under X11) section.
  if test "${HAVE_X11}" = "yes"; then
     PKG_CHECK_MODULES(FONTCONFIG, fontconfig >= 2.2.0, HAVE_FC=yes, HAVE_FC=no)
-    test "${HAVE_FC}" = "no" && with_freetype=no
  
! ## Use -lXft if available, unless `--with-freetype=no' nor `--with-xft=no'.
     HAVE_XFT=maybe
!     if test "x${with_freetype}" = "xno" || test "x${with_x}" = "xno"; then
        with_xft="no";
      fi
      if test "x${with_xft}" != "xno"; then
--- 1842,1851 ----
  ### Start of font-backend (under X11) section.
  if test "${HAVE_X11}" = "yes"; then
     PKG_CHECK_MODULES(FONTCONFIG, fontconfig >= 2.2.0, HAVE_FC=yes, HAVE_FC=no)
  
!    ## Use -lXft if available, unless `--with-xft=no'.
     HAVE_XFT=maybe
!     if test "${HAVE_FC}" = "no" || test "x${with_x}" = "xno"; then
        with_xft="no";
      fi
      if test "x${with_xft}" != "xno"; then
***************
*** 1890,1898 ****
        HAVE_FREETYPE=yes
        FONTCONFIG_CFLAGS=
        FONTCONFIG_LIBS=
-     elif test "x${with_freetype}" != "xno" && test "x${with_x}" != "xno"; then
- 
-       PKG_CHECK_MODULES(FREETYPE, freetype2, HAVE_FREETYPE=yes, HAVE_FREETYPE=no)
      fi
  
      HAVE_LIBOTF=no
--- 1887,1892 ----




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

* Re: ftx font driver [Re: Low redisplay performance (23 regression)]
  2009-04-24  2:01                           ` Stefan Monnier
  2009-04-24  3:52                             ` Chong Yidong
@ 2009-04-25 14:38                             ` Chong Yidong
  1 sibling, 0 replies; 58+ messages in thread
From: Chong Yidong @ 2009-04-25 14:38 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: dcl441-bugs, emacs-devel, mituharu, Kenichi Handa

Stefan Monnier <monnier@iro.umontreal.ca> writes:

> I think it's perfectly OK to say "if you have X and freetype, either
> install xft, or live without anti-aliasing".  IIUC that means I'd get
> rid of the ftx backend.

I have checked in the previously-posted patch to configure.in.  This
disables the use of freetype if xft is not used.  I have not touched the
actualy ftx driver code, however; we can decide what to do about it
after the release.




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

* Re: Low redisplay performance (23 regression)
  2009-04-20 21:58 Low redisplay performance (23 regression) David Reitter
                   ` (2 preceding siblings ...)
  2009-04-21 14:56 ` William Xu
@ 2009-04-29 10:17 ` Tobias C. Rittweiler
  2009-04-29 11:54   ` David Reitter
                     ` (2 more replies)
  2009-04-29 18:38 ` Dan Nicolaescu
  4 siblings, 3 replies; 58+ messages in thread
From: Tobias C. Rittweiler @ 2009-04-29 10:17 UTC (permalink / raw)
  To: emacs-devel

David Reitter <david.reitter@gmail.com> writes:

> [Emacs 23.x performance regression]

On a related note, I notice a big slowdown for `end-of-defun'.

In a .lisp buffer with 6371 lines, running the following

  (benchmark-run
   (dotimes (i 100)
     (beginning-of-buffer)
     (dotimes (i 200)
       (end-of-defun))))

yields the folloing timings:

  GNU Emacs 22.1.1     -->  (4.323907 2 0.07007399999999997)
  GNU Emacs 23.0.60.1  -->  (7.5862680000000005 1 0.048462000000000005)
  GNU Emacs 23.0.92.1  -->  (7.610763 2 0.06742599999999999)
  (built on 2009-04-29)

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.

What is the reason that `end-of-defun' is an _order of magnitude_ slower
than `beginning-of-defun'?

  -T.






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

* Re: Low redisplay performance (23 regression)
  2009-04-29 10:17 ` Tobias C. Rittweiler
@ 2009-04-29 11:54   ` David Reitter
  2009-04-29 13:33   ` Stefan Monnier
  2009-04-29 17:40   ` Tassilo Horn
  2 siblings, 0 replies; 58+ messages in thread
From: David Reitter @ 2009-04-29 11:54 UTC (permalink / raw)
  To: Tobias C. Rittweiler; +Cc: emacs-devel

On Apr 29, 2009, at 6:17 AM, Tobias C. Rittweiler wrote:
>
> On a related note, I notice a big slowdown for `end-of-defun'.

I noticed that part of my problem was due to garbage collection, so  
you might want to exclude that.  (The real reason why GC occurs so  
often hasn't been investigated yet.)




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

* Re: Low redisplay performance (23 regression)
  2009-04-29 10:17 ` Tobias C. Rittweiler
  2009-04-29 11:54   ` David Reitter
@ 2009-04-29 13:33   ` Stefan Monnier
  2009-04-29 17:35     ` Tobias C. Rittweiler
  2009-04-29 18:01     ` Tobias C. Rittweiler
  2009-04-29 17:40   ` Tassilo Horn
  2 siblings, 2 replies; 58+ messages in thread
From: Stefan Monnier @ 2009-04-29 13:33 UTC (permalink / raw)
  To: Tobias C. Rittweiler; +Cc: emacs-devel

>   GNU Emacs 22.1.1     -->  (4.323907 2 0.07007399999999997)
>   GNU Emacs 23.0.60.1  -->  (7.5862680000000005 1 0.048462000000000005)
>   GNU Emacs 23.0.92.1  -->  (7.610763 2 0.06742599999999999)
>   (built on 2009-04-29)

So it's about twice as slow for this test, which is the expected in this
case: since your benchmark always calls it with point between 2 defuns,
it ends up doing: BOD-raw to find the previous defun, EOD-function to
find its end, which tells Emacs that the starting point was after the
previous defun, so it calls BOD-raw again to find the next defun and
finally EOD-function to get to its end.

> 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.  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.

> What is the reason that `end-of-defun' is an _order of magnitude_ slower
> than `beginning-of-defun'?

Because EOD uses BOD internally, I guess.  Of course in your
font-lock-extend-region-functions, you may simply prefer to use BOD
rather than EOD.


        Stefan




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

* Re: Low redisplay performance (23 regression)
  2009-04-29 13:33   ` Stefan Monnier
@ 2009-04-29 17:35     ` Tobias C. Rittweiler
  2009-04-29 20:20       ` Stefan Monnier
  2009-04-29 18:01     ` Tobias C. Rittweiler
  1 sibling, 1 reply; 58+ messages in thread
From: Tobias C. Rittweiler @ 2009-04-29 17:35 UTC (permalink / raw)
  To: emacs-devel

Stefan Monnier <monnier@iro.umontreal.ca> 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





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

* Re: Low redisplay performance (23 regression)
  2009-04-29 10:17 ` Tobias C. Rittweiler
  2009-04-29 11:54   ` David Reitter
  2009-04-29 13:33   ` Stefan Monnier
@ 2009-04-29 17:40   ` Tassilo Horn
  2009-04-29 17:49     ` David Reitter
  2009-04-30  5:05     ` Chong Yidong
  2 siblings, 2 replies; 58+ messages in thread
From: Tassilo Horn @ 2009-04-29 17:40 UTC (permalink / raw)
  To: emacs-devel

"Tobias C. Rittweiler" <tcr@freebits.de> writes:

> David Reitter <david.reitter@gmail.com> writes:
>
>> [Emacs 23.x performance regression]
>
> On a related note, I notice a big slowdown for `end-of-defun'.

And on yet another related note, today I've found out that after
changing the font scale for the current buffer using `C-x C-+' or `C-x
C--' line-by-line scrolling slows down considerably.

The performance regression can be seen very good when using the smooth
scrolling package from [1], but it's also perceptible with the emacs
defaults.

The performance hit seems to be harder on long and font-locked lines (as
others already noticed).  If I scroll my .emacs (~2000 loc) and come
across the custom-set-faces which have some lines with about 200
columns, with the smooth-scrolling package, the screen hangs for a
second and then I'm scrolled for some pages at once.

After setting the text scale back to default using `C-x C-0', scolling
works smooth again.

Oh, yet another observation: While writing this mail I enlarged the text
scale with `C-x C-+' and if I press and hold the up or down key, point
hangs for very short periods of time at some positions and then jumps
over some lines without visible redisplay, even though no scrolling at
all is done.  Resetting the font scale with `C-x C-0' and doing the
same, I can see that point crosses each and every line without jumps.

Bye,
Tassilo
__________
[1] http://www.adamspiers.org/elisp/smooth-scrolling.el




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

* Re: Low redisplay performance (23 regression)
  2009-04-29 17:40   ` Tassilo Horn
@ 2009-04-29 17:49     ` David Reitter
  2009-04-29 18:21       ` Tassilo Horn
                         ` (2 more replies)
  2009-04-30  5:05     ` Chong Yidong
  1 sibling, 3 replies; 58+ messages in thread
From: David Reitter @ 2009-04-29 17:49 UTC (permalink / raw)
  To: Tassilo Horn; +Cc: emacs-devel

On Apr 29, 2009, at 1:40 PM, Tassilo Horn wrote:
>
> And on yet another related note, today I've found out that after
> changing the font scale for the current buffer using `C-x C-+' or `C-x
> C--' line-by-line scrolling slows down considerably.

As said earlier, I found that using face-remapping is highly  
correlated with this slow-down.

> Oh, yet another observation: While writing this mail I enlarged the  
> text
> scale with `C-x C-+' and if I press and hold the up or down key, point
> hangs for very short periods of time at some positions and then jumps
> over some lines without visible redisplay, even though no scrolling at
> all is done.

I see the same thing.  Did you (setq redisplay-dont-pause t) ?
Either way, it suggests that drawing takes much longer with a change  
of faces. (E.g., M-x list-faces-display ?)




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

* Re: Low redisplay performance (23 regression)
  2009-04-29 13:33   ` Stefan Monnier
  2009-04-29 17:35     ` Tobias C. Rittweiler
@ 2009-04-29 18:01     ` Tobias C. Rittweiler
  1 sibling, 0 replies; 58+ messages in thread
From: Tobias C. Rittweiler @ 2009-04-29 18:01 UTC (permalink / raw)
  To: emacs-devel

Stefan Monnier <monnier@iro.umontreal.ca> writes:

>>   GNU Emacs 22.1.1     -->  (4.323907 2 0.07007399999999997)
>>   GNU Emacs 23.0.60.1  -->  (7.5862680000000005 1 0.048462000000000005)
>>   GNU Emacs 23.0.92.1  -->  (7.610763 2 0.06742599999999999)
>>   (built on 2009-04-29)
>
> So it's about twice as slow for this test, which is the expected in this
> case: since your benchmark always calls it with point between 2 defuns,
> it ends up doing: BOD-raw to find the previous defun, EOD-function to
> find its end, which tells Emacs that the starting point was after the
> previous defun, so it calls BOD-raw again to find the next defun and
> finally EOD-function to get to its end.

Why didn't 22.x do this? Probably to fix some bug, right?

  -T.





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

* Re: Low redisplay performance (23 regression)
  2009-04-29 17:49     ` David Reitter
@ 2009-04-29 18:21       ` Tassilo Horn
       [not found]         ` <14FF0914-56BA-41D6-85DA-A4024694CF75@gmail.com>
  2009-04-29 18:45       ` Chong Yidong
  2009-04-29 22:10       ` Miles Bader
  2 siblings, 1 reply; 58+ messages in thread
From: Tassilo Horn @ 2009-04-29 18:21 UTC (permalink / raw)
  To: David Reitter; +Cc: emacs-devel

David Reitter <david.reitter@gmail.com> writes:

Hi David,

>> And on yet another related note, today I've found out that after
>> changing the font scale for the current buffer using `C-x C-+' or
>> `C-x C--' line-by-line scrolling slows down considerably.
>
> As said earlier, I found that using face-remapping is highly
> correlated with this slow-down.

Ah, sorry, I must have missed that.

>> Oh, yet another observation: While writing this mail I enlarged the
>> text scale with `C-x C-+' and if I press and hold the up or down key,
>> point hangs for very short periods of time at some positions and then
>> jumps over some lines without visible redisplay, even though no
>> scrolling at all is done.
>
> I see the same thing.  Did you (setq redisplay-dont-pause t) ?

No, but setting it doesn't make a big difference here.

> Either way, it suggests that drawing takes much longer with a change
> of faces. (E.g., M-x list-faces-display ?)

Ouch!  Without remapping it scrolls with some minor hangs (tenth of a
second), but with face-remapping it starts fine, but then slows down
very quickly.  From the middle of the buffer to the last line (with
pressing and holding down, ~200 lines) it's basically a 5-10 seconds
hang followed by a jump to the last line -- nothing in between.
redisplay-dont-pause doesn't make a (noticeable) difference for me.

Bye,
Tassilo




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

* Re: Low redisplay performance (23 regression)
  2009-04-20 21:58 Low redisplay performance (23 regression) David Reitter
                   ` (3 preceding siblings ...)
  2009-04-29 10:17 ` Tobias C. Rittweiler
@ 2009-04-29 18:38 ` Dan Nicolaescu
  4 siblings, 0 replies; 58+ messages in thread
From: Dan Nicolaescu @ 2009-04-29 18:38 UTC (permalink / raw)
  To: David Reitter; +Cc: Emacs-Devel devel

David Reitter <david.reitter@gmail.com> writes:

  > I've been noticing a substantial slowdown in redisplay performance.
  > Scrolling down emacs.c in fundamental-mode takes about 2 seconds in
  > Emacs 22 (Carbon port), and 3 seconds in Emacs 23 (NS port).
  > 
  > With font-lock-mode (in c-mode) enabled, the difference is even larger:
  > 
  > About 2.5 seconds in Emacs 22, and more than 7 seconds in 23/NS.
  > 
  > The effect interacts with the display of overlays etc. in the header
  > line.  When turning that off, I get about 2.5 seconds in Emacs 22, and
  > still more than 4 seconds in 23/NS.  (All values estimated manually
  > from several tries.)
  > 
  > I'm wondering if others get the same on other platforms comparing 22
  > and 23, or if this is a problem specifically in the NS port (for
  > example, with setting drawing color or the like).

I have not measured anything, but I do not see any visible difference on
GNU/Linux.




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

* Re: Low redisplay performance (23 regression)
  2009-04-29 17:49     ` David Reitter
  2009-04-29 18:21       ` Tassilo Horn
@ 2009-04-29 18:45       ` Chong Yidong
  2009-04-30  2:46         ` YAMAMOTO Mitsuharu
  2009-04-29 22:10       ` Miles Bader
  2 siblings, 1 reply; 58+ messages in thread
From: Chong Yidong @ 2009-04-29 18:45 UTC (permalink / raw)
  To: David Reitter; +Cc: Tassilo Horn, emacs-devel, Miles Bader

David Reitter <david.reitter@gmail.com> writes:

> On Apr 29, 2009, at 1:40 PM, Tassilo Horn wrote:
>>
>> And on yet another related note, today I've found out that after
>> changing the font scale for the current buffer using `C-x C-+' or `C-x
>> C--' line-by-line scrolling slows down considerably.
>
> As said earlier, I found that using face-remapping is highly
> correlated with this slow-down.

I think the problem is that lookup_basic_face computes the remapped
face_id in an expensive way.  It needs to do some caching.




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

* Re: Low redisplay performance (23 regression)
       [not found]         ` <14FF0914-56BA-41D6-85DA-A4024694CF75@gmail.com>
@ 2009-04-29 19:45           ` Tassilo Horn
  0 siblings, 0 replies; 58+ messages in thread
From: Tassilo Horn @ 2009-04-29 19:45 UTC (permalink / raw)
  To: emacs-devel; +Cc: David Reitter

David Reitter <david.reitter@gmail.com> writes:

Hi David,

>>> As said earlier, I found that using face-remapping is highly
>>> correlated with this slow-down.
>>
>> Ah, sorry, I must have missed that.
>
> Oh no problem at all.  In fact I'm very grateful that you're
> reproducing the problem, and presumably you're reproducing it not on
> NS but elsewhere.

Yes, this is on Gentoo GNU/Linux with xft font backend (DeJaVu Sans Mono
as default face).

GNU Emacs 23.0.92.1 (x86_64-pc-linux-gnu, GTK+ Version 2.14.7) of
2009-04-28 on thinkpad

Bye,
Tassilo




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

* Re: Low redisplay performance (23 regression)
  2009-04-29 17:35     ` Tobias C. Rittweiler
@ 2009-04-29 20:20       ` Stefan Monnier
  2009-04-30  7:34         ` Tobias C. Rittweiler
  0 siblings, 1 reply; 58+ messages in thread
From: Stefan Monnier @ 2009-04-29 20:20 UTC (permalink / raw)
  To: Tobias C. Rittweiler; +Cc: emacs-devel

>> > 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.

Yes, that makes sense.

> 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.

Indeed font-lock-fontify-keywords-region (which is the part which I'd
expect to take the bulk of the time and would be a source of performance
problems no matter how you implement your
font-lock-extend-region-functions if you force refontification of the
whole defun every time), so as I was saying
font-lock-fontify-keywords-region got about twice as slow.  And I can't
explain it.  As far as I know, this part of font-lock has not been
changed in any significant way.  What happens if you use Emacs-22's
font-lock.el in Emacs-23?

> > So it's about twice as slow for this test, which is the expected in this
> > case: since your benchmark always calls it with point between 2 defuns,
> > it ends up doing: BOD-raw to find the previous defun, EOD-function to
> > find its end, which tells Emacs that the starting point was after the
> > previous defun, so it calls BOD-raw again to find the next defun and
> > finally EOD-function to get to its end.
> Why didn't 22.x do this? Probably to fix some bug, right?

No, you're right.  Emacs-22's code is very different, but it should end
up doing pretty much the same thing (two calls to BOD-raw plus two calls
to forward-list) and I see no reason why it should be any faster.


        Stefan




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

* Re: Low redisplay performance (23 regression)
  2009-04-29 17:49     ` David Reitter
  2009-04-29 18:21       ` Tassilo Horn
  2009-04-29 18:45       ` Chong Yidong
@ 2009-04-29 22:10       ` Miles Bader
  2 siblings, 0 replies; 58+ messages in thread
From: Miles Bader @ 2009-04-29 22:10 UTC (permalink / raw)
  To: emacs-devel

David Reitter <david.reitter@gmail.com> writes:
> As said earlier, I found that using face-remapping is highly correlated
> with this slow-down.

If so, while obviously it's something to work on, it isn't a regression,
as Emacs 22 did not have this functionality...

-Miles

-- 
Road, n. A strip of land along which one may pass from where it is too
tiresome to be to where it is futile to go.





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

* Re: Low redisplay performance (23 regression)
  2009-04-29 18:45       ` Chong Yidong
@ 2009-04-30  2:46         ` YAMAMOTO Mitsuharu
  2009-04-30  3:49           ` Chong Yidong
  0 siblings, 1 reply; 58+ messages in thread
From: YAMAMOTO Mitsuharu @ 2009-04-30  2:46 UTC (permalink / raw)
  To: Chong Yidong; +Cc: David Reitter, Tassilo Horn, Miles Bader, emacs-devel

>>>>> On Wed, 29 Apr 2009 14:45:41 -0400, Chong Yidong <cyd@stupidchicken.com> said:

>>> And on yet another related note, today I've found out that after
>>> changing the font scale for the current buffer using `C-x C-+' or
>>> `C-x C--' line-by-line scrolling slows down considerably.
>> 
>> As said earlier, I found that using face-remapping is highly
>> correlated with this slow-down.

> I think the problem is that lookup_basic_face computes the remapped
> face_id in an expensive way.  It needs to do some caching.

Some profiling results show that many Lisp objects are constructed in
font_clear_prop, and that causes frequent GC triggered by Lisp
evaluations in redisplay such as mode/header-line calculation.  That
would also explain why the OP doesn't observe the slowness on Emacs 22
with backported face remapping.

				     YAMAMOTO Mitsuharu
				mituharu@math.s.chiba-u.ac.jp




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

* Re: Low redisplay performance (23 regression)
  2009-04-30  2:46         ` YAMAMOTO Mitsuharu
@ 2009-04-30  3:49           ` Chong Yidong
  2009-04-30  6:27             ` YAMAMOTO Mitsuharu
  0 siblings, 1 reply; 58+ messages in thread
From: Chong Yidong @ 2009-04-30  3:49 UTC (permalink / raw)
  To: YAMAMOTO Mitsuharu; +Cc: David Reitter, Tassilo Horn, Miles Bader, emacs-devel

YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp> writes:

>> I think the problem is that lookup_basic_face computes the remapped
>> face_id in an expensive way.  It needs to do some caching.
>
> Some profiling results show that many Lisp objects are constructed in
> font_clear_prop, and that causes frequent GC triggered by Lisp
> evaluations in redisplay such as mode/header-line calculation.  That
> would also explain why the OP doesn't observe the slowness on Emacs 22
> with backported face remapping.

That's surprising.  I have experimented with making font_clear_prop
overwrite font specs instead of allocating new ones, when possible.
However, this does not seem to improve performance (I do not intend to
change this for 23.1).  I think the fundamental problem does not lie in
font_clear_prop, but in the fact that the face remapping code's
lookup_basic_face function calls lookup_named_face -> merge_face_vectors
far too often.




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

* Re: Low redisplay performance (23 regression)
  2009-04-29 17:40   ` Tassilo Horn
  2009-04-29 17:49     ` David Reitter
@ 2009-04-30  5:05     ` Chong Yidong
  2009-04-30  7:53       ` Tobias C. Rittweiler
                         ` (2 more replies)
  1 sibling, 3 replies; 58+ messages in thread
From: Chong Yidong @ 2009-04-30  5:05 UTC (permalink / raw)
  To: emacs-devel

Tassilo Horn <tassilo@member.fsf.org> writes:

> And on yet another related note, today I've found out that after
> changing the font scale for the current buffer using `C-x C-+' or `C-x
> C--' line-by-line scrolling slows down considerably.

On further investigation, I found that the problem can be solved with a
relatively safe change to handle_face_prop, so that it tells
face_at_buffer_position what the base face id is rather than having
face_at_buffer_position recalculate it each time the redisplay loop
wants to display the next face (!).  I've checked in the fix.




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

* Re: Low redisplay performance (23 regression)
  2009-04-30  3:49           ` Chong Yidong
@ 2009-04-30  6:27             ` YAMAMOTO Mitsuharu
  0 siblings, 0 replies; 58+ messages in thread
From: YAMAMOTO Mitsuharu @ 2009-04-30  6:27 UTC (permalink / raw)
  To: Chong Yidong; +Cc: David Reitter, Tassilo Horn, Miles Bader, emacs-devel

>>>>> On Wed, 29 Apr 2009 23:49:43 -0400, Chong Yidong <cyd@stupidchicken.com> said:

>> Some profiling results show that many Lisp objects are constructed
>> in font_clear_prop, and that causes frequent GC triggered by Lisp
>> evaluations in redisplay such as mode/header-line calculation.
>> That would also explain why the OP doesn't observe the slowness on
>> Emacs 22 with backported face remapping.

> That's surprising.  I have experimented with making font_clear_prop
> overwrite font specs instead of allocating new ones, when possible.
> However, this does not seem to improve performance (I do not intend
> to change this for 23.1).  I think the fundamental problem does not
> lie in font_clear_prop, but in the fact that the face remapping
> code's lookup_basic_face function calls lookup_named_face ->
> merge_face_vectors far too often.

I confirmed that your latest change lowered the frequency of GC,
though I'm not sure which allocation is reduced most.

				     YAMAMOTO Mitsuharu
				mituharu@math.s.chiba-u.ac.jp




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

* Re: Low redisplay performance (23 regression)
  2009-04-29 20:20       ` Stefan Monnier
@ 2009-04-30  7:34         ` Tobias C. Rittweiler
  2009-04-30 20:00           ` Stefan Monnier
  0 siblings, 1 reply; 58+ messages in thread
From: Tobias C. Rittweiler @ 2009-04-30  7:34 UTC (permalink / raw)
  To: emacs-devel

Stefan Monnier <monnier@IRO.UMontreal.CA> writes:

> > 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.
>
> Indeed font-lock-fontify-keywords-region (which is the part which I'd
> expect to take the bulk of the time and would be a source of performance
> problems no matter how you implement your
> font-lock-extend-region-functions if you force refontification of the
> whole defun every time), so as I was saying
> font-lock-fontify-keywords-region got about twice as slow.  And I can't
> explain it.  As far as I know, this part of font-lock has not been
> changed in any significant way.  What happens if you use Emacs-22's
> font-lock.el in Emacs-23?

Ok, see the profiling data below. I think I did everything the very same
as yesterday.

The first output shows the case where I linked the font-core.elc and
font-lock.elc to the .elc files of 22.1. Surprisingly that worked. :-)

You'll see that the first output shows a few less calls to END-OF-DEFUN,
and BEGINNING-OF-DEFUN(-RAW) than yesterday's data. And is a bit faster
on the whole.


The second output shows the case where I compiled the font-*.el sources
of 22.1 with a 23.x (by visiting the file, then issuing M-x
byte-compile-file.)

The second case seems to slow down everything a little bit. Although I
wouldn't vouch for the results as they're only based on 1 sample. But
has there been work on the byte-compiler?

  -T.

PS.

GNU Emacs 23.0.92.1 with font-core.elc, font-lock.elc symlinked to 22.1.

jit-lock-function                                          478         7.9711269999  0.0166759979
jit-lock-fontify-now                                       478         7.9669629999  0.0166672866
font-lock-fontify-region                                   478         7.9076759999  0.0165432552
font-lock-default-fontify-region                           478         7.8998459999  0.0165268744
font-lock-fontify-keywords-region                          478         3.9014010000  0.0081619267
slime-extend-region-for-font-lock                          953         3.2538709999  0.0034143452
slime-region-for-tlf-at-point                              922         2.3568059999  0.0025561887
end-of-defun                                               1844        2.1011199999  0.0011394360
slime-region-for-extended-tlf-at-point                     461         1.4019959999  0.0030412060
slime-search-suppressed-forms                              922         1.2786319999  0.0013868026
font-lock-fontify-syntactically-region                     478         0.6769720000  0.0014162594
beginning-of-defun-raw                                     4226        0.4991790000  0.0001181209
beginning-of-defun                                         2380        0.3932019999  0.0001652109
slime-forward-sexp                                         220         0.0930310000  0.0004228681
slime-forward-cruft                                        220         0.0895650000  0.0004071136
slime-post-command-hook                                    111         0.0680430000  0.0006130000
slime-eval-feature-conditional                             444         0.0463489999  0.0001043896
slime-forward-reader-conditional                           220         0.0386519999  0.0001756909
slime-lisp-features                                        444         0.0383999999  8.648...e-05
slime-forward-any-comment                                  220         0.0322529999  0.0001466045
font-lock-unfontify-region                                 478         0.0264229999  5.527...e-05
font-lock-default-unfontify-region                         478         0.0187470000  3.921...e-05
slime-forward-blanks                                       220         0.014927      6.785e-05
slime-connection                                           444         0.0045750000  1.030...e-05
slime-pre-command-hook                                     111         0.0045430000  4.092...e-05
font-lock-extend-region-multiline                          953         0.0034319999  3.601...e-06
font-lock-extend-region-wholelines                         953         0.0032449999  3.405...e-06
slime-connected-p                                          922         0.0029949999  3.248...e-06
slime-keywordify                                           444         0.0027099999  6.103...e-06
font-lock-set-defaults                                     484         0.0015600000  3.223...e-06
jit-lock-context-fontify                                   9           0.0014320000  0.0001591111
slime-current-connection                                   444         0.0008870000  1.997...e-06
font-lock-mode                                             14          0.000837      5.978...e-05
font-lock-default-function                                 14          0.000567      4.05e-05
font-lock-mode-internal                                    2           0.00046       0.00023
font-lock-compile-keywords                                 2           0.000273      0.0001365
font-lock-turn-on-thing-lock                               2           0.0001599999  7.999...e-05
jit-lock-register                                          2           0.0001040000  5.200...e-05
font-lock-compile-keyword                                  32          9.200...e-05  2.875...e-06
slime-lisp-mode-hook                                       1           8.9e-05       8.9e-05
slime-mode                                                 1           7.9e-05       7.9e-05
jit-lock-mode                                              2           7.6e-05       3.8e-05
slime-setup-command-hooks                                  1           4.6e-05       4.6e-05
font-lock-add-keywords                                     2           4.6e-05       2.3e-05
jit-lock-refontify                                         2           4.200...e-05  2.100...e-05
slime-add-local-hook                                       2           3.4e-05       1.7e-05
font-lock-change-mode                                      1           2.6e-05       2.6e-05
font-lock-remove-keywords                                  2           2.2e-05       1.1e-05
font-lock-value-in-major-mode                              5           1.2e-05       2.4e-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           4e-06         4e-06

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

GNU Emacs 23.0.92.1 with font-core.elc, font-lock.elc byte-compiled from
22.1 sources.

jit-lock-function                                          478         8.6693530000  0.0181367217
jit-lock-fontify-now                                       478         8.6651570000  0.0181279435
font-lock-fontify-region                                   478         8.6414769999  0.0180784037
font-lock-default-fontify-region                           478         8.6329149999  0.0180604916
font-lock-fontify-keywords-region                          478         4.1605249999  0.0087040271
slime-extend-region-for-font-lock                          953         3.4857529999  0.0036576631
slime-region-for-tlf-at-point                              922         2.5261709999  0.0027398817
end-of-defun                                               1844        2.2046559999  0.0011955835
slime-region-for-extended-tlf-at-point                     461         1.411911      0.0030627136
slime-search-suppressed-forms                              922         1.3772869999  0.0014938036
font-lock-fontify-syntactically-region                     478         0.9161559999  0.0019166443
beginning-of-defun-raw                                     4226        0.4427990000  0.0001047796
beginning-of-defun                                         2380        0.4161659999  0.0001748596
slime-forward-sexp                                         220         0.1129909999  0.0005135954
slime-forward-cruft                                        220         0.1092269999  0.0004964863
slime-eval-feature-conditional                             444         0.0950729999  0.0002141283
slime-forward-any-comment                                  220         0.086004      0.0003909272
slime-lisp-features                                        444         0.0853749999  0.0001922860
font-lock-unfontify-region                                 478         0.0296069999  6.193...e-05
font-lock-default-unfontify-region                         478         0.0228370000  4.777...e-05
slime-forward-blanks                                       220         0.0164640000  7.483...e-05
slime-connection                                           444         0.0050060000  1.127...e-05
slime-pre-command-hook                                     106         0.004678      4.413...e-05
font-lock-extend-region-wholelines                         953         0.0036529999  3.833...e-06
font-lock-extend-region-multiline                          953         0.0036179999  3.796...e-06
jit-lock-context-fontify                                   19          0.002982      0.0001569473
slime-keywordify                                           444         0.0028969999  6.524...e-06
slime-connected-p                                          922         0.0022989999  2.493...e-06
font-lock-set-defaults                                     484         0.0016010000  3.307...e-06
slime-forward-reader-conditional                           220         0.0010569999  4.804...e-06
font-lock-mode                                             17          0.0010459999  6.152...e-05
slime-current-connection                                   444         0.0009930000  2.236...e-06
font-lock-default-function                                 17          0.000617      3.629...e-05
slime-post-command-hook                                    106         0.0006169999  5.820...e-06
font-lock-mode-internal                                    2           0.0004450000  0.0002225000
font-lock-compile-keywords                                 2           0.0001880000  9.400...e-05
font-lock-turn-on-thing-lock                               2           0.000158      7.9e-05
font-lock-change-mode                                      2           0.00011       5.5e-05
jit-lock-register                                          2           0.000102      5.1e-05
slime-lisp-mode-hook                                       1           9e-05         9e-05
slime-mode                                                 1           8e-05         8e-05
jit-lock-mode                                              2           7.500...e-05  3.750...e-05
font-lock-compile-keyword                                  32          6.400...e-05  2.000...e-06
font-lock-add-keywords                                     2           4.8e-05       2.4e-05
slime-setup-command-hooks                                  1           4.7e-05       4.7e-05
jit-lock-refontify                                         2           4.1e-05       2.05e-05
slime-add-local-hook                                       2           3.4e-05       1.7e-05
font-lock-remove-keywords                                  2           2.2e-05       1.1e-05
font-lock-value-in-major-mode                              5           1.2e-05       2.4e-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           4e-06         4e-06





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

* Re: Low redisplay performance (23 regression)
  2009-04-30  5:05     ` Chong Yidong
@ 2009-04-30  7:53       ` Tobias C. Rittweiler
  2009-04-30  9:37       ` Tassilo Horn
  2009-04-30 12:44       ` David Reitter
  2 siblings, 0 replies; 58+ messages in thread
From: Tobias C. Rittweiler @ 2009-04-30  7:53 UTC (permalink / raw)
  To: emacs-devel

Chong Yidong <cyd@stupidchicken.com> writes:

> Tassilo Horn <tassilo@member.fsf.org> writes:
>
>> And on yet another related note, today I've found out that after
>> changing the font scale for the current buffer using `C-x C-+' or `C-x
>> C--' line-by-line scrolling slows down considerably.
>
> On further investigation, I found that the problem can be solved with a
> relatively safe change to handle_face_prop, so that it tells
> face_at_buffer_position what the base face id is rather than having
> face_at_buffer_position recalculate it each time the redisplay loop
> wants to display the next face (!).  I've checked in the fix.

This does also effect my case positively. See PS for profiling
data. (The profiling data I sent a short moment ago in a reply to SM was
made with the same Emacs built as from yesterday.)

Your change chops off 1 second of elapsed time. Notice that I do _not_
use face-remapping. (At least I think so, `face-remapping-alist' is
nil.)

It's still slower than 22.x, though.

  -T.


PS.

GNU Emacs 23.0.92.2 (i686-pc-linux-gnu, GTK+ Version 2.12.9) of 2009-04-30

jit-lock-function                                          478         8.0091170000  0.0167554748
jit-lock-fontify-now                                       478         8.004965      0.0167467887
font-lock-fontify-region                                   478         7.9449999999  0.0166213389
font-lock-default-fontify-region                           478         7.9367379999  0.0166040543
font-lock-fontify-keywords-region                          478         4.0301240000  0.0084312217
slime-extend-region-for-font-lock                          953         3.2400959999  0.0033998908
slime-region-for-tlf-at-point                              922         2.3287470000  0.0025257559
end-of-defun                                               1844        2.0637190000  0.0011191534
slime-search-suppressed-forms                              922         1.5182759999  0.0016467201
slime-region-for-extended-tlf-at-point                     461         1.3538770000  0.0029368264
font-lock-fontify-syntactically-region                     478         0.60468       0.0012650209
beginning-of-defun-raw                                     4226        0.4219760000  9.985...e-05
beginning-of-defun                                         2380        0.3595919999  0.0001510890
slime-forward-sexp                                         220         0.1066330000  0.0004846954
slime-forward-cruft                                        220         0.1030679999  0.0004684909
slime-eval-feature-conditional                             444         0.0904689999  0.0002037590
slime-lisp-features                                        444         0.0818809999  0.0001844166
slime-forward-any-comment                                  220         0.0401569999  0.0001825318
slime-forward-reader-conditional                           220         0.0384359999  0.0001747090
font-lock-unfontify-region                                 478         0.0243780000  5.100...e-05
slime-forward-blanks                                       220         0.0204380000  9.290...e-05
font-lock-default-unfontify-region                         478         0.0180999999  3.786...e-05
slime-connection                                           444         0.0064210000  1.446...e-05
slime-pre-command-hook                                     112         0.0047230000  4.216...e-05
font-lock-extend-region-multiline                          953         0.0034039999  3.571...e-06
font-lock-extend-region-wholelines                         953         0.0031459999  3.301...e-06
slime-keywordify                                           444         0.0029510000  6.646...e-06
jit-lock-context-fontify                                   15          0.00256       0.0001706666
slime-connected-p                                          922         0.0023539999  2.553...e-06
font-lock-set-defaults                                     484         0.0015360000  3.173...e-06
slime-current-connection                                   444         0.0009280000  2.090...e-06
font-lock-mode                                             14          0.0008950000  6.392...e-05
slime-post-command-hook                                    112         0.0006179999  5.517...e-06
font-lock-default-function                                 14          0.000572      4.085...e-05
font-lock-mode-internal                                    2           0.000443      0.0002215
font-lock-compile-keywords                                 2           0.000187      9.35e-05
font-lock-turn-on-thing-lock                               2           0.0001599999  7.999...e-05
jit-lock-register                                          2           0.000102      5.1e-05
slime-lisp-mode-hook                                       1           8e-05         8e-05
jit-lock-mode                                              2           7.400...e-05  3.700...e-05
slime-mode                                                 1           7.1e-05       7.1e-05
font-lock-compile-keyword                                  32          6.6e-05       2.0625e-06
font-lock-add-keywords                                     2           4.499...e-05  2.249...e-05
slime-setup-command-hooks                                  1           4e-05         4e-05
jit-lock-refontify                                         2           3.999...e-05  1.999...e-05
slime-add-local-hook                                       2           2.600...e-05  1.300...e-05
font-lock-change-mode                                      1           2.6e-05       2.6e-05
font-lock-remove-keywords                                  2           2.2e-05       1.1e-05
font-lock-value-in-major-mode                              5           1.1e-05       2.2e-06
font-lock-eval-keywords                                    2           8e-06         4e-06
slime-setup-first-change-hook                              1           6e-06         6e-06
font-lock-choose-keywords                                  1           4e-06         4e-06
slime-add-easy-menu                                        1           3e-06         3e-06





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

* Re: Low redisplay performance (23 regression)
  2009-04-30  5:05     ` Chong Yidong
  2009-04-30  7:53       ` Tobias C. Rittweiler
@ 2009-04-30  9:37       ` Tassilo Horn
  2009-04-30 12:44       ` David Reitter
  2 siblings, 0 replies; 58+ messages in thread
From: Tassilo Horn @ 2009-04-30  9:37 UTC (permalink / raw)
  To: emacs-devel

Chong Yidong <cyd@stupidchicken.com> writes:

Hi!

>> And on yet another related note, today I've found out that after
>> changing the font scale for the current buffer using `C-x C-+' or
>> `C-x C--' line-by-line scrolling slows down considerably.
>
> On further investigation, I found that the problem can be solved with
> a relatively safe change to handle_face_prop, so that it tells
> face_at_buffer_position what the base face id is rather than having
> face_at_buffer_position recalculate it each time the redisplay loop
> wants to display the next face (!).  I've checked in the fix.

Yes, it's much better now.  Before line-by-line scrolling in
`list-faces-display' with face-remapping was nearly impossible, now it's
not much slower than without it.

Thanks,
Tassilo




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

* Re: Low redisplay performance (23 regression)
  2009-04-30  5:05     ` Chong Yidong
  2009-04-30  7:53       ` Tobias C. Rittweiler
  2009-04-30  9:37       ` Tassilo Horn
@ 2009-04-30 12:44       ` David Reitter
  2 siblings, 0 replies; 58+ messages in thread
From: David Reitter @ 2009-04-30 12:44 UTC (permalink / raw)
  To: Chong Yidong; +Cc: emacs-devel

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

On Apr 30, 2009, at 1:05 AM, Chong Yidong wrote:

> On further investigation, I found that the problem can be solved  
> with a
> relatively safe change to handle_face_prop, so that it tells
> face_at_buffer_position what the base face id is rather than having
> face_at_buffer_position recalculate it each time the redisplay loop
> wants to display the next face (!).  I've checked in the fix.

Thanks.  Kudos to you and Yamamoto Mitsuharu for finding these problems.
In the case that I documented, I see a big speedup, so that's good.

I still see other performance problems.
This one is easier to reproduce, I hope:

Emacs -Q
open file (e.g., src/emacs.c)
(setq redisplay-dont-pause t)
Scroll down page-wise using PgDown  [about 3 seconds]

C-x 5 2, move frame to the right so that they're side-by-side
Switch back to first frame
Home, then scroll down page-wise using PgDown [about 5 seconds}

It seems to me that this slow-down happens when the same buffer is  
shown in another frame, but not if another buffer is shown.


[-- Attachment #2: smime.p7s --]
[-- Type: application/pkcs7-signature, Size: 2193 bytes --]

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

* Re: Low redisplay performance (23 regression)
  2009-04-30  7:34         ` Tobias C. Rittweiler
@ 2009-04-30 20:00           ` Stefan Monnier
  2009-04-30 20:34             ` Tobias C. Rittweiler
  0 siblings, 1 reply; 58+ messages in thread
From: Stefan Monnier @ 2009-04-30 20:00 UTC (permalink / raw)
  To: Tobias C. Rittweiler; +Cc: emacs-devel

> The second case seems to slow down everything a little bit. Although I
> wouldn't vouch for the results as they're only based on 1 sample. But
> has there been work on the byte-compiler?

Yes, the byte-compiler has been changed slightly (some broken optimizations
have been fixed, mostly), so that can explain the little difference.
But still Emacs-23 with Emacs-22's font-lock.elc still takes 3.9s for
font-lock-fontify-keywords-region compared to 2.2s under Emacs-22.
So some of the underlying primitives have slowed down significantly.
Could you show the value of font-lock-keywords in that buffer?


        Stefan




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

* Re: Low redisplay performance (23 regression)
  2009-04-30 20:00           ` Stefan Monnier
@ 2009-04-30 20:34             ` Tobias C. Rittweiler
  0 siblings, 0 replies; 58+ messages in thread
From: Tobias C. Rittweiler @ 2009-04-30 20:34 UTC (permalink / raw)
  To: emacs-devel

Stefan Monnier <monnier@iro.umontreal.ca> writes:

> Could you show the value of font-lock-keywords in that buffer?

Sure.

  -T.

PS.


Value: 
(t
 (("(\\(\\(\\s_\\|\\w\\)*:\\(define-\\|do-\\|with-\\)\\(\\s_\\|\\w\\)*\\)" 1 font-lock-keyword-face)
  ("(\\(\\(define-\\|do-\\|with-\\)\\(\\s_\\|\\w\\)*\\)" 1 font-lock-keyword-face)
  ("(\\(check-\\(\\s_\\|\\w\\)*\\)" 1 font-lock-warning-face)
  (slime-search-suppressed-forms 0 'slime-reader-conditional-face t)
  ("(\\(def\\(\\(advice\\|alias\\|generic\\|macro\\*?\\|method\\|setf\\|subst\\*?\\|un\\*?\\|ine-\\(condition\\|\\(?:derived\\|\\(?:global\\(?:ized\\)?-\\)?minor\\|generic\\)-mode\\|method-combination\\|setf-expander\\|skeleton\\|widget\\|function\\|\\(compiler\\|modify\\|symbol\\)-macro\\)\\)\\|\\(const\\(ant\\)?\\|custom\\|varalias\\|face\\|parameter\\|var\\)\\|\\(class\\|group\\|theme\\|package\\|struct\\|type\\)\\)\\)\\>[ 	'(]*\\(setf[ 	]+\\sw+)\\|\\sw+\\)?"
   (1 font-lock-keyword-face)
   (9
    (cond
      ((match-beginning 3)
       font-lock-function-name-face)
      ((match-beginning 6)
       font-lock-variable-name-face)
      (t font-lock-type-face))
    nil t))
  ("^;;;###\\([-a-z]*autoload\\)" 1 font-lock-warning-face prepend)
  ("\\[\\(\\^\\)" 1 font-lock-negation-char-face prepend)
  ("(\\(cond\\(?:ition-case\\)?\\|eval-\\(?:a\\(?:fter-load\\|nd-compile\\|t-startup\\)\\|next-after-load\\|when\\(?:-compile\\)?\\)\\|i\\(?:f\\|nline\\)\\|l\\(?:ambda\\|et\\*?\\)\\|prog[*12nv]?\\|save-\\(?:current-buffer\\|excursion\\|match-data\\|restriction\\|selected-window\\|window-excursion\\)\\|track-mouse\\|unwind-protect\\|w\\(?:hile\\(?:-no-input\\)?\\|ith-\\(?:c\\(?:a\\(?:\\(?:se\\|tegory\\)-table\\)\\|urrent-buffer\\)\\|electric-help\\|local-quit\\|no-warnings\\|output-to-\\(?:string\\|temp-buffer\\)\\|s\\(?:elected-\\(?:frame\\|window\\)\\|yntax-table\\)\\|t\\(?:emp-\\(?:buffer\\|\\(?:fil\\|messag\\)e\\)\\|imeout\\(?:-handler\\)?\\)\\)\\)\\)\\>" . 1)
  ("(\\(b\\(?:\\(?:loc\\|rea\\)k\\)\\|c\\(?:ase\\|case\\|ompiler-let\\|typecase\\)\\|d\\(?:e\\(?:cla\\(?:im\\|re\\)\\|structuring-bind\\)\\|o\\(?:\\*\\|list\\|times\\)?\\)\\|e\\(?:\\(?:type\\)?case\\)\\|flet\\|go\\|handler-\\(?:bind\\|case\\)\\|i\\(?:gnore-errors\\|n-package\\)\\|l\\(?:abels\\|exical-let\\*?\\|o\\(?:cally\\|op\\)\\)\\|m\\(?:acrolet\\|ultiple-value-\\(?:bind\\|prog1\\)\\)\\|proclaim\\|re\\(?:start-\\(?:bind\\|case\\)\\|turn\\(?:-from\\)?\\)\\|symbol-macrolet\\|t\\(?:agbody\\|\\(?:h\\|ypecas\\)e\\)\\|unless\\|w\\(?:hen\\|ith-\\(?:accessors\\|co\\(?:mpilation-unit\\|ndition-restarts\\)\\|hash-table-iterator\\|input-from-string\\|o\\(?:pen-\\(?:file\\|stream\\)\\|utput-to-string\\)\\|package-iterator\\|s\\(?:imple-restart\\|lots\\|tandard-io-syntax\\)\\)\\)\\)\\>" . 1)
  ("(\\(catch\\|throw\\|featurep\\|provide\\|require\\)\\>[ 	']*\\(\\sw+\\)?"
   (1 font-lock-keyword-face)
   (2 font-lock-constant-face nil t))
  ("(\\(abort\\|assert\\|warn\\|check-type\\|cerror\\|error\\|signal\\)\\>" 1 font-lock-warning-face)
  ("\\\\\\\\\\[\\(\\sw+\\)\\]" 1 font-lock-constant-face prepend)
  ("`\\(\\sw\\sw+\\)'" 1 font-lock-constant-face prepend)
  ("\\<:\\sw+\\>" 0 font-lock-builtin-face)
  ("\\<\\&\\sw+\\>" . font-lock-type-face)
  ((lambda
       (bound)
     (catch 'found
       (while
           (re-search-forward "\\(\\\\\\\\\\)\\(?:\\(\\\\\\\\\\)\\|\\((\\(?:\\?[0-9]*:\\)?\\|[|)]\\)\\)" bound t)
         (unless
             (match-beginning 2)
           (let
               ((face
                 (get-text-property
                  (1-
                   (point))
                  'face)))
             (when
                 (or
                  (and
                   (listp face)
                   (memq 'font-lock-string-face face))
                  (eq 'font-lock-string-face face))
               (throw 'found t)))))))
   (1 'font-lock-regexp-grouping-backslash prepend)
   (3 'font-lock-regexp-grouping-construct prepend)))
 ("(\\(\\(\\s_\\|\\w\\)*:\\(define-\\|do-\\|with-\\)\\(\\s_\\|\\w\\)*\\)"
  (1 font-lock-keyword-face))
 ("(\\(\\(define-\\|do-\\|with-\\)\\(\\s_\\|\\w\\)*\\)"
  (1 font-lock-keyword-face))
 ("(\\(check-\\(\\s_\\|\\w\\)*\\)"
  (1 font-lock-warning-face))
 (slime-search-suppressed-forms
  (0 'slime-reader-conditional-face t))
 ("(\\(def\\(\\(advice\\|alias\\|generic\\|macro\\*?\\|method\\|setf\\|subst\\*?\\|un\\*?\\|ine-\\(condition\\|\\(?:derived\\|\\(?:global\\(?:ized\\)?-\\)?minor\\|generic\\)-mode\\|method-combination\\|setf-expander\\|skeleton\\|widget\\|function\\|\\(compiler\\|modify\\|symbol\\)-macro\\)\\)\\|\\(const\\(ant\\)?\\|custom\\|varalias\\|face\\|parameter\\|var\\)\\|\\(class\\|group\\|theme\\|package\\|struct\\|type\\)\\)\\)\\>[ 	'(]*\\(setf[ 	]+\\sw+)\\|\\sw+\\)?"
  (1 font-lock-keyword-face)
  (9
   (cond
     ((match-beginning 3)
      font-lock-function-name-face)
     ((match-beginning 6)
      font-lock-variable-name-face)
     (t font-lock-type-face))
   nil t))
 ("^;;;###\\([-a-z]*autoload\\)"
  (1 font-lock-warning-face prepend))
 ("\\[\\(\\^\\)"
  (1 font-lock-negation-char-face prepend))
 ("(\\(cond\\(?:ition-case\\)?\\|eval-\\(?:a\\(?:fter-load\\|nd-compile\\|t-startup\\)\\|next-after-load\\|when\\(?:-compile\\)?\\)\\|i\\(?:f\\|nline\\)\\|l\\(?:ambda\\|et\\*?\\)\\|prog[*12nv]?\\|save-\\(?:current-buffer\\|excursion\\|match-data\\|restriction\\|selected-window\\|window-excursion\\)\\|track-mouse\\|unwind-protect\\|w\\(?:hile\\(?:-no-input\\)?\\|ith-\\(?:c\\(?:a\\(?:\\(?:se\\|tegory\\)-table\\)\\|urrent-buffer\\)\\|electric-help\\|local-quit\\|no-warnings\\|output-to-\\(?:string\\|temp-buffer\\)\\|s\\(?:elected-\\(?:frame\\|window\\)\\|yntax-table\\)\\|t\\(?:emp-\\(?:buffer\\|\\(?:fil\\|messag\\)e\\)\\|imeout\\(?:-handler\\)?\\)\\)\\)\\)\\>"
  (1 font-lock-keyword-face))
 ("(\\(b\\(?:\\(?:loc\\|rea\\)k\\)\\|c\\(?:ase\\|case\\|ompiler-let\\|typecase\\)\\|d\\(?:e\\(?:cla\\(?:im\\|re\\)\\|structuring-bind\\)\\|o\\(?:\\*\\|list\\|times\\)?\\)\\|e\\(?:\\(?:type\\)?case\\)\\|flet\\|go\\|handler-\\(?:bind\\|case\\)\\|i\\(?:gnore-errors\\|n-package\\)\\|l\\(?:abels\\|exical-let\\*?\\|o\\(?:cally\\|op\\)\\)\\|m\\(?:acrolet\\|ultiple-value-\\(?:bind\\|prog1\\)\\)\\|proclaim\\|re\\(?:start-\\(?:bind\\|case\\)\\|turn\\(?:-from\\)?\\)\\|symbol-macrolet\\|t\\(?:agbody\\|\\(?:h\\|ypecas\\)e\\)\\|unless\\|w\\(?:hen\\|ith-\\(?:accessors\\|co\\(?:mpilation-unit\\|ndition-restarts\\)\\|hash-table-iterator\\|input-from-string\\|o\\(?:pen-\\(?:file\\|stream\\)\\|utput-to-string\\)\\|package-iterator\\|s\\(?:imple-restart\\|lots\\|tandard-io-syntax\\)\\)\\)\\)\\>"
  (1 font-lock-keyword-face))
 ("(\\(catch\\|throw\\|featurep\\|provide\\|require\\)\\>[ 	']*\\(\\sw+\\)?"
  (1 font-lock-keyword-face)
  (2 font-lock-constant-face nil t))
 ("(\\(abort\\|assert\\|warn\\|check-type\\|cerror\\|error\\|signal\\)\\>"
  (1 font-lock-warning-face))
 ("\\\\\\\\\\[\\(\\sw+\\)\\]"
  (1 font-lock-constant-face prepend))
 ("`\\(\\sw\\sw+\\)'"
  (1 font-lock-constant-face prepend))
 ("\\<:\\sw+\\>"
  (0 font-lock-builtin-face))
 ("\\<\\&\\sw+\\>"
  (0 font-lock-type-face))
 ((lambda
      (bound)
    (catch 'found
      (while
          (re-search-forward "\\(\\\\\\\\\\)\\(?:\\(\\\\\\\\\\)\\|\\((\\(?:\\?[0-9]*:\\)?\\|[|)]\\)\\)" bound t)
        (unless
            (match-beginning 2)
          (let
              ((face
                (get-text-property
                 (1-
                  (point))
                 'face)))
            (when
                (or
                 (and
                  (listp face)
                  (memq 'font-lock-string-face face))
                 (eq 'font-lock-string-face face))
              (throw 'found t)))))))
  (1 'font-lock-regexp-grouping-backslash prepend)
  (3 'font-lock-regexp-grouping-construct prepend))
 ("^\\s("
  (0
   (if
    (memq
     (get-text-property
      (match-beginning 0)
      'face)
     '(font-lock-string-face font-lock-doc-face font-lock-comment-face))
    (list 'face font-lock-warning-face 'help-echo "Looks like a toplevel defun: escape the parenthesis"))
   prepend)))

Local in buffer l1-unicode.lisp; global value is nil





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

* Re: Low redisplay performance (23 regression)
  2009-04-23 22:45                     ` Miles Bader
@ 2009-05-06 13:28                       ` Willem Rein Oudshoorn
  0 siblings, 0 replies; 58+ messages in thread
From: Willem Rein Oudshoorn @ 2009-05-06 13:28 UTC (permalink / raw)
  To: emacs-devel

Miles Bader <miles@gnu.org> writes:

> Willem Rein Oudshoorn <woudshoo@xs4all.nl> writes:
>> M-x list-charset-chars
>>     mule-unicode-0100-24ff
>>
>> scrolling in the resulting buffer is extremely slow.  
>> PgUp PgDn, C-n C-p will eat up 100% and it is very jerky.
>>
>> This is both on mswindows and Mac OS X.  
>
> Have you tried doing it (scrolling through the buffer) _twice_?

Yes, scenario is:

1 show unicode chars with: M-x list-charset-chars mule-unicode-0100-24ff
2 keep C-n pressed.
3 when finally at the end of the buffer jump to begin of buffer
4 keep C-n pressed.

The slowdown in step 4 is comparable to the slowdown in step 2.

But I read that there have been improvements and I will check the
newest version sometime this week and let you know.

Wim Oudshoorn.
P.S.: Sorry for the late reply, but there was a funeral in the family
      and obviously that took precedence over anything computer related.





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

end of thread, other threads:[~2009-05-06 13:28 UTC | newest]

Thread overview: 58+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-04-20 21:58 Low redisplay performance (23 regression) David Reitter
2009-04-20 22:31 ` Deniz Dogan
2009-04-20 22:33 ` Chong Yidong
2009-04-20 23:20   ` David Reitter
2009-04-21  3:15   ` Eli Zaretskii
2009-04-21 12:36     ` Juanma Barranquero
2009-04-21 13:51       ` David Reitter
2009-04-21 14:20         ` Juanma Barranquero
2009-04-21 18:58       ` Eli Zaretskii
2009-04-21 19:07         ` Eli Zaretskii
2009-04-21 23:24           ` Juanma Barranquero
2009-04-21 20:19         ` David Reitter
2009-04-21 20:53           ` Chong Yidong
2009-04-21 22:15             ` David Reitter
2009-04-22 15:30           ` Daniel Clemente
2009-04-22 15:50             ` David Reitter
2009-04-22 16:28               ` Chong Yidong
2009-04-22 18:26                 ` David Reitter
2009-04-23 13:34                   ` Willem Rein Oudshoorn
2009-04-23 22:45                     ` Miles Bader
2009-05-06 13:28                       ` Willem Rein Oudshoorn
2009-04-22 22:58             ` YAMAMOTO Mitsuharu
2009-04-23  1:01               ` ftx font driver [Re: Low redisplay performance (23 regression)] Kenichi Handa
2009-04-23  7:31                 ` YAMAMOTO Mitsuharu
2009-04-23 11:22                   ` Kenichi Handa
2009-04-23 12:38                     ` Chong Yidong
2009-04-23 14:56                       ` Stefan Monnier
2009-04-24  1:09                         ` Kenichi Handa
2009-04-24  2:01                           ` Stefan Monnier
2009-04-24  3:52                             ` Chong Yidong
2009-04-25 14:38                             ` Chong Yidong
2009-04-21 23:16         ` Low redisplay performance (23 regression) Juanma Barranquero
2009-04-21 14:56 ` William Xu
2009-04-21 15:30   ` David Reitter
2009-04-22 14:25     ` William Xu
2009-04-29 10:17 ` Tobias C. Rittweiler
2009-04-29 11:54   ` David Reitter
2009-04-29 13:33   ` Stefan Monnier
2009-04-29 17:35     ` Tobias C. Rittweiler
2009-04-29 20:20       ` Stefan Monnier
2009-04-30  7:34         ` Tobias C. Rittweiler
2009-04-30 20:00           ` Stefan Monnier
2009-04-30 20:34             ` Tobias C. Rittweiler
2009-04-29 18:01     ` Tobias C. Rittweiler
2009-04-29 17:40   ` Tassilo Horn
2009-04-29 17:49     ` David Reitter
2009-04-29 18:21       ` Tassilo Horn
     [not found]         ` <14FF0914-56BA-41D6-85DA-A4024694CF75@gmail.com>
2009-04-29 19:45           ` Tassilo Horn
2009-04-29 18:45       ` Chong Yidong
2009-04-30  2:46         ` YAMAMOTO Mitsuharu
2009-04-30  3:49           ` Chong Yidong
2009-04-30  6:27             ` YAMAMOTO Mitsuharu
2009-04-29 22:10       ` Miles Bader
2009-04-30  5:05     ` Chong Yidong
2009-04-30  7:53       ` Tobias C. Rittweiler
2009-04-30  9:37       ` Tassilo Horn
2009-04-30 12:44       ` David Reitter
2009-04-29 18:38 ` Dan Nicolaescu

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).