关于性能:解释语言-利用解释器后面的编译语言

关于性能:解释语言-利用解释器后面的编译语言

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采用这种方法,并且与许多其他方法相比,它绝对是小型且快速的。


推荐阅读

    提高3A四核羿龙II游戏配置的性能

    提高3A四核羿龙II游戏配置的性能,,以节能环保为主题的IT产业,目前3A低端平台处理器、主板芯片组、独立开发卡性能突出,特别是在与AMD的处理

    优化PostgreSQL中的批量更新性能

    优化PostgreSQL中的批量更新性能,数据,表格,在Ubuntu 12.04上使用PG 9.1. 我们目前需要24小时才能运行大量UPDATE数据库上的语句,其形式

    诺基亚威图性能好到哪里

    诺基亚威图性能好到哪里,诺基亚,手机,诺基亚威图性能好到哪里这是一部以前列出的手机。即使当时配置不高,该品牌的手机也不依赖于该功能吸

    魅蓝note6性能参数有哪些

    魅蓝note6性能参数有哪些,摄像头,蓝牙,魅蓝note6性能参数有哪些魅力蓝色Note6最好拍照。电池寿命更长。蓝色Note6使用高通 snapdragon 625

    探探语言设置|探探怎么设置语言

    探探语言设置|探探怎么设置语言,,1. 探探怎么设置语言打开探探软件,然后就有消息提示的红点,点开就行了!其实这些软件都是挺简单的操作的,都是

    国产电脑cpu测试|国产CPU性能

    国产电脑cpu测试|国产CPU性能,,国产CPU性能天玑9000答: 天玑9000更厉害。因为天玑9000是 最新发布的cpu,也是现在的天花板。而麒麟9000是 2

    git设置编码|git语言设置

    git设置编码|git语言设置,,git设置编码点击cap4j搜索从git直接链接上拉代码。git语言设置Git是一个开源的分布式版本控制系统,可以有效、高

    主流电脑cpu性能分析|cpu性能对比表

    主流电脑cpu性能分析|cpu性能对比表,,1. cpu性能对比表一、参数对比1、r7 5800H:制程工艺为7nm,主频3.2GHz,睿频4.4GHz,线程数是8核16线程,45W

    新老酷睿i3性能对比试验i34130和i33220

    新老酷睿i3性能对比试验i34130和i33220,,新的英特尔酷睿i3-4130 Haswell处理器架构已经推出了很长一段时间,虽然市场的时间还不长,已经成为