Chinaunix首页 | 论坛 | 博客
  • 博客访问: 33335
  • 博文数量: 34
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 30
  • 用 户 组: 普通用户
  • 注册时间: 2014-05-15 22:44
文章分类
文章存档

2014年(34)

我的朋友

分类: C/C++

2014-05-15 23:40:58

本文的copyleft归gfree.wind@gmail.com所有,使用GPL发布,可以自由拷贝,转载。但转载请保持文档的完整性,注明原作者及原链接,严禁用于任何商业用途。
作者:gfree.wind@gmail.com
博客:linuxfocus.blog.chinaunix.net

中秋假期跑去鼓浪屿玩了5天,彻底放松了一下。我去度假一般都是去放松,不会到处的跑景点,所以5天基本上有4天是泡在这个不足2平方公里的小岛上,尽情的浪费着时间。看了两本书,一本是心理学方面的《正常的傻瓜》,另外一本是科普《上帝掷骰子吗》,适当的放松,感觉确实很舒服。

好了,现在重新回归我们的主题。

在前面的两篇文章中,在学习strcpy的过程中,发现其代码效率并没有想象中的高,于是就这个问题进行了研究。在节前跟一些朋友探讨了一下,还有在stackoverflow上,跟国外的朋友也讨论了。基本上觉得可以终结这个探讨了,下面总结一下。

1. glibc这个strcpy的效率在Intel的某些CPU上确实效率不高——我测试了(Intel(R) Pentium(R) 4和Pentium(R) Dual-Core CPU E5300。有兴趣的朋友可以在其它CPU上测试一下,最好不是Intel的;
2. 一般glibc会根据不同的CPU实现不同版本的库函数,如strcpy。当然,我之前也知道这一点,不过我并没有去特意的看特定CPU的strcpy的代码。而是看这个generic的代码——当时我认为generic的strcpy仍然会高效。那么实际上对于intel的CPU来说,有特定的strcpy实现代码。所以在intel的CPU上,glibc的strcpy肯定会高效。

最好的答案就是glibc中的generic的实现代码,并不一定会高效。如果真的要学习且实现代码,看来还是要学习该CPU上的特定的实现代码。
阅读(211) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~