提高应用程序运行速度的方法、装置及终端.pdf

上传人:a2 文档编号:4061024 上传时间:2018-08-13 格式:PDF 页数:17 大小:507.27KB
返回 下载 相关 举报
摘要
申请专利号:

CN201210106766.9

申请日:

2012.04.12

公开号:

CN102662713A

公开日:

2012.09.12

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||实质审查的生效IPC(主分类):G06F 9/445申请日:20120412|||公开

IPC分类号:

G06F9/445

主分类号:

G06F9/445

申请人:

腾讯科技(深圳)有限公司

发明人:

林道正; 聂科峰; 方斌; 李世平

地址:

518000 广东省深圳市福田区赛格科技园2栋东403室

优先权:

专利代理机构:

北京三高永信知识产权代理有限责任公司 11138

代理人:

罗振安

PDF下载: PDF下载
内容摘要

本发明公开了一种提高应用程序运行速度的方法、装置及终端,属于计算机领域。方法包括:采集应用程序运行时缺页中断对应的本地数据信息,本地数据信息包括本地数据所在文件的文件名、本地数据在文件内的偏移以及本地数据的大小;根据采集到的本地数据信息获取对应的本地数据,并在获取到提高应用程序运行速度的指令后,加载获取到的本地数据。本发明通过加载根据应用程序运行时缺页中断对应的本地数据信息获取到的本地数据,以减少应用程序访问IO操作的耗时,提高应用程序运行速度;由于缺页中断对应的本地数据信息不局限于访问场景,可增强速度提高的效果;针对不同应用程序具有不同的速度优化程度,提高速度优化的针对性,扩大速度优化的空间。

权利要求书

1.一种提高应用程序运行速度的方法,其特征在于,所述方法包括:
采集应用程序运行时缺页中断对应的本地数据信息,所述本地数据信息包括本地数据所
在文件的文件名、所述本地数据在所述文件内的偏移以及所述本地数据的大小;
根据采集到的所述本地数据信息获取对应的本地数据,并在获取到提高所述应用程序运
行速度的指令后,加载获取到的所述本地数据。
2.根据权利要求1所述的方法,其特征在于,所述采集应用程序运行时缺页中断对应的
本地数据信息,具体包括:
通过事件跟踪机制采集应用程序运行时的硬缺页事件和软缺页事件,从记录了所述硬缺
页事件和软缺页事件的事件跟踪日志中获取所述应用程序运行时缺页中断对应的本地数据信
息;
或者,通过钩子HOOK技术对系统底层调用进行监控,并获取用于记录缺页中断对应的本
地数据信息的监控代码,根据所述监控代码获取所述应用程序运行时缺页中断对应的本地数
据信息。
3.根据权利要求1所述的方法,其特征在于,所述根据采集到的所述本地数据信息获取
对应的本地数据,具体包括:
解析采集到的所述本地数据信息,得到本地数据所在文件的文件名、所述本地数据在所
述文件内的偏移以及所述本地数据的大小;
按照所述本地数据所在文件的文件名将采集到的本地数据信息进行聚合;
按照所述本地数据在所述文件内的偏移将聚合后的本地数据信息进行合并,并在合并后
的本地数据信息中选取符合预取条件的本地数据信息作为预取数据信息;
根据选取的所述预取数据信息获取对应的本地数据。
4.根据权利要求3所述的方法,其特征在于,所述在合并后的本地数据信息中选取符合
预取条件的本地数据信息作为预取数据信息之后,还包括:
根据所述应用程序的信息存储选取的所述预取数据信息;
所述加载获取到的本地数据,具体包括:
根据所述应用程序的信息获取所述预取数据信息,并根据所述预取数据信息获取对应的
本地数据,将获取到的本地数据加载至内存。
5.根据权利要求1至4中任一权利要求所述的方法,其特征在于,所述加载获取到的本
地数据之前,还包括:
输出应用程序列表,提示用户在所述应用程序列表中选择提高运行速度的应用程序;
根据用户在所述应用程序列表中选择的应用程序接收提高所述应用程序运行速度的指令
以及所述应用程序的信息。
6.一种提高应用程序运行速度的装置,其特征在于,所述装置包括:
采集模块,用于采集应用程序运行时缺页中断对应的本地数据信息,所述本地数据信息
包括本地数据所在文件的文件名、所述本地数据在所述文件内的偏移以及所述本地数据的大
小;
获取模块,用于根据所述采集模块采集到的所述本地数据信息获取对应的本地数据;
加载模块,用于获取到提高所述应用程序运行速度的指令后,加载所述获取模块获取到
的所述本地数据。
7.根据权利要求6所述的装置,其特征在于,所述采集模块,具体用于通过事件跟踪机
制采集应用程序运行时的硬缺页事件和软缺页事件,从记录了所述硬缺页事件和软缺页事件
的事件跟踪日志中获取所述应用程序运行时缺页中断对应的本地数据信息;
或者,所述采集模块,具体用于通过钩子HOOK技术对系统底层调用进行监控,并获取用
于记录缺页中断对应的本地数据信息的监控代码,根据所述监控代码获取所述应用程序运行
时缺页中断对应的本地数据信息。
8.根据权利要求7所述的装置,其特征在于,所述获取模块,具体包括:
解析单元,用于解析所述采集模块采集到的本地数据信息,得到本地数据所在文件的文
件名、所述本地数据在所述文件内的偏移以及所述本地数据的大小;
聚合单元,用于按照所述解析单元解析出的本地数据所在文件的文件名将采集到的本地
数据信息进行聚合;
合并单元,用于按照所述解析单元解析出的本地数据在所述文件内的偏移将所述聚合单
元聚合后的本地数据信息进行合并;
选取单元,用于在所述合并子单元合并后的本地数据信息中选取符合预取条件的本地数
据信息作为预取数据信息;
获取单元,用于根据所述选取单元选取的所述预取数据信息获取对应的本地数据。
9.根据权利要求8所述的装置,其特征在于,所述装置还包括:
存储模块,用于根据所述应用程序的信息存储所述选取单元选取的所述预取数据信息;
所述加载模块,具体包括:
第一获取单元,用于根据所述应用程序的信息获取所述存储模块存储的预取数据信息;
第二获取单元,用于根据所述第一获取单元获取到的预取数据信息获取对应的本地数据;
加载单元,用于将所述第二获取单元获取到的本地数据加载至内存。
10.根据权利要求6至9中任一权利要求所述的装置,其特征在于,所述装置还包括:
输出模块,用于输出应用程序列表,提示用户在所述应用程序列表中选择提高运行速度
的应用程序;
接收模块,用于根据用户在所述输出模块输出的应用程序列表中选择的应用程序接收提
高所述应用程序运行速度的指令以及所述应用程序的信息。
11.一种终端,其特征在于,所述终端包括提高应用程序运行速度的装置;
其中,所述提高应用程序运行速度的装置如所述权利要求6至10中任一权利要求所述的
装置。

说明书

提高应用程序运行速度的方法、装置及终端

技术领域

本发明涉及计算机领域,特别涉及一种提高应用程序运行速度的方法、装置及终端。

背景技术

随着计算机技术的高速发展,应用程序的种类越来越多。为了满足用户对各类应用程序
的运行需求,提高应用程序的运行速度,成为了众多研究者十分关注的课题。

现有技术在提高应用程序的运行速度时,采取了预读和预加载(Prefetch)两种机制。
其中,预读机制是指在读取本地数据文件时,除了读取当前所需数据外,还将当前所需数据
后的内容也一并读入内存中,以在用到该部分内容时,可从内存中直接读取,从而减少应用
程序在IO(Input/Output,输入输出)上的耗时;预加载机制是指在开机加载操作系统时,
读取常用的应用程序的主要内容,以备在该类应用程序启动时耗费大量时间来读取数据。

