linux中memecpy兑现

linux中memecpy实现
1 /*
2  * arch/arm/boot/compressed/string.c
3  *
4  * Small subset of simple string routines
5  */
6
7 #include <linux/string.h>
8
9 void *memcpy(void *__dest, __const void *__src, size_t __n)
10 {
11         int i = 0;
12         unsigned char *d = (unsigned char *)__dest, *s = (unsigned char *)__src;
13
14         for (i = __n >> 3; i > 0; i--) {
15                 *d++ = *s++;
16                 *d++ = *s++;
17                 *d++ = *s++;
18                 *d++ = *s++;
19                 *d++ = *s++;
20                 *d++ = *s++;
21                 *d++ = *s++;
22                 *d++ = *s++;
23         }
24
25         if (__n & 1 << 2) {
26                 *d++ = *s++;
27                 *d++ = *s++;
28                 *d++ = *s++;
29                 *d++ = *s++;
30         }
31
32         if (__n & 1 << 1) {
33                 *d++ = *s++;
34                 *d++ = *s++;
35         }
36
37         if (__n & 1)
38                 *d++ = *s++;
39
40         return __dest;
41 }


请问为什么采用这种实现方式,采用这种实现方式会提升效率么?为什么?
memcpy 效率 arm

------解决方案--------------------
减少for循环变量i递增和判断语句的开销。


------解决方案--------------------