脚本语言是编译语言还是纯编译语言,哪个更快?

时间:2014-04-13 15:22:18

标签: java c ruby jruby ruby-c-extension

最近我在jruby中编写了一个应用程序,并从中创建了.jar文件,并在tomcat中进行了部署。我还读过一篇关于jruby的文章,上面写着“Jruby-scalablity of java and easyy of ruby​​”。

在这里我想知道在jruby中编码是这样的,在java中直接编码具有相同的可伸缩性和性能吗?

就像这样使用ruby扩展来在ruby中运行c代码提供与在c中直接编码相同的性能。

由于

1 个答案:

答案 0 :(得分:2)

(免责声明:这可能不是一个完整的答案,但评论时间太长了)

虽然我几乎没有特别使用JRuby实现的经验,但是在JVM上实现的动态语言在您可以获得的速度方面存在局限性,与您直接在Java中编码时所获得的速度相比。

据我所知,这来自权衡客户端语言实现( JRuby Clojure Jython 等)制作,以便模拟"它们在主机平台上的内部工作方式(在本例中为 JVM )。也许在最常见的情况下,性能差异并不是那么糟糕,因为JVM的HotSpot优化开始了,但是当它归结为获得类似Java的代码性能时,您可能需要深入了解语言实现的细节为了绕过它的一些限制。

对于 C 中的 Ruby 扩展名,您实际执行的是本机代码(机器语言),最初编码为 C ,但您可以从Ruby代码中调用它。运行 JRuby 代码时,您编写的语言是 Ruby ,必须将其编译为 Java 字节码,该字节码在 JVM ,将其转换为本机操作系统中的操作。类似于 Ruby / C 的东西就是 JRuby / Java ,它会调用一些 Java 代码,最初用<来自 JRuby 计划的强> Java 。

修改

这个discussion提到了我上面提到的一些要点以及其他一些有趣点的更详细解释。