时下不少人拿PHP7的高性能与HHVM来做比较,那么问题来了:随着PHP7性能的提升,我们能预测出未来PHP这门措辞会用PHP写出来么?

Mattsah的不雅观点:

对阐明型措辞来说,有用措辞本身来重写这门措辞的其他实例么?我认为纵然有这样的实例,在这个环境下,这门措辞的某些部分必定是不可用的。

php7的缺点PHPPHP7机能晋升之后的思虑 AJAX

Otterfan:

最经典的实例便是PyPy,这是一个用RPython(Python的一个子集)写出来的Python阐明器和实时编译器

Mattsah:

虽然对Python不是很熟习,但我不得不考虑下(如有误欢迎更正),这样一来它的动态性能或者说某些特性是不是会受到限定?

Otterfan:

实际上并没有。
它基本上能与Python 2.7.8和Python 3.2.5兼容,乃至它有时候比规范的Python(CPython)运行的还要快。

实际上的过程是这样的:Rpython通过PyPy的RPython工具链被翻译成C版本,然后这个C版本被编译为二进制机器码,接着用户层的Python就会运行在这个二进制机器码上。
你当然也可以在规范的CPython阐明器之上来运行PyPy阐明器,不过这样子PyPy会运行的很慢。

PyPy同样也是一个实时编译器,这才是PyPy常日能产生出乃至比CPython还要快的代码的真正缘故原由,代价只是启动的时候轻微有点延迟。
PHP则不会有像Python Web开拓的这个缺陷,由于Python Web运用是一次性就全部启动并开始运行,而不是像PHP一样相应每个要求才开始逐步启动。

Chippiewall的不雅观点:

你不可能在没有一个阐明器来运行的条件下写出一个阐明型措辞的阐明器。

Ircmaxell的评论:

这个不雅观点严格意义上是不对的。

其余更正一点,PHP并不是一门阐明型措辞,而是一门编译型措辞。

明白了这一点,就很不一样了。
是的,编译器并不会产生出原生的机器码,但还是存在这么一个编译器的。
并且虚拟机利用的每个单独的操作在理论上都会被产生的机器码所代替。
看看Zend’s “JIT”编译器吧,它根本就不是一个实时编译器,而是一个AOT编译器。
很准确地说,它能产生出原生的机器码而不是虚拟机代码(但有相同的语义)。

以是如果拿一个用PHP(Recki-CT或PHPPHP)写的编译器,我们是能够用它来编译自身的。
这就意味着,只要我们勾引它一次,我们就不再须要“编译器”(虚拟机)了。

以是,Chippiewall的不雅观点是不对的。

========="大众年夜众号:春树镇

谈论研究:互联网技能,PHP开拓,网站培植,web设计,小说,电影