在实现本发明的过程中,发明人发现现有技术至少存在以下问题:

预读机制仅适用于在加载应用程序时顺序访问本地数据的场景,针对应用程序运行时对
本地数据进行随机访问的场景,该预读机制的作用并不显著;预加载机制针对所有应用程序
运行速度进行优化,具有一定普遍性但缺乏针对性,对应用程序运行速度的优化空间有限。

发明内容

为了在提高应用程序运行速度的同时,提高速度优化的针对性,并增强速度提高的效果,
本发明实施例提供了一种提高应用程序运行速度的方法、装置及终端。所述技术方案如下:

一方面,提供了一种提高应用程序运行速度的方法,所述方法包括:

采集应用程序运行时缺页中断对应的本地数据信息,所述本地数据信息包括本地数据所
在文件的文件名、所述本地数据在所述文件内的偏移以及所述本地数据的大小;

根据采集到的所述本地数据信息获取对应的本地数据,并在获取到提高所述应用程序运
行速度的指令后,加载获取到的所述本地数据。

其中,所述采集应用程序运行时缺页中断对应的本地数据信息,具体包括:

通过事件跟踪机制采集应用程序运行时的硬缺页事件和软缺页事件,从记录了所述硬缺
页事件和软缺页事件的事件跟踪日志中获取所述应用程序运行时缺页中断对应的本地数据信
息;

或者,通过钩子HOOK技术对系统底层调用进行监控,并获取用于记录缺页中断对应的本
地数据信息的监控代码,根据所述监控代码获取所述应用程序运行时缺页中断对应的本地数
据信息。

优选地,所述根据采集到的所述本地数据信息获取对应的本地数据,具体包括:

解析采集到的所述本地数据信息,得到本地数据所在文件的文件名、所述本地数据在所
述文件内的偏移以及所述本地数据的大小;

按照所述本地数据所在文件的文件名将采集到的本地数据信息进行聚合;

按照所述本地数据在所述文件内的偏移将聚合后的本地数据信息进行合并,并在合并后
的本地数据信息中选取符合预取条件的本地数据信息作为预取数据信息;

根据选取的所述预取数据信息获取对应的本地数据。

进一步地,所述在合并后的本地数据信息中选取符合预取条件的本地数据信息作为预取
数据信息之后,还包括:

根据所述应用程序的信息存储选取的所述预取数据信息;

所述加载获取到的本地数据,具体包括:

根据所述应用程序的信息获取所述预取数据信息,并根据所述预取数据信息获取对应的
本地数据,将获取到的本地数据加载至内存。

进一步地,所述加载获取到的本地数据之前,还包括:

输出应用程序列表,提示用户在所述应用程序列表中选择提高运行速度的应用程序;

根据用户在所述应用程序列表中选择的应用程序接收提高所述应用程序运行速度的指令
以及所述应用程序的信息。

另一方面,还提供了一种提高应用程序运行速度的装置,所述装置包括:

采集模块,用于采集应用程序运行时缺页中断对应的本地数据信息,所述本地数据信息
包括本地数据所在文件的文件名、所述本地数据在所述文件内的偏移以及所述本地数据的大
小;

获取模块,用于根据所述采集模块采集到的所述本地数据信息获取对应的本地数据;

加载模块,用于获取到提高所述应用程序运行速度的指令后,加载所述获取模块获取到
的所述本地数据。

其中,所述采集模块,具体用于通过事件跟踪机制采集应用程序运行时的硬缺页事件和
软缺页事件,从记录了所述硬缺页事件和软缺页事件的事件跟踪日志中获取所述应用程序运
行时缺页中断对应的本地数据信息;

或者,所述采集模块,具体用于通过钩子HOOK技术对系统底层调用进行监控,并获取用
于记录缺页中断对应的本地数据信息的监控代码,根据所述监控代码获取所述应用程序运行
时缺页中断对应的本地数据信息。

优选地,所述获取模块,具体包括:

解析单元,用于解析所述采集模块采集到的本地数据信息,得到本地数据所在文件的文
件名、所述本地数据在所述文件内的偏移以及所述本地数据的大小;

聚合单元,用于按照所述解析单元解析出的本地数据所在文件的文件名将采集到的本地
数据信息进行聚合;

合并单元,用于按照所述解析单元解析出的本地数据在所述文件内的偏移将所述聚合单
元聚合后的本地数据信息进行合并;

选取单元,用于在所述合并单元合并后的本地数据信息中选取符合预取条件的本地数据
信息作为预取数据信息;

获取单元,用于根据所述选取单元选取的所述预取数据信息获取对应的本地数据。

进一步地,所述装置还包括:

存储模块,用于根据所述应用程序的信息存储所述选取单元选取的所述预取数据信息;

所述加载模块,具体包括:

第一获取单元,用于根据所述应用程序的信息获取所述预取数据信息;

第二获取单元,用于根据所述第一获取单元获取到的预取数据信息获取对应的本地数据;

加载单元,用于将所述第二获取单元获取到的本地数据加载至内存。

进一步地,所述装置还包括:

输出模块,用于输出应用程序列表,提示用户在所述应用程序列表中选择提高运行速度
的应用程序;

接收模块,用于根据用户在所述输出模块输出的应用程序列表中选择的应用程序接收提
高所述应用程序运行速度的指令以及所述应用程序的信息。

再一方面,还提供了一种终端,所述终端包括上述提高应用程序运行速度的装置。

本发明实施例提供的技术方案带来的有益效果是:

通过采集应用程序运行时缺页中断对应的本地数据信息,并加载根据本地数据信息获取
到的本地数据,从而减少应用程序访问IO操作的耗时,达到提高应用程序运行速度的目的;
另外,由于缺页中断对应的本地数据信息不局限于本地数据的访问场景,因而可增强速度提
高的效果;且由于不同应用程序运行时缺页中断对应的本地数据信息不同,针对不同应用程
序具有不同的速度优化程度,因而可提高速度优化的针对性,进而扩大速度优化的空间。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附
图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域
普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明实施例一提供的提高应用程序运行速度的方法流程图;

图2是本发明实施例二提供的提高应用程序运行速度的方法流程图;

图3是本发明实施例三提供的提高应用程序运行速度的装置的结构示意图;

图4是本发明实施例三提供的获取模块的结构示意图;

图5是本发明实施例三提供的另一种提高应用程序运行速度的装置的结构示意图;

图6是本发明实施例三提供的加载模块的结构示意图;

图7是本发明实施例三提供的又一种提高应用程序运行速度的装置的结构示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进
一步地详细描述。

实施例一

本实施例提供了一种提高应用程序运行速度的方法,参见图1,本实施例提供的方法流
程具体如下:

101:采集应用程序运行时缺页中断对应的本地数据信息,该本地数据信息包括本地数据
所在文件的文件名、本地数据在文件内的偏移以及本地数据的大小;

其中,本实施例不对采集应用程序运行时缺页中断对应的本地数据信息的具体方式进行
限定,包括但不限于如下方式:

通过事件跟踪机制采集应用程序运行时的硬缺页事件和软缺页事件,从记录了硬缺页事
件和软缺页事件的事件跟踪日志中获取应用程序运行时缺页中断对应的本地数据信息;

或者,通过钩子HOOK技术对系统底层调用进行监控,并获取用于记录缺页中断对应的本
地数据信息的监控代码,根据监控代码获取应用程序运行时缺页中断对应的本地数据信息。

102:根据采集到的本地数据信息获取对应的本地数据,并在获取到提高应用程序运行速
度的指令后,加载获取到的本地数据。

优选地,根据采集到的本地数据信息获取对应的本地数据,具体包括:

