为什么facebook的hiphop把php转换成了C?
hippop设计的初衷不是要转换源代码,而是要节省服务器资源。
开发来开发去,他们发现一个意想不到的收获,就是这东西可以提升程序的执行性能,于是深挖了下去,把hippop完善起来。
2013年,他们发现这条路子不对,就废弃了hiphop方式,转而改用hhvm,通过虚拟机即时编译的方式来处理它们服务器上大量的php代码,提升服务器的执行性能。
至于为什么不把php改为编译型语言,这个问题很有意思。如果要用编译型语言,有很多现成的编译型语言可以直接用啊,没必要去改一个过来。他们的主要目的是要处理那一大堆正在成千上万台服务器上跑着的php代码,让它们跑快些,占用服务器的资源少一些,不然的话,性能倒是一回事,另外,项目一扩张,就要添置更多的硬件,就要更多人更多精力来维护,这样滚雪球下去管理上的问题会很恐怖。
如果把php改成编译型语言,其实就等于开发了一门新的语言。那旧的代码怎么办?退一步想,他们旧的代码继续维持用旧的方式运行,新项目就用新的语言来开发。可是开发新的语言需要时间,开发出来后,还需要开发大量的类库,函数库,否则这语言就没实际用处。就像c#开发出来了,还要有.net类库做后盾。这么做成本也太高了。
相对而言,用hiphop把php转成c++,利用c++已有的资源是可行的。而且不用改动旧的代码。但是这么做也有麻烦。编译的动作比较耗时,如果有某个地方php代码升级了,或者修复漏洞,或者因为其它原因做了改动,就得重新编译。这还不考虑跨平台等其他因素。
那么,最好的办法就是现在他们采用的虚拟机即时编译的方法。只要做好虚拟机就行了。
Copyright © 广州京杭网络科技有限公司 2005-2025 版权所有 粤ICP备16019765号
广州京杭网络科技有限公司 版权所有