Php 简单的Facebook HipHop性能问题
如果我使用PHP web框架(如CodeIgniter)编写hello world应用程序,然后使用HipHop编译并运行它。它会比我用django或rails编写相同的hello world应用程序运行得更快吗?在这一点上,运行时间无关紧要。HipHop是为缩放而设计的。。。意味着数十亿的请求。即使是一个中等规模的网站,也绝对没有必要使用HipHop之类的东西Php 简单的Facebook HipHop性能问题,php,frameworks,hiphop,Php,Frameworks,Hiphop,如果我使用PHP web框架(如CodeIgniter)编写hello world应用程序,然后使用HipHop编译并运行它。它会比我用django或rails编写相同的hello world应用程序运行得更快吗?在这一点上,运行时间无关紧要。HipHop是为缩放而设计的。。。意味着数十亿的请求。即使是一个中等规模的网站,也绝对没有必要使用HipHop之类的东西 但更重要的是你的问题。。。我不认为有比较图表可供我们查看,但我怀疑运行时间在该级别会更快。运行简单的应用程序在任何语言中都会更快。当它
但更重要的是你的问题。。。我不认为有比较图表可供我们查看,但我怀疑运行时间在该级别会更快。运行简单的应用程序在任何语言中都会更快。当它变得像facebook一样复杂时,你将面临许多问题。PHP的缓慢将显示它的面孔。同时,将现有代码转换为另一种语言也不是一种选择,因为所有的逻辑和代码都不容易转换为另一种语言的语法。这就是facebook开发者决定保留旧代码并加快PHP速度的原因。这就是他们创建自己的PHP编译器(称为HipHop)的原因
从Facebook开发者的角度阅读,这样你就知道HipHop的历史。这并不是真正的苹果对苹果的比较。在最公平的竞争环境中,您可能会遇到以下情况:
- Django在apache后面运行
- Django呈现HTML模板以向世界问好(无缓存)
- HP在apache之后运行
- HPHP渲染HTML模板以向世界问好(同样,无缓存)
弃船潜逃,但没有任何理由跳船,除非你有很多流量,在这种情况下,检查它可能是有意义的。< /P> < PHIPHIP将PHP代码转换为C++代码,需要编译运行。由于预编译代码比python/php等脚本语言运行得更快,占用的内存更少,因此在您给出的示例中,它可能会运行得更快 但是,HIPHOP不会转换所有代码。PHP中的许多代码是动态的,不能更改为C++,这意味着您必须记住代码。codeigniter是否可以使用HIPHOP编译是另一个问题 特里·蔡(Terry Chay)写了一篇关于嘻哈的大文章,涵盖了何时使用它、它的局限性和未来。我建议您阅读本文,因为它很可能会回答您的大多数问题,并让您了解它的工作原理:) 它会比我写的更快吗 django中的同一hello world应用程序或 轨道
可能会的,但别担心。如果我们谈论的是尚未发布的项目的预期速度改进,那么蟒蛇已经并期待着;) 我不知道django或rails,所以这有点离题
- 使用普通php时,请求会转到apache,然后转到mod_php。mod_php从磁盘加载helloworld.php脚本,对其进行解析和标记,将其编译为字节码,然后解释字节码,将输出传递回apache,apache将其提供给用户
- 对于php和优化器,第一次运行与普通php大致相同,但编译后的源代码存储在ram中。然后,对于第二个请求:转到apache,apache到mod_php,apc从ram加载字节码,解释它,将它传递回apache,返回给用户
- hiphop没有apache,但hiphop本身没有解释器,所以请求直接发送到hiphop并返回给用户。因此,是的,速度更快,原因有几个:
- 启动速度更快,因为不需要字节码编译-程序已经是机器可读代码。因此,无需按请求编译,也无需读取源文件
- 没有翻译。机器代码不一定更快——这取决于源代码翻译(hiphop)的质量和静态编译器(g++)的质量。与手工编写的c代码相比,hiphop翻译的代码并不快,因为类型处理等会带来一些开销
- 对于node.js,也没有apache。脚本被启动并直接编译成机器代码(因为V8编译器会这样做),所以它有点像AOT(提前)编译(或者它仍然被称为JIT?我真的不知道)。然后,每个请求都由已经编译的机器代码直接处理;因此node.js实际上非常类似于hiphop。我假设hiphop是多线程或类似的,而node执行事件IO
- web应用依赖的不仅仅是执行速度,例如IO
- php的类型系统防止hiphop充分利用c++的静态类型
- 实际上,很多php已经是C语言了,因为大部分功能要么是内置的,要么来自扩展。扩展是用C语言编程并静态编译的
imo:如果您想要速度和易用性,请选择node.js:)但是。。。如果我能在d中使用django获得100个请求/s