解析采集到的本地数据信息,得到本地数据所在文件的文件名、本地数据在文件内的偏
移以及本地数据的大小;

按照本地数据所在文件的文件名将采集到的本地数据信息进行聚合;

按照本地数据在文件内的偏移将聚合后的本地数据信息进行合并,并在合并后的本地数
据信息中选取符合预取条件的本地数据信息作为预取数据信息;

根据选取的预取数据信息获取对应的本地数据。

进一步地,在合并后的本地数据信息中选取符合预取条件的本地数据信息作为预取数据
信息之后,还包括:

根据应用程序的信息存储选取的预取数据信息;

加载获取到的本地数据,具体包括:

根据应用程序的信息获取预取数据信息,并根据预取数据信息获取对应的本地数据,将
获取到的本地数据加载至内存。

进一步地,加载获取到的本地数据之前,还包括:

输出应用程序列表,提示用户在应用程序列表中选择提高运行速度的应用程序;

根据用户在应用程序列表中选择的应用程序接收提高应用程序运行速度的指令以及应用
程序的信息。

本实施例提供的方法,通过采集应用程序运行时缺页中断对应的本地数据信息,并加载
根据本地数据信息获取到的本地数据,从而减少应用程序访问IO操作的耗时,达到提高应用
程序运行速度的目的;另外,由于缺页中断对应的本地数据信息不局限于本地数据的访问场
景,因而可增强速度提高的效果;且由于不同应用程序运行时缺页中断对应的本地数据信息
不同,针对不同应用程序具有不同的速度优化程度,因而可提高速度优化的针对性,进而扩
大速度优化的空间。

实施例二

本实施例提供了一种提高应用程序运行速度的方法,该方法通过采集应用程序运行时缺
页中断对应的本地数据信息,并在根据该本地数据信息训练得到预取数据信息后,根据预取
数据信息加载对应的本地数据,从而减少应用程序访问IO操作的耗时,达到提高应用程序运
行的目的。结合上述实施例一的内容,本实施例以本地数据为磁盘数据为例,对提高应用程
序运行速度的方法进行举例说明。参见图2,本实施例提供的方法流程具体如下:

201:采集应用程序运行时缺页中断对应的磁盘数据信息,该磁盘数据信息包括磁盘数据
所在文件的文件名、磁盘数据在文件内的偏移以及磁盘数据的大小;

其中,缺页中断是指要访问的页不在内存,需要操作系统将其调入内存后再进行访问。
且缺页中断可分为硬缺页和软缺页,硬缺页事件是指发生缺页中断后,需要的数据不在缓存
也不在分页内存中,需要通过IO操作从磁盘上获取磁盘数据。软缺页是指发生缺页中断后,
需要的数据已经被载入内存,但又被置换到磁盘中,需要从磁盘交换文件中将这块内存信息
再载入内存中。由此可见,无论是硬缺页还是软缺页,缺页中断都将影响应用程序运行的速
度,因此,为了提高应用程序运行速度,本实施例采取了采集应用程序运行时缺页中断对应
的磁盘数据信息,后续步骤再通过提前加载根据磁盘数据信息获取到的磁盘数据的方式,避
免发生缺页中断,进而提高应用程序运行速度。采集应用程序运行时缺页中断对应的磁盘数
据信息时,包括但不限于如下方式:

通过事件跟踪机制采集应用程序运行时的硬缺页事件和软缺页事件,从记录了硬缺页事
件和软缺页事件的事件跟踪日志中获取应用程序运行时缺页中断对应的磁盘数据信息;

或者,通过HOOK技术对系统底层调用进行监控,并获取用于记录缺页中断对应的磁盘数
据信息的监控代码,根据监控代码获取应用程序运行时缺页中断对应的磁盘数据信息。

具体地,事件跟踪机制可以采用ETW(Event Tracing for Windows,Windows事件跟踪),
ETW是由操作系统提供的一种通用的、与性能日志和警报相比系统开销较低的事件追踪手段,
用以监控具有负载的系统的性能。ETW主要用于频繁记录事件、错误、警告或审核的服务器应
用程序。ETW提供用户模式的应用程序和内核模式的设备驱动程序所触发的事件追踪机制。此
外,ETW还能够动态地启用或者禁用日志记录,便于进行详细的追踪,而无需重新启动操作系
统或者应用程序,因此,可通过ETW采集应用程序运行时的硬缺页事件和软缺页事件,并从
记录了硬缺页事件和软缺页事件的事件跟踪日志中获取应用程序运行时缺页中断对应的磁盘
数据信息。

当然,除了采用上述两种采集方式外,还可以选择其他采集方式,本实施对此不做具体
限定。无论采用哪种采集方式,在采集到应用程序运行时缺页中断对应的磁盘数据信息后,
均可将其转化成磁盘内容描述格式<file,offset,length>,其中,file为磁盘数据所在文
件的文件名,offset为磁盘数据在文件内的偏移,length为磁盘数据的大小,可以byte(字
节)为单位。

202:根据采集到的磁盘数据信息得到预取数据信息;

该步骤为优选步骤,根据采集到的磁盘数据信息得到预取数据信息的方式,包括但不限
于如下步骤:

解析采集到的磁盘数据信息,得到磁盘数据所在文件的文件名、磁盘数据在文件内的偏
移以及磁盘数据的大小;

按照磁盘数据所在文件的文件名将采集到的磁盘数据信息进行聚合;

按照磁盘数据在文件内的偏移将聚合后的磁盘数据信息进行合并,并在合并后的磁盘数
据信息中选取符合预取条件的磁盘数据信息作为预取数据信息。

其中,本实施例不对解析采集到的磁盘数据信息的方式进行限定,为了便于说明,本实
施例以解析出的磁盘数据信息如下面表1所示为例,对该步骤中得到预取数据信息的方式进
行举例说明。

表1

  File
  Offset
  Length(byte)
  Example1.dll
  0
  1024
  Example2.dll
  4096
  512
  Example3.data
  0
  10240
  Example1.dll
  1024
  1024
  Example2.dll
  0
  512

从上面表1的内容中可以看出,解析出了5段磁盘数据信息,按照磁盘数据信息中磁盘
数据所在文件的文件名对采集到的磁盘数据信息进行聚合时,可将文件名相同的磁盘数据信
息聚合在一起,例如,将文件名为Example1.dll的两段磁盘数据信息进行聚合,将文件名为
Example2.dll的两段磁盘数据信息进行聚合,则得到的聚合结果可如下面表2所示:

表2


按照磁盘数据在文件内的偏移将聚合后的磁盘数据信息进行合并时,结合上述表2所示
的聚合结果,可将对应同一文件的磁盘数据信息按照其中的偏移是否相距预设范围而进行合
并,其中,预设范围可以设定为1024,2056等,本实施例不对预设范围的具体大小进行限定,
此处仅以预设范围为2056为例。则对于文件名为Example2.dll的两段磁盘数据信息,由于
一段磁盘数据信息的偏移为0,另一段磁盘数据信息的偏移为4096,由此可见,两段磁盘数
据信息的偏移相距4096,而该距离在预设范围2056之外,因而不对这两段磁盘数据信息进
行合并。

但对于文件名为Example1.dll的两段磁盘数据信息,由于一段磁盘数据信息的偏移为0,
另一段磁盘数据信息的偏移为1024,由此可见,两段磁盘数据信息的偏移相距1024,该距离
在预设范围2056内,因此,可将其进行合并,合并之后的结果可如下面表3所示:

表3


