在线时间23 小时
UID2098806
注册时间2014-12-7
NXP金币0
TA的每日心情 | 开心 2019-10-28 09:18 |
---|
签到天数: 1 天 [LV.1]初来乍到
中级会员
- 积分
- 357
- 最后登录
- 2022-9-29
|
发表于 2021-3-11 14:47:11
|
显示全部楼层
给你个源码,用这个应该快:
- #define UNALIGNED(X) (((long)X & (sizeof(long) - 1)))
- #define BIGBLOCKSIZE (sizeof(long) << 2)
- #define LITTLEBLOCKSIZE (sizeof(long))
- #define TOO_SMALL(LEN) ((LEN) < BIGBLOCKSIZE)
- void *memcpy(void *dst0, const void *src0, size_t len0)
- {
- char *dst = dst0;
- const char *src = src0;
- long *aligned_dst;
- const long *aligned_src;
- if (!TOO_SMALL(len0) && !(UNALIGNED(src) || UNALIGNED(dst)))
- {
- aligned_dst = (long *)dst;
- aligned_src = (long *)src;
- while (len0 >= BIGBLOCKSIZE)
- {
- *aligned_dst++ = *aligned_src++;
- *aligned_dst++ = *aligned_src++;
- *aligned_dst++ = *aligned_src++;
- *aligned_dst++ = *aligned_src++;
- len0 -= BIGBLOCKSIZE;
- }
- while (len0 >= LITTLEBLOCKSIZE)
- {
- *aligned_dst++ = *aligned_src++;
- len0 -= LITTLEBLOCKSIZE;
- }
- dst = (char *)aligned_dst;
- src = (char *)aligned_src;
- }
- while (len0--)
- *dst++ = *src++;
- return dst0;
- }
复制代码 |
|