具体实施方式
目前各类应用在移动终端上,由于大量业务快速上线,造成应用冷启动阶段的启动性能不理想,进而影响用户的使用体验。而为了提高用户对应用的使用体验,传统的优化方案可以优化UI布局,或者优化代码结构,以此来提升应用冷启动的启动性能,减少应用冷启动所需要的时间。然而这种传统的优化方案收效甚微,例如可能仅仅减少了10ms应用冷启动所需要的时间,并且还会消耗开发者大量的时间和精力。
针对上述问题,本说明书从另一角度进行考虑,通过工具测量,发现应用冷启动阶段大量时间耗费在了磁盘I/O(磁盘I/O,通过指令从磁盘上读取某段扇区的数据或者向磁盘某段扇区内写入数据,指令一般是通知磁盘开始扇区位置,然后给出需要从这个初始扇区往后的连续扇区个数,同时给出相应的操作:读或写,磁盘收到这条指令,就会按照指令的要求,读数据或者写数据,一次读数据或者一次写数据就是一次磁盘I/O)上,原因是应用在冷启动阶段,会存在大量的文件读写操作,发生了较多真实的磁盘I/O,如果能够较少这些磁盘I/O的次数,对于整个启动性能会有明显提升,进而提升整体应用的使用体验。
在移动终端上,例如,Android系统的底层系统是Linux系统,Linux文件系统存在缓存机制(Page Cache,页高速缓冲存储器,简称页高缓,大小通常为4K,在读写文件时,它用于缓存文件的逻辑内容,从而加快对磁盘上影像和数据的访问),每次从磁盘中读取数据时,Linux文件系统默认按照16*4K大小去读取,并把读取的数据放到缓存中,如果下次读取文件对应的数据已经在缓存中,则不会发生真实的磁盘I/O,而是直接从缓存中读取,相较于从缓存中读取数据,从磁盘中读取数据需要耗费较多的时间。假设下次读取的文件,在文件排布布局中,位于这次读取的文件后面,那么它将大概率在这次读取文件时就被同时从磁盘中读取到对应的数据放置到缓存中,从而减少了一次真实的磁盘I/O。例如,对于A、B两个文件各1K,如果B排在A的后面,那么读取A文件的时候,16*4K的读取空间会在从磁盘中读取A文件对应的数据的同时读取B文件对应的数据放置到缓存中,这样读取B文件时,不会发生真实的磁盘I/O,直接从缓存中读取B文件对应的数据。
按照这个思路,如果能度量应用冷启动阶段,应用冷启动时所需要的文件,通过对文件布局的调整,将应用冷启动时所需要的文件排在一起,利用缓存机制,可以有效减少真实的磁盘I/O的次数。因为对于一般地应用所包括的文件,其文件布局基本是按照默认a-z、0-9的顺序进行排序,应用冷启动阶段所需文件可能无规律的存在于应用所包括的文件中,例如所需文件为文件A、文件B、文件C,大小各为1K,基于初始的文件布局,应用冷启动时加载所需文件发生3次真实的磁盘I/O,如果调整文件布局,将文件A、文件B、文件C排在一起,应用冷启动时加载所需文件发生1次真实的磁盘I/O,可以看出有效的减少了真实磁盘I/O的次数,进而可以提升应用启动性能,减少应用冷启动所需要的时间。
基于上述分析,本说明书实施例提供一种调整文件布局的技术方案,对于待优化的应用,确定该应用冷启动时所需文件对应的文件标识,确定第一文件标识列表以及第二文件标识列表,其中第一文件标识列表以及第二文件标识列表可以根据该应用冷启动时所需文件对应的文件标识得到,将所述第一文件标识列表与第二文件标识列表进行整合,根据整合结果,对所述待优化的应用包括的所有文件对应的当前文件布局进行调整,后续该应用下次冷启动时,基于调整后的文件布局,利用缓存机制,可以有效减少真实磁盘I/O的次数,提升应用冷启动性能,减少应用冷启动所需要的时间。对于开发者而言,由于不涉及应用源代码的优化,可以节省开发者优化应用源代码所耗费的时间和精力。
具体的,本说明书实施例提供的技术方案如下:
确定待优化的应用;对于所述待优化的应用,确定所述待优化的应用冷启动时所需文件对应的文件标识;确定第一文件标识列表以及第二文件标识列表,所述第一文件标识列表为:由所述待优化的应用冷启动时所需文件对应的文件标识组成,所述第二文件标识列表为:由所述待优化的应用包括的除所需文件之外的剩余文件对应的文件标识组成;将所述第一文件标识列表与第二文件标识列表进行整合;根据整合结果,对所述待优化的应用包括的所有文件的当前文件布局进行调整。
为了使本领域技术人员更好地理解本说明书实施例中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行详细地描述,显然,所描述的实施例仅仅是本说明书的一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员所获得的所有其他实施例,都应当属于保护的范围。
如图1所示,为本说明书实施例提供的一种文件布局调整方法的流程示意图,该方法具体可以包括以下步骤:
S101,确定待优化的应用;
在本说明书中,移动终端上同时安装有游戏类应用、社交类应用、视频播放类应用、即时通信类应用、购物类应用等,当需要对某一种应用的冷启动阶段进行优化时,可以人工指定某种应用,或者可以通过指令的形式确定待优化的应用,即人工输入指令,指令中携带该应用的标识,在接收到该指令时,通过该指令中携带的标识可以确定待优化的应用,例如确定待优化的应用为支付宝。具体确定待优化的应用的实现方式存在很多种,本说明书实施例在此不再一一赘述。
S102,对于所述待优化的应用,确定所述待优化的应用冷启动时所需文件对应的文件标识;
针对S101中所确定的待优化的应用,确定该待优化的应用冷启动时所需文件对应的文件标识。具体确定该待优化的应用冷启动时所需文件对应的文件标识的实现方式有多种,本说明书对其中两种实现方式进行举例说明:
其中一种确定该待优化的应用冷启动时所需文件对应的文件标识的实现方式为:基于所述待优化的应用包括的所有文件的当前文件布局,获取所述待优化的应用冷启动时所产生的文件加载日志,解析文件加载日志中记录的所需文件的加载记录,以确定所述待优化的应用冷启动时所需文件对应的文件标识。为了方便确定该待优化的应用冷启动时所需文件对应的文件标识,本说明书在应用冷启动文件加载阶段加载所需文件的同时记录文件加载日志。当应用基于所有文件的当前文件布局冷启动时,相应的会产生文件加载日志,获取该应用冷启动时所产生的文件加载日志,解析文件加载日志中记录的所需文件的加载记录,该加载记录至少包括所需文件的加载时间、所需文件的文件名称及大小、文件目录、应用名称等,从中可以获取所需文件的文件名称及大小,即所需文件的文件标识,由此可以确定待优化的应用冷启动时所需文件对应的文件标识。
例如,对于应用A包括10个文件,当前这10个文件默认以a-z的顺序进行排序,基于文件的当前文件布局,应用A冷启动文件加载阶段加载所需文件为4个文件,应用A冷启动时加载文件产生文件加载日志,从文件加载日志中解析所需文件的加载记录,从中可以获取这4个文件的文件名称及大小,如A(1K)、C(2K)、D(1K)、F(2K)。
另外一种确定该待优化的应用冷启动时所需文件对应的文件标识的实现方式为:获取预先编译的脚本,该脚本用来统计应用冷启动时文件行为,文件行为即文件是否发生了真实的磁盘I/O,以及文件是否命中了缓存,发生磁盘I/O以及命中缓存的文件为应用冷启动时所需文件,利用这个脚本可以统计出应用冷启动阶段所需文件对应的文件列表、文件偏移量、以及是发生真实的磁盘I/O还是命中了缓存,根据该文件列表可以得到每个文件对应的文件标识,即可以确定该待优化的应用冷启动时所需文件对应的文件标识。
例如,如下表1所示,命中缓存为0,发生了真实的磁盘I/O为1。
表1
由上述文件列表可以得到该待优化的应用冷启动时所需文件对应的文件标识。在确定该待优化的应用冷启动时所需文件对应的文件标识之后,可以根据这些文件标识对当前文件布局进行调整。
S103,确定第一文件标识列表以及第二文件标识列表,所述第一文件标识列表为:由所述待优化的应用冷启动时所需文件对应的文件标识组成,所述第二文件标识列表为:由所述待优化的应用包括的除所需文件之外的剩余文件对应的文件标识组成;
针对S102中所确定的该待优化的应用冷启动时所需文件对应的文件标识,可以依据这些文件标识,确定第一文件标识列表以及第二文件标识列表。
第一文件标识列表,由所述待优化的应用冷启动时所需文件对应的文件标识组成,且对所述所需文件对应的文件标识进行排序得到。优选的,可以按照该待优化的应用冷启动时所需文件的加载时间顺序,对所需文件对应的文件标识进行排序,可以得到一个文件标识列表。
例如,按照该待优化的应用冷启动时所需文件的加载时间顺序,对所需文件对应的文件标识进行排序,可以得到一个文件标识列表,这个文件标识列表可以是:A、C、D、F、J、K,意味着在文件加载时间顺序中,文件A的加载时间顺序排在第一位,文件C的加载时间顺序排在第二位,以此类推。
第二文件标识列表,由所述待优化的应用包括的除所需文件之外的剩余文件对应的文件标识组成,且按照原先默认排序规则,对所述待优化的应用包括的除所需文件之外的剩余文件对应的文件标识进行排序得到,即利用初始的排序规则进行排序,例如原先按照a-z、0-9默认排序规则进行排序,则这些剩余文件对应的文件标识依旧按照a-z、0-9默认排序规则进行排序得到第二文件标识列表。
例如,除所需文件之外剩余文件为问价B、文件E、文件G、文件H、文件I,其所对应的文件标识为:B、E、G、H、I,则这些剩余文件对应的文件标识依旧按照a-z、0-9默认排序规则进行排序得到的第二文件标识列表为:B、E、G、H、I。
S104,将所述第一文件标识列表与第二文件标识列表进行整合;
将第一文件标识列表与第二文件标识列表进行整合,生成第三文件标识列表,具体的可以将第一文件标识列表穿插到第二文件标识列表中任意位置,生成第三文件标识列表,即将第一文件标识列表视为一个整体,穿插到第二文件标识列表的头部、尾部、中部等任意位置,由此可以生成一个新的文件标识列表。
例如,第一文件标识列表是:A、C、D、F、J、K,第二文件标识列表是:B、E、G、H、I,将第一文件标识列表穿插到第二文件标识列表中B后面,生成的第三文件标识列表是:B、A、C、D、F、J、K、E、G、H、I。
S105,根据整合结果,对所述待优化的应用包括的所有文件的当前文件布局进行调整。
针对S104中得到的整合结果,可以根据该整合结果,对该待优化的应用包括的所有文件的当前文件布局进行调整,即根据该整合结果,对该待优化的应用包括的所有文件的排布顺序进行调整。
例如,根据该整合结果,即第三文件标识列表:B、A、C、D、F、J、K、E、G、H、I,调整应用包括的文件A、文件B、文件C、文件D、文件E、文件F、文件G、文件H、文件I、文件J、文件K的排布顺序,调整后的文件布局为:文件B、文件A、文件C、文件D、文件F、文件J、文件K、文件E、文件G、文件H、文件I。
对于移动终端上的应用,例如手机上的应用(以Android系统为例)包括的文件一般都是以压缩形式存在的,如APK(Android Package,安装包)文件其实是zip格式,要想实现对文件布局的调整,需要借助压缩工具,例如7-Zip压缩工具,调用压缩工具,将第三文件标识列表导入该压缩工具,执行该压缩工具的文件压缩功能,可以后续按照第三文件标识列表,改变所有文件的排布顺序,从而达到对文件布局进行调整的目的。
如此可以将应用冷启动时所需文件排布在一起,这样可以发生较少的真实的磁盘I/O,后续应用下次冷启动时,基于调整后的文件布局,由于发生较少的真实的磁盘I/O,冷启动启动性能提升,有效减少了冷启动消耗的时间,其中效果对比如下表2所示:
表2
通过上述对本说明书实施例提供的技术方案的描述,对于待优化的应用,确定该应用冷启动时所需文件对应的文件标识,确定第一文件标识列表以及第二文件标识列表,将所述第一文件标识列表与第二文件标识列表进行整合,根据整合结果,对所述待优化的应用包括的所有文件对应的当前文件布局进行调整,后续该应用下次冷启动时,基于调整后的文件布局,利用缓存机制,可以有效减少真实磁盘I/O的次数,提升应用冷启动性能,减少应用冷启动所需要的时间。对于开发者而言,由于不涉及应用源代码的优化,可以节省开发者优化应用源代码所耗费的时间和精力。
相对于上述方法实施例,本说明书实施例还提供一种文件布局调整装置,参见图2所示,该装置可以包括:应用确定模块210、文件标识确定模块220、标识列表确定模块230、整合模块240、文件布局调整模块250。
应用确定模块210,用于确定待优化的应用;
文件标识确定模块220,用于对于所述待优化的应用,确定所述待优化的应用冷启动时所需文件对应的文件标识;
标识列表确定模块230,用于确定第一文件标识列表以及第二文件标识列表,所述第一文件标识列表为:由所述待优化的应用冷启动时所需文件对应的文件标识组成,所述第二文件标识列表为:由所述待优化的应用包括的除所需文件之外的剩余文件对应的文件标识组成;
整合模块240,用于将所述第一文件标识列表与第二文件标识列表进行整合;
文件布局调整模块250,用于根据整合结果,对所述待优化的应用包括的所有文件的当前文件布局进行调整。
根据本说明书提供的一种具体实施方式,所述文件标识确定模块220具体用于:
基于所述待优化的应用包括的所有文件的当前文件布局,获取所述待优化的应用冷启动时所产生的文件加载日志;
解析文件加载日志中记录的所需文件的加载记录,以确定所述待优化的应用冷启动时所需文件对应的文件标识。
根据本说明书提供的一种具体实施方式,所述整合模块240具体用于:
将所述第一文件标识列表穿插到所述第二文件标识列表中任意位置。
根据本说明书提供的一种具体实施方式,
所述第一文件标识列表为:按照所述待优化的应用冷启动时所需文件的加载时间顺序,对所述所需文件对应的文件标识进行排序得到。
根据本说明书提供的一种具体实施方式,
所述第二文件标识列表为:按照原先默认排序规则,对所述待优化的应用包括的除所需文件之外的剩余文件对应的文件标识进行排序得到。
上述装置中各个模块的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
通过上述对本说明书实施例提供的技术方案的描述,对于待优化的应用,确定该应用冷启动时所需文件对应的文件标识,确定第一文件标识列表以及第二文件标识列表,将所述第一文件标识列表与第二文件标识列表进行整合,根据整合结果,对所述待优化的应用包括的所有文件对应的当前文件布局进行调整,后续该应用下次冷启动时,基于调整后的文件布局,利用缓存机制,可以有效减少真实磁盘I/O的次数,提升应用冷启动性能,减少应用冷启动所需要的时间。对于开发者而言,由于不涉及应用源代码的优化,可以节省开发者优化应用源代码所耗费的时间和精力。
本说明书实施例还提供一种计算机设备,如图3所示,该设备可以包括:处理器310、存储器320、输入/输出接口330、通信接口340和总线350。其中处理器310、存储器320、输入/输出接口330和通信接口340通过总线350实现彼此之间在设备内部的通信连接。
处理器310可以采用通用的CPU(Central Processing Unit,中央处理器)、微处理器、应用专用集成电路(Application Specific Integrated Circuit,ASIC)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本说明书实施例所提供的技术方案。
存储器320可以采用ROM(Read Only Memory,只读存储器)、RAM(Random AccessMemory,随机存取存储器)、静态存储设备,动态存储设备等形式实现。存储器320可以存储操作系统和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器320中,并由处理器310来调用执行。
输入/输出接口330用于连接输入/输出模块,以实现信息输入及输出。输入输出/模块可以作为组件配置在设备中(图中未示出),也可以外接于设备以提供相应功能。其中输入设备可以包括键盘、鼠标、触摸屏、麦克风、各类传感器等,输出设备可以包括显示器、扬声器、振动器、指示灯等。
通信接口340用于连接通信模块(图中未示出),以实现本设备与其他设备的通信交互。其中通信模块可以通过有线方式(例如USB、网线等)实现通信,也可以通过无线方式(例如移动网络、WIFI、蓝牙等)实现通信。
总线350包括一通路,在设备的各个组件(例如处理器310、存储器320、输入/输出接口330和通信接口340)之间传输信息。
需要说明的是,尽管上述设备仅示出了处理器310、存储器320、输入/输出接口330、通信接口340以及总线350,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本说明书实施例方案所必需的组件,而不必包含图中所示的全部组件。
本说明书实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现前述的文件布局调整方法。该方法至少包括:
一种文件布局调整方法,该方法包括:
确定待优化的应用;
对于所述待优化的应用,确定所述待优化的应用冷启动时所需文件对应的文件标识;
确定第一文件标识列表以及第二文件标识列表,所述第一文件标识列表为:由所述待优化的应用冷启动时所需文件对应的文件标识组成,所述第二文件标识列表为:由所述待优化的应用包括的除所需文件之外的剩余文件对应的文件标识组成;
将所述第一文件标识列表与第二文件标识列表进行整合;
根据整合结果,对所述待优化的应用包括的所有文件的当前文件布局进行调整。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本说明书实施例可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本说明书实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本说明书实施例各个实施例或者实施例的某些部分所述的方法。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,在实施本说明书实施例方案时可以把各模块的功能在同一个或多个软件和/或硬件中实现。也可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述仅是本说明书实施例的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本说明书实施例原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本说明书实施例的保护范围。