PHP 7.1 是否达到了最佳性能?
鸟哥惠新宸答:不能说最,别看 PHP 7.1 现在这么快,但相比其它语言,在某些场景下,还是有差距的。这跟它天然的像动态、符号表、间接引用等特性有很大关系。PHP 7.1 相比 7.0 来说,做的最大的工作,就是一个类型推断系统加一个类型相关的中间代码执行引擎。这个不是新的工作,在2013年我们做 PHP 5.5 的 JIT 的时候类型推断系统已经做出来了,但当时把这个项目停掉了,现在把那项工作其中的类型推断部分拿过来,放到 7.1 。基于这个类型推断未来还可以做更多的东西。PHP 7.1 更多的是对 7.0 未完成的工作的一个补充。 详情请移步:【开源访谈】鸟哥惠新宸:PHP 7.1 的新特性我并不是很喜欢
本人找了一个 PHP JIT 相关开源项目JPHP
了解一下
JPHP是使用Java VM的PHP的新实现。它支持PHP语言(7.0+)的许多功能。
它是如何工作的?JPHP是一个编译器javac
,它将PHP源代码编译成JVM字节码,然后可以在Java VM上执行结果。
- 官方网站:j-php.net
在生产中
我们为初学者开发一个新的IDE,比如Game Maker
或Scirra Construct
。它基于JPHP,JavaFX,Java 8,Gradle,并允许为Linux,Windows和Mac(将来可能是Android和其他平台)创建桌面游戏和应用程序。项目名称是DevelNext
(github.com/jphp-compil…),项目的当前状态和版本是BETA。该项目尚未被英文本地化。
目标
JPHP不是Zend PHP引擎或Facebook HHVM的替代品。我们不打算为JPHP实现zend运行时库(例如Curl,PRCE等)。
我们的项目于2013年10月开始。原因如下:
- 能够在PHP中使用Java库
- 通过JIT和JVM升级性能
- 用更好的运行时库替换Zend PHP的丑陋的运行时库。
- 不仅在网络上使用PHP语言
- 另外:字符串和线程的Unicode
特征
- PHP 5.6+(以及PHP 7.0和7.1中的许多语言功能)。
- JIT(约2.5倍PHP 5.6,PHP 7约1.1倍),Optimizer - 性能基准
- 在PHP代码中使用java库和类。
- Unicode字符串(UTF-16,就像Java一样)
- 线程,套接字,环境架构(比如runkit zend扩展中的沙盒对象)。
- GUI(
摇摆或JavaFX) - 嵌入式缓存系统的类和功能
- 可选的热重新加载类和功能
能够在Android操作系统上使用(还没)
JPHP从PHP 7.0,7.1支持什么?
- 上下文敏感Lexer。
- 修复list()行为不一致。
- Throwable接口。
- 组使用声明。
- 标量和可选类型提示。
- 返回类型提示。
- 无效和可重写类型提示。
- 统一变量语法(部分)。
- 空合并运算符
??
。 - 多个catch语法。
- 短列表语法。
- 列表键。
- 类常量可见性修饰符。
- 太空船操作员
<=>
。 - 发电机代表团
yield from
。 - 发生器返回表达式。
intdiv()
功能。
文档
- Wiki在这里:阅读
- 你可以在这里找到最新的api文档:http : //jphp-docs.readthedocs.org/
- 为了对api文档作出贡献,你可以分叉
docs
项目:https://github.com/jphp-compiler/docs
入门(Hello World)
热跑基准?
// via jphp
./gradlew bench
// via php
php -f bench/src/bench.php
复制代码
从源代码构建SNAPSHOT
使用gradle install
来构建和安装jphp模块和库到本地mavel库。在此之后,您可以在您的项目中使用jphp作为maven依赖项。
org.develnext.jphp:jphp-<module>:<version>-SNAPSHOT