c++ - C/C++ 优化

标签 c++ c compiler-construction

<分区>

在编程方面,我的成长环境非常面向对象,不幸的是,这意味着高度优化的代码不是我的强项。我现在相当擅长 C 并且通常可以以相当智能的方式做事,但我仍然无法想出最优化的方式来处理情况。

一个例子是:

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

我自己永远不会想到这一点。

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

如果注意到一些资源用于研究优化的数据结构并将其应用于现实生活场景,那也很好,但这可能要求太高了。

最佳答案

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

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

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

关于c++ - C/C++ 优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6864190/

相关文章:

c++ - 用于排序链表而不困惑的继承

c - 如何正确比较 C 中的字符串?

java - 引导 java 和 python 编译器

c++ - 如何修复此警告 : conversion to 'unsigned char' from 'int' may alter its value

c++ - 如何在 C/C++ 中动态选择要转换的类型?

c++ - 数组作为右值在单行上与 C++2003 一起使用?

c++ - 可以在 C++ 中将类声明为静态的吗?

非递归比较两个二叉树

c - 嵌入式系统的对称加密算法

c - <stdint.h> 类型如何保证位宽?