[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Low redisplay performance (23 regression)
From: |
David Reitter |
Subject: |
Re: Low redisplay performance (23 regression) |
Date: |
Mon, 20 Apr 2009 19:20:23 -0400 |
On Apr 20, 2009, at 6:33 PM, Chong Yidong wrote:
David Reitter <address@hidden> 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
smime.p7s
Description: S/MIME cryptographic signature