【问题标题】:node.js or PHP for image processing用于图像处理的 node.js 或 PHP
【发布时间】:2017-02-17 18:15:22
【问题描述】:

我们正在开发一个图像处理应用程序。它涉及应用过滤器、高斯等。我们想让它成为一个高度并发的应用程序。 这将在多个单核 ec2 实例上。

由于图像处理是一个 cpu 密集型操作,我们认为 node.js 在事件循环中被阻塞,所以考虑使用 php。我们无法在该领域找到任何基准。对此的任何意见都会有很大帮助。

【问题讨论】:

  • 在不知道更多关于您是否需要推送大量图像、少量大图像或少量图像(每个都需要大量处理)或其他任何东西的情况下无法说出关于所涉及的处理。速度真的是主要标准吗?还是在单CPU机器上尽可能的提高单位成本的速度?您的算法可能比语言产生更大的影响。如果你真的想要速度,你应该考虑 C/C++。
  • 我需要处理大量的小图像。处理是将图像转换为铅笔素描(反转+高斯滤镜和闪避)。我希望应用 Guassian 需要大量的处理。速度是主要标准
  • 向伟大的、唯一的卡尔·弗里德里希·高斯致敬

标签: php node.js image-processing


【解决方案1】:

对于图像处理,我建议使用 PHP 而不是 Node.js,因为有许多很棒的 PHP 包可以帮助您轻松处理图像。不用担心 PHP7 或 HHVM 的性能 :)

【讨论】:

    【解决方案2】:

    这是一个 CPU 密集型任务。真正优化良好的 PHP 或 Node 可能会执行类似的操作。 I/O 并发不会影响单核上的 CPU 绑定任务。在许多核心上,I/O 可能会发挥作用,但实际上包括 PHP 在内的大多数平台现在都有有效的并发 I/O 策略。此外,您可能最终还是调用 C 或 C++ 代码。

    如果你真的想要(具有成本效益的)性能,放弃单核的东西,在办公室里放一些基本的大型游戏或比特币挖矿 PC,找到一种在机器之间分配任务的好方法和一种方法在 GPU 上同时处理多个图像。实际上,这些都与特定的编程语言无关。

    【讨论】:

    • 不会阻止 nodejs 事件循环,因为它是单线程的。
    • 是的,但是如果有多个 PHP 进程或线程,它们也会在一个 CPU 上被阻塞。从技术上讲,Node 具有并发运行的 webworker 线程,尽管它们必须将所有数据复制进出。但是普通的 Node 集群可以同时处理得很好。有了一个核心,这些都不重要。
    • 这将归结为您的实施细节。根据您的操作方式,PHP/Node/OS/等的版本或类型,可能会更快。如果您坚持一个核心时期,那么您将毫无头绪。如果每个虚拟机或容器都有自己的虚拟核心,您就可以使用多个虚拟机或容器。正如我所说,要真正最大限度地提高性能,请使用 GPU。
    【解决方案3】:

    PHP 的并发性不高,每个请求都会阻塞,直到完成。只要 Node 主要在执行 I/O 或等待另一个进程返回,Node 就可以了,例如调用convert (ImageMagick),而不是自己进行任何处理。运行实际转换所需的 CPU 内核越多越好。

    【讨论】:

      猜你喜欢
      • 2011-06-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-16
      • 1970-01-01
      相关资源
      最近更新 更多