用php写个编译器 把原生态php翻译成汇编怎么样??

smart_w 发布于 2013/03/26 10:19
阅读 1K+
收藏 0
PHP

我还是个大学生  看过php源码c的实现   我想vld扩展可以把php分词效果展现出来      那么不就可以把php中间字节码给记录下来吗??我就想既然能找到中间字节码   我不就能找与中间字节码相互关联的c源码执行找到吗??刚开始想法就是那么不就可以直接翻译成c 了嘛!后来又想了想  php有个zend虚拟机  它要调度运行php中间字节码的执行??中间字节码要进行上下文切换等等    所以翻译成c感觉没多大用!!     后来又想了想   既然如此  我直接翻译成汇编   不是更快嘛!因为php开发快捷   我不需要编译速度快     我只需要生成目标代码执行速度快!!然后又查看了Git上开源项目      发现有国外的人已经在做类似的项目咯      但不知道他们是用什么实现的!

总结:用php写编译器 只要能读写文件    我快捷的写个编译器!!翻译成汇编     我不需要翻译速度快!只需要生成代码执行速度快!不知道有没有人愿意尝试这种思路!难点:编译器不好写!连php内核纯c的编译器词法分析和语法分析都是用lex和yacc的 都不是php社区人写的!   优点:php库强大 开发很快捷!不至于很长时间都写不出这个编译器!  求各位讨论讨论!!

加载中
0
L5_Railgun
L5_Railgun

骚年,你不知道facebook已经做出来了而且开源了么,翻译成C++的。

smart_w
smart_w
facebook那个不是我这个思路啊!!
0
南湖船老大
南湖船老大

FB那个hiphop就别提了,用过的都说垃圾,虽然效率是高了点,但内存占用极大,还很难释放。

你想的太简单了,注定要失败。

smart_w
smart_w
内存占用大!还不好释放是吧!这倒是个问题!
0
小耶果
小耶果
其实是想写个后端吧?这玩意要查阅大量资料和各种指令集,还要兼顾各个平台.工作量大了点.否则facebook也不会翻译成C++从而借助C++编译器.
smart_w
smart_w
恩 确实指令集复杂!
0
南湖船老大
南湖船老大

自动内存管理,JIT技术,JVM说自己第二,恐怕没人敢称第一,可知难度极大。

把脚本转为完全的本地代码,难度很大,编译期优化和运行期优化涉及近100种优化技术。

smart_w
smart_w
恩 jit是十分麻烦!领教咯!!
0
帖子列表
帖子列表
同样是php,感觉十分惭愧,没看懂你说的
0
eechen
eechen
整体感觉PHP就是跟数据库连接部分比较慢,如果能把这部分编译成汇编,应该对提升速度有很大帮助吧. 其他的我觉得像APC和ZO这种PHP中间码缓存器就足够用了,毕竟不是所有PHP站点都有Facebook的规模.
0
smart_w
smart_w

引用来自“eechen”的答案

整体感觉PHP就是跟数据库连接部分比较慢,如果能把这部分编译成汇编,应该对提升速度有很大帮助吧. 其他的我觉得像APC和ZO这种PHP中间码缓存器就足够用了,毕竟不是所有PHP站点都有Facebook的规模.
恩恩 这个想法不错!
0
IdleMan
IdleMan
单就学习、兴趣是不错;如果现实是为了20%的性能,付出300%的努力,值得否
0
x
xx-xx-xx

1、既然可以编译成汇编,何不直接编译成本地二进制代码,岂不更快?

2、PHP是解释性语言,解释性语言做编译并不是不可以,只是不太适合。有时候用gcc或vc编译一个项目要好几个小时,这种事由PHP来干更加不可想象。

3、fackbook的hiphop是将PHP代码转换成高度优化的C++代码,然后再用g++编译器编译成直接执行的二进制代码,比你转换成汇编不是更好?

4、https://github.com/facebook/hiphop-php 用最新的没有出现过什么内存占用大的问题,都在可接受范围内,占用大不大要看你的具体项目。如果释放不掉,那就是程序出了问题造出内存泄漏,你觉得fackbook在生产环境会出现这样情况?

5、如果用C写一个编译器能将PHP代码直接编译成可执行的二进制代码那就最好了,不过这个很难实现。

smart_w
smart_w
回复 @ichenshy : 哦 分析不错 那个要是用java和python写勒!!比c开发效率高点 思想类似pypy 用python实现python解释器一样!!
x
xx-xx-xx
回复 @webyh : “不需要编译大文件 ”?小文件太多了也很慢的,而且比单独一个大文件更慢,要进行更多的磁盘IO操作。“ 不需要翻译性能时候”是什么意思?你就不能表达清楚准确一点么?你前面的有些句子也只能结合上下文连猜带蒙地明白一个大概!只把性能较差的代码翻译成汇编?
x
xx-xx-xx
回复 @webyh : PHP不是也有Windows版本和Linux版本的吗?当然VC++编译的不能直接在非Windows上使用,gcc编译的也不能直接在Linux上使用!你编译成汇编就可以直接跨平台?
smart_w
smart_w
翻译成本地二进制能支持跨平台吗??
smart_w
smart_w
我就是考虑不需要编译大文件 不需要翻译性能时候 把一些代码翻译成汇编的!比方说一个数据库连接 或者一个for循环里面需要很多数据直接翻译成汇编的一个假想!!
0
思想流氓
思想流氓
期待楼主把php 变成编译型语言。。。。。。
smart_w
smart_w
maybe !先讨论下实现可能性嘛!
返回顶部
顶部