一种应用启动方法、装置、计算机设备及存储介质制造方法及图纸

技术编号:38474198 阅读:10 留言:0更新日期:2023-08-15 16:54
本申请提出了一种应用启动方法、装置、计算机设备及存储介质,其中方法包括:配置编译器,并开启编译器内置的代码覆盖率检测功能;通过编译器添加钩子函数,并通过钩子函数监听目标应用启动时调用的用户定义的函数;在钩子函数中获取用户定义的函数的符号后,通过原子队列对用户定义的函数的符号进行排列后写入至有序文件;将有序文件配置至编译器中,打包生成可执行文件;根据可执行文件启动目标应用。本申请能够解决现有技术中应用启动时可能存在大量的缺页异常导致应用启动耗时较长的问题,有效减少缺页中断的次数,优化应用启动速度,从而提高用户体验感。从而提高用户体验感。从而提高用户体验感。

【技术实现步骤摘要】
一种应用启动方法、装置、计算机设备及存储介质


[0001]本申请涉及计算机
,具体涉及一种应用启动方法、装置、计算机设备及存储介质。

技术介绍

[0002]当App(Application,中间件或应用)启动时,系统会分配一个对应的进程给这个App,该进程有独立的虚拟内存,这一块虚拟内存通常是按页划分,例如iOS系统每页的大小是16K,每次加载都是以页为单位进行。
[0003]但是在实际过程中,很多在启动App时需要执行的代码对应的虚拟内存并没有加载到实际的物理内存空间,导致操作系统会缺页异常,造成缺页中断,CPU处理器会将当前进程卡住,直至操作系统将App启动需要执行的代码对应的虚拟内存数据全部加载至物理内存后,App才能真正启动。由于缺页一般为毫秒级别,当同时存在大量缺页时,用户感知就会较为明显,当App应用较为复杂或代码量较大,启动时可能会存在大量的缺页异常,明显影响到App的启动时长,导致应用启动耗时较长,影响用户体验。
[0004]前面的叙述在于提供一般的背景信息,并不一定构成现有技术。

技术实现思路

