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. Linux命令之whereis

    whereis [选项] [文件] (1).选项 -b 只搜索二进制文件 -B <目录> 只在路径下查找二进制文件 -m 只搜索man手册 -M <目录> 只在路径下查找man ...

  2. Oracle unique / distinct

     [唯一]DISTINCT与UNIQUE的“区别”  今天一个朋友在Oracle中偶然发现UNIQUE也可以得到唯一的数据结果,问到DISTINCT与UNIQUE的区别.答案是:他们没有区别!   d ...

  3. phongap开发中安卓平台上如何调用第三方播放器来播放HLS视频

    前文曾经讲了关于在安卓平台上利用phonegap开发播放HLS的解决方案,其实最好的方案就是自己针对HLS视频开发自己的播放器,但是开发播放器是一个浩大的工程,必须对原生安卓开发非常熟悉,并且对视频播 ...

  4. 【BZOJ 1998】 1998: [Hnoi2010]Fsk物品调度(双向链表+并查集+置换)

    1998: [Hnoi2010]Fsk物品调度 Description 现在找工作不容易,Lostmonkey费了好大劲才得到fsk公司基层流水线操作员的职位.流水线上有n个位置,从0到n-1依次编号 ...

  5. 【ZJOI2017】线段树

    题目描述 线段树是九条可怜很喜欢的一个数据结构,它拥有着简单的结构.优秀的复杂度与强大的 功能,因此可怜曾经花了很长时间研究线段树的一些性质. 最近可怜又开始研究起线段树来了,有所不同的是,她把目光放 ...

  6. 关于lower_bound的优先级重载

    今天才知道$lower\_bound$最后有一个优先级参数…… 首先$lower\_bound$中的优先级和序列优先级必须相同才有效 $lower\_bound$中优先级默认的是小于号,也就是说仅当序 ...

  7. ERROR 1044: Access denied for user: 'songyan' to database 'yikexiao' 的错误。

    问题描述:新买的服务器,刚安装了mysql,创建了一个用户,也忘记了给他分配了什么权限,今天在建库的时候出现了这个问题. 出错原因:度娘告诉我是因为songyan用户没有建库的权限报的错. 解决: ( ...

  8. mysql 下 计算 两点 经纬度 之间的距离 含具体sql语句

    文章转载地址 http://blog.sina.com.cn/s/blog_7bbfd5fd01017d1e.html 感谢作者. 在原文的基础上,我新增了sql语句,方便大家理解 mysql距离计算 ...

  9. [转]json+JSONObject+JSONArray 结合使用

    JSONObject与JSONArray的区别简述: 区别在于JSONObject是一个{}包裹起来的一个对象(Object),而JSONArray则是[]包裹起来的一个数组(Array),说白点就是 ...

  10. POJ 3680 Intervals(费用流)

    Intervals Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 5762   Accepted: 2288 Descrip ...