C/C++优化

在编程时,我已经以非常OO的方式成长,不幸的是,高度优化的代码并不是我的强项.我现在相当擅长C,通常可以用相当聪明的方式做事,但我仍然无法考虑处理情况的最优化方法.

一个例子是:

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

我自己也不会想到这一点.

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

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

解决方法

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

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

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

相关文章

/** C+⬑ * 默认成员函数 原来C++类中,有6个默认成员函数: 构造函数 析构函数 拷贝...
#pragma once // 1. 设计一个不能被拷贝的类/* 解析:拷贝只会放生在两个场景中:拷贝构造函数以及赋值运...
C类型转换 C语言:显式和隐式类型转换 隐式类型转化:编译器在编译阶段自动进行,能转就转,不能转就编译...
//异常的概念/*抛出异常后必须要捕获,否则终止程序(到最外层后会交给main管理,main的行为就是终止) try...
#pragma once /*Smart pointer 智能指针;灵巧指针 智能指针三大件//1.RAII//2.像指针一样使用//3.拷贝问...
目录<future>future模板类成员函数:promise类promise的使用例程:packaged_task模板类例程...