PHP 也能和 go 一样编译成单独的二进制可执行文件了

2021-11-25 10:32:25 +08:00
 zjsxwc

https://github.com/VKCOM/kphp

kphp 是 php 语言的一个子集,

它用的是 php 的子集,需要能够从 php 代码中自动推导出变量类型,或者用 phpdoc 中 /** @var type */显式地标出变量类型才行,没有 gc ,使用 c++ raii 来保证内存安全问题 ,kphp 是先把这种带类型的 php 代码编译到 c++,再编译成二进制可执行文件的,而不是直接编译成 llvm 代码。

作者给了一个用 kphp 调用 sdl 图形库写游戏的例子 https://github.com/quasilyte/kphp-game

1172 次点击
所在节点    程序员
4 条回复
zjsxwc
2021-11-25 17:00:06 +08:00
我编译运行了这个游戏,生成的二进制可执行文件有 111M

<img src="https://gitee.com/zjsxwc/image-bed/raw/master/v2ex/kphp-game.png" />
askfilm
2021-11-25 17:08:10 +08:00
有意思
zjsxwc
2021-11-26 08:36:07 +08:00
之前比较帖子《 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 大。
zjsxwc
2021-11-26 08:39:53 +08:00

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/817826

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX