本文的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上的特定的实现代码。
阅读(6277) | 评论(4) | 转发(3) |