C程序优化
想要优化C程序,需要先理解编译器是如何编译C程序的,在前面文章中,曾介绍过编译器的一些基本命令,我们以一个Demo来回顾一下,先看这样一段代码:
int main() {
int x;
x = 5;
return 0;
}
我们可以用GCC执行下面命令
gcc -c machine_code.cpp //生成.o文件
xxd -b machine_code.o //生成二进制机器码文件
gcc -S machine_code.cpp //生成汇编代码
在上面命令中,我们用-c
生成.o
文件,用xxd
命令可以得到.o
文件的二进制表示,也就是机器码。由于机器码不具阅读性,我们可以使用-S
生成汇编代码
测试性能
不少IDE都提供Profile工具,比如Visual Studio和[XCode](https://help.apple.com/instruments/mac/current/。我们也可以使用API测试代码执行时间:
#include <ctime>
std::clock_t start;
double duration;
start = std::clock();
function_name(var1, var2);
duration = ( std::clock() - start ) / (double) CLOCKS_PER_SEC;
std::cout << "duration milliseconds initialize beliefs " << 1000 * duration << '\n';
优化技巧
- 减少冗余代码
// example of redundant code
int x = 6;
if (x > 5) {
return true;
}
else {
return false;
}
上述代码可直接写为:
return x>5;
- 使用定长vector