经过上面的聚合及合并的过程,应用程序每次运行时都能得到如上表3所示结果,对于
采集应用程序多次运行时缺页中断对应的磁盘数据信息,并对采集到的结果进行如上训练便
得到预取数据信息,预取数据信息同磁盘数据信息一样,均用于记录应用程序很有可能需要
通过IO访问获取的磁盘数据的信息。不同应用程序对应的预取数据信息也会不同,即使是同
一应用程序,在不同场景下的预取数据信息也会有所不同,而该场景包括但不限于加载、运
行等场景,如若需要确定应用程序在哪个场景下很有可能需要通过IO访问获取的磁盘数据,
则在该场景下采集磁盘数据信息,并按照如上过程根据采集到的磁盘数据信息得到对应的预
取数据信息,进而通过预取数据信息获取对应的磁盘数据即可。本实施例不对本实施例提供
的方法所适用的场景进行限定。

可选地,由于应用程序每次运行时都可得到如上面表3所示的结果,如果直接将应用程
序每次运行时得到的如上面表3所示的结果进行合并,并将合并后的结果作为得到的预取数
据信息,则该预取数据信息所覆盖的磁盘数据的范围会比较广,然而有些磁盘数据并不是应
用程序运行时时常用到的,仅仅是在某次采集过程中采集到该磁盘数据对应的磁盘数据信息
而已,因而加载该类磁盘数据不仅对提高应用程序运行速度没有过多的帮助,反而还占用了
系统资源,对此,为了在提高应用程序运行速度的前提下,进一步缩小预取数据信息所覆盖
的磁盘数据的范围,以减少加载不必要的磁盘数据,导致浪费资源,本实施例提供的方法在
通过上述过程得到合并后的磁盘数据信息时,可并不直接将合并后的所有磁盘数据信息均作
为预取数据信息,而是在合并后的磁盘数据信息中再挑选出符合预取条件的磁盘数据信息,
之后再将挑取出的磁盘数据信息作为预取数据信息。

对于预取条件,可通过判断采集到的磁盘数据信息是否达到预设次数来得到,例如,如
果某段磁盘数据信息在10次采集过程中,仅被采集到了1次,则可得出该段磁盘数据信息被
采集到的频率不高,应用程序运行时对该磁盘数据信息对应的磁盘数据的需求也不会很高,
因而可将其从采集到的磁盘数据信息中进行删除;相反,如果某段磁盘数据信息在10次采集
过程中,有6次被采集到,则可得出该段磁盘数据信息被采集到的频率较高,应用程序运行
时对该磁盘数据信息对应的磁盘数据的需求也会相对较高,因而可将其保留在采集到的磁盘
数据信息中。当然,除了以采集到的次数是否达到预设次数为标准判断合并后的磁盘数据信
息是否符合预取条件外,还可以选择其他预取条件,本实施例不仅不对预设次数的多少进行
限定,同样也不对具体的预取条件进行限定。

203:根据应用程序的信息存储得到的预取数据信息;

针对该步骤,在用户没有运行该应用程序的需求下,为了避免因加载该应用程序对应的
磁盘数据而占用系统资源,本实施例提供的方法不会在得到预取数据信息后,直接加载根据
预取数据信息获取到的磁盘数据,而是根据用户对该应用程序的运行需求来选择是否加载根
据预取数据信息获取到的磁盘数据。之所以根据应用程序的信息存储得到的预取数据信息,
是由于每个应用程序均可训练得到对应的预取数据信息,为了区分不同应用程序的预取数据
信息,可根据各个应用程序的信息存储各自的预取数据信息。其中,应用程序的信息包括但
不限于应用程序的名称、路径、版本号等,本实施例不对应用程序的具体信息进行限定。

具体存储时,可将其存储在本地,也可以存储在网络中,当然,也可以同时存储在本地
和网络中,本实施例不对存储位置及方式进行限定。

204:输出应用程序列表,提示用户在应用程序列表中选择提高运行速度的应用程序;根
据用户在应用程序列表中选择的应用程序接收提高该应用程序运行速度的指令以及该应用程
序的信息;

其中,在输出应用程序列表时,既可以仅输出应用程序名称,也可以在输出应用程序名
称的同时,输出该应用程序的图标,本实施例不对输出应用程序列表的方式及内容进行限定。
之所以会输出应用程序列表,提示用户在应用程序列表中选择提高运行速度的应用程序,是
为了实现针对每个应用程序分别提高运行速度的目的。例如,通过上述步骤201至步骤203
得到并存储了10个应用程序的预取数据信息,在实际应用过程中,并不是这10个应用程序
都需要运行,因此,为了避免同时加载这10个应用程序的磁盘数据而浪费系统资源,本实施
例采取了由用户选取的方式,分别加载需要的磁盘数据。如果用户在应用程序列表中选取了
哪个应用程序,则意味着用户希望提高该应用程序的运行速度,则在用户从应用程序列表中
选取应用程序的同时,触发发送提高应用程序运行速度的指令及该应用程序的信息,以触发
后续步骤根据该指令及信息加载对应的磁盘数据。其中,该应用程序的信息即为用户选择的
应用程序的信息。

205:根据该应用程序的信息获取预取数据信息,根据预取数据信息获取对应的磁盘数据,
将获取到的磁盘数据加载至内存。

具体地,无论上述步骤203将预取数据信息是存储在本地还是在网络,由于是根据应用
程序的信息进行存储的,因而每个预取数据信息均与应用程序的信息之间存在对应关系,则
在上述步骤204获取到应用程序的信息之后,即可根据该应用程序的信息获取对应的预取数
据信息。又由于预取数据信息中记录了磁盘数据的信息,因而可根据预取数据信息获取到对
应的磁盘数据。

将获取到的磁盘数据加载至内存时,即可以在系统空闲时加载也可以在应用程序运行时
加载,本实施例不对加载磁盘数据的时间进行限定。在系统空闲时加载获取到的磁盘数据时,
可先判断内存中是否存在待加载的磁盘数据,如果已经存在该磁盘数据,则无需再将其加载
至缓存,如果不存在该磁盘数据,则执行将其加载的步骤。相应的,在应用程序启动时加载
获取到的磁盘数据时,可先判断该应用程序是否启动,如果启动,则再加载获取到的磁盘数
据。无论是在系统空闲时加载获取到的磁盘数据,还是在应用程序启动时加载获取到的磁盘
数据,具体加载过程均可参照现有的加载流程实现,本实施例不对具体的加载方式进行限定。

本实施例提供的方法,通过采集应用程序运行时缺页中断对应的本地数据信息,并加载
根据本地数据信息获取到的本地数据,从而减少应用程序访问IO操作的耗时,达到提高应用
程序运行速度的目的;另外,由于缺页中断对应的本地数据信息不局限于本地数据的访问场
景,因而可增强速度提高的效果;且由于不同应用程序运行时缺页中断对应的本地数据信息
不同,针对不同应用程序具有不同的速度优化程度,因而可提高速度优化的针对性,进而扩
大速度优化的空间。

实施例三

参见图3,本发明实施例提供了一种提高应用程序运行速度的装置,该装置包括:

采集模块301,用于采集应用程序运行时缺页中断对应的本地数据信息,本地数据信息
包括本地数据所在文件的文件名、本地数据在文件内的偏移以及本地数据的大小;

获取模块302,用于根据采集模块301采集到的本地数据信息获取对应的本地数据;

加载模块303,用于获取到提高应用程序运行速度的指令后,加载获取模块302获取到
的本地数据。

其中,采集模块301,具体用于通过事件跟踪机制采集应用程序运行时的硬缺页事件和
软缺页事件,从记录了硬缺页事件和软缺页事件的事件跟踪日志中获取应用程序运行时缺页
中断对应的本地数据信息;

或者,采集模块301,具体用于通过钩子HOOK技术对系统底层调用进行监控,并获取用
于记录缺页中断对应的本地数据信息的监控代码,根据监控代码获取应用程序运行时缺页中
断对应的本地数据信息。

