初次体验hiphop-php
facebook在github上发布了hiphop-php的源代码。之前听说这玩意能把php代码翻译成c++代码,然后带来巨大的性能提升,所以第一时间编译了一份hiphop-php。
我的机器环境是
- Centos 5.3 x86_64
- 8G内存
- Intel(R) Xeon(R) CPU E5420 @ 2.50GHz
安装注意事项
编译的时候碰到的问题很多,但是基本上都是按照wiki上的步骤进行的。我觉得比较重要的几点:
- wiki上的Required Packages包包列表都要检查一遍,比如版本号,是否安装过,像binutils-dev这种就很容易忽略
- 版本符合的话,直接用yum安装这些包就可以了
- wiki上有类似Boost 1.37 is the minimum version字样,说明开发者可能就是在这个版本下开发的,我试了下最新版本的boost,编译到后来反而出错
- 如果yum上没有符合版本的lib库,可以手动编译,但是编译时建议就放在自己的home下,比如:
./configure --prefix=/home/user
- tbb Intel’s Thread Building Blocks这个包有些麻烦,记得按照wiki上说的步骤安装
测试hiphop-php
安装完成之后,时间也不是太多,所以我仅仅是简单的测试了一个php文件,代码如下:
<?php
$i = 0;
for($j = 0; $j < 1000000; $j++)
$i += $j;
echo $i, "n";
?>
用hphp进行编译:
hphp/hphp test.php --keep-tempdir=1 --log=3
提示生成新的可执行文件
/tmp/hphp_c9sbnG/program
做一下运行时间对比:
$ time php test.php
499999500000
real 0m0.307s
user 0m0.299s
sys 0m0.007s
$ time /tmp/hphp_c9sbnG/program
499999500000
real 0m0.259s
user 0m0.194s
sys 0m0.008s
没看出来编译成c++代码之后有太大的性能提升,估计是俺的使用手法问题?在邮件组里观察几天再说。
Update
facebook将优化之后的编译参数提交到了github,于是我重新编译并测试一遍这段相同的代码:
$ time /tmp/hphp_c9sbnG/program
499999500000
real 0m0.140s
user 0m0.076s
sys 0m0.006s
可以看到,经hiphop编译后的php,执行时间几乎快了一倍。
相关文章:

MySQL之父等国际数据库掌门人齐聚,1024 程序员节全体大会重磅官宣!
10月23-24日,由CSDN、长沙市政府及多家机构联合主办的第二届“长沙中国1024程序员节”(1024.csdn.net)将盛大举行。今年程序员节活动囊括:岳麓书院尖峰对话,2021技术英雄会,9场热门技术主题论坛/专场、第16…

通过yum安装配置lamp
1、安装httpdyum install httpd创建测试文件cd /var/www/htmlvim index.php加入以下内容<html><head><title>PHP Page</title></head><body><h1>PHP start</h1> <?phpphpinfo(); ?><h1>PHP end</h1> <…

PHP“Cannot use object of type stdClass as array”
php再调用json_decode从字符串对象生成json对象时,如果使用[]操作符取数据,会得到下面的错误错误:Cannot use object of type stdClass as array产生原因:展开 -PHP$res json_decode($res);$res[key]; //把 json_decode() 后的对…

RMAN_学习笔记1_RMAN Structure概述和体系结构
2014-12-23 Created By BaoXinjian 一、摘要 是一种用于集备份(backup)、还原(restore)和恢复(recover)数据库于一体的Oracle 工具,支持命令行及图形界面操作 能够备份整个数据库、表空间、数据文件、控制文件、归档文件以及Spfile参数文件。 支持增量数据块级别的备…

全球缺芯大潮中,以软代硬能否另辟蹊径?
在5G和人工智能的技术浪潮如约而至以后,业内人士无不对IoT产业的未来报以极大的期待。以人工智能和家居设备为基础,再加上算力与网络支持,有理由相信未来IoT相关产业必将迎来爆发。然而今年,席卷全球的芯片产能不足问题影响到了各…

