程序性能认知

性能指标

  • 算法性能基本指标如下:
  1. 时间复杂度
  2. 空间复杂度
  • 广义的算法定义是解决问题的方法,而程序就是算法的具体化,因此算法的性能指标也就是程序的性能指标。

程序性能指标

  1. 空间复杂度,体现于程序的资源占用。
  2. 时间复杂度,体现于程序的运行时长。
  • Linux系统理论:对于系统整体而言,需要充分利用系统资源,未使用也是一种浪费。
  • 大部分情况下,系统资源是富余的,使用率几乎不会全部达到100%,只有少部分情况下,系统资源需要计划分配,例如:嵌入式平台和服务器。
  • 因此大部分情况下程序性能只体现于程序运行时长。

影响程序性能的的因素

  • 从下至上,从底层到上层因素如下。

硬件性能

  • 程序是由指令和数据组成,程序指令大部分是cpu处理,称为cpu密集型程序,大部分是io处理的,称为io密集型程序,体现了两种不同操作特征,程序运行时长也是两种处理的总时长。
  1. cpu运算
  • cpu频率决定了cpu运算时长的下限,即使资源充足也只能达到该性能。
  1. io操作(数据读取,写入)
  • io硬件速度决定了程序时长的下限,和代码无关,代码也无法减小该时长。
  • io操作不需要cpu参与的,cpu只是发送请求,其它硬件设备会处理。

理解反例

  • 之前做人脸识别相机时,担心芯片性能不够,实现不了客户需求,主要是性能方面的要求较高,例如:需要同时处理和抓拍64人不漏;和老员工说了下我的担心,老员工看了下cpu使用,还剩60%,内存还剩接近100M,于是反驳我说还剩这么多性能一定够。
  • 本项目人脸识别芯片是外置的算法板,主控通过串口接收算法板的识别结果,对于主控而言,主要是io处理,和主控系统资源剩余以及程序关系不大,性能的根源在于算法板返回数据的时长。

系统资源

  • cpu,内存,硬盘等系统资源是否充足直接影响程序性能,系统资源使用很多需要通过队列处理,例如:CPU,IO读取,资源不足时就像道路阻塞了,导致运行时长增加。
  • 注意:不要提前对系统资源使用做优化,例如:内存充足的时候,去优化内存使用,是没有多少效果的,某项系统资源充足的情况下,再增加该系统资源,性能提升较少,甚至不会提升。

代码实现

  • 程序代码的实现方式不好,未充分使用资源,当然也会导致程序运行时长增加。

代码优化

  1. 资源不足
  • 资源互换,当cpu资源充足内存不足,就时间换空间;cpu资源不足内存充足就空间换时间;硬盘和内存同理。
  • CPU运算时长依赖于算法,改善算法能够减少cpu占用和运行时长。
  1. io速度较慢
  • 这种情况下,代码实现只能通过多线程进行优化,等待时让cpu去干其它准备操作,在硬件处理完后尽快提交给cpu运算。

总结

  • 综上所述,程序的性能不是固定的,程序的理想性能是在固定cpu资源以及充足的其它资源情况下的运行时长。
  • 性能比对也需要在同一环境下比对,同样的资源。
  • 有时候会出现内存和cpu很充足,但是性能不一定很好。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值