允许浏览器使用更多内核

use*_*127 2 browser cpu cpu-usage google-chrome algorithm

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

是否有可能允许 Chrome 使用更多我的 CPU,比如 4 个中的 3 个,以便更快地执行计算?

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

Bri*_*ell 5

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

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

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

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

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

Web Workers 被设计为只是计算单元。他们无权访问 DOM 或任何与 DOM 相关的浏览器组件,例如window。(这避免了对它们进行序列化访问时出现的各种潜在问题。)因此,任何要显示的输出都必须从 Worker 传递回主线程。

所有最近的浏览器都为 Web Workers 提供了一定程度的支持。Mozilla 的 Web Worker 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/