From c25554c4f23248640aaa257f28313f39b57a69c5 Mon Sep 17 00:00:00 2001 From: ali Date: Tue, 25 Jun 2019 21:48:40 +0900 Subject: [PATCH] evas_common: use memcpy to copy pixel buffer Summary: This function has no special processing when copy data, so using memcpy can enhance performance Test Plan: ``` #include #include #include #include typedef unsigned int DATA32; static void oldFunc(DATA32 *src, DATA32 *dst, size_t len) { DATA32 *dst_end = dst + len; while (dst < dst_end) *dst++ = *src++; } static void newFunc(DATA32 *src, DATA32 *dst, size_t len) { memcpy(dst, src, len * sizeof(DATA32)); } int main() { int counter = 1000; srand(time(NULL)); DATA32 src[50000] = {0}; DATA32 dst[50000] = {0}; for (int i = 0; i < 50000; i++) src[i] = rand(); clock_t start, end; double total_Time1 = 0; int i; start = clock(); for (i = 0; i < counter; i++) oldFunc(src, dst, 50000); end = clock(); total_Time1 = ((double)(end - start)) / CLOCKS_PER_SEC; printf("original = %f \n", total_Time1); start = clock(); for (i = 0; i < counter; i++) newFunc(src, dst, 50000); end = clock(); total_Time1 = ((double)(end - start)) / CLOCKS_PER_SEC; printf("modified = %f \n", total_Time1); } ``` Reviewers: raster, ManMower, woohyun, Hermet Reviewed By: Hermet Subscribers: Hermet, vtorri, cedric, #reviewers, #committers Tags: #efl Differential Revision: https://phab.enlightenment.org/D9155 --- src/lib/evas/common/evas_blit_main.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/lib/evas/common/evas_blit_main.c b/src/lib/evas/common/evas_blit_main.c index efecade36e..afeea86f8b 100644 --- a/src/lib/evas/common/evas_blit_main.c +++ b/src/lib/evas/common/evas_blit_main.c @@ -242,9 +242,7 @@ evas_common_copy_pixels_rev_c(src, dst, len); static void evas_common_copy_pixels_c(DATA32 *src, DATA32 *dst, int len) { - DATA32 *dst_end = dst + len; - - while (dst < dst_end) *dst++ = *src++; + memcpy(dst, src, len * sizeof(DATA32)); } #ifdef BUILD_MMX