php - 为什么 PHP 使用操作码缓存而 Java 编译为字节码文件?

标签 php apc

在我看来,PHP 和 Java 都具有相似的结构。首先,您编写一些高级代码,然后必须将其转换为更简单的代码格式,以便由 VM 执行。一个区别是,PHP 直接从源代码文件工作,而 Java 将字节码存储在 .class 文件中,VM 可以从中加载它们。

现在对快速执行 PHP 的要求越来越高,这让人们相信直接使用操作码会更好,而不是在用户每次点击文件时都经过编译步骤。

解决方案似乎是a load of so called Accelerators ,它基本上将编译结果存储在缓存中,然后使用缓存的操作码而不是再次编译。

另一种由 Facebook 完成的方法是 completely compile the PHP编码为不同的语言。

所以我的问题是,为什么 PHP 世界中没有人做 Java 所做的事情?是否有一些动态元素真的需要每次都重新编译或类似的东西?否则,当代码投入生产时编译所有内容然后使用它会更聪明。

最佳答案

最重要的区别是 JVM 有一个明确的规范,完全涵盖了字节码。这使得字节码文件具有可移植性和有用性,而不仅仅是由特定的 JVM 实现执行。

PHP 甚至没有语言规范。 PHP 操作码是特定 PHP 引擎的实现细节,因此您不能真正用它们做任何有趣的事情,并且使它们更加可见也没有什么意义。

关于php - 为什么 PHP 使用操作码缓存而 Java 编译为字节码文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10716676/

相关文章:

javascript - 将值从 PHP 传递到 JavaScript

PHP 输出不以 xml 格式打印

PHP - APC 缓存 - 用户特定数据与所有用户可访问的数据

php - 安装PECL扩展错误

php - 无法在 XAMPP Windows 上安装 MongoDB PHP 驱动程序

php - magento 中哪里可以更改订单状态消息?

php - magento 客户端被服务器配置拒绝

apc - APC 操作码缓存是否在 PHP-FPM 池/ worker 之间共享?

php - 如何将 apk 3.1.12 还原到 3.1.11

PHP 评估 $a ="$a"?