【问题标题】:Language interpreted from source code vs. bytecode in Web从源代码解释的语言与 Web 中的字节码
【发布时间】:2011-05-23 13:46:47
【问题描述】:

假设一个程序是用 2 种不同的语言编写的:

  1. 使用从源代码解释的语言(例如 PHP)
  2. 使用从字节码解释的语言(例如 Java)。

这两个程序的作用完全相同(为简单起见,假设它们都只输出一行文本)。

语言 (2) 会比 (1) 快吗?

我是否可以得出这样的结论:理论上,如果两个站点提供相同的功能,但一个使用 PHP 构建而另一个使用 Java (JSP) 构建,则基于 Java 的站点会更快?

乔尔

【问题讨论】:

  • 1.这些天来,几乎没有任何语言,甚至 PHP 都没有被严格解释。某些语言(包括 PHP)对于首先编译为某种字节码并不明显(即默认情况下,它们在执行后将字节码丢弃),但它仍然是字节码。 2. 关于语言实现性能还有很多更重要的事情,例如保持 VM 的开销低、具有巧妙的 JIT 和 GC、静态(同类型)因此在运行时要做的事情更少等等。

标签: compiler-construction programming-languages interpreted-language


【解决方案1】:

不,根本无法保证这一点。它是生成中间字节码的正常编译过程的一部分。 PHP 只需要源代码 -> 字节码 -> 执行就可以了,而 Java 源代码 -> 文件 -> 字节码 -> 执行。没有太大区别。主要区别在于后端——支持两种语言的 JIT 有多有效,程序中有多少是静态的还是动态的(例如类型)。

更重要的是,花费在下载和下载必要数据包或数据库交互上的时间可能会主导网站性能,而不是支持语言。

【讨论】:

    【解决方案2】:

    对于文本解释器与字节码解释器,一般来说,“更快”的解释器将花费更多技术将源代码编译为优化的机器代码。这假定要执行的计算量决定了“编译”代码所需的时间。

    对于 web 页面,它可能很重要,也可能无关紧要,因为您的网页可能没有太多的计算要做。 (大多数网页都花时间等待用户输入:)对于您的单行示例,我认为没有人关心。

    对于 PHP 与 Java,我认为您会发现 Java 在整体速度方面无疑是赢家。 PHP HipHop 编译器试图赶上大多数 Java 实现的一般即时编译器功能。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-29
      • 1970-01-01
      • 2019-11-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多