Chinaunix首页 | 论坛 | 博客
  • 博客访问: 455048
  • 博文数量: 724
  • 博客积分: 40000
  • 博客等级: 大将
  • 技术积分: 5010
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-13 14:47
文章分类

全部博文(724)

文章存档

2011年(1)

2008年(723)

我的朋友

分类:

2008-10-13 17:23:12



掌中技术论坛,各位兄弟姐妹帮忙顶一下, 多多支持小弟。大家顺便帮我提点意见

,发布一些技术文章,也可以免费下载相关资料,大家互相交流、学习。有需要行

情连接的,也可以跟我联系,谢谢. ( zhangzhongbao 发表于 2008-7-7 11:11:00)

const char string2[LEN] =“This is a example!”;
char * cp;
cp = string2 

cp = string2 这行吗?
试了没试呀 ( flystar707 发表于 2006-11-22 9:57:00)

进一步优化“第4招”:
1.用指针操作代替数组操作,这样可以优化地址计算。
2.逐字节复制是很慢,可以考虑按WORD、DWORD甚至QWORD为单位来复制,这样可以将速度提高好几倍。
经过这两步优化后的代码是这样的:
LPDWORD pS, pD, pDMax;
pS = (LPDWORD)string1;
pD = (LPDWORD)string2;
pDMax = (LPDWORD)((LPBYTE)string2 + 1024);
while(pD < pDMax) *pD++ = *pS++;
3.由于循环是靠跳转实现的,而现代超流水线CPU下跳转指令堵塞流水线,影响效率,所以可以考虑循环展开。
经过上面三次优化后,你会发现C代码与原先汇编代码的效率差不多(甚至更快),这就是现代编译器编译优化的成就。
4.真正将把速度提高一个等级的办法是使用“rep movs”这样的串指令。
5.如果有DMA芯片的话,可以用DMA芯片来传送数据,这样不仅解放了CPU,而且DMA芯片能利用总线的特性(如突发传输)迅速传送大量数据。. ( zyl910 发表于 2006-11-12 22:08:00)

现代编译器对于小函数会自动内联编译,跟用宏的代码一样。
程序本来就应该分成底层代码和高层代码。汇编优化应该只用于底层代码,高层代码的组织才是软件工程的范围。 ( zyl910 发表于 2006-11-12 21:48:00)

“标准的内存拷贝函数”会与到0停止吗?应该是字符串拷贝函数遇到0会中止 ( conry 发表于 2006-11-11 17:11:00)

.......................................................

--------------------next---------------------

阅读(233) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~