C / C ++优化

时间:2011-07-28 18:55:29

标签: c++ c compiler-construction

在编程方面,我已经以非常OO的方式成长,不幸的是,高度优化的代码并不是我的强项。我现在相当擅长C,并且通常能以合理智能的方式做事,但我仍然无法考虑处理情况的最佳方式。

一个例子是:

int strlen(const char* str)
{
    char* s;
    for (s=str; *s; ++s);
    return s-str;
}

我自己从未想过这一点。

那么,有什么好的资源可以让您接触到这样的优化代码?我想找一个我可以阅读它背后的理论的地方,编译器在后台做了什么让它变得有价值等等。

如果注意到一些资源用于研究优化数据结构以及应用于现实场景,那也很好,但这可能太多了。

2 个答案:

答案 0 :(得分:5)

不要尝试使用微优化。对于现代编译器,最好让编译器处理这些优化。最好花时间选择正确的算法,并为您的应用程序设计模式。找一个像样的分析器,并学习如何使用它。不要浪费时间来弄清楚如何优化strlen

关于如何进行这些微优化的参考我之前已经提到过,但很乐意再次这样做,Agner的指南非常出色,而且免费:)退房:http://www.agner.org/optimize/应该有很多指南

BTW:我遇到的strlen最优化的版本是由Agner制作的:http://www.agner.org/optimize/asmlib-instructions.pdf并且是用汇编语言编写的。 ; - )

答案 1 :(得分:1)

What every programmer should know about memory, Part 1是一个有趣的资源。它涉及很多愚蠢的低级细节。

主要优化点之一是代码大小。如果您利用智能OO设计,小型设计,您就是在优化。我个人认为忽略小细节并专注于高水平将使你进一步提高速度和你的职业生涯。此外,gprof比以往更好。