写一个方法探测CPU占比情况

news/2024/12/17 9:29:20/文章来源:https://www.cnblogs.com/ai888/p/18611575

在前端开发中,直接探测CPU占比情况是比较困难的,因为浏览器环境出于安全和隐私的考虑,限制了直接访问系统级硬件信息(如CPU使用率)的能力。不过,你可以通过一些间接的方式来估计页面的性能表现,或者使用Web Workers来模拟CPU负载并观察其执行时间,从而间接推测CPU的繁忙程度。

以下是一个使用Web Workers来模拟CPU负载并估计CPU使用情况的示例:

  1. 创建一个Web Worker文件(cpuWorker.js)
// cpuWorker.js
self.onmessage = function(event) {const endTime = Date.now() + event.data * 1000; // 根据传入的时间(秒)计算结束时间while (Date.now() < endTime) {// 空循环以模拟CPU负载}self.postMessage('done'); // 完成后发送消息给主线程
};
  1. 在主线程中调用Web Worker
// 主线程代码
function estimateCpuUsage(seconds) {return new Promise((resolve, reject) => {const worker = new Worker('cpuWorker.js'); // 创建Web Workerconst startTime = Date.now();worker.onmessage = function(event) {const endTime = Date.now();const elapsedTime = (endTime - startTime) / 1000; // 计算执行时间(秒)const estimatedCpuUsage = (elapsedTime / seconds) * 100; // 估计CPU使用率(%)resolve(estimatedCpuUsage);worker.terminate(); // 结束Web Worker};worker.onerror = function(error) {reject(error);worker.terminate(); // 结束Web Worker};worker.postMessage(seconds); // 向Web Worker发送消息,开始模拟CPU负载});
}// 使用示例:估计5秒内的CPU使用情况
estimateCpuUsage(5).then(cpuUsage => {console.log(`Estimated CPU usage: ${cpuUsage.toFixed(2)}%`);
}).catch(error => {console.error('Error estimating CPU usage:', error);
});

注意:这种方法并不是直接测量CPU的实际使用率,而是通过模拟CPU负载并观察其执行时间来估计CPU的繁忙程度。因此,得到的结果可能并不准确,并且会受到多种因素的影响(如其他正在运行的进程、浏览器的性能优化等)。在实际应用中,你可能需要结合其他指标(如页面的响应时间、帧率等)来综合评估页面的性能表现。

如果你需要更准确的CPU使用率数据,通常需要在服务器端或使用专门的性能监控工具来收集这些信息。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/854186.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

适配信创环境的国产FTP替代软件,让数据传输更环保高效!

文件传输协议(FTP),诞生于1971年,自20世纪70年代发明以来,FTP已成为传输大文件的不二之选。内置有操作系统的 FTP 可提供一个相对简便、看似免费的文件交换方法,因此得到广泛使用。但随着技术的发展和企业对于文件传输的需求日益增长,传统FTP协议由于其在安全性、传输效…

跨域文件管控新方案,让数据管理变得简单而高效!

随着经济的快速发展,越来越多的企业规模不断扩大,并在异国、异地设立分支机构。这些分支机构与企业总部之间需要进行频繁的文件传输和数据交换,以支持企业的日常运营和决策。由于分支机构可能位于不同的地理位置、拥有不同的网络环境和组织架构,因此跨域文件管控传输成为了…

服务器性能测试利器之sysbench

目录前言 特征 安装 测试 回到顶部 前言 sysbench是一个开源的、模块化的、跨平台的多线程性能测试工具,可以用来进行CPU、内存、磁盘I/O、线程、数据库的性能测试。sysbench是基于LuaJIT的可编写脚本的多线程基准测试工具。sysbench附带以下捆绑的基准测试:oltp_*.lua:类似…

知识付费源码-知识付费平台全面升级

来自www.tuzhi.ltd在当今社会快速发展的背景下,教育和软件行业正经历一次巨大的革新。随着数字化转型浪潮推动下,在线教育和知识付费模式的广泛应用已经成为推动教育资源分配均衡和个性化学习需求满足的重要力量。其中,知识付费在线教育系统的崛起不仅优化了传统教学的组织和…

双语对照的 PDF 翻译工具「GitHub 热点速览」

在 OpenAI 举办的「12天12场」发布会上,ChatGPT 的多项新功能正式亮相,包括 GPT-o1 正式版和 ChatGPT Pro(200 美元/月)、强化微调(Reinforcement Fine-Tuning)、Sora(视频生成)、增强版 Canvas(支持多模态创作与 Python 代码执行)、ChatGPT 扩展功能、ChatGPT Visio…

使用scrcpy实现无线投屏与反控手机

使用scrcpy实现无线投屏与反控手机 引言 在日常生活中,我们常常需要将手机屏幕投射到电脑上进行演示或操作。今天,我将为大家介绍一款开源工具——scrcpy,它可以帮助你轻松实现这一功能。 什么是scrcpy? scrcpy是一个开源项目,托管在GitHub上(项目地址:scrcpy GitHub)。…

manim边学边做--渐变生长

本篇介绍Manim中的渐变生长类的动画。 这类动画的特点是可以清晰地展示图形的生成过程、物体的运动变化,帮助我们更好地理解抽象概念和复杂结构。 渐变生长类的动画的主要有:GrowArrow:让箭头从起始点按设定路径(如直线或弧线)和速度动态生长 GrowFromCenter:使对象以自身…

FM与AM的区别

AM和FM都是无线电里面的概念,其中AM是Amplitude Modulation的缩写,而FM是Frequency Modulation的缩写。 其中AM是调幅,是通过振幅的变化来传递信息,其频率是固定的。而FM是调频,是通过频率的变化来传递信息,振幅保持不变。 下面来看1张动图就理解了。可以看到AM随着信号振幅的变…

html元素标题显示2行信息

在块div或行内span的标题显示2行信息。如下当mouse移至紫色箭头所指的bytes时,它会title显示2行message,如红色箭头所指。.代码示例,

Java8--方法--String--join

String greeting = "Hello"; String greetingjoin = greeting.join(";",greeting,greeting,greeting); String Stringjoin = String.join(";",greeting,greeting,greeting); System.out.println(greetingjoin.equals(Stringjoin)); 效果图:

知识付费的直播系统

图源 凸知@www.tuzhi.ltd随着数字技术和互联网基础设施的不断升级,在线教育逐渐成为现代终身学习的重要载体。尤其是在知识经济的大背景下,越来越多的行业人士开始通过互联网平台传授专业知识和实践经验。作为新兴的商业模式之一,知识付费在线教育以其高度自由和灵活性吸引着…

用于视频稳定的3D多帧融合

用于视频稳定的3D多帧融合介绍了一种新的视频稳定框架RStab,它通过体绘制集成了3D多帧融合。与传统方法不同,引入了一种3D多帧视角来生成稳定的图像,解决了在保持结构的同时生成全帧的挑战。改进的RStab框架的核心在于稳定渲染(SR),这是一个体绘制模块,融合了3D空间中的…