[PATCH 1/3] use local variable to compute gradual score

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Due to aliasing using pointers lead to some sub-optimization.
Use local variable and then write them to output to improve performances.

Signed-off-by: Frediano Ziglio <fziglio@xxxxxxxxxx>
---
 server/red_bitmap_utils.h | 13 ++++++++-----
 1 file changed, 8 insertions(+), 5 deletions(-)

diff --git a/server/red_bitmap_utils.h b/server/red_bitmap_utils.h
index 1c13ced..7e57a7b 100644
--- a/server/red_bitmap_utils.h
+++ b/server/red_bitmap_utils.h
@@ -121,6 +121,8 @@ static void FNAME(compute_lines_gradual_score)(PIXEL *lines, int width, int num_
     PIXEL *cur_pix = lines + width / 2;
     PIXEL *bottom_pix;
     PIXEL *last_line = lines + (num_lines - 1) * width;
+    int num_samples;
+    double samples_sum_score;
 
     if ((width <= 1) || (num_lines <= 1)) {
         *o_num_samples = 1;
@@ -128,20 +130,21 @@ static void FNAME(compute_lines_gradual_score)(PIXEL *lines, int width, int num_
         return;
     }
 
-    *o_samples_sum_score = 0;
-    *o_num_samples = 0;
+    samples_sum_score = 0;
+    num_samples = 0;
 
     while (cur_pix < last_line) {
         if ((cur_pix + 1 - lines) % width == 0) { // last pixel in the row
             cur_pix--; // jump is bigger than 1 so we will not enter endless loop
         }
         bottom_pix = cur_pix + width;
-        (*o_samples_sum_score) += FNAME(pixels_square_score)(cur_pix, bottom_pix);
-        (*o_num_samples)++;
+        samples_sum_score += FNAME(pixels_square_score)(cur_pix, bottom_pix);
+        num_samples++;
         cur_pix += jump;
     }
 
-    (*o_num_samples) *= 3;
+    (*o_samples_sum_score) = samples_sum_score;
+    (*o_num_samples) = num_samples * 3;
 }
 
 #undef PIXEL
-- 
2.4.3

_______________________________________________
Spice-devel mailing list
Spice-devel@xxxxxxxxxxxxxxxxxxxxx
http://lists.freedesktop.org/mailman/listinfo/spice-devel




[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]     [Monitors]