Compiler construction 源代码解释的语言与Web中的字节码

Compiler construction 源代码解释的语言与Web中的字节码,compiler-construction,programming-languages,interpreted-language,Compiler Construction,Programming Languages,Interpreted Language,假设一个程序是用两种不同的语言编写的: 使用源代码解释的语言(例如PHP) 用字节码解释的语言(例如Java) 这两个程序的功能完全相同(为了简单起见,假设它们都只输出一行文本) 语言(2)会比(1)快吗? 从理论上讲,如果两个站点提供相同的功能,但一个是用PHP构建的,而另一个是用Java(JSP)构建的,那么基于Java的站点会更快吗 Joel对于文本与字节码解释器,一般来说,“更快”的解释器将使用更多的技术将源代码编译为优化的机器代码。这假设要执行的计算量决定了“编译”代码所需的时间 对于

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

  • 使用源代码解释的语言(例如PHP)
  • 用字节码解释的语言(例如Java)
  • 这两个程序的功能完全相同(为了简单起见,假设它们都只输出一行文本)

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

    从理论上讲,如果两个站点提供相同的功能,但一个是用PHP构建的,而另一个是用Java(JSP)构建的,那么基于Java的站点会更快吗


    Joel

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

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


    对于PHP和Java,我认为您会发现Java在总体速度方面是一个不折不扣的赢家。PHP HipHop编译器试图赶上大多数Java实现的通用即时编译器功能。

    不,对此没有任何保证。生成中间字节码是正常编译过程的一部分。PHP只需一次性执行源代码->字节码->执行,而Java只需执行源代码->文件->字节码->执行。差别不大。主要区别在于后端——JIT支持两种语言的效果如何,程序中有多少是静态的还是动态的(例如,类型)


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

    1。现在,没有任何语言,甚至PHP,被严格解释。有些语言(包括PHP)在编译成某种字节码之前并不明显(即,默认情况下,它们在执行后会丢弃字节码),但它仍然是字节码。2.关于语言实现性能,还有很多更重要的事情,比如保持VM的低开销,有一个聪明的JIT和GC,是静态的(类型化的),所以在运行时不用做什么,等等。