该采集模块301采集应用程序运行时缺页中断对应的本地数据信息的方式,详见上述实
施例二中步骤201的相关描述,此处不再赘述。

优选地,参见图4,该获取模块302,具体包括:

解析单元302a,用于解析采集模块301采集到的本地数据信息,得到本地数据所在文件
的文件名、本地数据在文件内的偏移以及本地数据的大小;

聚合单元302b,用于按照解析单元302a解析出的本地数据所在文件的文件名将采集到
的本地数据信息进行聚合;

合并单元302c,用于按照解析单元302a解析出的本地数据在文件内的偏移将聚合单元
302b聚合后的本地数据信息进行合并;

选取单元302d,用于在合并单元302c合并后的本地数据信息中选取符合预取条件的本
地数据信息作为预取数据信息;

获取单元302e,用于根据选取单元302d选取的预取数据信息获取对应的本地数据。

其中,解析单元302a解析本地数据信息的方式、聚合单元302b将采集到的本地数据信
息进行聚合的方式、合并单元302c将聚合单元302b聚合后的本地数据信息进行合并的方式,
以及选取单元302d在合并单元302c合并后的本地数据信息中选取符合预取条件的本地数据
信息的方式,均可详见上述实施例二中步骤202的相关描述,此处不再赘述。

进一步地,参见图5,该装置还包括:

存储模块304,用于根据应用程序的信息存储选取单元302d选取的预取数据信息;

参见图6,该加载模块303,具体包括:

第一获取单元3031,用于根据应用程序的信息获取存储模块304存储的预取数据信息;

第二获取单元3032,用于根据第一获取单元3031获取到的预取数据信息获取对应的本
地数据;

加载单元3033,用于将第二获取单元3032获取到的本地数据加载至内存。

其中,存储模块304存储预取数据信息的方式详见上述实施例二中步骤203的相关描述,
此处不再赘述。第一获取单元3031获取预取数据信息的方式、第二获取单元3032获取本地
数据的方式,以及加载单元3033加载本地数据的方式均详见上述实施例二中步骤205的相关
描述,此处不再赘述。

进一步地,参见图7,该装置还包括:

输出模块305,用于输出应用程序列表,提示用户在应用程序列表中选择提高运行速度
的应用程序;

接收模块306,用于根据用户在输出模块305输出的应用程序列表中选择的应用程序接
收提高应用程序运行速度的指令以及应用程序的信息。

该输出模块305输出应用程序列表的方式、接收模块306接收提高应用程序运行速度的
指令以及应用程序的信息的方式均可详见上述实施例二中步骤204的相关描述,此处不再赘
述。

本实施例提供的装置,通过采集应用程序运行时缺页中断对应的本地数据信息,并加载
根据本地数据信息获取到的本地数据,从而减少应用程序访问IO操作的耗时,达到提高应用
程序运行速度的目的;另外,由于缺页中断对应的本地数据信息不局限于本地数据的访问场
景,因而可增强速度提高的效果;且由于不同应用程序运行时缺页中断对应的本地数据信息
不同,针对不同应用程序具有不同的速度优化程度,因而可提高速度优化的针对性,进而扩
大速度优化的空间。

实施例四

本实施例提供了一种终端,该终端包括提高应用程序运行速度的装置;

其中,该提高应用程序运行速度的装置可如上述实施例三提供的装置,具体详见上述实
施例三的描述,此处不再赘述。

本实施例提供的终端包括但不限于手机、平板电脑、PDA(Personal Digital Assistant,
个人数字助理)等。

本实施例提供的终端,通过提高应用程序运行速度的装置采集应用程序运行时缺页中断
对应的本地数据信息,并加载根据本地数据信息获取到的本地数据,从而减少应用程序访问
IO操作的耗时,达到提高应用程序运行速度的目的;另外,由于缺页中断对应的本地数据信
息不局限于本地数据的访问场景,因而可增强速度提高的效果;且由于不同应用程序运行时
缺页中断对应的本地数据信息不同,针对不同应用程序具有不同的速度优化程度,因而可提
高速度优化的针对性,进而扩大速度优化的空间。

需要说明的是:上述实施例提供的提高应用程序运行速度的装置在提高应用程序运行速
度时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能
分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述
的全部或者部分功能。另外,上述实施例提供的提高应用程序运行速度的装置、终端与提高
应用程序运行速度的方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再
赘述。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,
也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,
上述提到的存储介质可以是只读存储器,磁盘或光盘等。

以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之
内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

提高应用程序运行速度的方法、装置及终端.pdf_第1页
第1页 / 共17页
提高应用程序运行速度的方法、装置及终端.pdf_第2页
第2页 / 共17页
提高应用程序运行速度的方法、装置及终端.pdf_第3页
第3页 / 共17页
点击查看更多>>
资源描述

《提高应用程序运行速度的方法、装置及终端.pdf》由会员分享,可在线阅读,更多相关《提高应用程序运行速度的方法、装置及终端.pdf(17页珍藏版)》请在专利查询网上搜索。

1、(10)申请公布号 CN 102662713 A(43)申请公布日 2012.09.12CN102662713A*CN102662713A*(21)申请号 201210106766.9(22)申请日 2012.04.12G06F 9/445(2006.01)(71)申请人腾讯科技(深圳)有限公司地址 518000 广东省深圳市福田区赛格科技园2栋东403室(72)发明人林道正 聂科峰 方斌 李世平(74)专利代理机构北京三高永信知识产权代理有限责任公司 11138代理人罗振安(54) 发明名称提高应用程序运行速度的方法、装置及终端(57) 摘要本发明公开了一种提高应用程序运行速度的方法、装置及。

2、终端,属于计算机领域。方法包括:采集应用程序运行时缺页中断对应的本地数据信息,本地数据信息包括本地数据所在文件的文件名、本地数据在文件内的偏移以及本地数据的大小;根据采集到的本地数据信息获取对应的本地数据,并在获取到提高应用程序运行速度的指令后,加载获取到的本地数据。本发明通过加载根据应用程序运行时缺页中断对应的本地数据信息获取到的本地数据,以减少应用程序访问IO操作的耗时,提高应用程序运行速度;由于缺页中断对应的本地数据信息不局限于访问场景,可增强速度提高的效果;针对不同应用程序具有不同的速度优化程度,提高速度优化的针对性,扩大速度优化的空间。(51)Int.Cl.权利要求书2页 说明书11。

3、页 附图3页(19)中华人民共和国国家知识产权局(12)发明专利申请权利要求书 2 页 说明书 11 页 附图 3 页1/2页21.一种提高应用程序运行速度的方法,其特征在于,所述方法包括:采集应用程序运行时缺页中断对应的本地数据信息,所述本地数据信息包括本地数据所在文件的文件名、所述本地数据在所述文件内的偏移以及所述本地数据的大小;根据采集到的所述本地数据信息获取对应的本地数据,并在获取到提高所述应用程序运行速度的指令后,加载获取到的所述本地数据。2.根据权利要求1所述的方法,其特征在于,所述采集应用程序运行时缺页中断对应的本地数据信息,具体包括:通过事件跟踪机制采集应用程序运行时的硬缺页事。

4、件和软缺页事件,从记录了所述硬缺页事件和软缺页事件的事件跟踪日志中获取所述应用程序运行时缺页中断对应的本地数据信息;或者,通过钩子HOOK技术对系统底层调用进行监控,并获取用于记录缺页中断对应的本地数据信息的监控代码,根据所述监控代码获取所述应用程序运行时缺页中断对应的本地数据信息。3.根据权利要求1所述的方法,其特征在于,所述根据采集到的所述本地数据信息获取对应的本地数据,具体包括:解析采集到的所述本地数据信息,得到本地数据所在文件的文件名、所述本地数据在所述文件内的偏移以及所述本地数据的大小;按照所述本地数据所在文件的文件名将采集到的本地数据信息进行聚合;按照所述本地数据在所述文件内的偏移。

