On 11/21/2013 01:51 AM, Peter Lieven wrote: > 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
s/artifical/artificial/ > 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. s/addresses/addressed/ -- Eric Blake eblake redhat com +1-919-301-3266 Libvirt virtualization library http://libvirt.org
signature.asc
Description: OpenPGP digital signature