HHVM (HipHop Virtual Machine) 是 Facebook 开源的 PHP 执行引擎。 HHVM 采用一种JIT(just-in-time)的编译机制实现了高性能,同时又保持对 PHP 语法的充分支持。 在 Facebook 实际应用场景中,与 Zend PHP 5.2 引擎 + APC 相比,HHVM 实现了9倍的吞吐量提升和5倍的内存节约。
HHVM 可以作为一个独立的 webserver 运行,也可以提供 fastcgi 接口,挂在 webserver 下面。
官方博客:http://www.hhvm.com
github:https://github.com/facebook/hhvm

一些贴吧问答:参考贴吧:http://tieba.baidu.com/f?kw=hhvm

1 Lighttpd搭配hhvm呢?

  这个也是可以的 如果是使用hhvm的fastcgi协议,只需要把lighttpd配置中的php-cgi地址改到hhvm监听的端口或unix socket地址即可

2 hhvm跑PHP脚本比zend还慢是怎么回事?

1. 首先检查你的配置项,必须设置Eval.Jit=1把JIT打开才会快,如hhvm -vEval.Jit=1 test.php
2. 如果你是用time命令来计时,比如 time hhvm test.php 和time php test.php的结果来比较那是没有意义的,因为这个时间包含了HHVM编译PHP代码和JIT编译的时间,而不是运行时间。总的看这个时间HHVM是更慢的,因为更多时间花在编译上。要测试运行时间的话,可以在PHP脚本中用gettimeofday计时打印出来。
3. 如果你是用server模式,要注意Eval.JitWarmupRequests这个选项,这个值默认是11,意思是前11个请求不使用JIT模式执行(方便做一些类型收集之类的事情),从第12个请求来始才启动JIT,所以前11个请求都是慢的,第12个请求才看出真正的性能。可以把Eval.JitWarmupRequests设置为0这样就永远都用JIT模式执行
4. 如果你是自己编译的HHVM,那要用Release模式编译,Debug模式编译出来的运行性能很差。

3 php性能分析

xhprof是PHP性能分析的好工具
hhvm内置了xhprof相关的函数,但需要打开编译选项才能用
修改CMake/Options.cmake 文件,把option(HOTPROFILER "Enable support for the hot-profiler" OFF)的OFF改为ON就可以了
其它的用法与zend版的相同,见xhprof的文档即可

4 hhvm与hiphop的关系?

hiphop是之前facebook开发的将PHP转换成C++代码的编译器,也称HPHPc,PHP->C++->二进制程序->run,因为预编译好的所以必须牺牲PHP的一些动态特性(如eval);部署上,需要先在线下编译好C++程序,再部署到线上执行。
hhvm是PHP执行引擎,PHP->Bytecode->(JIT)二进制code->执行,也支持直接执行Bytecode(Interpreter模式),两者可以随时切换,因此可支持完整的PHP特性;部署上,直接部署PHP代码到线上就可以,HHVM会自动检测代码修改并重新编译

5 hhvm的性能为什么比zend引擎高?

http://tieba.baidu.com/p/2902029974