5、将聚合后的本地数据信息进行合并,并在合并后的本地数据信息中选取符合预取条件的本地数据信息作为预取数据信息;根据选取的所述预取数据信息获取对应的本地数据。4.根据权利要求3所述的方法,其特征在于,所述在合并后的本地数据信息中选取符合预取条件的本地数据信息作为预取数据信息之后,还包括:根据所述应用程序的信息存储选取的所述预取数据信息;所述加载获取到的本地数据,具体包括:根据所述应用程序的信息获取所述预取数据信息,并根据所述预取数据信息获取对应的本地数据,将获取到的本地数据加载至内存。5.根据权利要求1至4中任一权利要求所述的方法,其特征在于,所述加载获取到的本地数据之前,还包括:输出应用程序列表,。

6、提示用户在所述应用程序列表中选择提高运行速度的应用程序;根据用户在所述应用程序列表中选择的应用程序接收提高所述应用程序运行速度的指令以及所述应用程序的信息。6.一种提高应用程序运行速度的装置,其特征在于,所述装置包括:采集模块,用于采集应用程序运行时缺页中断对应的本地数据信息,所述本地数据信息包括本地数据所在文件的文件名、所述本地数据在所述文件内的偏移以及所述本地数据的大小;获取模块,用于根据所述采集模块采集到的所述本地数据信息获取对应的本地数据;加载模块,用于获取到提高所述应用程序运行速度的指令后,加载所述获取模块获取到的所述本地数据。权 利 要 求 书CN 102662713 A2/2页3。

7、7.根据权利要求6所述的装置,其特征在于,所述采集模块,具体用于通过事件跟踪机制采集应用程序运行时的硬缺页事件和软缺页事件,从记录了所述硬缺页事件和软缺页事件的事件跟踪日志中获取所述应用程序运行时缺页中断对应的本地数据信息;或者,所述采集模块,具体用于通过钩子HOOK技术对系统底层调用进行监控,并获取用于记录缺页中断对应的本地数据信息的监控代码,根据所述监控代码获取所述应用程序运行时缺页中断对应的本地数据信息。8.根据权利要求7所述的装置,其特征在于,所述获取模块,具体包括:解析单元,用于解析所述采集模块采集到的本地数据信息,得到本地数据所在文件的文件名、所述本地数据在所述文件内的偏移以及所述。

8、本地数据的大小;聚合单元,用于按照所述解析单元解析出的本地数据所在文件的文件名将采集到的本地数据信息进行聚合;合并单元,用于按照所述解析单元解析出的本地数据在所述文件内的偏移将所述聚合单元聚合后的本地数据信息进行合并;选取单元,用于在所述合并子单元合并后的本地数据信息中选取符合预取条件的本地数据信息作为预取数据信息;获取单元,用于根据所述选取单元选取的所述预取数据信息获取对应的本地数据。9.根据权利要求8所述的装置,其特征在于,所述装置还包括:存储模块,用于根据所述应用程序的信息存储所述选取单元选取的所述预取数据信息;所述加载模块,具体包括:第一获取单元,用于根据所述应用程序的信息获取所述存储。

9、模块存储的预取数据信息;第二获取单元,用于根据所述第一获取单元获取到的预取数据信息获取对应的本地数据;加载单元,用于将所述第二获取单元获取到的本地数据加载至内存。10.根据权利要求6至9中任一权利要求所述的装置,其特征在于,所述装置还包括:输出模块,用于输出应用程序列表,提示用户在所述应用程序列表中选择提高运行速度的应用程序;接收模块,用于根据用户在所述输出模块输出的应用程序列表中选择的应用程序接收提高所述应用程序运行速度的指令以及所述应用程序的信息。11.一种终端,其特征在于,所述终端包括提高应用程序运行速度的装置;其中,所述提高应用程序运行速度的装置如所述权利要求6至10中任一权利要求所述。

10、的装置。权 利 要 求 书CN 102662713 A1/11页4提高应用程序运行速度的方法、 装置及终端技术领域0001 本发明涉及计算机领域,特别涉及一种提高应用程序运行速度的方法、装置及终端。背景技术0002 随着计算机技术的高速发展,应用程序的种类越来越多。为了满足用户对各类应用程序的运行需求,提高应用程序的运行速度,成为了众多研究者十分关注的课题。0003 现有技术在提高应用程序的运行速度时,采取了预读和预加载(Prefetch)两种机制。其中,预读机制是指在读取本地数据文件时,除了读取当前所需数据外,还将当前所需数据后的内容也一并读入内存中,以在用到该部分内容时,可从内存中直接读取。

11、,从而减少应用程序在IO(Input/Output,输入输出)上的耗时;预加载机制是指在开机加载操作系统时,读取常用的应用程序的主要内容,以备在该类应用程序启动时耗费大量时间来读取数据。0004 在实现本发明的过程中,发明人发现现有技术至少存在以下问题:0005 预读机制仅适用于在加载应用程序时顺序访问本地数据的场景,针对应用程序运行时对本地数据进行随机访问的场景,该预读机制的作用并不显著;预加载机制针对所有应用程序运行速度进行优化,具有一定普遍性但缺乏针对性,对应用程序运行速度的优化空间有限。发明内容0006 为了在提高应用程序运行速度的同时,提高速度优化的针对性,并增强速度提高的效果,本发。

12、明实施例提供了一种提高应用程序运行速度的方法、装置及终端。所述技术方案如下:0007 一方面,提供了一种提高应用程序运行速度的方法,所述方法包括:0008 采集应用程序运行时缺页中断对应的本地数据信息,所述本地数据信息包括本地数据所在文件的文件名、所述本地数据在所述文件内的偏移以及所述本地数据的大小;0009 根据采集到的所述本地数据信息获取对应的本地数据,并在获取到提高所述应用程序运行速度的指令后,加载获取到的所述本地数据。0010 其中,所述采集应用程序运行时缺页中断对应的本地数据信息,具体包括:0011 通过事件跟踪机制采集应用程序运行时的硬缺页事件和软缺页事件,从记录了所述硬缺页事件和。

13、软缺页事件的事件跟踪日志中获取所述应用程序运行时缺页中断对应的本地数据信息;0012 或者,通过钩子HOOK技术对系统底层调用进行监控,并获取用于记录缺页中断对应的本地数据信息的监控代码,根据所述监控代码获取所述应用程序运行时缺页中断对应的本地数据信息。0013 优选地,所述根据采集到的所述本地数据信息获取对应的本地数据,具体包括:说 明 书CN 102662713 A2/11页50014 解析采集到的所述本地数据信息,得到本地数据所在文件的文件名、所述本地数据在所述文件内的偏移以及所述本地数据的大小;0015 按照所述本地数据所在文件的文件名将采集到的本地数据信息进行聚合;0016 按照所述。

14、本地数据在所述文件内的偏移将聚合后的本地数据信息进行合并,并在合并后的本地数据信息中选取符合预取条件的本地数据信息作为预取数据信息;0017 根据选取的所述预取数据信息获取对应的本地数据。0018 进一步地,所述在合并后的本地数据信息中选取符合预取条件的本地数据信息作为预取数据信息之后,还包括:0019 根据所述应用程序的信息存储选取的所述预取数据信息;0020 所述加载获取到的本地数据,具体包括:0021 根据所述应用程序的信息获取所述预取数据信息,并根据所述预取数据信息获取对应的本地数据,将获取到的本地数据加载至内存。0022 进一步地,所述加载获取到的本地数据之前,还包括:0023 输出。

