Web Worker 能否利用 100% 的多核 CPU

Can Web Workers utilize 100% of a multi-core CPU?

本文关键字:100% 多核 CPU Worker Web      更新时间:2023-09-26

我一直在试图找出网络工作者分配处理器负载的能力。我还没有找到任何似乎能够将我的四核 2600k 提高到 50% 的演示,更不用说 100%。

这是我尝试最大化 CPU 的网络工作者演示:

http://nerget.com/rayjs-mt/rayjs.html

(如果您使用firebug/chrome-inspect-element进入页面的HTML并使画布更大,则可以将其光线跟踪设置为更大的图像 - 我将我的设置为1920 x 1080)

即使选择了 4、8、16 个工作线程,我也无法使每个内核的 CPU 利用率超过 25% 左右。

有谁知道您是否可以通过网络工作者利用 100% 的 CPU?

(我正在使用谷歌浏览器。

这在我的 100K 上使用 2500%:

var code = "while(true){}";
var URL = window.webkitURL || window.URL;
var bb = new Blob([code], {type : 'text/javascript'});
code = URL.createObjectURL(bb);
new Worker(code);
new Worker(code);
new Worker(code);
new Worker(code);

http://jsfiddle.net/MTJ27/81/

我使用新的blob构造函数重写了Esailija的答案。BlobBuilder 现在已经过时了,所以你必须改用 Blob(),请参阅此处了解 deets: http://updates.html5rocks.com/2012/06/Don-t-Build-Blobs-Construct-Them

window.URL = window.URL || window.webkitURL;
var blob = new Blob(["while(true){}"], {type: 'text/javascript'});
code = window.URL.createObjectURL(blob);
new Worker(code);
new Worker(code);
new Worker(code);
new Worker(code);

http://jsfiddle.net/MTJ27/15/

只有当我们知道 PC 核心时,CPU 才能 100% 使用,

要找出您 PC 的 CPU 核心,请打开开发工具并键入navigator.hardwareConcurrency,这将为您提供逻辑内核,然后您将使用内核的工人数量 == 内核,然后您将能够使用 100% 的 CPU例如,如果我有 16 个内核,那么我将创建 16 个 Web Worker