背景
1、做性能优化时,其实也是存在二八定律的,基本上80% 的性能损耗是由20%的代码引起的,而且这20%的代码被基本上被调用的频率非常高。因此一些比较简单的优化就能显著提高性能;
2、在写好代码之后再考虑性能优化的事,否则会出现代码难以读懂,抽象依赖细节等各种问题。另外过早的优化可能没有想象的那么有用,原因参考第一条;
3、在资源不是很紧张的情况下,程序员的生产力的提高比性能的优化更重要。
4、很多优化都是在做时间和空间的权衡,考虑哪个更重要,然后决定优化思路;
5、良好的代码风格,代码结构能有效提高代码的性能;
6、优化是有限度的,代码的可读性与可维护性非常重要。
工具
liunx下一般使用gprof,windows下一般使用vs自带的vsperfmon.exe。
优化方法
1、在空间允许的前提下,将经常访问的资源,缓存在内存中;
2、优化判断条件,减少循环次数;
3、优化锁的使用,能用原子操作的就不用锁。能用应用层同步手段的,就不要使用内核对象同步;
4、优化内存使用,内存块频繁的申请与释放耗时比较大,必要情况下可以自己实现内存管理;
5、减少非必要的线程创建,节省系统资源与切换造成的性能损耗,考虑线程池;