15、应用程序列表,提示用户在所述应用程序列表中选择提高运行速度的应用程序;0024 根据用户在所述应用程序列表中选择的应用程序接收提高所述应用程序运行速度的指令以及所述应用程序的信息。0025 另一方面,还提供了一种提高应用程序运行速度的装置,所述装置包括:0026 采集模块,用于采集应用程序运行时缺页中断对应的本地数据信息,所述本地数据信息包括本地数据所在文件的文件名、所述本地数据在所述文件内的偏移以及所述本地数据的大小;0027 获取模块,用于根据所述采集模块采集到的所述本地数据信息获取对应的本地数据;0028 加载模块,用于获取到提高所述应用程序运行速度的指令后,加载所述获取模块获取到的所述。

16、本地数据。0029 其中,所述采集模块,具体用于通过事件跟踪机制采集应用程序运行时的硬缺页事件和软缺页事件,从记录了所述硬缺页事件和软缺页事件的事件跟踪日志中获取所述应用程序运行时缺页中断对应的本地数据信息;0030 或者,所述采集模块,具体用于通过钩子HOOK技术对系统底层调用进行监控,并获取用于记录缺页中断对应的本地数据信息的监控代码,根据所述监控代码获取所述应用程序运行时缺页中断对应的本地数据信息。0031 优选地,所述获取模块,具体包括:0032 解析单元,用于解析所述采集模块采集到的本地数据信息,得到本地数据所在文件的文件名、所述本地数据在所述文件内的偏移以及所述本地数据的大小;00。

17、33 聚合单元,用于按照所述解析单元解析出的本地数据所在文件的文件名将采集到的本地数据信息进行聚合;0034 合并单元,用于按照所述解析单元解析出的本地数据在所述文件内的偏移将所述聚合单元聚合后的本地数据信息进行合并;0035 选取单元,用于在所述合并单元合并后的本地数据信息中选取符合预取条件的本说 明 书CN 102662713 A3/11页6地数据信息作为预取数据信息;0036 获取单元,用于根据所述选取单元选取的所述预取数据信息获取对应的本地数据。0037 进一步地,所述装置还包括:0038 存储模块,用于根据所述应用程序的信息存储所述选取单元选取的所述预取数据信息;0039 所述加载模。

18、块,具体包括:0040 第一获取单元,用于根据所述应用程序的信息获取所述预取数据信息;0041 第二获取单元,用于根据所述第一获取单元获取到的预取数据信息获取对应的本地数据;0042 加载单元,用于将所述第二获取单元获取到的本地数据加载至内存。0043 进一步地,所述装置还包括:0044 输出模块,用于输出应用程序列表,提示用户在所述应用程序列表中选择提高运行速度的应用程序;0045 接收模块,用于根据用户在所述输出模块输出的应用程序列表中选择的应用程序接收提高所述应用程序运行速度的指令以及所述应用程序的信息。0046 再一方面,还提供了一种终端,所述终端包括上述提高应用程序运行速度的装置。0。

19、047 本发明实施例提供的技术方案带来的有益效果是:0048 通过采集应用程序运行时缺页中断对应的本地数据信息,并加载根据本地数据信息获取到的本地数据,从而减少应用程序访问IO操作的耗时,达到提高应用程序运行速度的目的;另外,由于缺页中断对应的本地数据信息不局限于本地数据的访问场景,因而可增强速度提高的效果;且由于不同应用程序运行时缺页中断对应的本地数据信息不同,针对不同应用程序具有不同的速度优化程度,因而可提高速度优化的针对性,进而扩大速度优化的空间。附图说明0049 为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅。

20、是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。0050 图1是本发明实施例一提供的提高应用程序运行速度的方法流程图;0051 图2是本发明实施例二提供的提高应用程序运行速度的方法流程图;0052 图3是本发明实施例三提供的提高应用程序运行速度的装置的结构示意图;0053 图4是本发明实施例三提供的获取模块的结构示意图;0054 图5是本发明实施例三提供的另一种提高应用程序运行速度的装置的结构示意图;0055 图6是本发明实施例三提供的加载模块的结构示意图;0056 图7是本发明实施例三提供的又一种提高应用程序运行速度的装置的结构。

21、示意图。说 明 书CN 102662713 A4/11页7具体实施方式0057 为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。0058 实施例一0059 本实施例提供了一种提高应用程序运行速度的方法,参见图1,本实施例提供的方法流程具体如下:0060 101:采集应用程序运行时缺页中断对应的本地数据信息,该本地数据信息包括本地数据所在文件的文件名、本地数据在文件内的偏移以及本地数据的大小;0061 其中,本实施例不对采集应用程序运行时缺页中断对应的本地数据信息的具体方式进行限定,包括但不限于如下方式:0062 通过事件跟踪机制采集应用程序运行时的硬。

22、缺页事件和软缺页事件,从记录了硬缺页事件和软缺页事件的事件跟踪日志中获取应用程序运行时缺页中断对应的本地数据信息;0063 或者,通过钩子HOOK技术对系统底层调用进行监控,并获取用于记录缺页中断对应的本地数据信息的监控代码,根据监控代码获取应用程序运行时缺页中断对应的本地数据信息。0064 102:根据采集到的本地数据信息获取对应的本地数据,并在获取到提高应用程序运行速度的指令后,加载获取到的本地数据。0065 优选地,根据采集到的本地数据信息获取对应的本地数据,具体包括:0066 解析采集到的本地数据信息,得到本地数据所在文件的文件名、本地数据在文件内的偏移以及本地数据的大小;0067 按。

23、照本地数据所在文件的文件名将采集到的本地数据信息进行聚合;0068 按照本地数据在文件内的偏移将聚合后的本地数据信息进行合并,并在合并后的本地数据信息中选取符合预取条件的本地数据信息作为预取数据信息;0069 根据选取的预取数据信息获取对应的本地数据。0070 进一步地,在合并后的本地数据信息中选取符合预取条件的本地数据信息作为预取数据信息之后,还包括:0071 根据应用程序的信息存储选取的预取数据信息;0072 加载获取到的本地数据,具体包括:0073 根据应用程序的信息获取预取数据信息,并根据预取数据信息获取对应的本地数据,将获取到的本地数据加载至内存。0074 进一步地,加载获取到的本地。

24、数据之前,还包括:0075 输出应用程序列表,提示用户在应用程序列表中选择提高运行速度的应用程序;0076 根据用户在应用程序列表中选择的应用程序接收提高应用程序运行速度的指令以及应用程序的信息。0077 本实施例提供的方法,通过采集应用程序运行时缺页中断对应的本地数据信息,并加载根据本地数据信息获取到的本地数据,从而减少应用程序访问IO操作的耗时,达到提高应用程序运行速度的目的;另外,由于缺页中断对应的本地数据信息不局限于本地数说 明 书CN 102662713 A5/11页8据的访问场景,因而可增强速度提高的效果;且由于不同应用程序运行时缺页中断对应的本地数据信息不同,针对不同应用程序具有。

25、不同的速度优化程度,因而可提高速度优化的针对性,进而扩大速度优化的空间。0078 实施例二0079 本实施例提供了一种提高应用程序运行速度的方法,该方法通过采集应用程序运行时缺页中断对应的本地数据信息,并在根据该本地数据信息训练得到预取数据信息后,根据预取数据信息加载对应的本地数据,从而减少应用程序访问IO操作的耗时,达到提高应用程序运行的目的。结合上述实施例一的内容,本实施例以本地数据为磁盘数据为例,对提高应用程序运行速度的方法进行举例说明。参见图2,本实施例提供的方法流程具体如下:0080 201:采集应用程序运行时缺页中断对应的磁盘数据信息,该磁盘数据信息包括磁盘数据所在文件的文件名、磁。