Xtrabackup实现数据的备份与恢复
Xtrabackup介绍Xtrabackup是由percona开源的免费数据库热备份软件,它能对InnoDB数据库和XtraDB存储引擎的数据库非阻塞地备份(对于MyISAM的备份同样需要加表锁);mysqldump备份方式是采用的逻辑备份,其最大的缺陷是备份…

最简单的CI框架入门示例--数据库取数据
这个写给初学者看,这是最简单可以调通的例子,网上很多例子其实初学者本地跑不通,缺这少那。 1.下载CI框架(自己找)2.配置 database.php配置: 为数据库服务器设置 connection 参数: $db[defau…

ST-GCN 实现人体姿态行为分类
作者 | 李秋键 出品 | AI科技大本营(ID:rgznai100) 引用 人体行为识别是计算机视觉及机器学习方面的热门研究领域。它在对视频中的人类行为进行运动分析、行为识别乃至延伸至人机交互领域都有着非常广泛的应用。研究初期,人体行为识别主要是以…

【原创】Kakfa utils源代码分析(三)
Kafka utils包最后一篇~~~ 十五、ShutdownableThread.scala可关闭的线程抽象类! 继承自Thread同时还接收一个boolean变量isInterruptible表明是否允许中断。既然是可关闭的,因此一定不是守护线程,而是一个用户线程(不会阻塞JVM关闭)。提供的方…

Oracle的分页查询
为什么80%的码农都做不了架构师?>>> 因为Oracle不像MySQL一样有limit函数来实现分页查找,oracle要实现分页查询可使用关键字rownum来处理。使用rownum有以下几点需要注意: 1、ROWNUM存在使用规则,在单个子查询中&…

微软成功抵御峰值高达 2.4Tbps 的 DDoS 攻击
整理 | 祝涛 出品 | CSDN(ID:CSDNnews)微软表示,他们成功抵御了一场发生于8月份的2.4Tbps分布式拒绝服务(DDoS)攻击,这次攻击超过了去年针对亚马逊Web服务的2.3Tbps最大攻击。这场攻击持续…

百度吴甜:首席AI架构师培养计划持续为行业输送高端复合型AI人才
CSDN 导语: 随着 AI 技术的发展,关注 AI 的开发者与日俱增:据 CSDN 发布的《中国 AI 应用开发者报告》显示,在 CSDN 的注册开发者中,689 万开发者有阅读、撰写和研究 AI 技术行为,其中精准聚焦 AI 学习和应…

Htaccess文件是什么以及Windows下自由创建.htaccess文件的N种方法
.htaccess是什么 概述来说,htaccess文件是Apache服务器中的一个配置文件,它负责相关目录下的网页配置。 通过htaccess文件,可以帮我们实现:网页301重定向、自定义404错误页面、改变文件扩展名、允许/阻止特定的用户或者目录的访…

Linux grep,egrep及相应的正则表达式用法详解
linux在进行文本处理过程中的文本搜索工具称为正则表达式。文本搜索工具有grep、egrep、fgrep,egrep为正则表达式的扩展正则表达式,fgrep用于搜索文本字符串,与 grep 和 egrep 命令不同,因为它搜索字符串而不是搜索匹配表达式的模式。grep的含…

Java GC 日志解析
JVM 在Java应用程序优化中是不可缺少的一大重项,如何合理配置Java参数,如果验证配置参数的有效性,从GC日志中可以获得很重要的提示,以下是笔者对GC垃圾收集器默认开启的组合日志的部分的解析,希望能帮到想学习的同学O(…

MySQL 备份和恢复策略
在数据库表丢失或损坏的情况下,备份你的数据库是很重要的。如果发生系统崩溃,你肯定想能够将你的表尽可能丢失最少的数据恢复到崩溃发生时的状态。本文主要对MyISAM表做备份恢复。 备份策略一:直接拷贝数据库文件(不推荐ÿ…

zookeeper学习记录
2019独角兽企业重金招聘Python工程师标准>>> 背景 前段时间看了S4流计算引擎,里面使用到了zookeeper进行集群管理,所以也就花了点时间研究了下zookeeper,不求看懂所有源码,但求了解其实现机制和原理,清楚其…
Ubuntu的apt-get使用国内的源
1、复制原文件备份 sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak 2、打开清华大学TUNA官网发布的Ubuntu 镜像使用帮助。 3、复制下面框中的内容,打开自己的Ubuntu系统。 4、 将框中的内容替换掉原来的所有内容 sudo gedit /etc/apt/sources.list 5、 进…

51单片机实现对24C02进行页写、顺序读取并显示验证
源:51单片机实现对24C02进行页写、顺序读取并显示验证 //************************************************************************************* //**程序名称:51单片机实现对24C02进行页写、顺序读取并显示验证 //**编写人:**** //**修…

配置MySQL主从复制
MySQL支持单向、异步复制,复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器。主服务器将更新写入二进制日志文件,并维护日志文件的一个索引以跟踪日志循环。当一个从服务器连接到主服务器时,它通知主服务器从…
PHP 单元测试
本文首发于 https://jaychen.cc/article/34作者 Jaychen朋友,你听说过安。。。不是,写过单元测试吗。 单元测试是开发过程中必不可少的一环,一个项目有良好的单元测试代码,重构的勇气都大很多。这次写一篇小文来介绍一下 PHP 的单…

CI框架如何删除地址栏的 index.php
默认 CI 框架显示地址是 http://localhost/ci/index.php/test/ 去掉index.php这样会更好些。1.修改Http.conf的 LoadModule rewrite_module modules/mod_rewrite.so 去掉注释2.ci根目录增加.htaccess文件 <IfModule mod_rewrite.c>RewriteEngine OnRewriteBase /ci#Remov…

网站安全配置(Nginx)防止网站被攻击(包括使用了CDN加速之后的配置)
2019独角兽企业重金招聘Python工程师标准>>> 网站被攻击是一个永恒不变的话题,网站攻击的方式也是一个永恒不变的老套路。找几百个电脑(肉鸡),控制这些电脑同时访问你的网站,超过你网站的最大承载能力&…

除了 AI,这些技术为 IIoT 插上飞向“4.0”的翅膀
“中国制造2025、德国工业4.0、美国先进制造”——在21世纪的工业领域,“制造强国”开启新一轮角逐。尽管实现路径各有侧重,但题中之义均是通过互联网和智能技术实现企业生产和管理的降本增效。正因此,IIoT被视为助推智能制造转型升级的“催化…

[20171225]查看并行执行计划注意的问题.txt
[20171225]查看并行执行计划注意的问题.txt--//如果使用dbms_xplan.display_cursor查看并行执行计划注意一些问题,通过例子说明:1.环境:SCOTTbook> &r/ver1PORT_STRING VERSION BANNER------------------------------ -------------- ------…

expires与etag控制页面缓存的优先级
expires指令控制HTTP应答中的“Expires”和“Cache-Control”Header头部信息,启动控制页面缓存的作用time:可以使用正数或负数。“Expires”头标的值将通过当前系统时间加上设定time值来设定。time值还控制"Cache-Control"的值:负数表示no-cac…

API 大赛决赛名单出炉,速来围观!
创新云转型,智慧云服务2021年移动云API应用创新开发大赛正在火热进行中各个赛道激烈PK优秀开发者同台切磋彰显实力!10月14日,2021年移动云API应用创新开发大赛复赛在中移软件园双创路演大厅圆满举办。本次复赛分为移动赛道和企业赛道分别进行…

将日期yyyy-MM-dd转为数字大写的形式
/*** 将日期转大写* 例如:2013-05-13转为 二0一三年五月十三日* param date* return */public static String getDxDate(String date){String dateArr[] date.split("-");String year dateArr[0];String month dateArr[1];String day dateArr[2];Str…

DevExpress v17.2新版亮点—WPF篇(四)
2019独角兽企业重金招聘Python工程师标准>>> DevExpress年终击穿底价,单套授权低至67折!仅剩最后6天!查看详情>>> 用户界面套包DevExpress v17.2终于正式发布,本站将以连载的形式为大家介绍各版本新增内容。本…

CI框架验证码CAPTCHA 辅助函数的使用
使用CAPTCHA 辅助函数很方便生成验证码,但是图片是存储在文件夹下,不是输出流,感觉不够完美,可以拿来用用。 说明:产生4位的随机数,CI根目录下建立captcha文件夹。 <?php $this->load->helper(ca…