HipHop PHP是FaceBook的一个开源项目,它优化了FaceBook网站Web服务器的运行速度。

HipHop 是一个源代码转换器。它将 PHP 代码转换为高度优化的 C++ 代码,然后再使用 g++ 编译器编译。它可以保持语义等效地执行源代码,但牺牲了一些很少会使用到的功能,比如 eval()。为了进一步的提升性能,HipHop 包含一个 code transformer,一个重新实现的 PHP runtime 系统,并利用这些性能的优化的优势,对许多共同的 PHP 扩展进行了重写。

HipHop 何以能加快 PHP 程序运行速度?
从上面的描述可以看出,HipHop 将 PHP 代码翻译、再借助 g++ 编译到 C++ 来运行,这当然会加快速度。这是由 PHP 语言的特点决定的。

PHP 是一种“脚本语言”,它的特色在于易读易学易用易排错。但是与编译语言如 C++ 相比,脚本语言的缺点就是对 CPU 和内存的利用不够理想,导致代码执行速度变慢。因此,将 PHP 转换为 C++ 之后执行,就大大提高了速度。

为什么不直接用 C++ 来编写?这要从 HipHop 的诞生说起。Facebook.com 网站一开始选择 PHP 语言,因为使用 PHP 的开发人员很多,而且容易上手。但是当 Facebook 网站的流量逐渐飙升后,PHP 的执行效率成为一个瓶颈。如果全部重写代码显然不现实,而且并非每一个开发人员都理解 C++。因此,HipHop 充当了一个“中间人”,它将 PHP 最终转向 C++,提高了服务器吞吐量。据 Facebook 说,这个技术几乎将 CPU 使用减少了 50%。目前 HipHop 支撑着 Facebook 90% 的 Web 流量。

什么样的 Joomla 网站可能受益于 HipHop PHP?
按上面条件来筛选,大多数 Joomla 网站首先被第三条挡住:因为大多数虚拟主机用户目前还是在用 Apache 服务器,而不是 NginX。

另外,HipHop 的安装、运行也需要一定的技术水平,没有相关经验的普通站长也无法做到。

同时我必须提醒:对于每日访客不足千人的小网站来说,实际上速度的瓶颈往往在于共享虚拟主机资源,而不是 PHP 本身。假如有一台具备 8颗至强 CPU 和 16GB 内存的服务器仅供你的网站单独使用,光纤接入,你觉得网站还能慢吗?

因此,可以得出一个结论:HipHop 只对大型的网站有意义(例如 Facebook 每个月的 PV 达 4000亿!)。如果你想要用 Joomla 搭建大型网站,又担心将来网站的速度,那么或许 HipHop 可以让你找到一个平衡点。

还有一个例子是:WordPress 也是由 PHP 编写的,因此 HipHop 对于 WordPress 肯定也是适用的。不过,在整个 WordPress 圈子中,目前只有官方的 WordPress.com 网站使用了 HipHop,原因是该站同时为全世界大量会员提供博客服务。

HipHop 的相关资源
Facebook 将 HipHop 开源后,代码是存放在这里的:

http://github.com/facebook/hiphop-php

你可以从上面的 Github 页面下载 HipHop 的源代码,然后在自己电脑上测试。

寒星晓月整理

