[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 7/9] ui/vnc: optimize clearing in find_and_clear_dirt
From: |
Gerd Hoffmann |
Subject: |
[Qemu-devel] [PULL 7/9] ui/vnc: optimize clearing in find_and_clear_dirty_height() |
Date: |
Mon, 10 Mar 2014 13:49:11 +0100 |
From: Peter Lieven <address@hidden>
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_new2: 0.07 secs
vnc_update_client_old: 10.98 secs
All bits dirty - vnc_update_client_new: 11.26 secs
- vnc_update_client_new2: 0.29 secs
vnc_update_client_old: 20.19 secs
Few bits dirty - vnc_update_client_new: 0.07 secs
- vnc_update_client_new2: 0.07 secs
vnc_update_client_old: 10.98 secs
vnc_update_client_new2 shows the performance of vnc_update_client
with this patch added.
Comparing with the test run of the last patch the performance
is at least unchanged while it is significantly improved
for the all bits dirty case.
Signed-off-by: Peter Lieven <address@hidden>
Reviewed-by: Wenchao Xia <address@hidden>
Signed-off-by: Gerd Hoffmann <address@hidden>
---
ui/vnc.c | 5 +----
1 file changed, 1 insertion(+), 4 deletions(-)
diff --git a/ui/vnc.c b/ui/vnc.c
index 1ed360a..e1d6ca3 100644
--- a/ui/vnc.c
+++ b/ui/vnc.c
@@ -879,13 +879,10 @@ static int find_and_clear_dirty_height(struct VncState
*vs,
int h;
for (h = 1; h < (height - y); h++) {
- int tmp_x;
if (!test_bit(last_x, vs->dirty[y + h])) {
break;
}
- for (tmp_x = last_x; tmp_x < x; tmp_x++) {
- clear_bit(tmp_x, vs->dirty[y + h]);
- }
+ bitmap_clear(vs->dirty[y + h], last_x, x - last_x);
}
return h;
--
1.8.3.1
- [Qemu-devel] [PULL 0/9] vnc patches, Gerd Hoffmann, 2014/03/10
- [Qemu-devel] [PULL 3/9] vnc: fix use-after-free in vnc_update_client_sync, Gerd Hoffmann, 2014/03/10
- [Qemu-devel] [PULL 2/9] vnc: Fix qemu crashed when vnc client disconnect suddenly, Gerd Hoffmann, 2014/03/10
- [Qemu-devel] [PULL 1/9] vnc: Fix tight_detect_smooth_image() for lossless case, Gerd Hoffmann, 2014/03/10
- [Qemu-devel] [PULL 4/9] ui/vnc: introduce VNC_DIRTY_PIXELS_PER_BIT macro, Gerd Hoffmann, 2014/03/10
- [Qemu-devel] [PULL 6/9] ui/vnc: optimize dirty bitmap tracking, Gerd Hoffmann, 2014/03/10
- [Qemu-devel] [PULL 9/9] ui/vnc: disable adaptive update calculations if not needed, Gerd Hoffmann, 2014/03/10
- [Qemu-devel] [PULL 7/9] ui/vnc: optimize clearing in find_and_clear_dirty_height(),
Gerd Hoffmann <=
- [Qemu-devel] [PULL 8/9] ui/vnc: optimize setting in vnc_dpy_update(), Gerd Hoffmann, 2014/03/10
- [Qemu-devel] [PULL 5/9] ui/vnc: derive cmp_bytes from VNC_DIRTY_PIXELS_PER_BIT, Gerd Hoffmann, 2014/03/10
- Re: [Qemu-devel] [PULL 0/9] vnc patches, Peter Maydell, 2014/03/11