使用Web Workers模拟糟糕的浏览器JavaScript性能

时间:2016-07-01 17:28:19

标签: javascript performance web-worker

我试图通过使用Web worker来模拟浏览器性能下降。我见过类似的question about throttling JavaScript performance here,但很多年前就被问过了,没有提到Web Workers

我可以动态创建一个Web worker,让它运行一个无限循环。因此,我可以在实际选项卡中不占用JavaScript而占用CPU。

我是这样做的:

def merge(x, y, size):
    # do the mergeing
    return part of x that doesn't overlap + consensus(overlap) + part of y that doesn't overlap.

然后,我可以在该特定标签中从控制台调用它:

var workerCount = 0;

function addWorker() {
    var blob = new Blob(
        ['while (true) {}'],
        {type: "text/javascript"}
    );
    var worker = new Worker(window.URL.createObjectURL(blob));
    return 'Worker Count: ' + ++workerCount;
}

我可以看到当我添加工作符时,此操作会占用该选项卡的CPU。我的电脑上的风扇甚至变得非常疯狂。以下显示添加到页面的3名工作人员的CPU使用情况:

CPU usage is high for 3 web workers at once

如前所述,使用Web worker的有用之处在于我仍然可以在该选项卡中执行JavaScript而不会被阻止。我可以在同一个标​​签中运行以下,即使3名工作人员正在运行并立即执行:

> addWorker();
< "Worker Count: 1"

我想要实现的目标:

我正在尝试模拟一个环境,动画可能变得更加“不稳定”,for (var i = 0; i < 1000; i++) { console.log(i); } .show()功能需要一些时间来激活,等等。

虽然我可以看到CPU占用率,但这实际上是否有助于模拟该选项卡中JavaScript性能不佳的环境?我应该拿起CPU和更多内存吗?

0 个答案:

没有答案