HipHop PHP简介(转)的更多相关文章

  1. ASP.NET Core 1.1 简介

    ASP.NET Core 1.1 于2016年11月16日发布.这个版本包括许多伟大的新功能以及许多错误修复和一般的增强.这个版本包含了多个新的中间件组件.针对Windows的WebListener服 ...

  2. MVVM模式和在WPF中的实现(一)MVVM模式简介

    MVVM模式解析和在WPF中的实现(一) MVVM模式简介 系列目录: MVVM模式解析和在WPF中的实现(一)MVVM模式简介 MVVM模式解析和在WPF中的实现(二)数据绑定 MVVM模式解析和在 ...

  3. Cassandra简介

    在前面的一篇文章<图形数据库Neo4J简介>中,我们介绍了一种非常流行的图形数据库Neo4J的使用方法.而在本文中,我们将对另外一种类型的NoSQL数据库——Cassandra进行简单地介 ...

  4. REST简介

    一说到REST,我想大家的第一反应就是“啊,就是那种前后台通信方式.”但是在要求详细讲述它所提出的各个约束,以及如何开始搭建REST服务时,却很少有人能够清晰地说出它到底是什么,需要遵守什么样的准则. ...

  5. Microservice架构模式简介

    在2014年,Sam Newman,Martin Fowler在ThoughtWorks的一位同事,出版了一本新书<Building Microservices>.该书描述了如何按照Mic ...

  6. const,static,extern 简介

    const,static,extern 简介 一.const与宏的区别: const简介:之前常用的字符串常量,一般是抽成宏,但是苹果不推荐我们抽成宏,推荐我们使用const常量. 执行时刻:宏是预编 ...

  7. HTTPS简介

    一.简单总结 1.HTTPS概念总结 HTTPS 就是对HTTP进行了TLS或SSL加密. 应用层的HTTP协议通过传输层的TCP协议来传输,HTTPS 在 HTTP和 TCP中间加了一层TLS/SS ...

  8. 【Machine Learning】机器学习及其基础概念简介

    机器学习及其基础概念简介 作者:白宁超 2016年12月23日21:24:51 摘要:随着机器学习和深度学习的热潮,各种图书层出不穷.然而多数是基础理论知识介绍,缺乏实现的深入理解.本系列文章是作者结 ...

  9. Cesium简介以及离线部署运行

    Cesium简介 cesium是国外一个基于JavaScript编写的使用WebGL的地图引擎,一款开源3DGIS的js库.cesium支持3D,2D,2.5D形式的地图展示,可以自行绘制图形,高亮区 ...

随机推荐

  1. Flask实战第66天:celery实现异步任务

    Celery文档:http://docs.celeryproject.org Celery 通过消息进行通信,用专用的工作线程不断监视任务队列以执行新工作. Celery需要消息传输来发送和接收消息. ...

  2. 【20181019T3】比特战争【最小生成树思想】

    题面 [错解] Hmm不可做啊 要不按b排个序? 然后并查集瞎搞,刷刷刷过了样例 然后大样例大了几万倍 出了组小数据,Successful Hack 弃疗 水过10分 [正解] 用占领的边将顶点连起来 ...

  3. [Codeforces-div.1 809C] Find a car

    [Codeforces-div.1 809C] Find a car 试题分析 莫名结论:\(a_{i,j}=(i-1) xor (j-1) +1\) 然后分成\(i\space xor\space ...

  4. BZOJ 1430 小猴打架(prufer编码)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1430 [题目大意] 一开始森林里面有N只互不相识的小猴子,它们经常打架, 但打架的双方 ...

  5. 【分类讨论】【spfa】【BFS】Codeforces Round #416 (Div. 2) D. Vladik and Favorite Game

    那个人第一步肯定要么能向下走,要么能向右走.于是一定可以判断出上下是否对调,或者左右是否对调. 然后他往这个方向再走一走就能发现一定可以再往旁边走,此时就可以判断出另一个方向是否对调. 都判断出来以后 ...

  6. 【SAM】BZOJ3998-弦论

    [题目大意] 给出一个字符串,求第k大的子串.(输入1表示子串可重复,0表示不可重复) [思路] 显然,k大子串是后缀自动机的经典题型,可以利用后缀自动机的性质来解决.对于字符串 [前铺1]" ...

  7. 【KMP】BZOJ3942-[Usaco2015 Feb] Censoring

    [题目大意] 有一个S串和一个T串,长度均小于1,000,000,设当前串为U串,然后从前往后枚举S串一个字符一个字符往U串里添加,若U串后缀为T,则去掉这个后缀继续流程.输出最后的S串. [思路]三 ...

  8. pymysql与mysql各功能

    pymysql # 增删改操作 import pymysql client=pymysql.connect( host='127.0.0.1', port=3306, user='root', pas ...

  9. uva1632 (区间DP)

    题意:有n个宝藏,在x轴上,每个宝藏在某个时间会消失,问最少吃完所有宝藏的时间是多少,否则输出no solution 分析:区间DP,f[i][j][01]代表i到j区间内的全部吃完,停留在左/右端, ...

  10. Codeforces Round #344 (Div. 2) C. Report 其他

    C. Report 题目连接: http://www.codeforces.com/contest/631/problem/C Description Each month Blake gets th ...