我试图通过使用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使用情况:
如前所述,使用Web worker的有用之处在于我仍然可以在该选项卡中执行JavaScript而不会被阻止。我可以在同一个标签中运行以下,即使3名工作人员正在运行并立即执行:
> addWorker();
< "Worker Count: 1"
我想要实现的目标:
我正在尝试模拟一个环境,动画可能变得更加“不稳定”,for (var i = 0; i < 1000; i++) {
console.log(i);
}
,.show()
功能需要一些时间来激活,等等。
虽然我可以看到CPU占用率,但这实际上是否有助于模拟该选项卡中JavaScript性能不佳的环境?我应该拿起CPU和更多内存吗?