Flynn's Studio

性能优化(一):概述

Word count: 462Reading time: 1 min
2024/02/02

性能优化其实是个很泛泛而谈的概念,偶尔翻到了刚入职的时候,在进行性能优化项目前的一份思维导图的草稿,姑且把它简单整理成博文进行归档。现如今越是接触,越是感觉这个问题的复杂程度,从程序的外在表现,到具体的底层优化,都大有文章可做,留待之后再详细地汇总一下思路。

性能优化的目的

在计算机硬件/工程师价格和收益之间找一个平衡点。

性能优化流程

image.png

程序性能优化方法

性能问题分析完成后,需要进行性能优化。根据性能分析结果的不同,优化方法也各有不同。

针对IO瓶颈的性能优化

每次IO操作大概在10ms量级,100次就需要1秒左右,因此尽量避免不必要的IO操作。具体做法如下:

  1. 预先顺序读文件避免随机访问。
  2. 合并多个小文件为单个大文件。
  3. 优化动态库文件的加载。
  4. 交错IO时间和CPU时间。

针对计算密集的性能优化

计算密集的性能问题主要有内存分配性能、字符串操作、共享变量的互斥锁保护等,具体优化方法如下:

  1. 去除冗余代码。
  2. 字符串操作优化。
  3. 减少内存分配、释放操作,例如使用内存池。
  4. 减少不必要的互斥锁操作。
  5. 根据性能需求选择数据结构。
  6. 延迟工作,按需执行。
  7. 减少跨进程的调用。
  8. 使用高性能的函数库。

C++特性相关的性能优化

C++语言特性相关的性能优化包括模板展开、内联函数、引用、编译优化选项等。

CATALOG
  1. 1. 性能优化的目的
  2. 2. 性能优化流程
  3. 3. 程序性能优化方法
    1. 3.1. 针对IO瓶颈的性能优化
    2. 3.2. 针对计算密集的性能优化
    3. 3.3. C++特性相关的性能优化