memcpy的优化应该从哪些方面入手,请高手们指教。

sky-Z 2008-06-25 10:07:57
想提高memcpy的效率,但是发现gcc编译后已经相当不错,没有改一步改进的想法了。
高人们都来指点下,还可以从哪些方面着手进行优化?
注:我的系统是用的mips。
...全文
239 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
george3038 2008-06-30
  • 打赏
  • 举报
回复
Linux上I386的memcpy的代码如下。

/*copy the 4 bytes,then 2 bytes, the last 1 byte*/
static inline void * __memcpy(void * to, const void * from, size_t n)
{
int d0, d1, d2;
__asm__ __volatile__(
"rep ; movsl\n\t"
"testb $2,%b4\n\t"
"je 1f\n\t"
"movsw\n"
"1:\ttestb $1,%b4\n\t"
"je 2f\n\t"
"movsb\n"
"2:"
: "=&c" (d0), "=&D" (d1), "=&S" (d2)
:"0" (n/4), "q" (n),"1" ((long) to),"2" ((long) from)
: "memory");
return (to);
}


ooily 2008-06-25
  • 打赏
  • 举报
回复
1,把字节操作转成int操作
2,利用机器的块操作指令
richbirdandy 2008-06-25
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 YKDSea 的回复:]
直接用汇编写,效率估计也不会有所提升,我觉得编译出来的代码已经相当好了。
从cache命中这些硬件相关的方面来考虑是否有可以提高的地方?
[/Quote]
是的 根据特定的机器编写吧
xkyx_cn 2008-06-25
  • 打赏
  • 举报
回复
貌似这些都不是你能控制的,现在memcpy是你程序的性能瓶颈吗?

[Quote=引用 5 楼 YKDSea 的回复:]
直接用汇编写,效率估计也不会有所提升,我觉得编译出来的代码已经相当好了。
从cache命中这些硬件相关的方面来考虑是否有可以提高的地方?
[/Quote]
sky-Z 2008-06-25
  • 打赏
  • 举报
回复
直接用汇编写,效率估计也不会有所提升,我觉得编译出来的代码已经相当好了。
从cache命中这些硬件相关的方面来考虑是否有可以提高的地方?
wolflion 2008-06-25
  • 打赏
  • 举报
回复
不会.
xkyx_cn 2008-06-25
  • 打赏
  • 举报
回复
时间?空间?

直接找mips的指令自己写吧
  • 打赏
  • 举报
回复
csdn终于不限制回复长度了……
  • 打赏
  • 举报
回复
没研究过,up
sky-Z 2008-06-25
  • 打赏
  • 举报
回复
块操作是什么样的?能不能说下,谢谢

69,381

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