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形式的地图展示,可以自行绘制图形,高亮区 ...
随机推荐
- RHEL/CentOS网络相关的配置文件路径
/etc/sysconfig/network-scripts/ifcfg-ens33 //IP地址,子网掩码等配置文件 /etc/sysconfig/network-scripts/ifcfg-lo ...
- 29、Flask实战第29天:cms用户名渲染和注销功能实现
这节来完成用户名渲染和注销的功能,目前用户名在前端页面是写死的,我们需要动态的展示出来 用户名渲染 实现用户名动态展示,其中一种方法就是在视图函数,根据session信息,获取到user id,通过该 ...
- RabbitMQ (十三) 集群+单机搭建(window)
拜读了网上很多前辈的文章,对RabbitMQ的集群有了一点点认识. 好多文章都说到,RabbitMQ的集群分为普通集群和镜像集群,有的还加了两种:单机集群和主从集群. 我看来看去,看了半天,怎么感觉, ...
- noip 1999 回文数
题目描述 若一个数(首位不为零)从左向右读与从右向左读都一样,我们就将其称之为回文数. 例如:给定一个10进制数56,将56加65(即把56从右向左读),得到121是一个回文数. 又如:对于10进制数 ...
- [NOIP2015] D1T2 信息传递
洛谷题目链接:https://www.luogu.org/problemnew/show/2661 一道有很多种解法的题目 通过划归,发现就是求最小环 那么立即能想到的算法:1.Tarjan求强连通分 ...
- Java如何进行异常处理
关键字:throws.throw.try.catch.finally的用法 Java通过面向对象的方法进行异常处理,把各种不同的异常进行分类,并提供了良好的接口.在Java中,每个异常都是一个对象,它 ...
- 84. CYD啃骨头(背包问题)
3111 CYD啃骨头 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 查看运行结果 题目描述 Description CYD吃饭时有N个骨头可以啃,但C ...
- 93.数字三角形W(深搜)
2189 数字三角形W 时间限制: 1 s 空间限制: 32000 KB 题目等级 : 黄金 Gold 题解 查看运行结果 题目描述 Description 数字三角形 要求走到最后mod 10 ...
- JS零基础一步一步做应用全记录
1.起因 作为几个外卖重度依赖癌晚期患者,呆宿舍的时候几个人一起叫外卖已经是常事.偶然看到隔壁宿舍在饿了么订餐的时候,看到在饿了么的首页上有一个谁去拿外卖的一个小游戏/工具,感觉这个小细节,饿了么把握 ...
- BaseLoadDataForNetFragment
/** * Fragment 加载网络请求 */ public abstract class BaseLoadDataForNetFragment extends Fragment { // 视图是否 ...