性能优化:影响程序启动性能的因素

程序启动性能定义为程序启动所需要的的时间。从用户的角度看,即指从用户启动程序到可以使用该程序的这一段时间。
程序启动性能是应用程序易用性的一个重要指标,是用户对应用程序的第一印象,直接影响用户对该程序的评价。

程序在第一次启动时,系统要载入大量的资源,引起大量的IO操作;而在第二次启动时,由于系统的缓冲机制起作用,可以减少IO操作。从而导致第二次启动比第一次启动要快很多。

第一次启动,我们称为“冷启动”,冷启动存在大量的IO消耗,所以启动时间取决于IO操作的消耗时间;
第二次启动,我们称为“热启动”,由于系统的缓冲机制,热启动的时间大部分取决于CPU时间。

通过分析,我们列出影响到程序启动时间的因素:

1.源代码因素

源代码因素主要指必须通过修改代码才可以解决或者缓解的问题。

  • 全局变量初始化。这一部分在main函数之前完成,程序的全局变量或者其构造函数过多会占用大量的CPU时间。
  • 代码自身消耗CPU。代码低效,或者IO问题,可以通过定位之后加以优化。
  • 无用代码呆滞可执行文件过大,增加加载负荷。

2.动态链接库因素

大部分的启动问题都和动态链接库有关,优化动态链接库尤为重要。

  • 动态链接库数量及大小。

系统加载一个动态链接库需要一个固定的时间消耗,所以库的数量越大,占用的这部分时间就越多;
系统的IO以页为单位,库的大小越大,从库总载入有效代码的准确性就越低,导致IO操作的几率就越高,占用的时间也越多;
启动过程的动态链接库个数越少越好,大小越小越好。

  • 启动时加载操作系统的动态链接库。操作系统的动态库过大过全,使用过多的这类库会导致性能问题。
  • 代码调用引发缺页导致IO。动态库函数按照物理顺序排列,而分散的调用将导致缺页从而引起IO操作。
  • 初始化动态链接库过程中影响性能。初始化动态链接库所作的工作过多将导致IO/CPU消耗。
  • 动态链接库符号的可见性。动态链接库导出过多的课件符号,加载器在匹配时将消耗过多的IO/CPU。

3.配置文件/资源文件因素

启动部分的代码频繁访问配置文件/资源文件从而导致IO过多,或者不同时间分次访问这些文件从而导致IO操作分散而不能有效利用硬盘的连续访问,导致性能下降。

4.其他因素

  • 硬盘的文件碎片问题。碎片过多影响到IO的寻到时间,导致IO操作耗时增加。
  • 操作系统的预读(Prefetch)功能。通过预先读取数据并保持在内存中,从而避免缺页中断,提供性能。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值