免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2615 | 回复: 8
打印 上一主题 下一主题

[函数] 用库函数还是用for循环 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-01-10 20:01 |只看该作者 |倒序浏览
我在做用在电信里的嵌入式设备,要求对时间要求非常高(程序输入到输出延迟不能超过0.1秒)。我遇到一个问题,就是在程序中有很多地方要用到memcpy,而且调用的很频繁(大概一秒钟310次),复制的大小最大是500个字节,所以我不知道用memcpy好还是直接用for循环好。听说memcpy很慢,而且还牵涉到入栈出栈,没有for快,现在来听听大家的意见。

论坛徽章:
0
2 [报告]
发表于 2008-01-10 20:06 |只看该作者
可以自己测试一下啊, 很多性能方面的东西都是慢慢测试出来的.

论坛徽章:
0
3 [报告]
发表于 2008-01-10 20:09 |只看该作者
潜入式设备,应该增加一个GDMA模块代替memcpy

论坛徽章:
0
4 [报告]
发表于 2008-01-10 22:41 |只看该作者
好久不见, 阿飞最近哪里发财去了?

论坛徽章:
0
5 [报告]
发表于 2008-01-10 23:01 |只看该作者
原帖由 xieShell 于 2008-1-10 20:01 发表
我在做用在电信里的嵌入式设备,要求对时间要求非常高(程序输入到输出延迟不能超过0.1秒)。我遇到一个问题,就是在程序中有很多地方要用到memcpy,而且调用的很频繁(大概一秒钟310次),复制的大小最大是500 ...

memcpy更快,C语言中,memcpy, memset之类操作,都是编译后直接映射到机器指令的.

论坛徽章:
0
6 [报告]
发表于 2008-01-10 23:20 |只看该作者
原帖由 isnowran 于 2008-1-10 22:41 发表
好久不见, 阿飞最近哪里发财去了?


还有兄弟惦记,感动。。。
阿飞没有走,还在大家身边,马甲已经快接近1打了

论坛徽章:
0
7 [报告]
发表于 2008-01-10 23:34 |只看该作者
嵌入式设备不清楚,反正在PC中,应该没有比memcpy更快的内存复制操作了。

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
8 [报告]
发表于 2008-01-10 23:47 |只看该作者
编译器可能直接把字符串处理函数inline进去,你可以用memcpy试下,然后编译看看

论坛徽章:
0
9 [报告]
发表于 2008-01-11 03:08 |只看该作者
楼主真的追求效率,建议按以下步骤:
1. 不要想什么General DMA,不过500个字节的长度犯不着,可能还不够系统等DMA中断的开销
2. 留意下cache, 被copy数据最好是可cache的
3. 大多数时候相信memcpy比for好很多
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP