基于Javascript引擎的性能优化方法和装置制造方法及图纸

技术编号:27536323 阅读:18 留言:0更新日期:2021-03-03 11:23
本公开关于一种基于Javascript引擎的性能优化方法和装置,所述性能优化方法包括:获取Javascript代码和WebAssembly包,其中,所述WebAssembly包包括二级引擎以及能够在所述二级引擎运行的静态代码和基础能力库,所述二级引擎、所述静态代码和所述基础能力库从静态语言代码被编译成WebAssembly代码,所述基础能力库包括系统层API;通过所述Javascript引擎解析并执行所述Javascript代码,并且编译并执行所述WebAssembly包。行所述WebAssembly包。行所述WebAssembly包。

【技术实现步骤摘要】
基于Javascript引擎的性能优化方法和装置


[0001]本公开涉及计算机
,更具体地说,涉及一种基于Javascript/WebAssembly引擎的性能优化方法和装置以及一种产生WebAssembly包的方法和装置。

技术介绍

[0002]Javascript(以下,可简称为JS)是动态执行的语言,即不需要提前编译,在执行时将代码塞给Javascript引擎(以下,可简称为JS引擎),JS引擎会负责解析、编译、执行。静态语言(例如,C语言等)必须提前编译,打包在可执行文件中,最终随文件执行。JS的优点是可以在不改变应用的情况下,动态下载代码改变执行逻辑,但是缺点是执行效率不如静态语言,也无法直接调用系统接口。静态语言与JS相反,优点是执行效率高,与系统语言一致,但缺点是不能快速更新。WebAssembly是Web为了在JS引擎中能执行高效代码提出的一种技术。但是原生WebAssembly方案虽然可提高一定的执行效率,但又带来了基础能力模块的能力无法快速更新的问题。

技术实现思路

