编程必备:c/c++的编程经验技巧!

编程必备:c/c++的编程经验技巧!_第1张图片

 

1. 记住阿姆达尔定律:

 

编程必备:c/c++的编程经验技巧!_第2张图片

 

 

funccost是函数func运行时间百分比,funcspeedup是你优化函数的运行的系数。

所以,如果你优化了函数TriangleIntersect执行40%的运行时间,使它运行快了近两倍,而你的程序会运行快25%。

这意味着不经常使用的代码不需要做较多优化考虑(或者完全不优化)。

这里有句俗语:让经常执行的路径运行更加高效,而运行稀少的路径正确运行。

2. 代码先保证正确,然后再考虑优化

这并不意味着用8周时间写一个全功能的射线追踪算法,然后用8周时间去优化它。

分多步来做性能优化。

先写正确的代码,当你意识到这个函数可能会被经常调用,进行明显的优化。

然后再寻找算法的瓶颈,并解决(通过优化或者改进算法)。通常,改进算法能显著地改进瓶颈——也许是采用一个你还没有预想到的方法。所有频繁调用的函数,都需要优化。

3. 我所了解的那些写出非常高效代码的人说,他们优化代码的时间,是写代码时间的两倍。

4.跳转和分支执行代价高,如果可能,尽量少用。

函数调用需要两次跳转,外加栈内存操作。

优先使用迭代而不是递归。

使用内联函数处理短小的函数来消除函数调用开销。

将循环内的函数调用移动到循环外(例如,将for(i=0;i<100;i++) DoSomething();改为DoSomething() { for(i=0;i<100;i++) { … }})。

if…else if…else if…else if…很长的分支链执行到最后的分支需要很多的跳转。如果可能,将其转换为一个switch声明语句,编译器有时候会将其转换为一个表查询单次跳转。如果switch声明不可行,将最常见的场景放在if分支链的最前面。

5. 仔细思考函数下标的顺序。

你可能感兴趣的:(程序员,c/c++技术,互联网,编程技术,c/c++技术,程序员,IT技术)