首页 / 知识
关于性能:解释语言-利用解释器后面的编译语言
2023-04-12 08:43:00

Interpreted languages - leveraging the compiled language behind the interpreter如果那里有语言设计人员(或者只是简单的人),我对为解释语言创建标准库的方法感到好奇。 具体来说,什么是最好的方法? 用解释语言定义标准函数/方法,或用编写解释器的编译语言执行那些调用的处理? 我想到的是关于Python中类似于stripslashes()函数的SO问题。 我的第一个想法是"为什么不定义自己的名称,只在需要时调用它",但它提出了一个问题:对于这样的功能,让解释语言处理这种开销是否更可取,还是更好? 写扩展并利用解释器后面的编译语言? 如今,"已解释"和"已编译"语言之间的界线确实很模糊。例如,Python看到源代码时所做的第一件事就是将其编译为字节码表示形式,与Java在编译类文件时所做的基本上相同。这就是* .pyc文件所包含的内容。然后,python运行时在不参考原始源代码的情况下执行字节码。传统上,在执行程序时,纯解释性语言会连续引用源代码。 在构建语言时,这是建立扎实基础的好方法,您可以在此基础上实现更高级别的功能。如果您有一个可靠的快速字符串处理系统,那么语言设计人员可以(并且应该)在基本运行时之外实现诸如stripslashes()之类的东西。这样做至少有几个原因:
仅仅因为像Python这样的语言可以编译并执行字节码,并不意味着它很慢。没有理由不能像Java和.NET所做的那样为Python编写即时(JIT)编译器来进一步提高性能。实际上,IronPython将Python直接编译为.NET字节码,然后使用包括JIT的.NET系统运行该字节码。 为了直接回答您的问题,语言设计者唯一一次使用运行时背后的语言(例如,对于Python为C)实现功能的方法就是最大化该功能的性能。这就是为什么诸如正则表达式解析器之类的模块是用C而不是本机Python编写的原因。另一方面,像getopt.py这样的模块是在纯Python中实现的,因为它可以在此完成,并且使用相应的C库没有任何好处。 重新实现在传统上被认为是"解释"到JVM或CLR之类的平台上的语言的趋势也在增加,然后允许轻松访问"本机"代码以实现互操作性。因此,从Jython和JRuby,您可以轻松访问Java代码,从IronPython和IronRuby,您可以轻松访问.NET代码。 在这种情况下,"利用解释器后面的编译语言"的能力可被描述为新实现的主要动机。 请参阅www.lua.org上的"纸张"部分。 特别是Lua 5.0的实现 Lua在基础(ANSI C)代码中定义了所有标准功能。我相信这主要是出于性能方面的考虑。最近,即'string。*'函数在纯Lua中获得了另一种实现,这对于Lua在.NET或Java运行时(无法使用C代码)之上运行的子项目可能证明是至关重要的。 只要您将便携式API用于已编译的代码库(例如ANSI C标准库或C ++中的STL),那么利用这些功能就可以避免重新发明轮子,并可能提供更小,更快的解释器。 Lua采用这种方法,并且与许多其他方法相比,它绝对是小型且快速的。 |
最新内容
相关内容
python如何编译
python如何编译,培训,指令,脚本,目录,路径,模块,命令,文件,大小写,文件名,1、说明编译python程序就是把python脚本转换成操作系统中的可执行pythonc语言取余和python取余的区
pythonc语言取余和python取余的区别,培训,资料,语言,负数,区别,被除数,符号,除数,规定,余数,今天看书发现python与C的负数取余运算结果不同,pythonPython和r语言的区别
pythonPython和r语言的区别,数据,分析,流程,培训,工具,系统,服务,平台,代码,语言,Python与R语言的共同特点1.Python和R在数据分析和数据挖掘pythonpython是函数式语言吗
pythonpython是函数式语言吗,培训,代码,函数,概念,指数,状态,语言,变量,计算机,程度,函数是Python内建支持的一种封装,我们通过把大段代码拆成python怎么重新编译python
python怎么重新编译python,培训,环境变量,命令,里面,以上,文件,更多,内容,第一步,解压Python-3.6.4.tgz,tar-zxvfPython-3.6.4.tgz第二步,进入python为什么叫胶水语言
python为什么叫胶水语言,标准,代码,培训,数据,一致,环境,周期性,软件,服务,胶水,什么是胶水语言?胶水语言(gluelanguage)是用来连接软件组件python编程语言有什么用途
python编程语言有什么用途,设计,大规模,软件,培训,数据,平台,工具,生产,面临,通用,Python是一门简单易学的编程语言。阅读好的Python程序感觉pythoninput怎么解释
pythoninput怎么解释,培训,函数,版本,字符串,以后,以上,提示,原因,功能,更多,python中input函数有类似c中的scanf函数的功能。Python2中inputpythonPython语言都可以做什么
pythonPython语言都可以做什么,数据,代码,分析,培训,设备,基础,服务,时间,机器,脚本,如果您正在考虑学习Python,或者您最近刚开始学习,您可能会pythonpython是前端语言吗?
pythonpython是前端语言吗?,代码,互动,培训,平台,标准,设计,语言,前端,语法,解释性,python语言属于后端开发语言。Python是一个高层次的结合python用什么编译器
python用什么编译器,代码,平台,工具,环境,培训,灵活,时间,管理,系统,智能,Python的学习过程少不了IDE或者代码编辑器,或者集成的开发编辑器(IDpythonpython是什么类型的语言
pythonpython是什么类型的语言,培训,系统,教育,软件,电脑,代码,简介,人工智能,类型,语言,python是一种面向对象、解释型、动态类型计算机程序