繁体   English   中英

node.js用于cpu密集型操作

[英]node.js for cpu intensive operations

有一些我真的不了解Node.js:几乎无处不在,你可以读到node.js不建议用于HPC(高性能计算),因为他的异步但是单线程性质。

您可以找到node.js,它总是用Express.js解释,以构建一些非常快速的Web服务器或服务,它还允许您在对SQL或NoSQL数据库进行一些查询后在响应中发送HTML或JSON。

但在这里的事情。

您还可以在npm上找到许多用于耗时和密集操作的软件包,例如用于视频编码的fluent-ffmpeg 或者您可以使用请求cheerio并构建Web scraper。

Npm也充满了为node.js编写的命令行应用程序 (在node.js中)。 是否所有申请都是非耗时的操作?

我们也可以找到很多框架,比如next.js ,至少在我看来,他们似乎并没有做那么容易的事情

那么,我们可以用node.js做些什么呢?

“cpu密集型操作” 究竟意味着什么?

我喜欢使用node和javascript来构建web服务器,服务和命令行应用程序,但有时我觉得我不理解node.js的真正潜力和真正的限制。

如果仔细观察ffmepeg包 ,你会注意到它说:

为了能够使用此模块,请确保在系统上安装了ffmpeg

这是一个暗示在这种情况下发生了什么。 此软件包不会重新实现整个ffmpeg,而只是作为现有ffmpeg安装的API。

如果你查看代码 ,你会发现它实际上只是spawn了一个ffmpeg副本来完成这项工作。 因此,这实际上并不是“在节点中”运行。

这就是ffmpeg,你的其他例子呢? 好吧,我怀疑它们中的大多数并不像你想象的那么重 - 毕竟,很多很多节点应用程序的整个设计都是处理HTML和网页,刮板不需要很多东西。处理能力。

那么,“什么”cpu密集型操作“真正意味着什么?” 是一个非常主观的。 您的源链接和现实生活中需要注意的一些事项:

  1. 页面底部的版权是2011年。这在javascript开发时间很古老。 这个建议是在许多迭代和创新发生之前编写的。 它可能并非完全错误,但它缺少我们目前的观点。

  2. 与I / O相比,CPU调用大量应用程序:

    CPU使用率非常高,实际I / O非常轻

    Web刮刀可能不被认为是“实际I / O的亮点”

  3. 这是一个主观的选择。 没有人能够确切地说明你应该如何实现你的应用程序。 如果他们是,他们会写它,而不是你。

  4. 现实世界并没有严格定义为“CPU密集型”而不是。 许多应用程序从一些看起来很适合节点的要求开始,然后,一些应用程序的添加不是那么完美,甚至不合适。 无论何时添加新需求,真实世界的团队都不能总是重新发明所有内容 ,因此会像创建的ffmpeg包那样使用填充程序。

那你怎么知道极限呢? 同样,这是一个主观的选择。 将视频编码等一些硬边界设置为真正不应该在纯JavaScript中完成的事情是公平的。 但是从那里到一个简单的API的空间变得非常模糊,具体取决于具体的要求和细节。 如果它有效并且性能合理,那可能还可以! 您可能会从另一个系统中获得更多性能,但您可能也会失去对生态系统的了解以及与社区的集成。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM