【问题标题】:Facebook's HipHop - What's it for?Facebook 的 HipHop - 它有什么用?
【发布时间】:2011-01-12 08:16:13
【问题描述】:

今天 PHP 世界的新闻是Facebook's HipHop,它是:

从技术上讲,PHP 的 HipHop 本身并不是一个编译器。相反,它是一个源代码转换器。 HipHop 以编程方式将您的 PHP 源代码转换为高度优化的 C++,然后使用 g++ 对其进行编译。 HipHop 以语义等效的方式执行源代码,并牺牲了一些很少使用的功能——例如 eval()——以换取更高的性能。 HipHop 包括一个代码转换器、对 PHP 运行时系统的重新实现,以及对许多常见 PHP 扩展的重写以利用这些性能优化。

我的问题是,这实际上对什么类型的 Web 应用程序有用?

似乎典型的受数据库限制的 Web 应用程序可能无法很好地服务于此,但更罕见的受 CPU 限制的应用程序会。

【问题讨论】:

  • 相关(但不是欺骗):stackoverflow.com/questions/2055875/…
  • 我整个星期都在阅读有关这方面的谣言,我很高兴它终于出来了!我正在开发一个社交网络,性能始终是这类网站最重要的事情
  • 它是一个编译器,不是吗?它将 PHP 编译为 C++。
  • 虽然每个人都在关注速度,但实际上还有其他原因使用 HipHop。最让我着迷的是使用它作为“find / -name *.php | xargs rm -f”的前导。看起来 HipHop 生成的 C++ 代码对于这个目的来说可能已经足够干净了。

标签: php facebook hiphop


【解决方案1】:

Hip Hop 对除了 Facebook 和其他基于 PHP 的巨大网站之外的所有人来说基本上毫无意义。我相信很多人会因为“它很快”而加入这个潮流,但是有多少基于 PHP 的应用程序使用整个服务器场? 仅仅因为您在社交网站上工作,并不意味着您应该考虑使用 HH。

【讨论】:

    【解决方案2】:

    您可以将其视为某种编译器,它接收一堆 .php 文件,并生成一堆 c++ 文件,然后您可以使用 g++ 对其进行编译(不确定是否支持其他编译器)。生成的 exe 是包含 Web 服务器的 Web 应用程序。这意味着您可以运行 exe 并且一切顺利。 Web 服务器基于libevent,据说效率很高。

    【讨论】:

      【解决方案3】:

      这篇文章:

      http://terrychay.com/article/hiphop-for-faster-php.shtml

      用它的一系列“if”语句完美地回答了这个问题。

      【讨论】:

        【解决方案4】:

        它可以将 PHP “转换”为 C++,以帮助提高可扩展性很强的网站的性能。

        因此,HipHop 适合当您拥有一个网站时,该网站是您在哈佛开始的,您很快就会成长为一家价值 10 亿美元的公司,并且人们正在制作一部由 Justin Timberlake 主演的电影。当你有这样一个网站并且想节省 CPU 周期,但又不想重写你的代码库时,你可以使用 HipHop。

        如果您刚刚开始,除非您被困在一个只有 PHP 程序员拒绝学习更具可扩展性的语言的荒岛上,否则您不要使用 HipHop。

        【讨论】:

        • 说 PHP 不能扩展有点不公平。虽然这个项目对刻板印象没有帮助!
        • TBH 我什至不知道它是否可以扩展 - Digg 使用它,所以它必须很好地扩展,是吗?我只是按照 Facebook 显然做出的任何发现进行。
        • Facebook 确实有成为第二大访问量网站的问题!
        • “PHP 无法扩展”是完全错误的,imo。阻止扩展的是糟糕的设计,而不是编程语言的选择。在this book 中有更多关于这个主题的信息 - 它使用 PHP 来说明它的观点。
        【解决方案5】:

        在解释代码上运行机器代码更快。这在某种意义上很有用,但也减少了您需要的机器数量,因为每个处理器要做的工作更少。

        这对 Facebook 这样的公司来说是件好事,因为他们可以减少所需的机器数量。
        就为什么它对他们有用而言,他们可能会对他们拥有的大量数据进行大量排序和索引。

        【讨论】:

          【解决方案6】:

          执行大量处理和/或使用大量内存的 Web 应用程序。显然,这个 HipHop 会减少大约 50% 的 CPU 使用率并减少内存使用量(我没有看到任何地方提到的内存使用量会减少多少)。这意味着您应该能够用更少的服务器处理相同数量的请求。

          另一个好处可能是会有一些基本的类型检查,以确保代码在编译之前是一致的。这应该有助于定位 PHP 目前由于其弱类型系统而倾向于忽略的错误类型。

          缺点似乎是它可能不支持 PHP 的一些更动态的功能,例如 eval(尽管可以说这也是一个积极因素)。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2012-01-31
            • 2012-10-16
            • 2011-06-18
            • 2011-01-14
            • 1970-01-01
            • 2011-05-27
            • 2010-10-17
            • 1970-01-01
            相关资源
            最近更新 更多