HipHop PHP简介(转)
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简介(转)的更多相关文章
- ASP.NET Core 1.1 简介
ASP.NET Core 1.1 于2016年11月16日发布.这个版本包括许多伟大的新功能以及许多错误修复和一般的增强.这个版本包含了多个新的中间件组件.针对Windows的WebListener服 ...
- MVVM模式和在WPF中的实现(一)MVVM模式简介
MVVM模式解析和在WPF中的实现(一) MVVM模式简介 系列目录: MVVM模式解析和在WPF中的实现(一)MVVM模式简介 MVVM模式解析和在WPF中的实现(二)数据绑定 MVVM模式解析和在 ...
- Cassandra简介
在前面的一篇文章<图形数据库Neo4J简介>中,我们介绍了一种非常流行的图形数据库Neo4J的使用方法.而在本文中,我们将对另外一种类型的NoSQL数据库——Cassandra进行简单地介 ...
- REST简介
一说到REST,我想大家的第一反应就是“啊,就是那种前后台通信方式.”但是在要求详细讲述它所提出的各个约束,以及如何开始搭建REST服务时,却很少有人能够清晰地说出它到底是什么,需要遵守什么样的准则. ...
- Microservice架构模式简介
在2014年,Sam Newman,Martin Fowler在ThoughtWorks的一位同事,出版了一本新书<Building Microservices>.该书描述了如何按照Mic ...
- const,static,extern 简介
const,static,extern 简介 一.const与宏的区别: const简介:之前常用的字符串常量,一般是抽成宏,但是苹果不推荐我们抽成宏,推荐我们使用const常量. 执行时刻:宏是预编 ...
- HTTPS简介
一.简单总结 1.HTTPS概念总结 HTTPS 就是对HTTP进行了TLS或SSL加密. 应用层的HTTP协议通过传输层的TCP协议来传输,HTTPS 在 HTTP和 TCP中间加了一层TLS/SS ...
- 【Machine Learning】机器学习及其基础概念简介
机器学习及其基础概念简介 作者:白宁超 2016年12月23日21:24:51 摘要:随着机器学习和深度学习的热潮,各种图书层出不穷.然而多数是基础理论知识介绍,缺乏实现的深入理解.本系列文章是作者结 ...
- Cesium简介以及离线部署运行
Cesium简介 cesium是国外一个基于JavaScript编写的使用WebGL的地图引擎,一款开源3DGIS的js库.cesium支持3D,2D,2.5D形式的地图展示,可以自行绘制图形,高亮区 ...
随机推荐
- 洛谷——P2799 国王的魔镜
P2799 国王的魔镜 题目描述 国王有一个魔镜,可以把任何接触镜面的东西变成原来的两倍——只是,因为是镜子嘛,增加的那部分是反的.比如一条项链,我们用AB来表示,不同的字母表示不同颜色的珍珠.如果把 ...
- 简单了解gzip、bzip2、xz
压缩工具gzip.bzip2.xz分别对应压缩格式.gz..bz2..xz.不过tar命令已经可以满足大部分使用,所以这些格式只简单了解一下.gzip压缩速度最快,xz压缩率最高,bz2适中.一般这三 ...
- CSS排版常用值指南
高对比度是确保网页阅读无障碍的关键,但也往往会被过分强调. 白底黑子会让打断文本显得过分密集,反而影响可读性. 文字颜色 3b4348 链接颜色 235ea7 衬线字体 font-family: &q ...
- Python的zip函数(转)
原文地址:http://www.cnblogs.com/frydsh/archive/2012/07/10/2585370.html zip函数接受任意多个(包括0个和1个)序列作为参数,返回一个tu ...
- 最长上升子序列:2016 Pacific Northwest Region Programming Contest—Division 2 Problem M
Description A string of lowercase letters is calledalphabeticalif deleting zero or more of its lette ...
- hdu 1531 king(差分约束)
King Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submis ...
- 【欧拉回路】Gym - 101411C - Courier's Route
每个城市有4个城门,每个城门会发出唯一一条边去别的城市的城门.问你能否从城市1出发,经过每个城门恰好一次,再回到城市1. 每个城市的度数都是4,必然存在欧拉回路(如果连通).欧拉回路显然是一个合法解. ...
- 【贪心】【set】zoj3963 Heap Partition
贪心地从前往后扫,每到一个元素,就查看之前的元素中小于等于其的最大的元素是否存在,如果存在,就将它置为其父亲.如果一个结点已经是两个儿子的父亲了,就不能在set中存在了,就将他删除.如果然后将当前元素 ...
- 使用phpExcel实现Excel数据的导入导出(完全步骤)
使用phpExcel实现Excel数据的导入导出(完全步骤) 很多文章都有提到关于使用phpExcel实现Excel数据的导入导出,大部分文章都差不多,或者就是转载的,都会出现一些问题,下面是本人 ...
- ConstraintLayout导读
ConstraintLayout是Android Studio 2.2中主要的新增功能之一,也是Google在去年的I/O大会上重点宣传的一个功能,可以把ConstraintLayout看成是一个更高 ...