linux/tools/perf/ui
Patrick Palka d53e57d039 perf ui tui progress: Don't force a refresh during progress update
Each call to tui_progress__update() would forcibly refresh the entire
screen.  This is somewhat inefficient and causes noticable flickering
during the startup of perf-report, especially on large/slow terminals.

It looks like the force-refresh in tui_progress__update() serves no
purpose other than to clear the screen so that the progress bar of a
previous operation does not subsume that of a subsequent operation.  But
we can do just that in a much more efficient manner by clearing only the
region that a previous progress bar may have occupied before repainting
the new progress bar.  Then the force-refresh could be removed with no
change in visuals.

This patch disables the slow force-refresh in tui_progress__update() and
instead calls SLsmg_fill_region() on the entire area that the progress
bar may occupy before repainting it.  This change makes the startup of
perf-report much faster and appear much "smoother".

It turns out that this was a big bottleneck in the startup speed of
perf-report -- with this patch, perf-report starts up ~2x faster (1.1s
vs 0.55s) on my machines.  (These numbers were measured by running "time
perf report" on an 8MB perf.data and pressing 'q' immediately.)

Signed-off-by: Patrick Palka <patrick@parcs.ath.cx>
Acked-by: Ingo Molnar <mingo@kernel.org>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/r/1382747149-9716-1-git-send-email-patrick@parcs.ath.cx
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2013-11-11 15:56:39 -03:00
..
browsers perf tools: Finish the removal of 'self' arguments 2013-11-05 15:32:36 -03:00
gtk perf ui progress: Per progress bar state 2013-10-23 15:40:38 -03:00
stdio perf tools: Finish the removal of 'self' arguments 2013-11-05 15:32:36 -03:00
tui perf ui tui progress: Don't force a refresh during progress update 2013-11-11 15:56:39 -03:00
browser.c
browser.h perf tools: Finish the removal of 'self' arguments 2013-11-05 15:32:36 -03:00
helpline.c
helpline.h
hist.c perf tools: Remove cast of non-variadic function to variadic 2013-11-01 10:40:51 -03:00
keysyms.h
libslang.h
progress.c perf ui progress: Per progress bar state 2013-10-23 15:40:38 -03:00
progress.h perf ui progress: Per progress bar state 2013-10-23 15:40:38 -03:00
setup.c
ui.h
util.c
util.h