当前位置:首页 > 科技  > 软件

开 1000 个 Web Worker!我的页面能起飞吗?

来源: 责编: 时间:2024-05-29 17:32:06 218观看
导读背景最近看到一个很有趣的问题:页面中 Web Worker 数量是不是越多越好?如果设置 1000个,那岂不是无敌了?为此我们先准备一段代码,这段代码是计算一下从0累计到1亿,需要花费多少时间。图片图片可以发现需要耗费很久的时间,总

背景

最近看到一个很有趣的问题:页面中 Web Worker 数量是不是越多越好?如果设置 1000个,那岂不是无敌了?NUw28资讯网——每日最新资讯28at.com

为此我们先准备一段代码,这段代码是计算一下从0累计到1亿,需要花费多少时间。NUw28资讯网——每日最新资讯28at.com

图片图片NUw28资讯网——每日最新资讯28at.com

图片图片NUw28资讯网——每日最新资讯28at.com

可以发现需要耗费很久的时间,总共 43s,并且在这段时间内,主线程会被堵塞,后续的代码都执行不了,所以一般这种耗时的操作可以放在 WebWorker 中去分担主线程的工作。NUw28资讯网——每日最新资讯28at.com

使用 WebWorker

刚刚我们直接在主线程中去做累加的操作,是非常费时的,我们试试在 WebWorker 中去做,我们先准备一个 worker.js。NUw28资讯网——每日最新资讯28at.com

图片图片NUw28资讯网——每日最新资讯28at.com

并且在 index.js 中去引入并创建 WebWorker 实例,我们先来试试一个实例,耗时多少?NUw28资讯网——每日最新资讯28at.com

图片图片NUw28资讯网——每日最新资讯28at.com

可以发现时间大大缩短!!!只需要 4.9s!!!NUw28资讯网——每日最新资讯28at.com

图片图片NUw28资讯网——每日最新资讯28at.com

那既然这样的话!!!是不是我们使用更多的 WebWorker 实例去分担工作,耗时就越短呢?NUw28资讯网——每日最新资讯28at.com

于是我开始增加 WebWorker 实例的数量。NUw28资讯网——每日最新资讯28at.com

图片图片NUw28资讯网——每日最新资讯28at.com

从 1 开始加,发现总耗时确实越来越低了,但是当实例数量超过 16 个后,发现总耗时就没有下降过了!!!NUw28资讯网——每日最新资讯28at.com

图片图片NUw28资讯网——每日最新资讯28at.com

原因其实很简单,因为线程的并行需要依赖于CPU的核数。我查看了一下我电脑的核心数,我的电脑是 16 核的。NUw28资讯网——每日最新资讯28at.com

图片图片NUw28资讯网——每日最新资讯28at.com

也可以使用 navigator.hardwareConcurrency 这个 API 来看本电脑的核心数。NUw28资讯网——每日最新资讯28at.com

图片图片NUw28资讯网——每日最新资讯28at.com

总结

所以总结就是:WebWorker 是越多越好,但是也有上限,上限取决于你 CPU 的 核心数。NUw28资讯网——每日最新资讯28at.com

所以你如果想尽量多地使用 WebWorker 来分担工作,可以将数量设置为你的电脑的 CPU 核心数。NUw28资讯网——每日最新资讯28at.com

图片 图片 NUw28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-91532-0.html开 1000 个 Web Worker!我的页面能起飞吗?

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 一个 Python 对象会在何时被销毁?

下一篇: Spring 中如何控制 Bean 的加载顺序?

标签:
  • 热门焦点
  • Find N3入网:最高支持16+1TB

    OPPO将于近期登场的Find N3折叠屏目前已经正式入网,型号为PHN110。本次Find N3在外观方面相比前两代有很大的变化,不再是小号的横向折叠屏,而是跟别的厂商一样采用了较为常见的
  • 服务存储设计模式:Cache-Aside模式

    Cache-Aside模式一种常用的缓存方式,通常是把数据从主存储加载到KV缓存中,加速后续的访问。在存在重复度的场景,Cache-Aside可以提升服务性能,降低底层存储的压力,缺点是缓存和底
  • 一篇聊聊Go错误封装机制

    %w 是用于错误包装(Error Wrapping)的格式化动词。它是用于 fmt.Errorf 和 fmt.Sprintf 函数中的一个特殊格式化动词,用于将一个错误(或其他可打印的值)包装在一个新的错误中。使
  • 如何通过Python线程池实现异步编程?

    线程池的概念和基本原理线程池是一种并发处理机制,它可以在程序启动时创建一组线程,并将它们置于等待任务的状态。当任务到达时,线程池中的某个线程会被唤醒并执行任务,执行完任
  • 当家的盒马,加速谋生

    来源 | 价值星球Planet作者 | 归去来自己“当家”的盒马,开始加速谋生了。据盒马官微消息,盒马计划今年开放生鲜供应链,将其生鲜商品送往食堂。目前,盒马在上海已经与
  • 东方甄选单飞:有些鸟注定是关不住的

    文/彭宽鸿编辑/罗卿东方甄选创始人俞敏洪带队的“7天甘肃行”直播活动已在近日顺利收官。成立后一年多时间里,东方甄选要脱离抖音自立门户的传闻不绝于耳,“7
  • 网红炒股不为了赚钱,那就是耍流氓!

    来源:首席商业评论6月26日高调宣布入市,网络名嘴大v胡锡进居然进军了股市。在一次财经媒体峰会上,几个财经圈媒体大佬就“胡锡进炒股是否知道认真报道”展开讨论。有
  • 东方甄选单飞:有些鸟注定是关不住的

    作者:彭宽鸿来源:华尔街科技眼‍‍‍‍‍‍‍‍‍‍东方甄选创始人俞敏洪带队的“7天甘肃行”直播活动已在近日顺利收官。成立后一
  • AI艺术欣赏体验会在上海梅赛德斯奔驰中心音乐俱乐部上演

    光影交错的镜像世界,虚实幻化的视觉奇观,虚拟偶像与真人共同主持,这些场景都出现在2019世界人工智能大会的舞台上。8月29日至31日,“AI艺术欣赏体验会”在上海
Top