一种应用程序执行方法函数的方法及装置与流程

文档序号:24158588发布日期:2021-03-05 13:44阅读:75来源:国知局
一种应用程序执行方法函数的方法及装置与流程

[0001]
本申请涉及计算机技术领域,尤其涉及一种应用程序执行方法函数的方法及装置。


背景技术:

[0002]
随着智能终端的更新换代,终端的配置也越来越高,随之而来实现各种功能的应用程序也越来越多。目前,终端通常会安装很多应用程序,以提供给用户更便捷的工作、生活平台。
[0003]
应用程序在运行过程中,通过调用应用程序代码中的方法函数来实现应用程序的功能,每个应用程序在实现对应的功能时都需要调用大量的方法函数。如果终端运行的应用程序较多,相应地被调用的方法函数也会很多,会占用终端大量的cpu资源以及内存资源,降低终端对方法函数的执行速度,从而导致方法函数的执行效率较低。


技术实现要素:

[0004]
本申请提供一种应用程序执行方法函数的方法及装置,用以提高应用程序执行方法函数的效率。
[0005]
第一方面,本申请提供了一种应用程序执行方法函数的方法,包括:
[0006]
应用程序在调用方法函数时,确认被调用的方法函数是否为具有多引擎标识的目标方法函数;
[0007]
针对具有多引擎标识的目标方法函数,从至少两个备选引擎中确定出用于执行所述目标方法函数的目标引擎;
[0008]
将目标方法函数对应的参数发送给所述目标引擎,触发所述目标引擎根据所述目标方法函数对应的参数执行所述目标方法函数;
[0009]
并接收所述目标引擎返回的所述目标方法函数对应的执行结果。
[0010]
第二方面,本申请实施例提供了一种应用程序执行方法函数的装置,包括:
[0011]
应用程序模块,用于调用方法函数;
[0012]
注解处理器,用于确认被调用的方法函数是否为具有多引擎标识的目标方法函数;
[0013]
方法控制器,用于针对具有多引擎标识的目标方法函数,从至少两个备选引擎中确定出用于执行所述目标方法函数的目标引擎;将目标方法函数对应的参数发送给所述目标引擎,触发所述目标引擎根据所述目标方法函数对应的参数执行所述目标方法函数;并接收所述目标引擎返回的所述目标方法函数对应的执行结果。
[0014]
第三方面,本申请实施例提供一种电子设备,包括:
[0015]
至少一个处理器;以及
[0016]
与所述至少一个处理器通信连接的存储器;其中,
[0017]
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一
个处理器执行,以使所述至少一个处理器能够执行本申请提供的应用程序执行方法函数的方法。
[0018]
第四方面,本申请实施例提供一种计算机可读介质,存储有计算机可执行指令,所述计算机可执行指令用于执行本申请提供的应用程序执行方法函数的方法。
[0019]
本申请实施例提供的技术方案至少带来以下有益效果:
[0020]
在应用程序调用方法函数时,将具有多引擎标识的方法函数确定为目标方法函数,针对目标方法函数,从至少两个备选引擎中确定出用于执行目标方法函数的目标引擎,再将目标方法函数的参数发送给目标引擎,触发目标引擎根据接收到的目标方法函数的参数执行该方法函数,并接收目标引擎返回的执行结果。其中,本申请实施例提供了至少两个备选引擎,备选引擎包括本地操作系统和至少一个远程服务器中的云端操作系统。可见,本申请实施例为具有多引擎标识的目标方法函数提供至少两个备选引擎,在调用目标方法函数时,从备选引擎中选择执行目标方法函数的目标引擎,目标方法函数的执行方式不是预先设定的,而是在应用程序运行过程中在调用该目标方法函数时从至少两个备选引擎中选取,能够提高方法函数执行方式的灵活性;由于本申请实施例提供了至少两个备选引擎,在执行目标方法函数时可以根据本地操作系统和云端操作系统的cpu资源占用情况,合理分配cpu资源;例如,在本地操作系统的cpu资源占用较多时,可以选择空余cpu资源较多的云端操作系统,相应的,在云端操作系统的cpu资源占用较多时,可以选择空余cpu资源较多的本地操作系统,避免由于本地操作系统或云端操作系统中的一个执行速度较慢导致方法函数的执行效率较低,从而提高了方法函数的执行效率。
[0021]
本申请的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请而了解。本申请的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
附图说明
[0022]
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理,并不构成对本申请的不当限定。
[0023]
图1为本申请实施例提供的本地操作系统执行应用程序中方法函数的示意图;
[0024]
图2为本申请实施例提供的云端操作系统执行应用程序中方法函数的示意图;
[0025]
图3为本申请实施例提供的一种应用程序执行方法函数的框架示意图;
[0026]
图4为本申请实施例提供的目标引擎为本地操作系统和云端操作系统时应用程序执行方法函数的示意图;
[0027]
图5为本申请实施例提供的目标引擎为本地操作系统时应用程序执行方法函数的示意图;
[0028]
图6为本申请实施例提供的目标引擎为云端操作系统时应用程序执行方法函数的示意图;
[0029]
图7为本申请实施例提供的另一种应用程序执行方法函数的框架示意图;
[0030]
图8为本申请实施例提供的应用程序执行方法函数的方法流程图;
[0031]
图9为本申请实施例提供的应用程序执行方法函数的装置的结构示意图;
[0032]
图10为本申请实施例提供的电子设备的结构示意图;
[0033]
图11为本申请实施例提供的计算装置的结构示意图。
具体实施方式
[0034]
为了使本领域技术人员更好地理解本申请的技术方案,下面将结合附图,对本申请实施例中的技术方案进行清除、完整的描述。
[0035]
需要说明的是,以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
[0036]
以下,对本申请实施例中的部分用语进行解释说明,以便于本领域技术人员理解。
[0037]
(1)java注解:java注解是java代码里的特殊标记,这些标记可以在编译、类加载、运行时被读取,并执行相应的处理。通过注解,开发人员可以在不改变原有代码和逻辑的情况下在源代码中嵌入补充信息。
[0038]
(2)cpu:中央处理器(central processing unit,cpu)是一块超大规模的集成电路,是终端的运算核心(core)和控制核心(control unit)。它的功能主要是解释计算机指令以及处理终端软件中的数据。
[0039]
(3)cpu占用率:指的是运行的程序占用的cpu资源,表示终端在某个时间点的运行程序的情况。占用率越高,说明终端在这个时间上运行越多的程序。
[0040]
(4)应用程序:为可以完成某项或多项特定工作的计算机程序,它具有可视的显示界面,能与用户进行交互。比如电子地图和微信等都可以称为应用程序。
[0041]
(5)云服务器:是一种轻量级通讯及信息化管理营销平台,具有高度分布式、高度虚拟化等特点,使得网络资源得到充分的利用。
[0042]
(6)动态代理点:是指对某个原函数进行动态代理,具体可以是程序运行时对原函数的操作全部交由代理函数控制。其中,代理是指给某个对象提供一个代理对象,并由代理对象控制对于原对象的访问,不直接操控原对象,而是通过代理对象间接地操控原对象。
[0043]
(7)算力:也称哈希率,为终端(或cpu)计算哈希函数输出的速度。算力是衡量在一定的网络消耗下生成新块的单位的总计算能力。
[0044]
(8)接口:接口分为硬件类接口和软件类接口。硬件类接口是指同一终端不同功能层之间的通信规则;软件类接口是指对协定进行定义的引用类型。其他类型实现接口,以保证它们支持某些操作。接口指定必须由类提供的成员或实现它的其他接口。与类相似,接口可以包含方法、属性、索引器和事件作为成员。
[0045]
(9)编译:是指利用编译程序从源语言编写的源程序产生目标程序的过程或者用编译程序产生目标程序的动作。编译就是把高级语言变成终端可以识别的二进制语言。
[0046]
(10)序列化(serialization)和反序列化:序列化是将对象的状态信息转换为可以存储或传输的形式的过程。反序列化是指从序列化的表示形式中提取数据,并直接设置对象状态。在序列化期间,对象将其当前状态写入到临时或持久性存储区。以后,可以通过从存储区中读取或反序列化对象的状态,重新创建该对象。
[0047]
应用程序在运行过程中,通过调用应用程序代码中的方法函数来实现应用程序的功能。目前,应用程序中方法函数的执行方式是在应用程序代码编写过程中预先定义的,预先定义的方法函数的执行方式有两种,一种是通过本地操作系统执行,一种是通过位于远
程服务器的云端操作系统执行。
[0048]
如图1所示,假设预先定义由本地操作系统执行应用程序中方法函数的方式。应用程序模块在调用方法函数时,将方法函数对应的参数发送给本地操作系统,由本地操作系统执行该方法函数,并将执行结果返回给应用程序模块。
[0049]
采用本地操作系统执行应用程序中方法函数的方式是通过本地硬件执行代码,无需通过网络与远程服务器交互;但是方法函数的执行速度受限于本地的硬件设施,若本地运行的程序较多,本地cpu占用率很高,则本地操作系统执行方法函数的速度就会缓慢;或者当本地内存占用率过高,可能会造成系统卡顿,本地操作系统执行应用程序中方法函数的速度也会变慢。
[0050]
如图2所示,假设预先定义由位于远程服务器中的云端操作系统执行应用程序中的方法函数的方式。应用程序模块在调用方法函数时,将方法函数对应的参数发送给远程服务器,在远程服务器中预先存储有该应用程序的所有代码,由位于远程服务器中的云端操作系统执行该方法函数,并将执行结果返回给应用程序模块。
[0051]
采用位于远程服务器中的云端操作系统执行应用程序中方法函数的方式是通过远程服务器执行代码,并将执行结果返回本地。由于应用程序模块在调用方法函数时,需要将方法函数对应的参数通过网络发送给远程服务器,由远程服务器中的云端操作系统根据方法函数对应的参数执行该方法函数,因此该种执行方法函数的方式需要借助于网络,方法函数的执行速度依赖于网络质量。当运行该应用程序的终端处于无网状态时,无法执行该应用程序的方法函数;或者网络质量较差时,在将方法函数对应的参数发送给云端服务器时,参数发送过程缓慢,导致方法函数的执行速度缓慢。其次,通过远程服务器中云端操作系统执行应用程序中方法函数的方式,需要在本地和远程服务器定义相同的接口,增加代码编写的复杂度。
[0052]
本申请人对现有技术进行分析后发现,在现有技术中,由于预先设定唯一的方法函数的执行方式,使得应用程序在调用方法函数时,只能按照预先设定的一种执行方式执行方法函数。如果预先设定的方式是通过本地操作系统执行,若本地的cpu占用率过高或者内存占用率过高时,本地操作系统对方法函数的执行速度会很慢,即使运行该方法函数的终端所处的网络质量较好时,该方法函数也只能通过本地操作系统执行,不能灵活改变其执行方式,会造成方法函数的执行效率较低。同理,如果预先设定的执行方式是通过远程服务器的云端操作系统执行,若当前网络质量较差,该种方式方法函数的执行速度会很慢,即使本地的cpu占用率不高,该方法函数也只能通过远程服务器的云端操作系统执行,造成本地资源浪费,并且导致方法函数的执行效率较低。
[0053]
基于上述分析,本申请实施例提供一种应用程序执行方法函数的方法,该方法可以将具有多引擎标识的方法函数确定为目标方法函数,针对目标方法函数,从至少两个备选引擎中确定出用于执行目标方法函数的目标引擎,再将目标方法函数的参数发送给目标引擎,触发目标引擎根据接收到的目标方法函数的参数执行该方法函数,并接收目标引擎返回的执行结果。其中,本申请实施例提供了至少两个备选引擎,备选引擎包括本地操作系统和至少一个远程服务器中的云端操作系统。可见,本申请实施例为具有多引擎标识的目标方法函数提供至少两个备选引擎,在调用目标方法函数时,从备选引擎中选择执行目标方法函数的目标引擎,目标方法函数的执行方式不是预先设定的,而是在应用程序运行过
程中在调用该目标方法函数时从至少两个备选引擎中选取,能够提高方法函数执行方式的灵活性;由于本申请实施例提供了至少两个备选引擎,在执行目标方法函数时可以根据本地操作系统和云端操作系统的cpu资源占用情况,合理分配cpu资源;例如,在本地操作系统的cpu资源占用较多时,可以选择空余cpu资源较多的云端操作系统,相应的,在云端操作系统的cpu资源占用较多时,可以选择空余cpu资源较多的本地操作系统,避免由于本地操作系统或云端操作系统中的一个执行速度较慢导致方法函数的执行效率较低,从而提高了方法函数的执行效率。
[0054]
此外,针对应用程序中的部分或全部方法函数,开发人员可以在该方法函数上添加多引擎标识;一种可选的实施方式为,多引擎标识可以为java注解中的多引擎注解。通过给方法函数添加注解的方式,对应用程序的代码不产生侵染,不需要改造代码结构,针对添加有多引擎注解的目标方法函数,在执行时需要为该目标方法函数从多引擎中选择目标引擎。
[0055]
例如,以为方法函数添加双引擎注解为例,原方法函数a为:
[0056][0057]
添加双引擎注解之后的方法函数a为:
[0058][0059]
其中,“@注解名称”是java语言书写代码时自定义注解的格式。dualengine表示双引擎。需要说明的是,用dualengine作双引擎标识仅仅是示例性的。
[0060]
在介绍完本申请实施例的设计思想后,下面对本申请实施例的技术方案进行进一步介绍。需要说明的是,以下介绍的技术方案只是示例性的。
[0061]
图3为本申请实施例提供的一种应用程序执行方法函数的框架示意图。包括应用程序模块30、注解处理器31、方法控制器32、方法函数代码存储区33以及本地操作系统34、至少一个远程服务器35、以及位于远程服务器35中的云端操作系统36。
[0062]
在应用程序编译过程中,注解处理器31遍历程序中的添加有多引擎标识的目标方法函数,在目标方法函数中添加动态代理点;并且,注解处理器31将目标方法函数对应的代
码克隆存储到方法函数代码存储区33中。
[0063]
例如,方法函数a为:
[0064][0065]
在编译过程中,注解处理器31检测到具有双引擎标识的方法函数a后,在方法函数a中添加动态代理点,并且将方法函数a的代码克隆存储到方法函数代码存储区33中。
[0066]
在应用程序运行过程中,应用程序模块30调用方法函数,注解处理器31判断被调用的方法函数是否具有多引擎标识;若是,注解处理器31通过方法函数上的动态代理点将控制权转交给方法控制器32,触发方法控制器执行从至少两个备选引擎中确定出目标引擎。
[0067]
实施中,应用程序模块30将所具有多引擎标识的目标方法函数对应的参数发送给注解处理器31,注解处理器31获取目标方法函数对应的参数,并根据目标方法函数中的动态代理点信息,将目标方法函数对应的参数发送给动态代理点,动态代理点将标方法函数对应的参数发送给方法控制器32。
[0068]
方法控制器32从至少两个备选引擎中确定出用于执行目标方法函数的目标引擎,并将目标方法函数对应的参数发送给目标引擎,触发目标引擎根据目标方法函数对应的参数执行目标方法函数。在目标引擎根据目标方法函数对应的参数执行目标方法函数之后,将目标方法函数对应的执行结果返回给方法控制器32。
[0069]
方法控制器32在接收到目标方法函数对应的执行结果之后,通过动态代理点和注解处理器31将目标方法函数对应的执行结果发送给应用程序模块30,并将控制权归还应用程序模块30,应用程序模块30继续执行下一步操作。
[0070]
下面以备选引擎包括本地操作系统和位于远程服务器中的云端操作系统为例,说明本申请实施例执行方法函数的方案。
[0071]
在应用程序运行过程中,应用程序模块30调用目标方法函数时,注解处理器31通过方法函数上的动态代理点将控制权转交给方法控制器32;方法控制器32从本地操作系统34和云端操作系统36确定出用于执行目标方法函数的目标引擎。
[0072]
一种可选的实施方式为,本申请实施例方法控制器根据下列方式从至少两个备选引擎中确定出用于执行目标方法函数的目标引擎。
[0073]
方式一:将本地操作系统和云端操作系统选择为目标引擎。
[0074]
如图4所示,为本申请实施例目标引擎为本地操作系统和云端操作系统时应用程序执行方法函数的示意图。包括应用程序模块30、注解处理器31、方法控制器32、方法函数代码存储区33以及本地操作系统34、至少一个远程服务器35、位于远程服务器35中的云端操作系统36。
[0075]
注解处理器31确定被调用的目标方法函数具有多引擎标识后,获取目标方法函数对应的参数,并根据目标方法函数的标识信息从方法函数代码存储区33中获取目标方法函数对应的代码,并将目标方法函数对应的参数和目标方法函数对应的代码发送给动态代理点,动态代理点将目标方法函数对应的参数和目标方法函数对应的代码发送给方法控制器32;
[0076]
其中,方法函数对应的参数可以为方法函数的实际参数,例如:对于方法函数func(int a,string str),调用该方法函数时,输入func(1,“hello”),则1和“hello”为该方法函数对应的参数;方法函数的标识信息可以为能标识方法函数的唯一标志,也可以为任何能够标识方法函数的标识。
[0077]
方法控制器32在接收到目标方法函数对应的参数和目标方法函数对应的代码之后,将目标方法函数对应的参数发送给本地操作系统34,并将目标方法函数对应的参数以及目标方法函数对应的代码发送给云端引擎代理器37;云端引擎代理器37通过序列化和反序列化方式将目标方法函数对应的参数和目标方法函数对应的代码发送给远程服务器35,由远程服务器35中的云端操作系统36执行该目标方法函数。
[0078]
本地操作系统34根据目标方法函数对应的参数执行该目标方法函数,并将执行结果发送给方法控制器32;
[0079]
以及云端操作系统36根据接收到的目标方法函数对应的代码和目标方法函数对应的参数执行该目标方法函数,并将执行结果发送云端引擎代理器37,由云端引擎代理器37通过序列化和反序列化方式将执行结果发送给方法控制器32。
[0080]
方法控制器32在接收到本地操作系统34和云端操作系统36中任何一个最先返回的执行结果后将其作为目标方法函数对应的执行结果;
[0081]
例如,方法控制器32最先接收到本地操作系统34返回的执行结果,则方法控制器将本地操作系统34返回的执行结果作为目标方法函数对应的执行结果,在接收到云端操作系统36返回的执行结果之后,可以忽略云端操作系统36的执行结果。或者,方法控制器32最先接收到云端操作系统36返回的执行结果,则方法控制器将云端操作系统36返回的执行结果作为目标方法函数对应的执行结果,在接收到本地操作系统34返回的执行结果之后,可以忽略本地操作系统34的执行结果。
[0082]
方法控制器32将目标方法函数对应的执行结果通过动态代理点和注解处理器31发送给应用程序模块。
[0083]
本申请实施例提供的将本地操作系统和位于云端服务器的云端操作系统选择为目标引擎的方式,相比现有技术预先设定一个引擎作为执行方法函数的引擎,能够避免由于预设的引擎故障导致的无法执行方法函数,提高了执行方法函数的可靠性。另外,本申请实施例选择本地操作系统和云端操作系统作为执行方法函数的目标引擎后,本地操作系统和云端操作系统需要将方法函数的执行结果返回给应用程序模块,在本申请实施例中,将本地操作系统和云端操作系统中任何一个最先返回的执行结果作为调用该方法函数的执行结果;由于本申请实施例使用本地操作系统或云端操作系统中执行速度快的引擎返回的执行结果,能够避免由于本地操作系统或云端操作系统中某一个执行缓慢造成的方法函数执行速度过慢,从而提高方法函数的执行效率。
[0084]
方式二:根据本地操作系统的处理状态信息和当前网络质量信息中的至少一种信
息,从本地操作系统和云端操作系统中选择一个作为目标引擎。
[0085]
其中,本地操作系统的处理状态信息包括但不限于cpu占用率、内存占用率。
[0086]
1、在根据本地操作系统的处理状态信息选择目标引擎时,一种可选的实施方式为:
[0087]
在本地操作系统的cpu的占用率大于第一阈值或内存占用率大于第二阈值时,将云端操作系统作为目标引擎;
[0088]
在本地操作系统的cpu的占用率不大于第一阈值且内存占用率不大于第二阈值时,将本地操作系统作为目标引擎。
[0089]
由于在本地运行的程序过多时,会导致本地cpu占用率过高,此时本地操作系统的处理状态不佳,若此时方法控制器选择云端操作系统作为目标引擎;或者当本地内存占用率过高时,方法控制器选择云端操作系统作为目标引擎。而当本地操作系统cpu占用率很低且本地剩余内存足够时,方法控制器可以选择本地操作系统作为目标引擎。
[0090]
2、根据当前网络质量信息选择目标引擎:
[0091]
在当前网络质量信息不大于第三阈值时,将本地操作系统作为目标引擎;
[0092]
在当前网络质量信息大于第三阈值时,将云端操作系统作为目标引擎。
[0093]
具体的,若运行应用程序的终端当前处于无网络连接状态或者所连接的网络质量较差时,方法控制器选择本地操作系统作为目标引擎;若运行应用程序的当前所连接的网络质量良好,则可以选择云端操作系统作为目标引擎。
[0094]
另外,还可以综合考虑本地操作系统的处理状态信息和当前网络质量信息选择目标引擎;例如,在本地操作系统的cpu占用率过高,而运行应用程序的终端当前所连接的网络质量良好,则方法控制器可以选择云端操作系统作为目标引擎。
[0095]
如图5所示,为本申请实施例选择本地操作为系统为目标引擎时应用程序执行方法函数的示意图。包括:应用程序模块30、注解处理器31、方法控制器32以及本地操作系统34。
[0096]
注解处理器31确定被调用的目标方法函数具有多引擎标识后,获取目标方法函数对应的参数,并将目标方法函数对应的参数发送给动态代理点,动态代理点将目标方法函数对应的参数发送给方法控制器32;
[0097]
其中,方法函数对应的参数可以为方法函数的实际参数,例如:对于方法函数func(int a,string str),调用该方法函数时,输入func(1,“hello”),则1和“hello”为该方法函数对应的参数。
[0098]
方法控制器32在接收到目标方法函数对应的参数之后,将目标方法函数对应的参数发送给本地操作系统34;
[0099]
本地操作系统34根据目标方法函数对应的参数执行该目标方法函数,并将执行结果发送给方法控制器32;
[0100]
方法控制器32将目标方法函数对应的执行结果通过动态代理点和注解处理器31发送给应用程序模块。
[0101]
如图6所示,为本申请实施例选择云端操作系统为目标引擎时应用程序执行方法函数的示意图。包括:应用程序模块30、注解处理器31、方法控制器32、方法函数代码存储区33、远程服务器35、位于远程服务器35中的云端操作系统36以及云端引擎代理器37。
[0102]
注解处理器31确定被调用的目标方法函数具有多引擎标识后,获取目标方法函数对应的参数,并根据目标方法函数的标识信息从方法函数代码存储区33中获取目标方法函数对应的代码,并将目标方法函数对应的参数和目标方法函数对应的代码发送给动态代理点,动态代理点将目标方法函数对应的参数和目标方法函数对应的代码发送给方法控制器32。
[0103]
其中,方法函数对应的参数可以为方法函数的实际参数,例如:对于方法函数func(int a,string str),调用该方法函数时,输入func(1,“hello”),则1和“hello”为该方法函数对应的参数;方法函数的标识信息可以为能标识方法函数的唯一标志,也可以为任何能够标识方法函数的标识。
[0104]
方法控制器32在接收到目标方法函数对应的参数和目标方法函数对应的代码之后,将目标方法函数对应的参数以及目标方法函数对应的代码发送给云端引擎代理器37;
[0105]
云端引擎代理器37通过序列化和反序列化方式将目标方法函数对应的参数以及目标方法函数对应的代码发送给位于远程服务器35中的云端操作系统36;
[0106]
云端操作系统36根据目标方法函数对应的参数以及目标方法函数对应的代码执行目标方法函数,并将执行结果发送给云端引擎代理器37;
[0107]
云端引擎代理器37通过序列化和反序列化方式将执行结果发送给方法控制器32;
[0108]
方法控制器32将目标方法函数对应的执行结果通过动态代理点和注解处理器31发送给应用程序模块。
[0109]
本申请实施例提供的根据本地操作系统的处理状态信息和当前网络质量信息中的至少一种信息,从本地操作系统和云端操作系统中选择一个作为目标引擎的方式,通过本地操作系统的处理状态信息可以评估本地操作系统的处理速度,根据当前网络质量信息可以评估云端操作系统的处理速度,在实施中可以从本地操作系统和云端操作系统中选择一个处理速度快的引擎用于执行方法函数。相比现有技术预先设定一个引擎作为执行方法函数的引擎,能够避免由于预设的引擎故障导致的无法执行方法函数,提高了执行方法函数的可靠性;并且,本申请实施例可以根据本地操作系统的处理状态信息和当前网络质量合理选择用于执行方法函数的目标引擎,提高了执行方法函数的灵活性;并且本申请实施例根据本地操作系统的处理状态信息和当前网络质量,可以从本地操作系统和云端操作系统中选择一个处理速度快的引擎用于执行方法函数,能够避免由于本地操作系统或云端操作系统中某一个执行缓慢造成的方法函数执行速度过慢,从而提高方法函数的执行效率。
[0110]
另外,本申请实施例还提供一种触发目标引擎执行目标方法函数的方式;
[0111]
实施中,方法控制器在从至少两个备选引擎中确定出用于执行目标方法函数的目标引擎之后,将确定出的目标引擎通知给动态代理点,由动态代理点触发目标引擎执行目标方法函数。
[0112]
在目标引擎为本地操作系统时,动态代理点将参数发送给本地操作系统;
[0113]
在目标引擎为云端操作系统时,动态代理点将参数以及代码发送给云端操作系统。
[0114]
需要说明的是,本申请实施例的注解处理器、方法控制器可以是和应用程序一一对应的,也可以是多个应用程序对应一个注解处理器、方法控制器,不同的应用程序在执行方法函数时均可调用该注解处理器和方法控制器。
[0115]
需要说明的是,在上述描述应用程序执行方法函数的具体方案时,将注解处理器和方法控制器实现的功能分别由两个模块实现,另外,本申请实施例的注解处理器和方法控制器实现的功能还可以集成于一个模块,由一个模块实现注解处理器和方法控制器的功能。
[0116]
例如,如图7所示,本申请实施例提供的一种应用程序执行方法函数的框架示意图。包括应用程序模块70、控制模块71、方法函数代码存储区72以及本地操作系统73、至少一个远程服务器74、以及位于远程服务器74中的云端操作系统75。
[0117]
在应用程序编译过程中,控制模块71遍历程序中的添加有多引擎标识的目标方法函数,将目标方法函数打上动态代理点;并且,控制模块71将目标方法函数对应的代码克隆存储到方法函数代码存储区72中;
[0118]
在应用程序运行过程中,应用程序模块70调用方法函数,控制模块71判断被调用的方法函数是否具有多引擎标识;若是,控制模块71从至少两个备选引擎中确定出目标引擎;
[0119]
控制模块71从至少两个备选引擎中确定出用于执行目标方法函数的目标引擎,并将目标方法函数对应的参数发送给目标引擎,触发目标引擎根据目标方法函数对应的参数执行目标方法函数。其中,在目标引擎为云端操作系统时,控制模块71还需要从方法函数代码存储区72中获取目标方法函数对应的代码,将目标方法函数对应的代码发送给远程服务器74中的云端操作系统75;
[0120]
在目标引擎执行目标方法函数之后,将目标方法函数对应的执行结果返回给控制模块71;
[0121]
控制模块71在接收到目标方法函数对应的执行结果之后,将目标方法函数对应的执行结果发送给应用程序模块70,应用程序模块70继续执行下一步操作。
[0122]
如图8所示,本申请实施例提供的一种应用程序执行方法函数的流程示意图,该方法可以应用在图3~图7任一所示的框架中。该方法可以包括以下步骤:
[0123]
步骤s81:应用程序在调用方法函数时,确认被调用的方法函数是否为具有多引擎标识的目标方法函数;
[0124]
步骤s82:针对具有多引擎标识的目标方法函数,从至少两个备选引擎中确定出用于执行所述目标方法函数的目标引擎;
[0125]
步骤s83:将目标方法函数对应的参数发送给所述目标引擎,触发所述目标引擎根据所述目标方法函数对应的参数执行所述目标方法函数;
[0126]
步骤s84:接收所述目标引擎返回的所述目标方法函数对应的执行结果。
[0127]
一种可选的实施方式为,所述从至少两个备选引擎中确定出用于执行所述目标方法函数的目标引擎,包括:
[0128]
应用程序将所述目标方法函数对应的参数发送给注解处理器;
[0129]
所述注解处理器根据所述目标方法函数中的动态代理点信息,将所述目标方法函数对应的参数发送给动态代理点,所述动态代理点信息是所述注解处理器在编译目标方法函数代码时,根据所述目标方法函数中的多引擎标识添加到目标方法函数代码中的;
[0130]
所述动态代理点将所述目标方法函数对应的参数发送给所述方法控制器;
[0131]
所述方法控制器从至少两个备选引擎中确定出用于执行所述目标方法函数的目
标引擎。
[0132]
一种可选的实施方式为,所述将目标方法函数对应的参数发送给所述目标引擎,包括:所述方法控制器将所述目标方法函数对应的参数发送给所述目标引擎;以及
[0133]
所述接收所述目标引擎返回的所述目标方法函数对应的执行结果,包括:
[0134]
所述方法控制器接收所述目标引擎返回的所述目标方法函数对应的执行结果,并通过所述动态代理点和所述注解处理器将执行结果返回给所述应用程序。
[0135]
一种可选的实施方式为,所述备选引擎包括本地操作系统和位于远程的云端操作系统;
[0136]
所述方法控制器根据下列方式从至少两个备选引擎中确定出用于执行所述目标方法函数的目标引擎:
[0137]
将所述本地操作系统和所述云端操作系统选择为所述目标引擎;或
[0138]
根据本地操作系统的处理状态信息和当前网络质量信息中的至少一种信息,从所述本地操作系统和所述云端操作系统中选择一个作为所述目标引擎。
[0139]
一种可选的实施方式为,在将所述本地操作系统和所述云端操作系统选择为所述目标引擎时,所述方法控制器将所述目标方法函数对应的参数分别发送给所述本地操作系统和所述云端操作系统;
[0140]
所述方法控制器根据下列方式接收所述目标引擎返回的所述目标方法函数对应的执行结果:
[0141]
将接收到的所述本地操作系统和所述云端操作系统中任何一个最先返回的执行结果作为所述目标方法函数对应的执行结果。
[0142]
基于同一发明构思,本申请实施例中还提供了一种应用程序执行方法函数的装置,由于该装置解决问题的原理与上述应用程序执行方法函数的方法相似,因此该装置的实施可以参见方法的实施,重复之处不再赘述。
[0143]
如图9所示,为本申请实施例提供的应用程序执行方法函数的装置的结构示意图,包括:
[0144]
应用程序模块91,用于调用方法函数;
[0145]
注解处理器92,用于确认被调用的方法函数是否为具有多引擎标识的目标方法函数;
[0146]
方法控制器93,用于针对具有多引擎标识的目标方法函数,从至少两个备选引擎中确定出用于执行所述目标方法函数的目标引擎;将目标方法函数对应的参数发送给所述目标引擎,触发所述目标引擎根据所述目标方法函数对应的参数执行所述目标方法函数;并接收所述目标引擎返回的所述目标方法函数对应的执行结果。
[0147]
一种可选的实施方式为,所述应用程序模块91用于:将所述目标方法函数对应的参数发送给注解处理器;
[0148]
所述注解处理器92用于:根据所述目标方法函数中的动态代理点信息,将所述目标方法函数对应的参数发送给动态代理点,所述动态代理点信息是注解处理器92在编译目标方法函数代码时,根据目标方法函数中的多引擎标识添加到目标方法函数代码中的;
[0149]
方法控制器93用于:接收所述动态代理点发送的所述目标方法函数对应的参数,从至少两个备选引擎中确定出用于执行所述目标方法函数的目标引擎。
[0150]
一种可选的实施方式为,所述方法控制器93具体用于:接收所述目标引擎返回的所述目标方法函数对应的执行结果,并通过所述动态代理点和所述注解处理器92将执行结果返回给所述应用程序模块91。
[0151]
一种可选的实施方式为,所述备选引擎包括本地操作系统和位于远程的云端操作系统;所述方法控制器93具体用于根据下列方式从至少两个备选引擎中确定出用于执行所述目标方法函数的目标引擎:
[0152]
将所述本地操作系统和所述云端操作系统选择为所述目标引擎;或
[0153]
根据本地操作系统的处理状态信息和当前网络质量信息中的至少一种信息,从所述本地操作系统和所述云端操作系统中选择一个作为所述目标引擎。
[0154]
一种可选的实施方式为,在将所述本地操作系统和所述云端操作系统选择为所述目标引擎时,所述方法控制器93具体用于:将所述目标方法函数对应的参数分别发送给所述本地操作系统和所述云端操作系统;
[0155]
所述方法控制器93具体用于根据下列方式接收所述目标引擎返回的所述目标方法函数对应的执行结果:
[0156]
将接收到的所述本地操作系统和所述云端操作系统中任何一个最先返回的执行结果作为所述目标方法函数对应的执行结果。
[0157]
一种可选的实施方式为,在将所述本地操作系统和所述云端操作系统选择为所述目标引擎,或者从所述本地操作系统和所述云端操作系统中选择所述云端操作系统作为所述目标引擎时,所述方法控制器93将所述目标方法函数对应的参数发送给所述目标引擎时还用于:
[0158]
将从方法函数代码存储区中获取的所述目标方法函数对应的代码发送给所述云端操作系统,以使所述云端操作系统根据所述目标方法函数对应的代码和所述目标方法函数对应的参数执行所述目标方法函数;其中,所述方法函数代码存储区中存储的目标方法函数对应的代码是在程序编译过程对所述目标方法函数的源码进行克隆并存储的。
[0159]
一种可选的实施方式为,所述方法控制器93具体用于根据下列方式将所述目标方法函数对应的参数和所述目标方法函数对应的代码发送给所述云端操作系统:
[0160]
将所述目标方法函数对应的参数和所述目标方法函数对应的代码发送给云端引擎代理器,所述云端引擎代理器通过序列化和/或反序列化的方式将所述目标方法函数对应的参数和所述目标方法函数对应的代码发送给所述云端操作系统;
[0161]
所述方法控制器93具体用于根据下列方式接收所述云端操作系统返回的所述目标方法函数对应的执行结果:
[0162]
接收所述云端操作系统通过所述云端引擎代理器返回的所述目标方法函数对应的执行结果。
[0163]
为了描述的方便,以上各部分按照功能划分为各模块(或单元)分别描述。当然,在实施本申请时可以把各模块(或单元)的功能在同一个或多个软件或硬件中实现。
[0164]
另外,本申请实施例还提供一种电子设备100,如图10所示,包括:至少一个处理器101;以及与所述至少一个处理器通信连接的存储器102;其中,
[0165]
所述存储器102存储有可被所述至少一个处理器101执行的指令,所述指令被所述至少一个处理器101执行,以使所述至少一个处理器101能够执行上述应用程序执行方法函
数的方法。
[0166]
在介绍了本申请示例性实施方式的应用程序执行方法函数的方法和装置之后,接下来,介绍根据本申请的另一示例性实施方式的计算装置。
[0167]
所属技术领域的技术人员能够理解,本申请的各个方面可以实现为系统、方法或程序产品。因此,本申请的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。
[0168]
在一些可能的实施方式中,根据本申请的计算装置可以至少包括至少一个处理单元、以及至少一个存储单元。其中,所述存储单元存储有程序代码,当所述程序代码被所述处理单元执行时,使得所述处理单元执行本说明书上述描述的根据本申请各种示例性实施方式的应用程序执行方法函数的方法中的步骤。例如,所述处理单元可以执行如图8所示的步骤s81~s84中应用程序执行方法函数的流程。
[0169]
下面参照图11来描述根据本申请的这种实施方式的计算装置110。图11显示的计算装置110仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
[0170]
如图11所示,计算装置110以通用计算设备的形式表现。计算装置110的组件可以包括但不限于:上述至少一个处理单元111、上述至少一个存储单元112、连接不同系统组件(包括存储单元112和处理单元111)的总线113。
[0171]
总线113表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器、外围总线、处理器或者使用多种总线结构中的任意总线结构的局域总线。
[0172]
存储单元112可以包括易失性存储器形式的可读介质,例如随机存取存储器(ram)1121和/或高速缓存存储器1122,还可以进一步包括只读存储器(rom)1123。
[0173]
存储单元112还可以包括具有一组(至少一个)程序模块1124的程序/实用工具1125,这样的程序模块1124包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
[0174]
计算装置110也可以与一个或多个外部设备114(例如键盘、指向设备等)通信,还可与一个或者多个使得用户能与计算装置110交互的设备通信,和/或与使得该计算装置110能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(i/o)接口115进行。并且,计算装置110还可以通过网络适配器116与一个或者多个网络(例如局域网(lan),广域网(wan)和/或公共网络,例如因特网)通信。如图所示,网络适配器116通过总线113与用于计算装置11的其它模块通信。应当理解,尽管图中未示出,可以结合计算装置110使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、raid系统、磁带驱动器以及数据备份存储系统等。
[0175]
本申请实施例还提供一种计算机可存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述应用程序执行方法函数的方法的步骤。
[0176]
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产
品的形式。
[0177]
本申请是参照根据本申请的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0178]
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0179]
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0180]
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1