可以Ruby,PHP,或Perl创建一个预先编制的文件的代码就像蟒蛇?
-
22-08-2019 - |
题
为蟒蛇,它可以创建一个预先编译版本的文件。pyc使程序能够运行,不需解释。可以Ruby,PHP and Perl做同样的命令?
解决方案
有没有便携式码规范,红宝石,因此还没有标准的方式载预先编译码档案。然而,几乎所有红宝石的实现方式使用某种类型的字节或intcode格式,并且他们可以卸和重新装载码档案。
YARV 总是汇编,以码之前执行代码,但是,通常只有在存储器。有种方法倾倒的字节码磁盘。 目前,有没有办法读回来 在, 然而.这将变化的未来:工作正在进行中,在一个码验证程序,用于YARV,一旦做到这一点,特码可以安全地装载到虚拟机,没有恐惧的腐败。此外,继续开发商已经表示,他们愿意为实现一个 YARV VM模拟器里面它, 一旦YARV码格式和验证程序是稳定的,所以,你可以载YARV字节到它.(注意,这个版本是 过时.)
题 也总是汇编,以码,它有一个 格式编制的文件 (.rbc
文件,类似于JVM .class
文件)和有谈码存档格式(.rba
文件,类似于JVM .jar
文件)。有一个机会,题可能会实现一个YARV仿真程序,如果部署的应用程序,因为YARV码曾经成为流行。此外,继续开发商已经表示,他们愿意为实现一个 题码模拟器里面它, 如果题码变成一种流行的方式部署红宝石的应用程序。(注意,这个版本是 过时.)
XRuby 是一个纯粹的编译器,它汇编了红宝石的源代码觉JVM字节(.class
文件)。你可以部署这些 .class
文件就像任何其他Java应用程序。
它的 开始作为一名翻译,但它有两个JIT和一个编译器 提前编译器 (jrubyc
),可以汇编的红宝石来源码JVM字节(.class
文件)。此外,正在开展工作,以创建一个 新的 编译器,可以汇编(类型的附加说明)红宝石码JVM码 这实际上看起来像一个Java类和可用于从Java码无障碍。
Ruby.NET 是一个纯粹的编译器,汇编了红宝石的来源码CIL字节(PE .dll
或 .exe
文件)。你可以部署这些就像任何其他CLI应用程序。
如何从语言特性 还编译为CIL字节,但通常不会在这-内存。但是,可以通过 commandline切换到它, ,因此它转储的 .dll
和 .exe
文件出的磁盘。一旦你有了这些,他们可以部署。
BlueRuby 自动预先分析红宝石的源代码转。(BlueRuby间语言),这基本上是一个化但是.(见 蓝宝石-宝石VM在SAP种(PDF格式),用于细节。)
我 想想 (但我是绝对不确定),有一种方法来获得 红衣主教 甩出去 鹦鹉 码档案。(实际上,红衣主教只编译为过去,然后鹦鹉需要结束了,所以这将是鹦鹉的工作倾倒和载码档案。)
其他提示
有关歇斯底里葡萄干,Perl 5中看起来为模块搜索时.pmc
文件提前.pm
文件。这些文件可能包含字节码,但Perl不写字节码出默认(不像Python)的。
的模块::编译(或:这是什么PMC啄)强> 进入这个不起眼的功能,一些更深入。他们不经常使用,但是......
谁写聪明人模块::编译利用这一点,以预编译的Perl代码到...好,它仍然是Perl的,但它的预处理。
除了其它的优点,这加快装载时间和使用源过滤器时使调试容易(Perl代码修改的Perl源代码由解释器被加载之前)。
不为PHP,虽然大多数PHP设置掺入字节码缓存将缓存编译字节码,使脚本运行下一次,编译版本运行。这显着地加快了执行。
有没有办法,我所知道的在通过命令行的字节码实际上得到。
这里有一些示例咒语的命令行
perl -MO=Bytecode,-H,-o"Module.pm"c "Module.pm"
根据的编程的Perl 第三版,有可能在一些实验方法来近似此。
如果您使用 Zend的卫队你的PHP脚本,它基本上是预编译脚本字节码,然后可以通过PHP引擎如果Zend的优化扩展被加载运行。
所以,是Zend的护罩/优化器允许使用预编译PHP脚本。
有关PHP,所述 Phalanger计划编译成.NET程序集。我不知道那是什么,你正在寻找,但。
有没有人使用LLVM的字节码考虑,而不是一个尚未另一个定制字节码?
红宝石1.8实际上并未使用在所有(甚至在内部)的字节码,所以没有预编译步骤。