gpt4 book ai didi

javascript - lodash 或下划线是否在 Node.js 中并行运行每个方法?

转载 作者:行者123 更新时间:2023-11-30 10:04:06 26 4
gpt4 key购买 nike

我知道在 Node 中,除了您的代码之外,所有内容都是并行运行的。阅读herehere .

我正在寻找一个可能的场景,我在内存中有一个非常大的数组,我想对它的每个元素执行一个小的计算。此计算的执行顺序并不重要。

在 Node 中,由于事件循环,所有 I/O 都非常有效地执行,但是当您遍历集合时,不涉及 I/O,如果此迭代花费的时间太长,您可以在该时间段内阻止所有传入请求.

gist包含 Neilk 在他的文章 Why you should use Node.js for CPU-bound tasks 中写的 nonBlockingForEach这让我想知道我是否写了这样的东西

var my_very_large_array = [...];
my_very_large_array.forEach(function() { ... })
//or
_.each(my_very_large_array, function() { ... })

我会在我的服务器上遇到性能瓶颈(这个库回退到原生的 forEach,如果存在的话)

据我所知,有很多库,例如 async.js这样做,但我总是在浏览器中使用 lodash 或下划线来完成这些任务。

我也试过bluebird.js但 promise 这些方法没有按预期工作。

所以我的问题是这样的。当您使用 forEach 方法遍历大型集合时,lodash 或下划线是否会成为 node.js 环境中的性能 killer ?

最佳答案

有一个名为“Web Workers”的新标准,它允许后台工作在同一进程的单独线程中发生。这需要更高版本的 node.js,并从这里安装一个单独的包:

来自wiki page :

The W3C and WHATWG envision web workers as long-running scripts that are not interrupted by user-interface scripts (scripts that respond to clicks or other user interactions). Keeping such workers from being interrupted by user activities should allow Web pages to remain responsive at the same time as they are running long tasks in the background.

The simplest use of workers is for performing a computationally expensive task without interrupting the user interface.

您可以通过安装 webworker-threads 在 node.js 中启用 Web worker包裹

So my question is this. Is lodash or underscore a performance killer in a node.js environment when you iterate through a large collection using a forEach method?

是的,在处理大量数据时,lodashunderscore 都会降低典型 node.js 设置的性能,因为它们会阻塞唯一可用的线程,使事件循环中排队的其他任务受到影响。但是,如果您要在 Web 工作线程中运行它们,那么您的主线程将可以自由地继续正常处理工作。

关于javascript - lodash 或下划线是否在 Node.js 中并行运行每个方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30197760/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com