[0003]本公开提供一种基于Javascript引擎的性能优化方法和装置、一种基于WebAssembly引擎的性能优化方法和装置、一种产生WebAssembly包的方法和装置,可至少解决上述相关技术中的问题,也可不解决任何上述问题。
[0004]根据本公开实施例的第一方面,提供一种基于Javascript引擎的性能优化方法,包括:获取Javascript代码和WebAssembly包,其中,所述WebAssembly包包括二级引擎以及能够在所述二级引擎运行的静态代码和基础能力库,所述二级引擎、所述静态代码和所述基础能力库从静态语言代码被编译成WebAssembly代码,所述基础能力库包括系统层API;通过所述Javascript引擎解析并执行所述Javascript代码,并且编译并执行所述WebAssembly包。
[0005]可选地,所述通过所述Javascript引擎执行所述WebAssembly包,可包括:在所述Javascript引擎执行所述Javascript代码时,通过所述Javascript代码来调用并执行所述WebAssembly包。
[0006]可选地,所述通过所述Javascript代码来调用并执行所述WebAssembly包,可包括:通过所述Javascript代码调用所述二级引擎;通过所述二级引擎调用所述基础能力库;通过所述基础能力库经由所述系统层API来调用系统层的基础能力。
[0007]可选地,所述WebAssembly包可通过所述二级引擎和所述基础能力库被更新而被更新;其中,所述性能优化方法还可包括:获取所述Javascript代码以及更新后的WebAssembly包;通过所述Javascript引擎解析并执行所述Javascript代码,并且编译并执行所述更新后的WebAssembly包。
[0008]可选地,与所述静态代码相应的WebAssembly代码可被打包成第一WebAssembly包,并且第一WebAssembly包、与所述二级引擎相应的WebAssembly代码和与所述基础能力
库相应的WebAssembly代码可被打包成第二WebAssembly包,作为所述WebAssembly包。
[0009]可选地,所述二级引擎可为Javascript引擎或WebAssembly引擎。
[0010]根据本公开实施例的第二方面,提供一种产生WebAssembly包的方法,包括:将二级引擎以及能够在所述二级引擎运行的静态代码和基础能力库从静态语言代码编译成WebAssembly代码,其中,所述基础能力库包括系统层API;将被编译成WebAssembly代码的所述二级引擎、所述静态代码和所述基础能力库打包成一个WebAssembly包,其中,所述WebAssembly包在客户端被Javascript引擎或WebAssembly引擎编译并执行。
[0011]可选地,所述WebAssembly包可在所述Javascript引擎执行Javascript代码时,通过所述Javascript代码被调用并执行;或者可在所述WebAssembly引擎执行WebAssembly代码时,通过所述WebAssembly代码被调用并执行。
[0012]可选地,所述二级引擎可被所述Javascript代码或所述WebAssembly代码调用,所述基础能力库可被所述二级引擎调用,系统层的基础能力可被所述基础能力库经由所述系统层API调用。
[0013]可选地,所述方法还包括:通过更新所述二级引擎和所述基础能力库来更新所述WebAssembly包;其中,更新后的所述WebAssembly包可在客户端被Javascript引擎或WebAssembly引擎编译并执行。
[0014]可选地,所述将被编译成WebAssembly代码的所述二级引擎、所述静态代码和所述基础能力库打包成一个WebAssembly包,可包括:将与所述静态代码相应的WebAssembly代码打包成第一WebAssembly包;将第一WebAssembly包、与所述二级引擎相应的WebAssembly代码和与所述基础能力库相应的WebAssembly代码打包成第二WebAssembly包,作为所述WebAssembly包。
[0015]可选地,所述二级引擎可为Javascript引擎或WebAssembly引擎。
[0016]根据本公开实施例的第三方面,提供一种基于Javascript引擎的性能优化装置,包括:获取单元,被配置为获取Javascript代码和WebAssembly包,其中,所述WebAssembly包包括二级引擎以及能够在所述二级引擎运行的静态代码和基础能力库,所述二级引擎、所述静态代码和所述基础能力库从静态语言代码被编译成WebAssembly代码,所述基础能力库包括系统层API;执行单元,被配置为通过所述Javascript引擎解析并执行所述Javascript代码,并且编译并执行所述WebAssembly包。
[0017]可选地,所述Javascript引擎在执行所述Javascript代码时,可通过所述Javascript代码来调用并执行所述WebAssembly包。
[0018]可选地,可通过所述Javascript代码调用所述二级引擎,可通过所述二级引擎调用所述基础能力库,可通过所述基础能力库经由所述系统层API来调用系统层的基础能力。
[0019]可选地,所述WebAssembly包可通过所述二级引擎和所述基础能力库被更新而被更新;其中,获取单元还可被配置为:获取所述Javascript代码以及更新后的WebAssembly包;执行单元还可被配置为:通过所述Javascript引擎解析并执行所述Javascript代码,并且编译并执行所述更新后的WebAssembly包。
[0020]可选地,与所述静态代码本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于Javascript引擎的性能优化方法,其特征在于,包括:获取Javascript代码和WebAssembly包,其中,所述WebAssembly包包括二级引擎以及能够在所述二级引擎运行的静态代码和基础能力库,所述二级引擎、所述静态代码和所述基础能力库从静态语言代码被编译成WebAssembly代码,所述基础能力库包括系统层API;通过所述Javascript引擎解析并执行所述Javascript代码,并且编译并执行所述WebAssembly包。2.如权利要求1所述的性能优化方法,其特征在于,所述通过所述Javascript引擎执行所述WebAssembly包,包括:在所述Javascript引擎执行所述Javascript代码时,通过所述Javascript代码来调用并执行所述WebAssembly包。3.如权利要求2所述的性能优化方法,其特征在于,所述通过所述Javascript代码来调用并执行所述WebAssembly包,包括:通过所述Javascript代码调用所述二级引擎;通过所述二级引擎调用所述基础能力库;通过所述基础能力库经由所述系统层API来调用系统层的基础能力。4.一种产生WebAssembly包的方法,其特征在于,包括:将二级引擎以及能够在所述二级引擎运行的静态代码和基础能力库从静态语言代码编译成WebAssembly代码,其中,所述基础能力库包括系统层API;将被编译成WebAssembly代码的所述二级引擎、所述静态代码和所述基础能力库打包成一个WebAssembly包,其中,所述WebAssembly包在客户端被Javascript引擎或WebAssembly引擎编译并执行。5.一种基于Javascript引擎的性能优化装置,其特征在于,包括:获取单元,被配置为获取Javascript代码和WebAssembly包,其中,所述WebAssembly包包括二级引擎以及能够在所述二级引擎运行的静态代码和基础能力库,所述二级引擎、所述静态代码和所述基础能力库从静态语言代码被编译成WebAssembly代码,所述基础能力库包括系统层API;执行单元,被配置为通过所述Javascript引擎解析并执行所述Javascript代码,并且编译并执行所述WebAssembly包。6.一种产生WebAssembly包的装置,其特征在于,包括:编译单元,被配置为将二级引擎以及能够在所述二级引擎...

【专利技术属性】
技术研发人员:刘博杰
申请(专利权)人:北京达佳互联信息技术有限公司
类型:发明
国别省市:

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

1