【编程语言】C++应用程序性能优化 笔记(一)

第一章 应用程序性能优化概述

性能优化方法概述

1、针对I/O瓶颈的优化

每次I/O操作大约在10毫秒的量级,100次就需要1秒左右,所以要尽量避免不必要的I/O,具体做法有:

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

2、针对计算密集的优化

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

  • 去掉冗余代码;
  • 字符串优化操作;
  • 减少内存分配、释放操作,例如内存池;
  • 减少不必要的互斥锁访问;
  • 根据性能需求选择数据结构;
  • 延迟工作,按需执行,例如文档中的图片在翻到那一页时再加载进内存;
  • 减少跨进程的调用;
  • 用高性能的函数库;

3、没有特点瓶颈,需要在设计层面进行优化。(设计模式)

4、感觉上的性能优化

  • 有的设计虽然没有真正提升性能,但是让用户感觉快了,例如:
  • 流式播放设计,用户不需要等到视频文件下载完再播放,而是可以一边下载一边播放;
  • 线程化设计,有的操作需要较长时间去完成,可以把这些操作设计设计成非阻塞式的,用户可以再等待完成的时间去做其他事情。

应用程序的两大性能指标:相应时间内存使用



第二章 C++对象模型


一个程序占用的内存区一般分为如下五种:
  • 全局/静态数据区。
  • 常量数据区。
  • 代码区。
  • 栈。
  • 堆。
栈中存储自动变量或者局部变量,以及传递的函数参数等,而堆是用户程序控制的存储区,存储动态产生的数据。

内存对齐:即堆上分配内存时按16个字节对齐,所以申请5个整数共20个字节,但占据32个字节的内存。再申请一个字节时,系统会从32个字节后开始分配。
内存对齐虽然会浪费一些内存,但由于CPU在对齐方式下运行比较快,所以一般对程序性能还是有好处的。C/C++程序中的struct\union和class的成员变量按多少字节对齐或者关闭对齐。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值