gcc有时用__builtin_mempcpy,有时用glibc的库函数,根据数据长度和对齐等参数。
DPDK自己的那个帖子说它比glibc的memcpy大约快22%,这个具体的意思,不知道是和gcc的memcpy实现比,还是和glibc的memcpy比。
这里有提到gcc选择memcpy用哪种实现的代码位置,emit_block_move_hints():
https://stackoverflow.com/questions/11747891/when-builtin-memcpy-is-replaced-with-libcs-memcpy
https://stackoverflow.com/questions/1134103/clearing-a-small-integer-array-memset-vs-for-loop/1134147#1134147
【 在 leadu 的大作中提到: 】
: 发完我察觉到了,看了一眼glibc的,发现和libgcc的区别不大就没有更正
:
https://codebrowser.dev/glibc/glibc/string/memcpy.c.html: glibc的这个就是在libgcc加上了老鱼以为的对齐,我觉得搞不好是负优化,在现代cpu深流水情况下不做benchmark,这种新手的优化方式是高度可疑的
: ...................
--
FROM 123.118.191.*