HHVM,高性能的PHP执行引擎的更多相关文章

  1. HBase高性能复杂条件查询引擎

    转自:http://blog.csdn.net/bluishglc/article/details/31799255 mark 写在前面 本文2014年7月份发表于InfoQ,HBase的PMC成员T ...

  2. Java虚拟机-字节码执行引擎

    概述 Java虚拟机规范中制定了虚拟机字节码执行引擎的概念模型,成为各种虚拟机执行引擎的统一外观(Facade).不同的虚拟机引擎会包含两种执行模式,解释执行和编译执行. 运行时帧栈结构 栈帧(Sta ...

  3. 微软开源.NET Core的执行引擎CoreCLR{转载}

    继去年12月宣布.NET Core开源之后,微软拥抱开源的决心又向前迈了一步,Microsoft于昨日在 .NET Framework Blog上 宣布开源.NET Core 的执行引擎 CoreCL ...

  4. 【JVM】JVM系列之执行引擎(五)

    一.前言 在了解了类加载的相关信息后,有必要进行更深入的学习,了解执行引擎的细节,如字节码是如何被虚拟机执行从而完成指定功能的呢.下面,我们将进行深入的分析. 二.栈帧 我们知道,在虚拟机中与执行方法 ...

  5. 图解JVM字节码执行引擎之栈帧结构

    一.执行引擎      “虚拟机”的概念是相对于“物理机”而言的,这两种“机器”都有执行代码的能力.物理机的执行引擎是直接建立在硬件处理器.物理寄存器.指令集和操作系统层面的:而“虚拟机”的执行引擎是 ...

  6. JVM学习笔记:字节码执行引擎

    JVM学习笔记:字节码执行引擎 移步大神贴:http://rednaxelafx.iteye.com/blog/492667  

  7. JVM-字节码执行引擎

    虚拟机字节码执行引擎 一.运行时栈帧结构 1.栈帧(Stack Frame)是用于支持虚拟机进行调用和方法执行的数据结构,它是虚拟机运行时数据区中的虚拟机栈(Virtual Method Stack) ...

  8. 用scala实现一个sql执行引擎-(上)

    前言 在实时计算中,通常是从队列中收集原始数据,这种原始数据在内存中通常是一个java bean,把数据收集过来以后,通常会把数据落地到数据库,供后面的ETL使用.举个一个简单的例子,对一个游戏来说, ...

  9. 深入理解java虚拟机(5)---字节码执行引擎

    字节码是什么东西? 以下是百度的解释: 字节码(Byte-code)是一种包含执行程序.由一序列 op 代码/数据对组成的二进制文件.字节码是一种中间码,它比机器码更抽象. 它经常被看作是包含一个执行 ...

随机推荐

  1. Android Studio怎样创建App项目

    然后等待大约N分钟: 默认的是Android模式, 改为Project模式更符合我们的习惯:

  2. MySQL☞substr函数

    substr函数:截取字符串 格式如下: select  substr(参数1,参数2,参数3)  from  表名 参数1:列名/字符串 参数2:起始位置,如果为正数,就表示从正数的位置往下截取字符 ...

  3. 第一篇 HTML基础

    浏览网页,就是上网,上网的本质就是下载内容. 浏览器是个解释器,用来执行HTML.css.JS代码的. HTML,CSS, JavaScript 号称网络三剑客. 1. 浏览器发送一个域名给服务端 2 ...

  4. 【转】cocos2d-x如何优化内存的应用

    原地址:http://cblog.chinadaily.com.cn/blog-942327-4327173.html 注:自身以前也写过cocos2d-x如何优化内存的应用,以及内存不够的情况下怎么 ...

  5. 如何让thinkpad X1C 用U盘 安装上专业版win10

    1 BIOS内置了文件 会导致win10 iso默认装家庭版 2 给iso 的resouse 目录中增加文件ei.cfg 3 内容如下 [EditionID]Professional[Channel] ...

  6. 软件功能说明书——Thunder团队

    爱阅APP功能说明书 一.引言 相信大家都使用过电子书阅读器,相对于纸质版书籍电子书APP做到了环保.易存储.便携.因此我们Thunder团队开发了——爱阅APP,以下内容是Alpha版的功能说明书. ...

  7. Python学习之路2 - 列表和元组

    列表 概念:Python内置的一种数据类型是列表:list.list是一种有序的集合,可以随时添加和删除其中的元素. 列表的使用 names = ['zhangsan','lisi','wangwu' ...

  8. spring框架(2)— 面相切面编程AOP

    spring框架(2)— 面相切面编程AOP AOP(Aspect Oriented Programming),即面向切面编程. 可以说是OOP(Object Oriented Programming ...

  9. 九度oj 题目1495:关键点

    题目描述: 在一个无权图中,两个节点间的最短距离可以看成从一个节点出发到达另一个节点至少需要经过的边的个数. 同时,任意两个节点间的最短路径可能有多条,使得从一个节点出发可以有多条最短路径可以选择,并 ...

  10. LintCode-174.删除链表中倒数第n个节点

    删除链表中倒数第n个节点 给定一个链表,删除链表中倒数第n个节点,返回链表的头节点. 注意事项 链表中的节点个数大于等于n 样例 给出链表 1->2->3->4->5-> ...