aboutsummaryrefslogtreecommitdiff
path: root/exec.c
diff options
context:
space:
mode:
authorPeter Lieven <pl@kamp.de>2014-01-08 10:08:35 +0100
committerGerd Hoffmann <kraxel@redhat.com>2014-03-10 12:35:04 +0100
commit12b316d4c173bf07f421ef9dc98ba4b53916066e (patch)
tree843e39ea377bb7cf66421dada6656aa43ca5c8af /exec.c
parent6cd859aa8a7fb60fe6edb89e628cddfe25dfe186 (diff)
ui/vnc: optimize dirty bitmap tracking
vnc_update_client currently scans the dirty bitmap of each client bitwise which is a very costly operation if only few bits are dirty. vnc_refresh_server_surface does almost the same. this patch optimizes both by utilizing the heavily optimized function find_next_bit to find the offset of the next dirty bit in the dirty bitmaps. The following artifical test (just the bitmap operation part) running vnc_update_client 65536 times on a 2560x2048 surface illustrates the performance difference: All bits clean - vnc_update_client_new: 0.07 secs vnc_update_client_old: 10.98 secs All bits dirty - vnc_update_client_new: 11.26 secs vnc_update_client_old: 20.19 secs Few bits dirty - vnc_update_client_new: 0.08 secs vnc_update_client_old: 10.98 secs The case for all bits dirty is still rather slow, this is due to the implementation of find_and_clear_dirty_height. This will be addresses in a separate patch. Signed-off-by: Peter Lieven <pl@kamp.de> Reviewed-by: Wenchao Xia <xiawenc@linux.vnet.ibm.com> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Diffstat (limited to 'exec.c')
0 files changed, 0 insertions, 0 deletions