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

Resources