Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/255.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 简单的Facebook HipHop性能问题_Php_Frameworks_Hiphop - Fatal编程技术网

Php 简单的Facebook HipHop性能问题

Php 简单的Facebook HipHop性能问题,php,frameworks,hiphop,Php,Frameworks,Hiphop,如果我使用PHP web框架(如CodeIgniter)编写hello world应用程序,然后使用HipHop编译并运行它。它会比我用django或rails编写相同的hello world应用程序运行得更快吗?在这一点上,运行时间无关紧要。HipHop是为缩放而设计的。。。意味着数十亿的请求。即使是一个中等规模的网站,也绝对没有必要使用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模板以向世界问好(同样,无缓存)
没有数据库,几乎没有文件I/O,也没有缓存。如果在不同的并发级别上使用load generator访问页面10000次,您可能会发现HPHP的性能优于Django或rails,也就是说,它可以每秒渲染更多页面,并更好地跟上您的流量

问题是,你会有这么多并发用户吗?如果您愿意,它们可能会访问数据库或缓存页面吗


弃船潜逃,但没有任何理由跳船,除非你有很多流量,在这种情况下,检查它可能是有意义的。< /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

facebook声称速度提高了50%,但实际上并没有那么多;如果您比较语言冲突的结果,您将看到各种算法的执行速度,php要慢5到250倍

那么为什么只有50%?因为

  • web应用依赖的不仅仅是执行速度,例如IO
  • php的类型系统防止hiphop充分利用c++的静态类型
  • 实际上,很多php已经是C语言了,因为大部分功能要么是内置的,要么来自扩展。扩展是用C语言编程并静态编译的
我不确定hello world是否有巨大的性能提升,因为即使有一个好的框架,hello world的执行速度仍然很小,与所有其他开销(网络延迟等)相比可以忽略不计


imo:如果您想要速度和易用性,请选择node.js:)

但是。。。如果我能在d中使用django获得100个请求/s