允许浏览器使用更多核心

允许浏览器使用更多核心

我用 JavaScript 编写了一个算法。当我在 Google Chrome 中执行它时,大约需要 30 分钟,这相当长。
当我在计算过程中打开任务管理器时,我可以看到 Chrome 占用了我大约 25% 的 CPU,也就是我的 4 个内核中的 1 个。

是否可以让 Chrome 使用更多的 CPU(比如 4 个中的 3 个),以便更快地执行计算?

附言:如果 Chrome 不支持,我不介意使用任何其他浏览器(例如 Firefox)。

答案1

标准 JavaScript 是单线程的:它只能在一个 CPU(核心)上执行一个程序。

对于你所描述的,你可能必须将数据集划分为块并创建一个单独的JavaScript Web Worker运行算法来处理每个块。这假设您有一个结构统一的数据集。(注意边界条件。)

有效使用 Web Workers 需要了解如何将串行算法重写为并行以及多线程编程的其他方面——所有这些都需要高级编程技能。

JavaScript Web Workers 是独立的独立执行单元(线程),与主程序和彼此独立且相互隔离。主程序与 Web Workers 之间以及 Web Workers 之间的通信是通过事件驱动的数据消息进行的。

主机操作系统可以在单独的核心上执行单独的 Web Worker 线程,从而使 CPU 容量的利用率达到 100%。

Web Workers 被设计为仅用于计算。它们无法访问 DOM 或任何与 DOM 相关的浏览器组件,例如窗户. (这避免了对它们进行序列化访问时可能出现的各种问题。)因此,任何要显示的输出都必须从 Worker 传回到主线程。

所有最新浏览器都在一定程度上支持 Web Workers。Mozilla 的 Web Workers API 页面底部的表格显示,https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API,展示了各个浏览器和版本对各种 Web Worker 功能的支持。

关于使用 Web Workers 的一个很好的入门知识:

http://www.html5rocks.com/en/tutorials/workers/basics/

相关内容