软件优化(速度问题)

 

关键词:软件优化,软件加速,软件响应时间,提高软件速度

环境:linux

软件优化

 

 

软件启动速度

前台后台

当软件执行文件越来越大,如果启动时一次性加载整个执行文件,那么软件的启动速度会很慢。我们可以把软件分成前台和后台部分(服务或者deamon程序),在软件启动前,后台部分已经常驻内存,这样软件启动时,加载的代码和数据可以明显减少,软件启动的速度就提高了。

So动态库

软件一般都要依赖很多第三方库文件,当软件启动时,加载器需要在依赖路径里面查找这些动态库,并加载这些动态库,并解析动态库里面函数符号。当软件依赖的动态库很多的时候,这是一个非常耗时的过程。我们可以通过把有些动态库转成静态库,或者把2个相关动态库合并成一个动态库。

Release版本

软件debug版本里面有一些信息打印,和很多调试相关的信息,这些都会影响软件启动速度。软件release版本编译器会有很多优化,可以提高软件启动速度。

软件运行速度

算法和计算量

         算法重要性这里不再说明。这里举例硬件性能提高10倍后,软件计算能力能提高多少。

         如果算法复杂度是O(n), 那么 n2 / n1 = 10, n2 =10 * n1, 算法快了10倍。

         如果算法复杂度是O(n^2), 那么 n2^2 = 10 * n1^2,n2 = 10^(1/2) n1, 算法快了3.16倍。

如果算法复杂度是O(2^n),那么 n2 = n1 + 3, 算法比原来多算3个数。 当算法复杂度是指数级,硬件性能提高10倍,对软件性能影响不大(只多算3个)。

硬件加速

软件大多有GUI界面,如果可以发挥显卡GPU的作用,可以很大提高软件运行速度。这是硬件加速的很好例子。CPU现在也增加了硬件加速的设计,需要我们进一步发挥硬件加速能力。

缓存

缓存可以显著提高软件运行速度。例如浏览器的网页缓存,打开硬盘文件的文件缓存,显卡的图形缓存。

预处理

例如Chrome预处理功能(加快Chrome域名解析),与其在打开页面时等待DNS解析域名,不如让Chrome在用户浏览网页的过程中,主动进行域名解析。比起传统的浏览器,这项功能使Chrome首次访问一个域名时,平均节省250ms的加载时间。

  Chrome 的预渲染相对于只下载一个资源的“prefetch”, “prerender”会让 Chrome 在一个不可见的页签中渲染一个页面,包含了它所有的子资源。当用户要浏览它时,这个页签被切到前台,做到了即时的体验。

大内存

现在64位系统支持几百G的内存,内存访问速度远大于硬盘,所以软件可以多使用内存加快软件处理速度。例如Red Had Enterprise Linux (RHEL)6.4的64位版本。

多线程

把软件IO部分作为一个线程,计算部分作为一个线程,GUI部分作为一个线程。提炼出可并行的处理,并改为线程。

超多小文件

例如磁盘碎片会使系统的总体性能变慢。当文件分成许多碎片时,计算机在打开文件时必须搜索硬盘(以将其重新拼凑在一起)。这会显著减慢软件运行速度。

当我们在windows上拷贝文件夹时,如果文件夹里面有超多小文件(例如大项目的源代码),拷贝速度是非常非常慢:(

 

软件切换速度

UI设计

先显示部分,然后逐步显示。

 

WaitToKillAppTimeout

当程序失去响应的时候,可以快速关闭程序。软件实现过程中,某些IO操作需要设置等待时限,通过定时器结束等待时间过长的IO操作。

 

 

参考资料:

 

Chrome高性能的秘密:预连接、预加载与预渲染

《软件优化技术》

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值