kphp 是 php 语言的一个子集,
它用的是 php 的子集,需要能够从 php 代码中自动推导出变量类型,或者用 phpdoc 中 /** @var type */
显式地标出变量类型才行,没有 gc ,使用 c++ raii 来保证内存安全问题 ,kphp 是先把这种带类型的 php 代码编译到 c++,再编译成二进制可执行文件的,而不是直接编译成 llvm 代码。
作者给了一个用 kphp 调用 sdl 图形库写游戏的例子 https://github.com/quasilyte/kphp-game
1
zjsxwc OP 我编译运行了这个游戏,生成的二进制可执行文件有 111M
<img src="https://gitee.com/zjsxwc/image-bed/raw/master/v2ex/kphp-game.png" /> |
2
askfilm 2021-11-25 17:08:10 +08:00
有意思
|
3
zjsxwc OP 之前比较帖子《 php7 怎么比 Java 还快?》 里 php 耗时 20 秒, https://www.v2ex.com/t/603272
使用 kphp 把 php 编译成独立二进制可执行文件,在同一台机器上算质数,耗时 5 秒,比 golang 快,比 rust 4.8 秒稍微慢一点。 root@caaa15c3621c:/tmp/dev# ./kphp_out/cli 第 300000 个素数的值是:4256233 耗时 5351 毫秒 root@caaa15c3621c:/tmp/dev# ls PN.php pnmain.php PN.php pnmain.php 不过编译生成的./kphp_out/cli 有 63M 大。 |
4
zjsxwc OP |