CN104199692A - 一种获取应用程序的启动时间的方法、装置及终端 - Google Patents
一种获取应用程序的启动时间的方法、装置及终端 Download PDFInfo
- Publication number
- CN104199692A CN104199692A CN201410422439.3A CN201410422439A CN104199692A CN 104199692 A CN104199692 A CN 104199692A CN 201410422439 A CN201410422439 A CN 201410422439A CN 104199692 A CN104199692 A CN 104199692A
- Authority
- CN
- China
- Prior art keywords
- duration
- loading
- starting
- cpu
- constantly
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Abstract
本发明实施例公开了一种获取应用程序的启动时间的方法,包括:获取启动目标应用程序所需要启动的目标驱动、目标服务和目标进程;监控开机启动过程中加载的驱动和服务;根据各驱动的加载时刻,获取启动所述目标驱动所耗费的第一时长;根据所述目标服务的加载时长、占用的CPU时间和磁盘读写次数,获取启动所述目标服务所耗费的第二时长;根据所述目标进程占用的CPU时间和磁盘读写次数,获取启动所述目标进程所耗费的第三时长;确定所述目标应用程序的启动时间为所述第一时长、所述第二时长和所述第三时长之和。本发明实施例还公开了一种获取应用程序的启动时间的装置及终端。采用本发明实施例,可以提高获取应用程序的启动时间的准确度。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种获取应用程序的启动时间的方法、装置及终端。
背景技术
随着终端技术的发展,应用程序越来越多样化,计算机或手机等终端上运行的应用程序也越来越多。为方便用户使用应用程序时,计算机等终端能够快速响应用户操作,操作系统提供一种自启动机制,即可以将应用程序设置成随操作系统启动而自启动,待操作系统启动后,用户可直接操作已自启动的应用程序。
虽然,开机自启动的应用程序可以在用户操作时立马实现快速响应,但若开机自启动的应用程序在开机启动过程中耗时长,将导致终端的开机时间较长,用户不得不等待较长一段时间后才能正常操作终端,影响用户体验。目前,众多系统优化软件会提供启动优化、磁盘整理之类的功能用于提升开机速度,其最直接的表现就是将一些自启动的应用程序设置为禁止开机自启动,从而缩短开机时间。因此,获取开机自启动的应用程序在开机启动过程中所占用的开机时间对有效实现系统优化有着非常重要的意义。
然而,现有技术中,并没有一种合理地计算自启动应用程序在开机启动过程中所占用的开机时间的技术方案。
发明内容
本发明实施例提供一种获取应用程序的启动时间的方法、装置及终端,可以提高获取应用程序在开机启动过程中的启动时间的准确度。
本发明实施例提供一种获取应用程序的启动时间的方法,包括:
获取启动目标应用程序所需要启动的目标驱动、目标服务和目标进程,所述目标应用程序为开机自启动应用程序;
监控开机启动过程中加载的驱动和服务;
根据各驱动的加载时刻,获取启动所述目标驱动所耗费的第一时长;
根据所述目标服务的加载时长、占用的CPU时间和磁盘读写次数,获取启动所述目标服务所耗费的第二时长;
根据所述目标进程占用的CPU时间和磁盘读写次数,获取启动所述目标进程所耗费的第三时长;
确定所述目标应用程序的启动时间为所述第一时长、所述第二时长和所述第三时长之和。
相应地,本发明实施例还提供一种获取应用程序的启动时间的装置,包括:
第一获取模块,用于获取启动目标应用程序所需要启动的目标驱动、目标服务和目标进程,所述目标应用程序为开机自启动应用程序;
监控模块,用于监控开机启动过程中加载的驱动和服务;
第二获取模块,用于根据各驱动的加载时刻,获取启动所述目标驱动所耗费的第一时长;
第三获取模块,用于根据所述目标服务的加载时长、占用的CPU时间和磁盘读写次数,获取启动所述目标服务所耗费的第二时长;
第四获取模块,用于根据所述目标进程占用的CPU时间和磁盘读写次数,获取启动所述目标进程所耗费的第三时长;
确定模块,用于确定所述目标应用程序的启动时间为所述第一时长、所述第二时长和所述第三时长之和。
相应地,本发明实施例还提供一种终端,包括如上所述的获取应用程序的启动时间的装置。
实施本发明实施例,根据各驱动的加载时刻,获取启动应用程序所需的目标驱动所耗费的第一时长;根据启动应用程序所需的目标服务的加载时长、占用的CPU时间和磁盘读写次数,获取启动目标服务所耗费的第二时长;根据启动应用程序所需的目标进程占用的CPU时间和磁盘读写次数,获取启动目标进程所耗费的第三时长;确定该应用程序的启动时间为第一时长、第二时长和第三时长之和。采用本发明实施例,可以提高获取应用程序在开机启动过程中的启动时间的准确度。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种获取应用程序的启动时间的方法的流程示意图;
图2是本发明实施例提供的一种获取应用程序的启动时间的方法的另一流程示意图;
图3是本发明实施例提供的一种获取第二时长的方法的流程示意图;
图4是本发明实施例提供的一种获取第三时长的方法的流程示意图;
图5是本发明实施例提供的一种获取开机启动完毕的第三时刻的方法的流程示意图;
图6是本发明实施例提供的一种获取开机启动完毕的第三时刻的方法的另一流程示意图;
图7是本发明实施例提供的一种获取应用程序的启动时间的装置的结构示意图;
图8是本发明实施例提供的一种获取应用程序的启动时间的装置的另一结构示意图;
图9是本发明实施例提供的一种终端的结构示意图;
图10是本发明实施例提供的一种获取应用程序的启动时间的装置的又一结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供了一种获取应用程序的启动时间的方法、装置及终端,通过分别获取自启动应用程序在开机启动过程中启动所需要的驱动、服务和进程所耗费的时长来计算该应用程序的启动时间。采用本发明实施例,可以提高获取应用程序在开机启动过程中的启动时间的准确度。下面将结合附图1-附图10对本发明实施例提供的一种获取应用程序的启动时间的方法、装置及终端分别进行详细介绍。
请参见图1,图1是本发明实施例提供的一种获取应用程序的启动时间的方法的流程示意图,在本发明实施例中,该方法可以包括以下步骤。
S101:获取启动目标应用程序所需要启动的目标驱动、目标服务和目标进程,所述目标应用程序为开机自启动应用程序。
本发明实施例中,所述方法可以是应用在计算机、手机等设备的优化类软件中,为方便说明,本发明实施例以计算机为例。但应当说明的是,本发明实施例并不限于应用在计算机中,凡是可以实施本发明实施例的设备均属于本发明实施例所需保护的范围。
随着应用程序的功能多样化,一些应用程序在启动过程中不仅要加载服务和进程,而且还可能会加载一些驱动,例如:杀毒软件、安全卫士、加密软件、云盘等应用软件。由于加载驱动所占用的时长一般较长,因此,这部分时间不应该忽略不计,而应当计算在自启动应用程序的启动时间内。本发明实施例中,获取启动目标应用程序所需要启动的目标驱动、目标服务和目标进程,其中,目标应用程序是指已设置为开机自启动的应用程序。当然,若启动目标应用程序没有需要启动的驱动,则获取到启动目标驱动所耗费的时长为0。
S102:监控开机启动过程中加载的驱动和服务。
通常,在开机启动过程中,首先检测硬件是否满足开机要求,若满足,则加载操作系统内核;系统内核加载好后,开始加载驱动程序,其中,所述驱动程序包括硬件或设备的驱动程序和应用程序的驱动程序;驱动程序加载完后,开始加载服务和进程,并执行服务和进程需要执行的部分操作。考虑到驱动和服务的加载时长较长,本发明实施例中,监控开机启动过程中加载的驱动和服务,记录开机启动过程中所加载的各驱动和各服务的加载时刻。例如:可以是预先编写一个驱动程序,该驱动程序的功能是监控开机启动过程中各驱动、服务、进程的加载动作,并将该驱动程序设置为在开机启动过程中最先启动,从而,监控开机启动过程。具体的,本发明实施例不作限制。
S103:根据各驱动的加载时刻,获取启动所述目标驱动所耗费的第一时长。
由于在驱动加载阶段,系统执行任务时属于单任务执行过程,因此,系统按顺序先后加载各驱动,由于驱动加载完后无需执行相关的操作,因此,启动驱动所耗费的时长可以是直接根据相邻的加载时刻确定。本发明实施例中,通过各驱动的加载时刻,获取启动目标驱动所耗费的第一时长。
S104:根据所述目标服务的加载时长、占用的CPU时间和磁盘读写次数,获取启动所述目标服务所耗费的第二时长。
在服务启动阶段,由于加载服务需耗费一段时长,且服务加载完后,可能会占用CPU去执行一些操作,如从磁盘读写数据等,因此,在该阶段中,启动服务所耗费的时长不仅与加载该服务所耗费的时长有关,而且还与该服务占用的CPU时间和磁盘读写次数有关。本发明实施例中,根据加载目标服务所耗费的加载时长、占用的CPU时间和磁盘读写次数,获取启动目标服务所耗费的第二时长。
S105:根据所述目标进程占用的CPU时间和磁盘读写次数,获取启动所述目标进程所耗费的第三时长。
通常,一个服务或多个服务对应一个进程,在进程启动阶段,加载进程所耗费的时长很短,因为进程对应的服务已在服务启动阶段已加载完成,因此,加载进程所耗费的时长可忽略不计。然而,进程加载完后,需占用CPU去执行该进程的一些相关操作,这部分时间应考虑在应用程序的启动时间内。本发明实施例中,根据目标进程占用的CPU时间和磁盘读写次数,获取启动目标进程所耗费的第三时长。
S106:确定所述目标应用程序的启动时间为所述第一时长、所述第二时长和所述第三时长之和。
例如:假设第一时长为0.2秒,第二时长为0.3秒,第三时长为0.5秒,则目标应用程序的启动时间为1秒。
在本发明实施例描述的获取应用程序的启动时间的方法中,根据各驱动的加载时刻,获取启动应用程序所需的目标驱动所耗费的第一时长;根据启动应用程序所需的目标服务的加载时长、占用的CPU时间和磁盘读写次数,获取启动目标服务所耗费的第二时长;根据启动应用程序所需的目标进程占用的CPU时间和磁盘读写次数,获取启动目标进程所耗费的第三时长;确定该应用程序的启动时间为第一时长、第二时长和第三时长之和。采用本发明实施例,可以提高获取应用程序在开机启动过程中的启动时间的准确度。
请参见图2,图2是本发明实施例提供的一种获取应用程序的启动时间的方法的另一流程示意图,在本发明实施例中,该方法可以包括以下步骤。
S201:获取启动目标应用程序所需要启动的目标驱动、目标服务和目标进程,所述目标应用程序为开机自启动应用程序。
随着应用程序的功能多样化,一些应用程序在启动过程中不仅要加载服务和进程,而且还可能会加载一些驱动,例如:杀毒软件、安全卫士、加密软件、云盘等应用软件。由于加载驱动所占用的时长一般较长,因此,这部分时间不应该忽略不计,而应当计算在自启动应用程序的启动时间内。本发明实施例中,获取启动目标应用程序所需要启动的目标驱动、目标服务和目标进程,其中,目标应用程序是指已设置为开机自启动的应用程序。为方便说明,假设启动目标应用程序A需启动2个驱动。
S202:监控开机时刻到启动第一预设进程的第一时刻的第一时间段内所加载的驱动和第一时刻到启动第二预设进程的第二时刻的第二时间段内所加载的服务。
本发明实施例中,监控开机启动过程中加载的驱动和服务,通常,可将开机启动过程划分为3个阶段:从开机时刻到启动第一预设进程的第一时刻的第一时间段为第一阶段,其中,启动第一预设进程表示启动用户登录程序;从第一时刻到启动第二预设进程的第二时刻的第二时间段为第二阶段,其中,启动第二预设进程表示启动桌面显示程序;从第二时刻到开机启动完毕的第三时刻的第三时间段为第三阶段。在第一阶段中,主要是进行硬件检测,启动和加载系统内核,加载驱动程序;在第二阶段中,主要是加载服务,包括系统服务和应用程序所对应的服务;在第三阶段中,主要是加载进程,以及服务和进程占用CPU执行一些操作。本发明实施例中,监控开机时刻到启动第一预设进程的第一时刻的第一时间段内所加载的驱动,及第一时刻到启动第二预设进程的第二时刻的第二时间段内所加载的服务,记录驱动的加载时刻和服务的加载时长。
S203:根据所述第一时间段内所加载的驱动的加载时刻,将所述驱动的加载时刻按时间先后顺序进行升序排列。
本发明实施例中,根据第一时间段内所加载的驱动的加载时刻,将驱动的加载时刻按时间先后顺序进行升序排列。例如:假设第一时间段内先后加载了n个驱动,为方便描述,将n个驱动表示为{P1;P2;P3,…,Pn},获取该时间段内加载的每个驱动的加载时刻,将驱动的加载时刻按时间先后顺序进行升序排列,为方便描述,假设该n个驱动的加载时刻按时间先后顺序排列后表示为{t(P1);t(P2);t(P3),…,t(Pn)}。
S204:从升序排列的加载时刻中选取所述目标驱动的加载时刻和所述目标驱动的加载时刻的下一个加载时刻。
例如:假设目标应用程序A的2个驱动分别为目标驱动P2和目标驱动P4,则从升序排列的加载时刻中选取目标驱动的加载时刻和目标驱动的加载时刻的下一个加载时刻,可知,目标驱动P2的加载时刻为t(P2),目标驱动P2的加载时刻的下一个加载时刻为t(P3);目标驱动P4的加载时刻为t(P4),目标驱动P4的加载时刻的下一个加载时刻为t(P5)。
S205:获取启动所述目标驱动所耗费的第一时长为所述下一个加载时刻与所述目标驱动的加载时刻的时间差。
可知:启动目标驱动P2所耗费的时长为t(P3)-t(P2),启动目标驱动P4所耗费的时长为t(P5)-t(P4)。因此,可知目标应用程序A中启动目标驱动所耗费的第一时长为t(P3)-t(P2)+t(P5)-t(P4)。
值得说明的是,本发明实施例中,若启动目标应用程序只需要启动一个目标驱动,则该目标应用程序中启动目标驱动所耗费的第一时长为该目标驱动的加载时刻的下一个加载时刻与该目标驱动的加载时刻的时间差;若目标应用程序包括多个目标驱动,则该目标应用程序中启动目标驱动所耗费的时长为启动这多个目标驱动分别所耗费的时长的总和。
若目标驱动为第一时间段内最后加载的一个驱动,则可进一步监控位于该驱动后第一个被加载的系统进程或系统服务的加载时刻,从而根据该进程或服务的加载时刻与加载目标驱动的加载时刻的时间差获取该目标驱动的加载时长。例如:所述第一个被加载的进程或服务可以是smss.exe,该进程为会话管理子系统,用于初始化系统变量。也可以是,预先编写一个附加驱动,将该附加驱动设置为在第一时间段内最后加载,从而,目标应用程序中的目标驱动总是位于该附加驱动之前加载,根据各驱动的加载时刻,获取加载目标驱动所耗费的时长。
S206:根据所述目标服务的加载时长、占用的CPU时间和磁盘读写次数,获取启动所述目标服务所耗费的第二时长。
在第二阶段,由于加载服务需耗费一段时长,且服务加载完后,可能仍会占用CPU去执行一些操作,如从磁盘读写数据等。因此,在该阶段中,启动服务所耗费的时长不仅与加载该服务所耗费的时长有关,而且还与该服务占用的CPU时间和磁盘读写次数有关。本发明实施例中,根据加载目标服务所耗费的加载时长、占用的CPU时间和磁盘读写次数,获取启动目标服务所耗费的第二时长,其中,加载目标服务所耗费的加载时长根据目标服务的加载时刻和加载目标服务的下一个服务的加载时刻确定。
S207:根据所述目标进程占用的CPU时间和磁盘读写次数,获取启动所述目标进程所耗费的第三时长。
通常,一个服务或多个服务对应一个进程,在进程启动阶段,加载进程所耗费的时长很短,因为进程对应的服务已在服务启动阶段已加载完成,因此,加载进程所耗费的时长可忽略不计。然而,进程加载完后,需占用CPU去执行该进程的一些相关操作,由于系统进行磁盘读写操作基本上都是异步的,因此比较耗时;执行磁盘读写操作时,系统会让该程序的进程等待,磁盘读写操作会由系统异步去执行。因此一个进程的磁盘读写次数越多,所占用的启动时间越长,就会越拖慢系统,而这部分时间无法反映在系统计算的CPU时间这个指标上,因此,需要引入磁盘读写次数作为一个指标。具体的,根据目标进程在第三时间段内所占用的CPU时间和磁盘读写次数进行加权计算启动目标进程所耗费的第三时长。
S208:确定所述目标应用程序的启动时间为所述第一时长、所述第二时长和所述第三时长之和。
在本发明实施例描述的获取应用程序的启动时间的方法中,根据各驱动的加载时刻,获取启动应用程序所需的目标驱动所耗费的第一时长;根据启动应用程序所需的目标服务的加载时长、占用的CPU时间和磁盘读写次数,获取启动目标服务所耗费的第二时长;根据启动应用程序所需的目标进程占用的CPU时间和磁盘读写次数,获取启动目标进程所耗费的第三时长;确定该应用程序的启动时间为第一时长、第二时长和第三时长之和。采用本发明实施例,可以提高获取应用程序在开机启动过程中的启动时间的准确度。
值得说明的是,在上述实施例中,根据所述目标服务的加载时长、占用的CPU时间和磁盘读写次数,获取启动所述目标服务所耗费的第二时长的方法可以如图3所示,图3是本发明实施例提供的一种获取第二时长的方法的流程示意图,该方法可以包括以下步骤。
S301:获取目标服务在第二时间段内所耗费的加载时长,所述第二时间段为启动第一预设进程的第一时刻到启动第二预设进程的第二时刻的时间段。
其中,启动第一预设进程表示启动用户登录程序,启动第二预设进程表示启动桌面显示程序。例如:第一预设进程可以设置为winlogon.exe进程,该进程用于管理用户登录和退出;第二预设进程可以设置为explorer.exe进程,该进程是Windows程序管理器或者Windows资源管理器,它用于管理Windows图形壳,包括开始菜单、任务栏、桌面和文件管理,删除该程序会导致Windows图形界面无法使用。在开机启动过程中,所有服务均由服务管理程序(services.exe)采用串行方式加载,每加载一个服务,都会等待该服务返回一个成功消息后,才会开始启动下一个服务;因此,这个等待时间就是服务管理程序加载该服务所耗费的加载时间。本发明实施例中,获取目标服务在第二时间段内所耗费的加载时长。
值得说明的是,本发明实施例中,若启动目标应用程序只需要启动一个目标服务,则该目标应用程序中加载目标服务所耗费的加载时长为该目标服务的加载时长;若启动目标应用程序需要启动多个目标服务,则该目标应用程序中加载目标服务所耗费的加载时长为加载这多个目标服务分别所耗费的加载时长的总和。
S302:获取目标服务在所述第二时刻到开机启动完毕的第三时刻的第三时间段内所占用的CPU时间和磁盘读写次数。
在第二时刻到开机启动完毕的第三时刻的第三时间段内,主要是执行服务和进程所需要执行的一些操作,如软件初始化、检测是否需要升级、更新病毒库等等。因此,第三时间段的时长主要由占用CPU的时间和CPU的空闲时间组成,通常,在第三时间段内系统很忙,CPU的空闲时间基本上都是由等待磁盘读写操作所致。因此,本发明实施例中,获取目标服务在第二时刻到开机启动完毕的第三时刻的第三时间段内所占用的CPU时间和磁盘读写次数,根据该目标服务在第三时间段内所占用的CPU时间和磁盘读写次数,获取目标服务加载完成后的后续运行时间,启动目标服务所耗费的第二时长为加载该目标服务所耗费的加载时长与该目标服务加载完成后的后续运行时间之和。
S303:根据所述目标服务的加载时长、占用的CPU时间和磁盘读写次数,获取启动所述目标服务所耗费的第二时长。
本发明实施例中,假设加载目标服务所耗费的加载时长为T21,目标服务在第三时间段内所占用的CPU时间为T22,所占用的磁盘读写次数为N22,将目标服务在第三时间段内所占用的CPU时间T22和磁盘读写次数N22进行加权,计算目标服务在第三时间段内的后续运行时间,从而,可确定启动所述目标服务所耗费的第二时长为:
T2=T21+(a*T22/Tcpu+(1-a)*N22/NIO)*t;
其中,T2为启动目标服务所耗费的第二时长;T21为所述目标服务在所述第二时间段内所耗费的加载时长;a为加权因子,0≤a≤1;T22和N22分别为所述目标服务在所述第三时间段内所占用的CPU时间和磁盘读写次数;t为所述第三时刻与所述第二时刻的时间差;Tcpu和NIO分别为所述第三时间段内占用CPU的总时间和磁盘读写次数的总次数。
值得说明的是,在上述实施例中,根据所述目标进程占用的CPU时间和磁盘读写次数,获取启动所述目标进程所耗费的第三时长的方法可以如图4所示,图4是本发明实施例提供的一种获取第三时长的方法的流程示意图,该方法可以包括以下步骤。
S401:获取目标进程在启动第二预设进程的第二时刻到开机启动完毕的第三时刻的第三时间段内所占用的CPU时间和磁盘读写次数,所述启动第二预设进程表示启动桌面显示程序。
在第二时刻到开机启动完毕的第三时刻的第三时间段内,主要是执行服务和进程所需要执行的一些操作,如软件初始化、检测是否需要升级、更新病毒库等等,其中,每个进程都会有很多的磁盘读写操作。第三时间段的时长主要由占用CPU的时间和CPU的空闲时间组成,通常,在第三时间段内系统很忙,CPU的空闲时间基本上都是由等待磁盘读写操作所致。本发明实施例中,获取目标进程在第二时刻到开机启动完毕的第三时刻的第三时间段内所占用的CPU时间和磁盘读写次数,根据该目标进程在第三时间段内所占用的CPU时间和磁盘读写次数,获取启动目标进程所耗费的第三时长。
S402:根据所述目标进程占用的CPU时间和磁盘读写次数,获取启动所述目标进程所耗费的第三时长。
本发明实施例中,假设目标进程在第三时间段内所占用的CPU时间为T33,所占用的磁盘读写次数为N33,根据目标进程在第三时间段内所占用的CPU时间T33和磁盘读写次数N33进行加权,计算启动目标进程所耗费的第三时长。具体的,可确定启动所述目标进程所耗费的第三时长为:
T3=(a*T33/Tcpu+(1-a)*N33/NIO)*t;
其中,T3为启动目标进程所耗费的第三时长;a为加权因子,0≤a≤1;T33和N33分别为所述目标进程在所述第三时间段内所占用的CPU时间和磁盘读写次数;t为所述第三时刻与所述第二时刻的时间差;Tcpu和NIO分别为所述第三时间段内占用CPU的总时间和磁盘读写次数的总次数。值得说明的是,获取第三时长的加权因子与获取第二时长的加权因子可以相同,也可以不相同,具体的,本发明实施例不作限制。
值得说明的是,在上述实施例中所指的第二时刻到开机启动完毕的第三时刻的第三时间段内,需识别开机启动是否完毕,从而,获取开机启动完毕的第三时刻。本发明实施例中,监控开机启动完毕的方法可以是启动第二预设进程后,通过检测在预设时间内是否有新的进程被启动,和/或CPU使用率是否较低,和/或磁盘读写次数是否较少来识别开机启动是否完毕。具体的,本发明实施例不作限制。但优选的,获取开机启动完毕的第三时刻的方法可以如图5所示,图5是本发明实施例提供的一种获取开机启动完毕的第三时刻的方法的流程示意图,该方法可以包括以下步骤。
S501:监控第二预设进程的启动操作,并获取启动所述第二预设进程的第二时刻。
通常,启动桌面显示程序是通过启动某个进程来完成该功能的,为方便描述,将该进程称为第二预设进程。本发明实施例中,监控第二预设进程的启动操作,其中,启动第二预设进程表示启动桌面显示程序,当监控到第二预设进程的启动操作时,获取启动第二预设进程的第二时刻。
S502:检测第一预设时长内是否已启动新的进程。
监控到启动第二预设进程时,获取启动该第二预设进程的第二时刻,从第二时刻开始,检测第一预设时长内是否已启动新的进程,若所述第一预设时长内启动了新的进程,说明开机启动未完毕,则继续执行步骤S502,检测下一个第一预设时长内是否已启动新的进程,直至其中某个第一预设时长内没有启动新的进程;若检测到第一预设时长内没有启动新的进程,执行步骤S503,通过CPU使用率来识别开机是否启动完毕。
S503:检测所述第一预设时长内的CPU使用率是否低于第一预设值。
若检测到所述第一预设时长内的CPU使用率低于第一预设值,而该第一预设时长内又没有启动新的进程,因此,可以认为开机启动完毕,于是执行步骤S506,以获取开机启动完毕的第三时刻。若检测到所述第一预设时长内的CPU使用率不低于第一预设值,虽然该第一预设时长内没有启动新的进程,但CPU使用率仍然较高,认为开机启动未完毕,于是执行步骤S504,经过更长的预设时长后再识别开机启动是否完毕,提高获取开机时间的准确度。
值得说明的是,还可以是若检测到第一预设时长内的CPU使用率低于第一预设值时,进一步检测第一预设时长内的磁盘读写次数是否低于预设次数,若是,则认为开机启动完毕;若否,则继续等待下一个第一预设时长内是否满足没有启动新的进程、CPU使用率低于第一预设值和磁盘读写次数低于预设次数。具体的,本发明实施例不作限制。
S504:检测第二预设时长内是否已启动新的进程。
若第一预设时长内的CPU使用率不低于所述第一预设值,则继续监测从当前时刻开始的第二预设时长内是否已启动新的进程,若在第二预设时长内没有启动新的进程,执行步骤S505,根据第二预设时长内的CPU使用率进一步识别开机启动是否完毕,提高获取启动时间的准确度。若第二预设时长内启动了新的进程,则可以认为开机启动未完毕,继续执行步骤S504,继续等待下一个第一预设时长或第二预设时长后再采用上述方法识别是否开机启动完毕。
S505:检测所述第二预设时长内的CPU使用率是否低于第二预设值,所述第二预设值大于所述第一预设值。
若检测到第一预设时长内没有启动新的进程、第一预设时长内的CPU使用率不低于第一预设值,且第二预设时长内也没有启动新的进程,检测第二预设时长内的CPU使用率是否低于第二预设值,若低于第二预设值,说明开机启动完毕,执行步骤506;若不低于第二预设值,说明开机启动未完毕,则继续执行步骤S505。值得说明的是,所述第二预设值大于所述第一预设值。例如:第一预设值为20%,第二预设值为50%。
S506:获取当前时刻为开机启动完毕的第三时刻。
若检测到第一预设时长内没有启动新的进程,且第一预设时长内的CPU使用率低于第一预设值;或者第一预设时长内的CPU使用率不低于第一预设值,但第二预设时长内没有启动新的进程,且第二预设时长内的CPU使用率低于第二预设值,则说明开机启动完毕。获取当前时刻为开机启动完毕的第三时刻。
值得说明的是,在上述实施例中的第三时间段内,获取开机启动完毕的第三时刻,还可以如图6所示,图6是本发明实施例提供的一种获取开机启动完毕的第三时刻的方法的另一流程示意图,该方法可以包括以下步骤。
S601:监控第二预设进程的启动操作,并获取启动所述第二预设进程的第二时刻。
所述启动第二预设进程表示启动桌面显示程序,本发明实施例中,所述第二预设进程可以为explorer.exe进程,explorer.exe是Windows程序管理器或者Windows资源管理器,它用于管理Windows图形壳,包括开始菜单、任务栏、桌面和文件管理,删除该程序会导致Windows图形界面无法使用。
S602:检测第三预设时长内的CPU使用率是否低于第三预设值。
本发明实施例中,第三预设时长仅用于区分第一预设时长和第二预设时长,监控到启动所述第二预设进程时,获取启动第二预设进程的第二时刻,从第二时刻开始,检测第三预设时长内的CPU使用率是否低于第三预设值,若低于第三预设值,执行步骤S603;若不低于第三预设值,说明开机启动未完毕,则继续执行步骤S602,检测下一个第三预设时长内的CPU使用率是否低于第三预设值,直至其中某个第三预设时长内的CPU使用率低于第三预设值。通常,第三预设值小于上述方案中所描述的第一预设值,例如:假设上述方案中第一预设值为20%,第二预设值为50%,则第三预设值可以为10%。
S603:若所述CPU使用率低于所述第三预设值,获取当前时刻为开机启动完毕的第三时刻。
本发明实施例中,可准确识别出开机启动完毕的第三时刻,从而提高获取应用程序的启动时间的准确度。
下面为本发明装置实施例,本发明装置实施例与本发明方法实施例属于同一构思,用于执行本发明方法实施例中描述的方法。为了便于说明,本发明装置实施例仅示出与本发明装置实施例相关的部分,具体技术细节未揭示的,请参照本发明方法实施例的描述,此处不再一一赘述。
请参见图7,图7是本发明实施例提供的一种获取应用程序的启动时间的装置的结构示意图,在本发明实施例中,该装置可以包括:第一获取模块101、监控模块102、第二获取模块103、第三获取模块104、第四获取模块105和确定模块106。
第一获取模块101,用于获取启动目标应用程序所需要启动的目标驱动、目标服务和目标进程,所述目标应用程序为开机自启动应用程序。
监控模块102,用于监控开机启动过程中加载的驱动和服务。
第二获取模块103,用于根据各驱动的加载时刻,获取启动所述目标驱动所耗费的第一时长。
第三获取模块104,用于根据所述目标服务的加载时长、占用的CPU时间和磁盘读写次数,获取启动所述目标服务所耗费的第二时长。
第四获取模块105,用于根据所述目标进程占用的CPU时间和磁盘读写次数,获取启动所述目标进程所耗费的第三时长。
确定模块106,用于确定所述目标应用程序的启动时间为所述第一时长、所述第二时长和所述第三时长之和。
在本发明实施例描述的获取应用程序的启动时间的装置中,根据各驱动的加载时刻,获取启动应用程序所需的目标驱动所耗费的第一时长;根据启动应用程序所需的目标服务的加载时长、占用的CPU时间和磁盘读写次数,获取启动目标服务所耗费的第二时长;根据启动应用程序所需的目标进程占用的CPU时间和磁盘读写次数,获取启动目标进程所耗费的第三时长;确定该应用程序的启动时间为第一时长、第二时长和第三时长之和。采用本发明实施例,可以提高获取应用程序在开机启动过程中的启动时间的准确度。
请参见图8,图8是本发明实施例提供的一种获取应用程序的启动时间的装置的另一结构示意图,在本发明实施例中,该装置可以包括:第一获取模块201、监控模块202、第二获取模块203、第三获取模块204、第四获取模块205、确定模块206和第五获取模块207。
第一获取模块201,用于获取启动目标应用程序所需要启动的目标驱动、目标服务和目标进程,所述目标应用程序为开机自启动应用程序。
监控模块202,用于监控开机启动过程中加载的驱动和服务。
第二获取模块203,用于根据各驱动的加载时刻,获取启动所述目标驱动所耗费的第一时长。
第三获取模块204,用于根据所述目标服务的加载时长、占用的CPU时间和磁盘读写次数,获取启动所述目标服务所耗费的第二时长。
第四获取模块205,用于根据所述目标进程占用的CPU时间和磁盘读写次数,获取启动所述目标进程所耗费的第三时长。
确定模块206,用于确定所述目标应用程序的启动时间为所述第一时长、所述第二时长和所述第三时长之和。
第五获取模块207,用于获取开机启动完毕的第三时刻。
优选的,监控模块202具体用于:
监控开机时刻到启动第一预设进程的第一时刻的第一时间段内所加载的驱动,所述启动第一预设进程表示启动用户登录程序;
监控所述第一时刻到启动第二预设进程的第二时刻的第二时间段内所加载的服务,所述启动第二预设进程表示启动桌面显示程序。
优选的,第二获取模块203具体用于:
根据所述第一时间段内所加载的驱动的加载时刻,将所述驱动的加载时刻按时间先后顺序进行升序排列;
从升序排列的加载时刻中选取所述目标驱动的加载时刻和所述目标驱动的加载时刻的下一个加载时刻;
获取启动所述目标驱动所耗费的第一时长为所述下一个加载时刻与所述目标驱动的加载时刻的时间差。
优选的,第三获取模块204具体用于:
获取所述目标服务在所述第二时间段内所耗费的加载时长;
获取所述目标服务在所述第二时刻到开机启动完毕的第三时刻的第三时间段内所占用的CPU时间和磁盘读写次数。
优选的,第三获取模块204还具体用于:
确定启动所述目标服务所耗费的第二时长为:
T2=T21+(a*T22/Tcpu+(1-a)*N22/NIO)*t;
其中,T21为所述目标服务在所述第二时间段内所耗费的加载时长;a为加权因子,0≤a≤1;T22和N22分别为所述目标服务在所述第三时间段内所占用的CPU时间和磁盘读写次数;t为所述第三时刻与所述第二时刻的时间差;Tcpu和NIO分别为所述第三时间段内占用CPU的总时间和磁盘读写次数的总次数。
优选的,第四获取模块205具体用于:
获取所述目标进程在所述第三时间段内所占用的CPU时间和磁盘读写次数。
优选的,第四获取模块205还具体用于:
确定启动所述目标进程所耗费的第三时长为:
T3=(a*T33/Tcpu+(1-a)*N33/NIO)*t;
其中,a为加权因子,0≤a≤1;T33和N33分别为所述目标进程在所述第三时间段内所占用的CPU时间和磁盘读写次数;t为所述第三时刻与所述第二时刻的时间差;Tcpu和NIO分别为所述第三时间段内占用CPU的总时间和磁盘读写次数的总次数。
优选的,第五获取模块207具体用于:
监控到启动所述第二预设进程时,检测第一预设时长内是否已启动新的进程;
若否,检测所述第一预设时长内的CPU使用率是否低于第一预设值;
若所述CPU使用率低于所述第一预设值,获取当前时刻为开机启动完毕的第三时刻。
优选的,第五获取模块207还具体用于:
若所述第一预设时长内未启动新的进程,所述第一预设时长内的所述CPU使用率不低于所述第一预设值,检测第二预设时长内是否已启动新的进程;
若否,检测所述第二预设时长内的CPU使用率是否低于第二预设值,所述第二预设值大于所述第一预设值;
若所述CPU使用率低于所述第二预设值,执行所述获取当前时刻为开机启动完毕的第三时刻的步骤。
优选的,第五获取模块207还具体用于:
监控到启动所述第二预设进程时,检测第三预设时长内的CPU使用率是否低于第三预设值;
若所述CPU使用率低于所述第三预设值,获取当前时刻为开机启动完毕的第三时刻。
在本发明实施例描述的获取应用程序的启动时间的装置中,根据各驱动的加载时刻,获取启动应用程序所需的目标驱动所耗费的第一时长;根据启动应用程序所需的目标服务的加载时长、占用的CPU时间和磁盘读写次数,获取启动目标服务所耗费的第二时长;根据启动应用程序所需的目标进程占用的CPU时间和磁盘读写次数,获取启动目标进程所耗费的第三时长;确定该应用程序的启动时间为第一时长、第二时长和第三时长之和。采用本发明实施例,可以提高获取应用程序在开机启动过程中的启动时间的准确度。
请参见图9,图9是本发明实施例提供的一种终端的结构示意图,在本发明实施例中,终端10包括如上所述的获取应用程序的启动时间的装置。所述终端可以是计算机,但并不限于计算机,具体的,本发明实施例不作限制。
值得说明的是,终端10包括如上所述的任一种获取应用程序的启动时间的装置,为方便说明,以其中一种获取应用程序的启动时间的装置来进行说明。终端获取启动目标应用程序所需要启动的目标驱动、目标服务和目标进程,所述目标应用程序为开机自启动应用程序;监控开机启动过程中加载的驱动和服务;根据各驱动的加载时刻,获取启动所述目标驱动所耗费的第一时长;根据所述目标服务的加载时长、占用的CPU时间和磁盘读写次数,获取启动所述目标服务所耗费的第二时长;根据所述目标进程占用的CPU时间和磁盘读写次数,获取启动所述目标进程所耗费的第三时长;确定所述目标应用程序的启动时间为所述第一时长、所述第二时长和所述第三时长之和。
在本发明实施例描述的终端中,根据各驱动的加载时刻,获取启动应用程序所需的目标驱动所耗费的第一时长;根据启动应用程序所需的目标服务的加载时长、占用的CPU时间和磁盘读写次数,获取启动目标服务所耗费的第二时长;根据启动应用程序所需的目标进程占用的CPU时间和磁盘读写次数,获取启动目标进程所耗费的第三时长;确定该应用程序的启动时间为第一时长、第二时长和第三时长之和。采用本发明实施例,可以提高获取应用程序在开机启动过程中的启动时间的准确度。
请参见图10,图10是本发明实施例提供的一种获取应用程序的启动时间的装置的又一结构示意图,用于执行本发明实施例公开的获取应用程序的启动时间的方法,该装置可以包括:至少一个处理器301,例如CPU,至少一个网络接口304或者其他用户接口303,存储器305,至少一个通信总线302。通信总线302用于实现这些组件之间的连接通信。其中,用户接口303可选的可以包括USB接口以及其他标准接口、有线接口。网络接口304可选的可以包括Wi-Fi接口以及其他无线接口。存储器305可能包含高速RAM存储器,也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。存储器305可选的可以包含至少一个位于远离前述处理器301的存储装置。如图9所示,作为一种计算机存储介质的存储器305中可以包括操作系统3051及应用程序3052。
在一些实施方式中,存储器305存储了如下的元素,可执行模块或者数据结构,或者他们的子集,或者他们的扩展集:
操作系统3051,包含各种系统程序,用于实现各种基础业务以及处理基于硬件的任务;
应用程序3052,包含目标网络数据的数据分块参数的设置程序、目标数据块的划分程序、目标数据块与数据库中的数据块的比较程序以及目标数据块的删除程序等各种应用程序,用于实现各种应用业务。
具体地,处理器301用于调用存储器305中存储的程序,执行以下操作:
获取启动目标应用程序所需要启动的目标驱动、目标服务和目标进程,所述目标应用程序为开机自启动应用程序;
监控开机启动过程中加载的驱动和服务;
根据各驱动的加载时刻,获取启动所述目标驱动所耗费的第一时长;
根据所述目标服务的加载时长、占用的CPU时间和磁盘读写次数,获取启动所述目标服务所耗费的第二时长;
根据所述目标进程占用的CPU时间和磁盘读写次数,获取启动所述目标进程所耗费的第三时长;
确定所述目标应用程序的启动时间为所述第一时长、所述第二时长和所述第三时长之和。
在另一种实施例中,处理器301执行所述监控开机启动过程中加载的驱动和服务的操作,包括执行以下操作:
监控开机时刻到启动第一预设进程的第一时刻的第一时间段内所加载的驱动,所述启动第一预设进程表示启动用户登录程序;
监控所述第一时刻到启动第二预设进程的第二时刻的第二时间段内所加载的服务,所述启动第二预设进程表示启动桌面显示程序。
在另一种实施例中,处理器301执行所述根据各驱动的加载时刻,获取启动所述目标驱动所耗费的第一时长的操作,包括执行以下操作:
根据所述第一时间段内所加载的驱动的加载时刻,将所述驱动的加载时刻按时间先后顺序进行升序排列;
从升序排列的加载时刻中选取所述目标驱动的加载时刻和所述目标驱动的加载时刻的下一个加载时刻;
获取启动所述目标驱动所耗费的第一时长为所述下一个加载时刻与所述目标驱动的加载时刻的时间差。
在另一种实施例中,处理器301执行所述根据所述目标服务的加载时长、占用的CPU时间和磁盘读写次数,获取启动所述目标服务所耗费的第二时长的操作之前,还包括执行以下操作:
获取所述目标服务在所述第二时间段内所耗费的加载时长;
获取所述目标服务在所述第二时刻到开机启动完毕的第三时刻的第三时间段内所占用的CPU时间和磁盘读写次数。
在另一种实施例中,处理器301执行所述根据所述目标服务的加载时长、占用的CPU时间和磁盘读写次数,获取启动所述目标服务所耗费的第二时长的操作,包括执行以下操作:
确定启动所述目标服务所耗费的第二时长为:
T2=T21+(a*T22/Tcpu+(1-a)*N22/NIO)*t;
其中,T21为所述目标服务在所述第二时间段内所耗费的加载时长;a为加权因子,0≤a≤1;T22和N22分别为所述目标服务在所述第三时间段内所占用的CPU时间和磁盘读写次数;t为所述第三时刻与所述第二时刻的时间差;Tcpu和NIO分别为所述第三时间段内占用CPU的总时间和磁盘读写次数的总次数。
在另一种实施例中,处理器301执行所述根据所述目标进程占用的CPU时间和磁盘读写次数,获取启动所述目标进程所耗费的第三时长的操作之前,还包括执行以下操作:
获取所述目标进程在所述第三时间段内所占用的CPU时间和磁盘读写次数。
在另一种实施例中,处理器301执行所述根据所述目标进程占用的CPU时间和磁盘读写次数,获取启动所述目标进程所耗费的第三时长的操作,包括执行以下操作:
确定启动所述目标进程所耗费的第三时长为:
T3=(a*T33/Tcpu+(1-a)*N33/NIO)*t;
其中,a为加权因子,0≤a≤1;T33和N33分别为所述目标进程在所述第三时间段内所占用的CPU时间和磁盘读写次数;t为所述第三时刻与所述第二时刻的时间差;Tcpu和NIO分别为所述第三时间段内占用CPU的总时间和磁盘读写次数的总次数。
在另一种实施例中,处理器301执行所述获取所述目标服务在所述第二时刻到开机启动完毕的第三时刻的第三时间段内所占用的CPU时间和磁盘读写次数的操作之前,还包括执行以下操作:
获取开机启动完毕的第三时刻。
在另一种实施例中,处理器301执行所述获取开机启动完毕的第三时刻的操作,包括执行以下操作:
监控到启动所述第二预设进程时,检测第一预设时长内是否已启动新的进程;
若否,检测所述第一预设时长内的CPU使用率是否低于第一预设值;
若所述CPU使用率低于所述第一预设值,获取当前时刻为开机启动完毕的第三时刻。
在另一种实施例中,处理器301执行所述检测所述第一预设时长内的CPU使用率是否低于第一预设值的操作之后,还包括执行以下操作:
若所述CPU使用率不低于所述第一预设值,检测第二预设时长内是否已启动新的进程;
若否,检测所述第二预设时长内的CPU使用率是否低于第二预设值,所述第二预设值大于所述第一预设值;
若所述CPU使用率低于所述第二预设值,执行所述获取当前时刻为开机启动完毕的第三时刻的步骤。
在另一种实施例中,处理器301执行所述获取开机启动完毕的第三时刻,包括执行以下操作:
监控到启动所述第二预设进程时,检测第三预设时长内的CPU使用率是否低于第三预设值;
若所述CPU使用率低于所述第三预设值,获取当前时刻为开机启动完毕的第三时刻。
在本发明实施例描述的技术方案中,根据各驱动的加载时刻,获取启动应用程序所需的目标驱动所耗费的第一时长;根据启动应用程序所需的目标服务的加载时长、占用的CPU时间和磁盘读写次数,获取启动目标服务所耗费的第二时长;根据启动应用程序所需的目标进程占用的CPU时间和磁盘读写次数,获取启动目标进程所耗费的第三时长;确定该应用程序的启动时间为第一时长、第二时长和第三时长之和。采用本发明实施例,可以提高获取应用程序在开机启动过程中的启动时间的准确度。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定是必须针对相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
本领域的技术人员可以将本说明书中描述的不同实施例以及不同实施例的特征进行结合和组合。本发明所有实施例中的模块或单元,可以通过通用集成电路,例如CPU(Central Processing Unit,中央处理器),或通过ASIC(ApplicationSpecific Integrated Circuit,专用集成电路)来实现。
本发明所有实施例方法中的步骤可以根据实际需要进行顺序调整、合并和删减;本发明所有实施例装置中的模块或单元可以根据实际需要进行合并、划分和删减。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本发明的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属技术领域的技术人员所理解。
在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,"计算机可读介质"可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
此外,在本发明各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。
上述提到的存储介质可以是只读存储器,磁盘或光盘等。尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。
以上所揭露的仅为本发明的较佳实施例而已,当然不能以此来限定本发明之权利范围,本领域普通技术人员可以理解实现上述实施例的全部或部分流程,并依本发明权利要求所作的等同变化,仍属于发明所涵盖的范围。
Claims (23)
1.一种获取应用程序的启动时间的方法,其特征在于,包括:
获取启动目标应用程序所需要启动的目标驱动、目标服务和目标进程,所述目标应用程序为开机自启动应用程序;
监控开机启动过程中加载的驱动和服务;
根据各驱动的加载时刻,获取启动所述目标驱动所耗费的第一时长;
根据所述目标服务的加载时长、占用的CPU时间和磁盘读写次数,获取启动所述目标服务所耗费的第二时长;
根据所述目标进程占用的CPU时间和磁盘读写次数,获取启动所述目标进程所耗费的第三时长;
确定所述目标应用程序的启动时间为所述第一时长、所述第二时长和所述第三时长之和。
2.如权利要求1所述的方法,其特征在于,所述监控开机启动过程中加载的驱动和服务,包括:
监控开机时刻到启动第一预设进程的第一时刻的第一时间段内所加载的驱动,所述启动第一预设进程表示启动用户登录程序;
监控所述第一时刻到启动第二预设进程的第二时刻的第二时间段内所加载的服务,所述启动第二预设进程表示启动桌面显示程序。
3.如权利要求2所述的方法,其特征在于,所述根据各驱动的加载时刻,获取启动所述目标驱动所耗费的第一时长,包括:
根据所述第一时间段内所加载的驱动的加载时刻,将所述驱动的加载时刻按时间先后顺序进行升序排列;
从升序排列的加载时刻中选取所述目标驱动的加载时刻和所述目标驱动的加载时刻的下一个加载时刻;
获取启动所述目标驱动所耗费的第一时长为所述下一个加载时刻与所述目标驱动的加载时刻的时间差。
4.如权利要求2所述的方法,其特征在于,所述根据所述目标服务的加载时长、占用的CPU时间和磁盘读写次数,获取启动所述目标服务所耗费的第二时长之前,所述方法还包括:
获取所述目标服务在所述第二时间段内所耗费的加载时长;
获取所述目标服务在所述第二时刻到开机启动完毕的第三时刻的第三时间段内所占用的CPU时间和磁盘读写次数。
5.如权利要求4所述的方法,其特征在于,所述根据所述目标服务的加载时长、占用的CPU时间和磁盘读写次数,获取启动所述目标服务所耗费的第二时长,包括:
确定启动所述目标服务所耗费的第二时长为:
T2=T21+(a*T22/Tcpu+(1-a)*N22/NIO)*t;
其中,T21为所述目标服务在所述第二时间段内所耗费的加载时长;a为加权因子,0≤a≤1;T22和N22分别为所述目标服务在所述第三时间段内所占用的CPU时间和磁盘读写次数;t为所述第三时刻与所述第二时刻的时间差;Tcpu和NIO分别为所述第三时间段内占用CPU的总时间和磁盘读写次数的总次数。
6.如权利要求4所述的方法,其特征在于,所述根据所述目标进程占用的CPU时间和磁盘读写次数,获取启动所述目标进程所耗费的第三时长之前,所述方法还包括:
获取所述目标进程在所述第三时间段内所占用的CPU时间和磁盘读写次数。
7.如权利要求6所述的方法,其特征在于,所述根据所述目标进程占用的CPU时间和磁盘读写次数,获取启动所述目标进程所耗费的第三时长,包括:
确定启动所述目标进程所耗费的第三时长为:
T3=(a*T33/Tcpu+(1-a)*N33/NIO)*t;
其中,a为加权因子,0≤a≤1;T33和N33分别为所述目标进程在所述第三时间段内所占用的CPU时间和磁盘读写次数;t为所述第三时刻与所述第二时刻的时间差;Tcpu和NIO分别为所述第三时间段内占用CPU的总时间和磁盘读写次数的总次数。
8.如权利要求4所述的方法,其特征在于,所述获取所述目标服务在所述第二时刻到开机启动完毕的第三时刻的第三时间段内所占用的CPU时间和磁盘读写次数之前,所述方法还包括:
获取开机启动完毕的第三时刻。
9.如权利要求8所述的方法,其特征在于,所述获取开机启动完毕的第三时刻,包括:
监控到启动所述第二预设进程时,检测第一预设时长内是否已启动新的进程;
若否,检测所述第一预设时长内的CPU使用率是否低于第一预设值;
若所述CPU使用率低于所述第一预设值,获取当前时刻为开机启动完毕的第三时刻。
10.如权利要求9所述的方法,其特征在于,所述检测所述第一预设时长内的CPU使用率是否低于第一预设值之后,所述方法还包括:
若所述CPU使用率不低于所述第一预设值,检测第二预设时长内是否已启动新的进程;
若否,检测所述第二预设时长内的CPU使用率是否低于第二预设值,所述第二预设值大于所述第一预设值;
若所述CPU使用率低于所述第二预设值,执行所述获取当前时刻为开机启动完毕的第三时刻的步骤。
11.如权利要求8所述的方法,其特征在于,所述获取开机启动完毕的第三时刻,包括:
监控到启动所述第二预设进程时,检测第三预设时长内的CPU使用率是否低于第三预设值;
若所述CPU使用率低于所述第三预设值,获取当前时刻为开机启动完毕的第三时刻。
12.一种获取应用程序的启动时间的装置,其特征在于,包括:
第一获取模块,用于获取启动目标应用程序所需要启动的目标驱动、目标服务和目标进程,所述目标应用程序为开机自启动应用程序;
监控模块,用于监控开机启动过程中加载的驱动和服务;
第二获取模块,用于根据各驱动的加载时刻,获取启动所述目标驱动所耗费的第一时长;
第三获取模块,用于根据所述目标服务的加载时长、占用的CPU时间和磁盘读写次数,获取启动所述目标服务所耗费的第二时长;
第四获取模块,用于根据所述目标进程占用的CPU时间和磁盘读写次数,获取启动所述目标进程所耗费的第三时长;
确定模块,用于确定所述目标应用程序的启动时间为所述第一时长、所述第二时长和所述第三时长之和。
13.如权利要求12所述的装置,其特征在于,所述监控模块具体用于:
监控开机时刻到启动第一预设进程的第一时刻的第一时间段内所加载的驱动,所述启动第一预设进程表示启动用户登录程序;
监控所述第一时刻到启动第二预设进程的第二时刻的第二时间段内所加载的服务,所述启动第二预设进程表示启动桌面显示程序。
14.如权利要求13所述的装置,其特征在于,所述第二获取模块具体用于:
根据所述第一时间段内所加载的驱动的加载时刻,将所述驱动的加载时刻按时间先后顺序进行升序排列;
从升序排列的加载时刻中选取所述目标驱动的加载时刻和所述目标驱动的加载时刻的下一个加载时刻;
获取启动所述目标驱动所耗费的第一时长为所述下一个加载时刻与所述目标驱动的加载时刻的时间差。
15.如权利要求13所述的装置,其特征在于,所述第三获取模块具体用于:
获取所述目标服务在所述第二时间段内所耗费的加载时长;
获取所述目标服务在所述第二时刻到开机启动完毕的第三时刻的第三时间段内所占用的CPU时间和磁盘读写次数。
16.如权利要求15所述的装置,其特征在于,所述第三获取模块还具体用于:
确定启动所述目标服务所耗费的第二时长为:
T2=T21+(a*T22/Tcpu+(1-a)*N22/NIO)*t;
其中,T21为所述目标服务在所述第二时间段内所耗费的加载时长;a为加权因子,0≤a≤1;T22和N22分别为所述目标服务在所述第三时间段内所占用的CPU时间和磁盘读写次数;t为所述第三时刻与所述第二时刻的时间差;Tcpu和NIO分别为所述第三时间段内占用CPU的总时间和磁盘读写次数的总次数。
17.如权利要求15所述的装置,其特征在于,所述第四获取模块具体用于:
获取所述目标进程在所述第三时间段内所占用的CPU时间和磁盘读写次数。
18.如权利要求17所述的装置,其特征在于,所述第四获取模块还具体用于:
确定启动所述目标进程所耗费的第三时长为:
T3=(a*T33/Tcpu+(1-a)*N33/NIO)*t;
其中,a为加权因子,0≤a≤1;T33和N33分别为所述目标进程在所述第三时间段内所占用的CPU时间和磁盘读写次数;t为所述第三时刻与所述第二时刻的时间差;Tcpu和NIO分别为所述第三时间段内占用CPU的总时间和磁盘读写次数的总次数。
19.如权利要求15所述的装置,其特征在于,所述装置还包括第五获取模块,用于:
获取开机启动完毕的第三时刻。
20.如权利要求19所述的装置,其特征在于,所述第五获取模块具体用于:
监控到启动所述第二预设进程时,检测第一预设时长内是否已启动新的进程;
若否,检测所述第一预设时长内的CPU使用率是否低于第一预设值;
若所述CPU使用率低于所述第一预设值,获取当前时刻为开机启动完毕的第三时刻。
21.如权利要求20所述的装置,其特征在于,所述第五获取模块还具体用于:
若所述第一预设时长内未启动新的进程,所述第一预设时长内的所述CPU使用率不低于所述第一预设值,检测第二预设时长内是否已启动新的进程;
若否,检测所述第二预设时长内的CPU使用率是否低于第二预设值,所述第二预设值大于所述第一预设值;
若所述CPU使用率低于所述第二预设值,执行所述获取当前时刻为开机启动完毕的第三时刻的步骤。
22.如权利要求19所述的装置,其特征在于,所述第五获取模块还具体用于:
监控到启动所述第二预设进程时,检测第三预设时长内的CPU使用率是否低于第三预设值;
若所述CPU使用率低于所述第三预设值,获取当前时刻为开机启动完毕的第三时刻。
23.一种终端,其特征在于,包括如权利要求12-22任一项所述的装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410422439.3A CN104199692B (zh) | 2014-08-25 | 2014-08-25 | 一种获取应用程序的启动时间的方法、装置及终端 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410422439.3A CN104199692B (zh) | 2014-08-25 | 2014-08-25 | 一种获取应用程序的启动时间的方法、装置及终端 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104199692A true CN104199692A (zh) | 2014-12-10 |
CN104199692B CN104199692B (zh) | 2017-08-04 |
Family
ID=52084989
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410422439.3A Active CN104199692B (zh) | 2014-08-25 | 2014-08-25 | 一种获取应用程序的启动时间的方法、装置及终端 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104199692B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105095072A (zh) * | 2015-07-02 | 2015-11-25 | 北京金山安全软件有限公司 | 一种应用测试方法、装置及终端 |
CN105740125A (zh) * | 2016-01-29 | 2016-07-06 | 四川秘无痕信息安全技术有限责任公司 | 获取Android应用程序启动次数和时间的方法 |
CN106152397A (zh) * | 2016-06-29 | 2016-11-23 | 中国汽车工业工程有限公司 | 一种基于生产管理的涂装车间设备智能控制方法 |
CN107168839A (zh) * | 2017-05-18 | 2017-09-15 | 王东红 | 一种移动终端开机时间长度检测方法 |
CN107957905A (zh) * | 2017-11-21 | 2018-04-24 | 广东欧珀移动通信有限公司 | 限制应用自启动的方法、装置、存储介质及智能终端 |
CN111352791A (zh) * | 2018-12-20 | 2020-06-30 | 深圳市优必选科技有限公司 | 一种系统应用的检测方法、装置、终端设备及存储介质 |
CN112528194A (zh) * | 2020-10-26 | 2021-03-19 | 北京一人一亩田网络科技有限公司 | 移动应用程序的时间获取方法、装置、系统以及介质 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070162732A1 (en) * | 2005-12-29 | 2007-07-12 | Microsoft Corporation | Measuring an operating system's boot duration |
CN102177500A (zh) * | 2008-10-15 | 2011-09-07 | 富士通株式会社 | 信息处理装置以及启动完成通知程序 |
JP2012058782A (ja) * | 2010-09-03 | 2012-03-22 | Hagiwara Electric Co Ltd | コンピュータ装置の異常検査方法及びそれを用いたコンピュータ装置 |
CN102591770A (zh) * | 2011-12-27 | 2012-07-18 | 奇智软件(北京)有限公司 | 一种目标应用启动时间检测方法和装置 |
CN102646066A (zh) * | 2012-02-22 | 2012-08-22 | 腾讯科技(深圳)有限公司 | 一种开机时间的获取方法及装置 |
CN102981863A (zh) * | 2011-09-07 | 2013-03-20 | 奇智软件(北京)有限公司 | 一种开机启动项目的管理方法和装置 |
CN103150248A (zh) * | 2013-03-22 | 2013-06-12 | 腾讯科技(深圳)有限公司 | 一种启动项耗时的测算方法和装置 |
CN103488557A (zh) * | 2013-08-28 | 2014-01-01 | 北京奇虎科技有限公司 | 一种计算机操作系统开机时间的获取方法和装置 |
CN103645916A (zh) * | 2013-11-29 | 2014-03-19 | 惠州华阳通用电子有限公司 | 一种基于qnx的系统上电启动方法 |
-
2014
- 2014-08-25 CN CN201410422439.3A patent/CN104199692B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070162732A1 (en) * | 2005-12-29 | 2007-07-12 | Microsoft Corporation | Measuring an operating system's boot duration |
CN102177500A (zh) * | 2008-10-15 | 2011-09-07 | 富士通株式会社 | 信息处理装置以及启动完成通知程序 |
JP2012058782A (ja) * | 2010-09-03 | 2012-03-22 | Hagiwara Electric Co Ltd | コンピュータ装置の異常検査方法及びそれを用いたコンピュータ装置 |
CN102981863A (zh) * | 2011-09-07 | 2013-03-20 | 奇智软件(北京)有限公司 | 一种开机启动项目的管理方法和装置 |
CN102591770A (zh) * | 2011-12-27 | 2012-07-18 | 奇智软件(北京)有限公司 | 一种目标应用启动时间检测方法和装置 |
CN102646066A (zh) * | 2012-02-22 | 2012-08-22 | 腾讯科技(深圳)有限公司 | 一种开机时间的获取方法及装置 |
CN103150248A (zh) * | 2013-03-22 | 2013-06-12 | 腾讯科技(深圳)有限公司 | 一种启动项耗时的测算方法和装置 |
CN103488557A (zh) * | 2013-08-28 | 2014-01-01 | 北京奇虎科技有限公司 | 一种计算机操作系统开机时间的获取方法和装置 |
CN103645916A (zh) * | 2013-11-29 | 2014-03-19 | 惠州华阳通用电子有限公司 | 一种基于qnx的系统上电启动方法 |
Non-Patent Citations (1)
Title |
---|
BBW2008: "wince下查看驱动启动加载时间:celog", 《HTTP://BLOG.CSDN.NET/BBW2008/ARTICLE/DETAILS/6227143》 * |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105095072A (zh) * | 2015-07-02 | 2015-11-25 | 北京金山安全软件有限公司 | 一种应用测试方法、装置及终端 |
CN105095072B (zh) * | 2015-07-02 | 2018-01-23 | 北京金山安全软件有限公司 | 一种应用测试方法、装置及终端 |
CN105740125A (zh) * | 2016-01-29 | 2016-07-06 | 四川秘无痕信息安全技术有限责任公司 | 获取Android应用程序启动次数和时间的方法 |
CN105740125B (zh) * | 2016-01-29 | 2018-03-30 | 四川秘无痕信息安全技术有限责任公司 | 获取Android应用程序启动次数和时间的方法 |
CN106152397A (zh) * | 2016-06-29 | 2016-11-23 | 中国汽车工业工程有限公司 | 一种基于生产管理的涂装车间设备智能控制方法 |
CN106152397B (zh) * | 2016-06-29 | 2019-02-15 | 中国汽车工业工程有限公司 | 一种基于生产管理的涂装车间设备智能控制方法 |
CN107168839A (zh) * | 2017-05-18 | 2017-09-15 | 王东红 | 一种移动终端开机时间长度检测方法 |
CN107957905A (zh) * | 2017-11-21 | 2018-04-24 | 广东欧珀移动通信有限公司 | 限制应用自启动的方法、装置、存储介质及智能终端 |
CN111352791A (zh) * | 2018-12-20 | 2020-06-30 | 深圳市优必选科技有限公司 | 一种系统应用的检测方法、装置、终端设备及存储介质 |
CN112528194A (zh) * | 2020-10-26 | 2021-03-19 | 北京一人一亩田网络科技有限公司 | 移动应用程序的时间获取方法、装置、系统以及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN104199692B (zh) | 2017-08-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104199692A (zh) | 一种获取应用程序的启动时间的方法、装置及终端 | |
CN105335099A (zh) | 一种内存清理方法及终端 | |
US9170840B2 (en) | Duration sensitive scheduling in a computing environment | |
JP5322595B2 (ja) | コンピュータ、制御方法、及びプログラム | |
US10831331B2 (en) | Window control for simultaneously running applications | |
CN110083399B (zh) | 小程序运行方法、计算机设备及存储介质 | |
CN111506386A (zh) | 虚拟机在线迁移方法、装置、设备及计算机可读存储介质 | |
CN104199693A (zh) | 一种获取开机时间的方法、装置及终端 | |
US8335891B2 (en) | Method and system for configuring a storage array | |
US20170031720A1 (en) | Deploying software in a multi-instance node | |
US10356267B2 (en) | Information processing apparatus, control method, and storage medium | |
CN114691300A (zh) | 一种虚拟机实例的热迁移方法 | |
EP3572940A1 (en) | Method and device for scheduling vcpu thread | |
CN115113987A (zh) | 一种非一致内存访问资源分配方法、装置、设备及介质 | |
CN111176790A (zh) | 云平台物理主机的主动维护方法、装置及可读存储介质 | |
CN103198252B (zh) | 用于管理便携式终端中的应用程序的控制信息的设备和方法 | |
US20140365758A1 (en) | Techniques for booting an information processing system | |
KR101326908B1 (ko) | 가상 환경 관리 방법 및 이를 이용한 단말 장치 | |
US9003172B2 (en) | Intelligently controlling loading of legacy option ROMs in a computing system | |
US10862803B2 (en) | Repurposing a target endpoint to execute a management task | |
CN105095072A (zh) | 一种应用测试方法、装置及终端 | |
US10620982B2 (en) | Multi-target deployment of virtual systems | |
CN111078405B (zh) | 内存分配方法、装置、存储介质及电子设备 | |
US11954512B2 (en) | Control device and control method | |
CN114296810A (zh) | 一种操作系统迁移方法、装置、服务器与存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20181206 Address after: Room 105-53811, No. 6 Baohua Road, Hengqin New District, Zhuhai City, Guangdong Province Patentee after: Zhuhai Leopard Technology Co.,Ltd. Address before: 100085 East District, Second Floor, 33 Xiaoying West Road, Haidian District, Beijing Patentee before: BEIJING KINGSOFT INTERNET SECURITY SOFTWARE Co.,Ltd. |
|
TR01 | Transfer of patent right |