[发明专利]动态语言的优化执行有效
申请号: | 201380038085.6 | 申请日: | 2013-06-17 |
公开(公告)号: | CN104471557B | 公开(公告)日: | 2016-11-02 |
发明(设计)人: | 所罗门·布洛斯;杰里米·休格曼 | 申请(专利权)人: | 谷歌公司 |
主分类号: | G06F15/16 | 分类号: | G06F15/16 |
代理公司: | 中原信达知识产权代理有限责任公司 11219 | 代理人: | 周亚荣;安翔 |
地址: | 美国加利*** | 国省代码: | 美国;US |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 动态 语言 优化 执行 | ||
技术领域
本公开一般地涉及动态计算机程序语言和即时(just-in-time)代码生成领域。具体地,本公开描述了一种通过上下文跟踪和即时代码生成来优化执行动态计算机程序语言的系统、方法和过程。
背景技术
针对web开发和应用开发已大量采用了诸如PHP:超文本预处理器(PHP)、Python、Ruby和Perl的动态语言,因为它们使得开发者产率高。这些语言有许多特征有助于它们的多产特性,但是最重要的两个特征是运行时键入和将新数据动态地评价为代码的能力。这些特性允许开发者编写能够比以诸如C、Java或C++的语言编写的静态代码更灵活地使用的代码。例如,动态语言通过在运行时允许开发者有条件地从现有代码生成新的可执行代码以处理新数据,来使得能够进行更灵活的开发实践。
动态语言的缺点在于它们的执行通常显著慢于静态语言(其可能强制编译时静态键入并且可能不允许动态代码执行)。由于在编译时函数和变量的类型是已知的,并且由于可执行代码的全范围是编译器已知的,所以可在程序的执行之前有效地将静态语言转换成机器代码。在动态语言的情况下,在代码被执行的时刻之前,可执行代码的全范围未知,并且许多函数和变量的类型可能未知。由于这些原因,动态语言无法在执行之前被完全地转换为机器代码。另外,即使向机器代码的运行时转换常常也是不可行的,因为即时编译过程本身可能需要大量执行资源,导致执行期间的性能下降。
发明内容
所公开的配置包括一种通过动态执行模块来执行计算机程序的系统、方法和计算机可读介质。所公开的配置包括一种计算机实现的方法,其中,接收执行程序代码的第一请求。这里,所述程序代码包括初始代码和运行时条件代码。响应于第一请求,从初始代码生成执行资源,其中所述执行资源包括执行代码库(execution codebase)和执行上下文(execution context)。所述执行代码库包括从初始代码生成的机器代码,并且所述执行上下文包括存储的对针对初始代码中的函数、变量和用户定义类型生成的元素的引用。执行代码库中的机器代码被执行,并且使用运行时条件代码来更新执行代码库和执行上下文。然后接收执行程序代码的第二请求,并且使用更新的执行上下文来执行更新的执行代码库中的机器代码。
附图说明
图1是示出执行环境中的动态执行模块的示例实施例的高级框图。
图2是示出示例计算机的高级框图。
图3是示出根据一个实施例的动态执行模块内的组件的详细视图的框图。
图4是示出使用动态执行模块的一个实施例来执行程序代码的过程的流程图。
具体实施方式
附图和以下描述仅以例示方式描述特定实施例。本领域技术人员将容易从以下描述认识到在不脱离本文所述的原理的情况下可采用本文所示的结构和方法的替选实施例。现在将详细参照若干实施例,其示例示出于附图中。需要注意的是,只要可行,相似或相同的参考数字可用在图中并且可指示相似或相同的功能。
图1示出在执行环境120中的程序代码100和动态执行模块101。执行环境120包括可托管并执行计算机程序指令的一个或多个计算机系统。在一个实施例中,执行环境120是单个计算机系统,例如web服务器。在另一实施例中,执行环境包括通过网络连接的若干算机系统,例如数据中心中的服务器计算机。
例如,程序代码100包括以诸如Python、Perl、Ruby、PHP等的计算机语言的计算机源代码。程序代码100可包括初始代码106和运行时条件代码107。初始代码106包括在发起程序代码100的执行时被加载的计算机指令。例如,初始代码106可包括具有程序的“主函数”或“主循环”的文件。初始代码106在被执行时可加载调用运行时条件代码107的附加计算机程序指令。运行时条件代码107可基于在已发起执行之后确定的情况来有条件地加载。例如,运行时条件代码107可包括在运行时基于程序代码100的当前执行从数据库加载的计算机指令。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于谷歌公司,未经谷歌公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201380038085.6/2.html,转载请声明来源钻瓜专利网。
- 上一篇:自行车智能坐垫袋
- 下一篇:一种用于裸线导线的喷漆装置