PHP7性能提升之后的思考

导读] 时下不少人拿PHP7的高性能与HHVM来做比较,那么问题来了:随着PHP7性能的提升,我们能预测出未来PHP这门语言会用PHP写出来么?最经典的实例就是PyPy,这是一个用RPython(Python的一个子集)写出来的Python解释器和实时编译器。

本文由PHP100中文网编译,转载请看文末的转载要求,谢谢合作! 时下不少人拿PHP7的高性能与HHVM来做比较,那么问题来了:随着PHP7性能的提升,我们能预测出未来PHP这门语言会用PHP写出来么?

Mattsah的观点:

对解释型语言来说,有用语言本身来重写这门语言的其他实例么?我认为即使有这样的实例,在这个环境下,这门语言的某些部分必定是不可用的。 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的观点是不对的。 原文:http://www.reddit.com/r/PHP/comments/2xlayg/ask_php_with_improved_speed_of... 译文:http://www.php100.com/html/dujia/2015/0303/8694.html (翻译:PHP100_Alex)

原文发布于微信公众号 - php(phpdaily)

原文发表时间:2016-04-19

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏coding for love

JS常用设计模式解析02-策略模式

在于都本文之前,希望大家能够先阅读以下JS进阶系列03-JS面向对象的三大特征之多态这篇文章,了解JS的多态。在这篇文章,我们举了一个例子,就是选拔官员选拔合唱...

853
来自专栏大数据人工智能

2018年 阿里云大牛工程师经历过的20道大数据面试题!

1.Java中Class.forName和ClassLoader.loadClass的区别

3934
来自专栏大史住在大前端

大前端的自动化工厂(5)—— 基于Karma+Mocha+Chai的单元测试和接口测试

大多数前端开发者对测试相关的知识是比较缺乏的,一来是开发节奏很快,来不及写,另一方面团队里也配备了“人肉测试机”,完全没必要自己来。但随着项目体量的增大,许多人...

952
来自专栏算法+

c语言智能指针 附完整示例代码

资源获取即初始化 (Resource Acquisition Is Initialization, RAII),RAII是一种资源管理机制,资源的有效期与持有资...

1946
来自专栏walterlv - 吕毅的博客

合并 Jekyll 多种类型的页面

发布于 2017-10-12 15:48 更新于 2018-08...

732
来自专栏UDNZ

【译】Go 语言实践:编写可维护的程序的建议

本文为 QCon 2018 上海站主题演讲嘉宾、Heptio 资深工程师、著名 Go 语言专家 David Cheney 关于 Go 语言实践的英文分享。为方便...

4198
来自专栏纯洁的微笑

FastDFS并发会有bug,其实我也不太信?- 一次并发问题的排查经历

前一段时间,业务部门同事反馈在一次生产服务器升级之后,POS消费上传小票业务偶现异常,上传小票业务有重试机制,有些重试三次也不会成功,他们排查了一下没有找到原因...

8976
来自专栏吉浦迅科技

DAY41:阅读Synchronization Functions

waits until all threads in the thread block have reached this point and all glob...

703
来自专栏开发 & 算法杂谈

基于Lockset的数据竞争检测方法汇总(二)

前一篇文章提到的是使用Lockset最经典的方法,但是存在很多误报,针对这些误报产生的原因,有很多分析并改进了原始的Lockset方法,今天主要和大家谈的就是有...

1577
来自专栏SDNLAB

Ryu的一些设计方法解读

作为一个业余研究Ryu的软件工程师,一直惊叹于Ryu设计的优雅与简洁。一年多坚持下来,也有自己的一些收获,写出来和大家分享一下。 我们的故事从@set_ev_c...

2986

扫码关注云+社区