[0005]针对上述技术问题,本申请提供一种应用启动方法、装置、计算机设备及存储介质,能够解决现有技术中应用启动时可能存在大量的缺页异常导致应用启动耗时较长的问题,有效减少缺页中断的次数,优化应用启动速度,从而提高用户体验感。
[0006]为解决上述技术问题,本申请提供了一种应用启动方法,包括如下步骤:配置编译器,并开启所述编译器内置的代码覆盖率检测功能;通过所述编译器添加钩子函数,并通过所述钩子函数监听目标应用启动时调用的用户定义的函数;在所述钩子函数中获取所述用户定义的函数的符号后,通过原子队列对所述用户定义的函数的符号进行排列后写入至有序文件;将所述有序文件配置至所述编译器中,打包生成可执行文件;根据所述可执行文件启动目标应用。
[0007]可选地,在所述配置编译器之前,所述方法还包括:获取目标应用对应的工程代码,并通过编译器根据所述工程代码启动所述目标应用。
[0008]可选地,所述开启所述编译器内置的代码覆盖率检测功能,包括:通过所述编译器内置的代码覆盖插件,开启所述编译器的代码覆盖率检测功能,以插入对用户定义的函数的调用。
[0009]可选地,所述通过所述编译器添加钩子函数,并通过所述钩子函数监听目标应用启动时调用的用户定义的函数,包括:
通过所述编译器在每个用户定义的函数中均插入第一预设代码,作为所述用户定义的函数对应的钩子;基于所述钩子生成对应的钩子函数;通过所述钩子函数监听目标应用启动时调用的所有的用户定义的函数。
[0010]可选地,所述在所述钩子函数中获取所述用户定义的函数的符号后,通过原子队列对所述用户定义的函数的符号进行排列后写入至有序文件,包括:在所述钩子函数中通过系统函数获取当前调用的用户定义的函数对应的符号;通过开启的原子队列对所述符号进行排列后写入至有序文件。
[0011]可选地,所述通过开启的原子队列对所述符号进行排列后写入至有序文件,包括:开启原子队列,将获取的当前调用的用户定义的函数对应的符号存入至原子队列中;遍历所述原子队列,得到所有的符号后进行去重;按照调用顺序,对去重后的符号进行排序后写入至对应的有序文件。
[0012]可选地,所述将所述有序文件配置至所述编译器中,打包生成可执行文件,包括:将所述有序文件配置至所述编译器中进行二进制重排,打包生成对应的可执行文件,所述可执行文件用于按照目标应用启动时的执行顺序对用户定义的函数进行排列。
[0013]相应地,本申请还提供了一种应用启动装置,包括:配置模块,用于配置编译器,并开启所述编译器内置的代码覆盖率检测功能;监听模块,用于通过所述编译器添加钩子函数,并通过所述钩子函数监听目标应用启动时调用的用户定义的函数;排列模块,用于在所述钩子函数中获取所述用户定义的函数的符号后,通过原子队列对所述用户定义的函数的符号进行排列后写入至有序文件;打包模块,用于将所述有序文件配置至所述编译器中,打包生成可执行文件;启动模块,用于根据所述可执行文件启动目标应用。
[0014]本申请还提供了一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现如上所述的应用启动方法的步骤。
[0015]本申请还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的应用启动方法的步骤。
[0016]实施本专利技术实施例,具有如下有益效果:如上所述,本申请提供的一种应用启动方法、装置、计算机设备及存储介质,其中方法包括:配置编译器,并开启编译器内置的代码覆盖率检测功能;通过编译器添加钩子函数,并通过钩子函数监听目标应用启动时调用的用户定义的函数;在钩子函数中获取用户定义的函数的符号后,通过原子队列对用户定义的函数的符号进行排列后写入至有序文件;将有序文件配置至编译器中,打包生成可执行文件;根据可执行文件启动目标应用。本申请通过获取应用启动时调用的函数,按照其执行顺序对函数符号进行排序后生成有序文件,通过编译器对有序文件进行编译打包后生成可执行文件,最终根据可执行文件启动目标应用,从而能够解决现有技术中应用启动时可能存在大量的缺页异常导致应用启动耗时较长的问题,有效减少缺页中断的次数,优化应用启动速度,进而提高用户体验感。
附图说明
[0017]此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。为了更清楚地说明本申请实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0018]图1是本申请实施例提供的应用启动方法的的流程示意图;图2是本申请实施例提供的步骤S2的流程示意图;图3是本申请实施例提供的步骤S3的流程示意图;图4是本申请实施例提供的步骤S32的流程示意图;图5是本申请实施例提供的应用启动装置的结构示意图;图6是本申请实施例提供的计算机设备的结构示意图。
[0019]本申请目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。通过上述附图,已示出本申请明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本申请构思的范围,而是通过参考特定实施例为本领域技术人员说明本申请的概念。
具体实施方式
[0020]这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
[0021]需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种应用启动方法,其特征在于,包括如下步骤:配置编译器,并开启所述编译器内置的代码覆盖率检测功能;通过所述编译器添加钩子函数,并通过所述钩子函数监听目标应用启动时调用的用户定义的函数;在所述钩子函数中获取所述用户定义的函数的符号后,通过原子队列对所述用户定义的函数的符号进行排列后写入至有序文件;将所述有序文件配置至所述编译器中,打包生成可执行文件;根据所述可执行文件启动目标应用。2.根据权利要求1所述的应用启动方法,其特征在于,在所述配置编译器之前,所述方法还包括:获取目标应用对应的工程代码,并通过编译器根据所述工程代码启动所述目标应用。3.根据权利要求1所述的应用启动方法,其特征在于,所述开启所述编译器内置的代码覆盖率检测功能,包括:通过所述编译器内置的代码覆盖插件,开启所述编译器的代码覆盖率检测功能,以插入对用户定义的函数的调用。4.根据权利要求1所述的应用启动方法,其特征在于,所述通过所述编译器添加钩子函数,并通过所述钩子函数监听目标应用启动时调用的用户定义的函数,包括:通过所述编译器在每个用户定义的函数中均插入第一预设代码,作为所述用户定义的函数对应的钩子;基于所述钩子生成对应的钩子函数;通过所述钩子函数监听目标应用启动时调用的所有的用户定义的函数。5.根据权利要求1所述的应用启动方法,其特征在于,所述在所述钩子函数中获取所述用户定义的函数的符号后,通过原子队列对所述用户定义的函数的符号进行排列后写入至有序文件,包括:在所述钩子函数中通过系统函数获取当前调用的用户定义的函数对应的符号;通过开启的原子队列对所述符号进行排列...

【专利技术属性】
技术研发人员:杨力
申请(专利权)人:深圳依时货拉拉科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1