本申请涉及数据库,特别是涉及一种程序语言的程序自适应执行系统和方法。
背景技术:
1、通常程序有两种运行方式:编译执行和解释执行。编译执行是在程序执行前将对应代码全部翻译为机器码,特点是程序执行效率较高,以c/c++为代表;解释执行是由解释器对代码进行逐句解释并执行,灵活性较强,但是程序执行效率较低,以python为代表。
2、jit即时编译(just-in-time compilation)是动态编译的一种形式,可提高程序运行效率。即时编译融合了两者的优点,在运行时将代码翻译为机器码,可以达到与静态编译语言相近的执行效率;但是jit即时编译的编译优化过程需要一定时间,如果程序本身的执行次数不多,且逻辑简单,使用jit的话效果不如预期,且优化程度越高耗时越大。
3、目前针对相关技术中如何合理翻译执行数据库中的代码程序的问题,尚未提出有效的解决方案。
技术实现思路
1、本申请实施例提供了一种程序语言的程序自适应执行系统和方法,以至少解决相关技术中如何合理翻译执行数据库中的代码程序的问题。
2、第一方面,本申请实施例提供了一种程序语言的程序自适应执行系统,所述系统包括代码获取模块、代码自适应翻译模块和程序执行模块;
3、所述代码获取模块,用于获取基于编程语言编写的目标代码;
4、所述代码自适应翻译模块,用于根据数据库的应用场景调整所述目标代码的翻译方式,通过所述翻译方式对所述目标代码进行翻译以生成目标机器码;
5、所述程序执行模块,用于执行所述目标机器码。
6、在其中一些实施例中,所述代码自适应翻译模块,用于根据数据库的应用场景调整所述目标代码的翻译方式;
7、若所述数据库的应用场景为低性能应用场景,则将所述目标代码的翻译方式调整为ast遍历解释;
8、若所述数据库的应用场景为中性能应用场景,则将所述目标代码的翻译方式调整为低优化程度jit编译;
9、若所述数据库的应用场景为高性能应用场景,则将所述目标代码的翻译方式调整为高优化程度jit编译。
10、在其中一些实施例中,所述代码自适应翻译模块包括第一代码翻译模块;
11、所述第一代码翻译模块,用于通过所述ast遍历解释,对低性能应用场景下的所述目标代码进行翻译以生成目标机器码。
12、在其中一些实施例中,所述代码自适应翻译模块包括第二代码翻译模块;
13、所述第二代码翻译模块,用于通过所述低优化程度jit编译,对中性能应用场景下的所述目标代码进行翻译以生成目标机器码。
14、在其中一些实施例中,所述代码自适应翻译模块包括第三代码翻译模块;
15、所述第三代码翻译模块,用于通过所述高优化程度jit编译,对高性能应用场景下的所述目标代码进行翻译以生成目标机器码。
16、在其中一些实施例中,所述低优化程度jit编译为基于@compile注解的jit编译:
17、对于所述目标代码中long类型和double类型的函数变量,基于tagged union数据结构进行栈上内存分配的代码翻译;对于所述目标代码中其他类型的函数变量,基于constantsp智能指针通过内置operator函数进行代码翻译。
18、在其中一些实施例中,所述高优化程度jit编译为基于@jit注解的jit编译:
19、对所述目标代码中所有函数的函数参数、函数变量和返回值进行类型信息的绑定,以生成的抽象语法树;遍历绑定了类型信息的所述抽象语法树进行代码翻译。
20、在其中一些实施例中,所述代码获取模块,用于获取基于编程语言编写的目标代码,其中,所述编程语言包括c++编程语言、python编程语言和java编程语言。
21、在其中一些实施例中,所述应用场景包括数据迁移场景、sql查询场景、数据清洗场景、数据分析场景、机器学习场景、可视化图表场景、仿真场景和实时流数据计算场景。
22、第二方面,本申请实施例提供了一种程序语言的程序自适应执行方法,所述方法的执行基于上述第一方面所述的系统,所述方法包括:
23、获取基于编程语言编写的目标代码;
24、根据数据库的应用场景调整所述目标代码的翻译方式,通过所述翻译方式对所述目标代码进行翻译以生成目标机器码;
25、执行所述目标机器码。
26、相比于相关技术,本申请实施例提供的一种程序语言的程序自适应执行系统和方法,其中,该系统包括代码获取模块、代码自适应翻译模块和程序执行模块;代码获取模块,用于获取基于编程语言编写的目标代码;代码自适应翻译模块,用于根据数据库的应用场景调整目标代码的翻译方式,通过翻译方式对目标代码进行翻译以生成目标机器码;程序执行模块,用于执行目标机器码。通过上述代码获取模块、代码自适应翻译模块和程序执行模块,解决了如何合理翻译执行数据库中的代码程序的问题,实现了基于数据库实际应用场景的代码翻译方式的自适应调整,兼顾了代码翻译的翻译效率和后续程序执行的执行效率。
1.一种程序语言的程序自适应执行系统,其特征在于,所述系统包括代码获取模块、代码自适应翻译模块和程序执行模块;
2.根据权利要求1所述的系统,其特征在于,所述代码自适应翻译模块,用于根据数据库的应用场景调整所述目标代码的翻译方式;
3.根据权利要求2所述的系统,其特征在于,所述代码自适应翻译模块包括第一代码翻译模块;
4.根据权利要求2所述的系统,其特征在于,所述代码自适应翻译模块包括第二代码翻译模块;
5.根据权利要求2所述的系统,其特征在于,所述代码自适应翻译模块包括第三代码翻译模块;
6.根据权利要求4所述的系统,其特征在于,所述低优化程度jit编译为基于@compile注解的jit编译:
7.根据权利要求5所述的系统,其特征在于,所述高优化程度jit编译为基于@jit注解的jit编译:
8.根据权利要求1所述的系统,其特征在于,所述代码获取模块,用于获取基于编程语言编写的目标代码,其中,所述编程语言包括c++编程语言、python编程语言和java编程语言。
9.根据权利要求1所述的系统,其特征在于,所述应用场景包括数据迁移场景、sql查询场景、数据清洗场景、数据分析场景、机器学习场景、可视化图表场景、仿真场景和实时流数据计算场景。
10.一种程序语言的程序自适应执行方法,其特征在于,所述方法的执行基于权利要求1至9任一项所述的系统,所述方法包括: