背景
最近在研究web 前端 Webassembly
加速。但是对于webassembly
多线程与浏览器的配合方式不慎了解,故本期先从webassembly
的载体–worker
开始验证,我们知道一个worker
对应一个线程,那么一个worker
是否与系统的线程也是一一对应?系统分配给浏览器的资源是否是有限制的?为了验证这一点,我们开展了如下实验;
准备工作
1、环境准备
项目 | Value |
---|---|
操作系统 | 64 位操作系 win10 |
cpu | 12 核 i7 8700 |
内存 | 32G |
浏览器 | 谷歌 76.0 |
2、工具准备
1.1 浏览器任务管理器 (shift+esc)
在一个标签页内,随意打开一个页面,按下shift+esc
可以查看标签页所占用的系统资源:
1.2 windows系统资源监视器
- 打开系统任务管理器(
ctrl+shift+esc
) - 打开性能标签页
- 左下角打开资源监视器
可以看到,这里有运行的计算机的所有进程ID,以及进程下的线程数和进程占用的cpu。
我们打开的标签页,在浏览器任务管理器中有一个进程ID,在资源管理器里找到这个进程ID,选中它,就会置顶方便我们查看;
3、浏览器进程线程知识储备
4、demo代码准备
步骤
创建index.html,挂载IIS;
!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
<title>worker demo</title>
<script type="text/javascript" src = "./main.js"></script>
</head>
<body class="home-page">
<button onclick="createWorker()">创建worker</button>
</body>
</html>
验证一、单worker 高计算量对cpu占用情况
代码
const createWorker = ()