26、盘数据在文件内的偏移以及磁盘数据的大小;0081 其中,缺页中断是指要访问的页不在内存,需要操作系统将其调入内存后再进行访问。且缺页中断可分为硬缺页和软缺页,硬缺页事件是指发生缺页中断后,需要的数据不在缓存也不在分页内存中,需要通过IO操作从磁盘上获取磁盘数据。软缺页是指发生缺页中断后,需要的数据已经被载入内存,但又被置换到磁盘中,需要从磁盘交换文件中将这块内存信息再载入内存中。由此可见,无论是硬缺页还是软缺页,缺页中断都将影响应用程序运行的速度,因此,为了提高应用程序运行速度,本实施例采取了采集应用程序运行时缺页中断对应的磁盘数据信息,后续步骤再通过提前加载根据磁盘数据信息获取到的磁盘数据的。

27、方式,避免发生缺页中断,进而提高应用程序运行速度。采集应用程序运行时缺页中断对应的磁盘数据信息时,包括但不限于如下方式:0082 通过事件跟踪机制采集应用程序运行时的硬缺页事件和软缺页事件,从记录了硬缺页事件和软缺页事件的事件跟踪日志中获取应用程序运行时缺页中断对应的磁盘数据信息;0083 或者,通过HOOK技术对系统底层调用进行监控,并获取用于记录缺页中断对应的磁盘数据信息的监控代码,根据监控代码获取应用程序运行时缺页中断对应的磁盘数据信息。0084 具体地,事件跟踪机制可以采用ETW(Event Tracing for Windows,Windows事件跟踪),ETW是由操作系统提供的一种。

28、通用的、与性能日志和警报相比系统开销较低的事件追踪手段,用以监控具有负载的系统的性能。ETW主要用于频繁记录事件、错误、警告或审核的服务器应用程序。ETW提供用户模式的应用程序和内核模式的设备驱动程序所触发的事件追踪机制。此外,ETW还能够动态地启用或者禁用日志记录,便于进行详细的追踪,而无需重新启动操作系统或者应用程序,因此,可通过ETW采集应用程序运行时的硬缺页事件和软缺页事件,并从记录了硬缺页事件和软缺页事件的事件跟踪日志中获取应用程序运行时缺页中断对应的磁盘数据信息。0085 当然,除了采用上述两种采集方式外,还可以选择其他采集方式,本实施对此不做具体限定。无论采用哪种采集方式,在采集。

29、到应用程序运行时缺页中断对应的磁盘数据信息后,均可将其转化成磁盘内容描述格式,其中,file为磁盘数据所在文件的文件名,offset为磁盘数据在文件内的偏移,length为磁盘数据的大小,可以说 明 书CN 102662713 A6/11页9byte(字节)为单位。0086 202:根据采集到的磁盘数据信息得到预取数据信息;0087 该步骤为优选步骤,根据采集到的磁盘数据信息得到预取数据信息的方式,包括但不限于如下步骤:0088 解析采集到的磁盘数据信息,得到磁盘数据所在文件的文件名、磁盘数据在文件内的偏移以及磁盘数据的大小;0089 按照磁盘数据所在文件的文件名将采集到的磁盘数据信息进行聚合。

30、;0090 按照磁盘数据在文件内的偏移将聚合后的磁盘数据信息进行合并,并在合并后的磁盘数据信息中选取符合预取条件的磁盘数据信息作为预取数据信息。0091 其中,本实施例不对解析采集到的磁盘数据信息的方式进行限定,为了便于说明,本实施例以解析出的磁盘数据信息如下面表1所示为例,对该步骤中得到预取数据信息的方式进行举例说明。0092 表10093 File Offset Length(byte)Example1.dll 0 1024Example2.dll 4096 512Example3.data 0 10240Example1.dll 1024 1024Example2.dll 0 51200。

31、94 从上面表1的内容中可以看出,解析出了5段磁盘数据信息,按照磁盘数据信息中磁盘数据所在文件的文件名对采集到的磁盘数据信息进行聚合时,可将文件名相同的磁盘数据信息聚合在一起,例如,将文件名为Example1.dll的两段磁盘数据信息进行聚合,将文件名为Example2.dll的两段磁盘数据信息进行聚合,则得到的聚合结果可如下面表2所示:0095 表20096 0097 按照磁盘数据在文件内的偏移将聚合后的磁盘数据信息进行合并时,结合上述表说 明 书CN 102662713 A7/11页102所示的聚合结果,可将对应同一文件的磁盘数据信息按照其中的偏移是否相距预设范围而进行合并,其中,预设范围。

32、可以设定为1024,2056等,本实施例不对预设范围的具体大小进行限定,此处仅以预设范围为2056为例。则对于文件名为Example2.dll的两段磁盘数据信息,由于一段磁盘数据信息的偏移为0,另一段磁盘数据信息的偏移为4096,由此可见,两段磁盘数据信息的偏移相距4096,而该距离在预设范围2056之外,因而不对这两段磁盘数据信息进行合并。0098 但对于文件名为Example1.dll的两段磁盘数据信息,由于一段磁盘数据信息的偏移为0,另一段磁盘数据信息的偏移为1024,由此可见,两段磁盘数据信息的偏移相距1024,该距离在预设范围2056内,因此,可将其进行合并,合并之后的结果可如下面表。

33、3所示:0099 表30100 0101 经过上面的聚合及合并的过程,应用程序每次运行时都能得到如上表3所示结果,对于采集应用程序多次运行时缺页中断对应的磁盘数据信息,并对采集到的结果进行如上训练便得到预取数据信息,预取数据信息同磁盘数据信息一样,均用于记录应用程序很有可能需要通过IO访问获取的磁盘数据的信息。不同应用程序对应的预取数据信息也会不同,即使是同一应用程序,在不同场景下的预取数据信息也会有所不同,而该场景包括但不限于加载、运行等场景,如若需要确定应用程序在哪个场景下很有可能需要通过IO访问获取的磁盘数据,则在该场景下采集磁盘数据信息,并按照如上过程根据采集到的磁盘数据信息得到对应的。

34、预取数据信息,进而通过预取数据信息获取对应的磁盘数据即可。本实施例不对本实施例提供的方法所适用的场景进行限定。0102 可选地,由于应用程序每次运行时都可得到如上面表3所示的结果,如果直接将应用程序每次运行时得到的如上面表3所示的结果进行合并,并将合并后的结果作为得到的预取数据信息,则该预取数据信息所覆盖的磁盘数据的范围会比较广,然而有些磁盘数据并不是应用程序运行时时常用到的,仅仅是在某次采集过程中采集到该磁盘数据对应的磁盘数据信息而已,因而加载该类磁盘数据不仅对提高应用程序运行速度没有过多的帮助,反而还占用了系统资源,对此,为了在提高应用程序运行速度的前提下,进一步缩小预取数据信息所覆盖的磁盘数据的范围,以减少加载不必要的磁盘数据,导致浪费资源,本实施例提供的方法在通过上述过程得到合并后的磁盘数据信息时,可并不直接将合并后的所有磁盘数据信息均作为预取数据信息,而是在合并后的磁盘数据信息中再挑选出符合预取条件的磁盘数据信息,之后再将挑取出的磁盘数据信息作为预取数据信息。0103 对于预取条件,可通过判断采集到的磁盘数据信息是否达到预设次数来得到,例如,如果某段磁盘数据信息在10次采集过程中,仅被采集到了1次,则可得出该段磁盘数据说 明 书CN 102662713 A10。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1