利用JavaScript检测CPU使用率自己写的


Posted in Javascript onMarch 22, 2014

之前在玉伯的Github Issues里看到了使用JS检测CPU使用率的方法,觉得很赞。
特别自己实现了一下,另外加了一个绘制直方图的功能可以直观看到CPU使用率的情况。

效果请见:传送门

实现思想

其实就是setInterval,利用当前时间减去上一次执行timer记录的时间,得到时间差来反映CPU的延迟,侧面反映了CPU的使用率。

var data = [],t; 
var cpuTimer = setInterval(function(){ 
t && data.push(Data.now()-t); 
t = Data.now(); 
},500);

理论上得到data应为[500,500,500,500,500...],但实际上CPU肯定会略微延迟,data可能为[501,502,502,501,503...]。如果CPU使用率很高的话,延迟会很大,data就会变为[550,551,552,552,551...]。通过判断data的变化可以初步推断CPU的使用率。

使用直方图直观表示CPU使用率

我们通过绘制data的直方图,可以看到数据的波动情况。当直方图中某一时段数值陡升,证明那一时刻CPU使用率较高。

function drawHisto(data){ 
var cvs = document.getElementById('canvas'); 
ctx = cvs.getContext('2d'); 
var width = cvs.width, 
height = cvs.height, 
histoWidth = width / size; // 重绘直方图 
ctx.fillStyle = "#fff"; 
ctx.fillRect(0,0,width,height); 
ctx.beginPath(); 
ctx.lineWidth = histoWidth/2; 
ctx.strokeStyle = '#000'; 
for( var i = 0, len = data.length; i < len; i++){ 
var x = i * histoWidth, 
// +5、/20、-10只是为了显示效果, 
// ~~为数值取整相当于Math.floor() 
y = ~~( (data[i] - speed + 5) / 20 * (height-10) ); 
ctx.moveTo( x+histoWidth/2, height ); 
ctx.lineTo( x+histoWidth/2, height-y ); 
ctx.stroke(); 
} 
}
Javascript 相关文章推荐
UserData用法总结 lanyu出品
Jul 01 Javascript
离开页面时检测表单元素是否被修改,提示保存的js代码
Aug 25 Javascript
利用React-router+Webpack快速构建react程序
Oct 27 Javascript
Javascript中this关键字指向问题的测试与详解
Aug 11 Javascript
jQuery选择器特殊字符与属性空格问题
Aug 14 jQuery
基于dataset的使用和图片延时加载的实现方法
Dec 11 Javascript
动手写一个angular版本的Message组件的方法
Dec 16 Javascript
Node.js使用cookie保持登录的方法
May 11 Javascript
浅谈JavaScript 代码整洁之道
Oct 23 Javascript
微信小程序图片加载失败时替换为默认图片的方法
Dec 09 Javascript
js实现简易拖拽的示例
Oct 26 Javascript
深入讲解Vue中父子组件通信与事件触发
Mar 22 Vue.js
JSONP跨域的原理解析及其实现介绍
Mar 22 #Javascript
一个网页标题title的闪动提示效果实现思路
Mar 22 #Javascript
js获得网页背景色和字体色的方法
Mar 21 #Javascript
页面装载js及性能分析方法介绍
Mar 21 #Javascript
Js冒泡事件详解及阻止示例
Mar 21 #Javascript
js调用浏览器打印模块实现点击按钮触发自定义函数
Mar 21 #Javascript
js中把JSON字符串转换成JSON对象最好的方法
Mar 21 #Javascript
You might like
国产动画《伍六七》原声大碟大卖,啊哈娱乐引领音乐赋能IP的新尝试
2020/03/08 国漫
如何在PHP中使用Oracle数据库(4)
2006/10/09 PHP
php设计模式之单例模式使用示例
2014/01/20 PHP
Smarty中常用变量操作符汇总
2014/10/27 PHP
php的sso单点登录实现方法
2015/01/08 PHP
php PDO异常处理详解
2016/11/20 PHP
php微信公众平台示例代码分析(二)
2016/12/06 PHP
PHP实现文字写入图片功能
2019/02/18 PHP
确保Laravel网站不会被嵌入到其他站点中的方法
2019/10/18 PHP
PHP命名空间(namespace)原理与用法详解
2019/12/11 PHP
jQuery中文入门指南,翻译加实例,jQuery的起点教程
2007/01/13 Javascript
动态创建的表格单元格中的事件实现代码
2008/12/30 Javascript
js 页面传参数时 参数值含特殊字符的问题
2009/12/13 Javascript
javascript学习笔记(七)利用javascript来创建和存储cookie
2011/04/08 Javascript
js substr、substring和slice使用说明小记
2011/09/15 Javascript
jQuery实现个性翻牌效果导航菜单的方法
2015/03/09 Javascript
jquery+css实现动感的图片切换效果
2015/11/25 Javascript
微信小程序 本地数据存储实例详解
2017/04/13 Javascript
vue 实现剪裁图片并上传服务器功能
2018/03/01 Javascript
vue中使用element-ui进行表单验证的实例代码
2018/06/22 Javascript
Jquery获取radio选中值实例总结
2019/01/17 jQuery
JavaScript中.min.js和.js文件的区别讲解
2019/02/13 Javascript
vue组件中传值EventBus的使用及注意事项说明
2020/11/16 Javascript
[43:03]完美世界DOTA2联赛PWL S2 PXG vs Magma 第二场 11.21
2020/11/24 DOTA
从零学python系列之数据处理编程实例(二)
2014/05/22 Python
跟老齐学Python之传说中的函数编写条规
2014/10/11 Python
python中列表元素连接方法join用法实例
2015/04/07 Python
Python编程中运用闭包时所需要注意的一些地方
2015/05/02 Python
Python命令启动Web服务器实例详解
2017/02/23 Python
Python 网络编程之TCP客户端/服务端功能示例【基于socket套接字】
2019/10/12 Python
Python socket实现的文件下载器功能示例
2019/11/15 Python
Python中os模块功能与用法详解
2020/02/26 Python
英国足球店:UK Soccer Shop
2017/11/19 全球购物
技校生自我鉴定范文
2013/09/26 职场文书
2016廉洁教育心得体会
2016/01/20 职场文书
室外天线与收音机天线杆接合方法
2022/04/05 无线电