tsa*_*ein 54 javascript cpu-cores web-worker
有没有办法确定JavaScript中可用的CPU核心数量,以便您可以根据具体情况调整Web工作者的数量?
Eli*_*rey 71
是的,navigator.hardwareConcurrency.Chrome,Firefox,Edge,Opera和Webkit本身支持; 所有带有polyfill的浏览器都支持.
dlo*_*ley 11
这是一个相当快速的并发估计器,我一起入侵了......它还没有进行过多次测试:
这是工作者运行的代码(因为我有一个jsfiddle链接,需要一个样本):
// create worker concurrency estimation code as blob
var blobUrl = URL.createObjectURL(new Blob(['(',
function() {
self.addEventListener('message', function(e) {
// run worker for 4 ms
var st = Date.now();
var et = st + 4;
while(Date.now() < et);
self.postMessage({st: st, et: et});
});
}.toString(),
')()'], {type: 'application/javascript'}));
Run Code Online (Sandbox Code Playgroud)
估计工具有大量工作人员在短时间内运行(4毫秒)并报告他们运行的时间(不幸的是,在Web Workers中,performance.now()不可用于更精确的计时).然后主线程检查以查看同时运行的最大工作数.该测试重复多次以得到一个合适的样本来产生估计值.
所以主要的想法是,如果有足够的核心来支持这种行为,只要有足够多的工作,工作者就应该安排在同一时间运行.这显然只是一个估计值,但到目前为止,对于我测试过的几台机器而言,它已经相当准确 - 这对我的用例来说已经足够了.可以增加样本数量以获得更准确的近似值; 我只是使用10,因为它很快,我不想浪费时间估算而不是完成工作.
| 归档时间: |
|
| 查看次数: |
14827 次 |
| 最近记录: |