利用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 相关文章推荐
用于判断用户注册时,密码强度的JS代码
Jan 01 Javascript
google jQuery 引用文件,jQuery 引用地址集合(jquery 1.2.6至jquery1.5.2)
Apr 24 Javascript
对javascript的一点点认识总结《javascript高级程序设计》读书笔记
Nov 30 Javascript
使用apply方法处理数组的三个技巧[译]
Sep 20 Javascript
javascript实现日期时间动态显示示例代码
Sep 08 Javascript
jQuery插件datatables使用教程
Apr 21 Javascript
将鼠标焦点定位到文本框最后(代码分享)
Jan 11 Javascript
Jquery鼠标放上去显示全名的实现方法
Feb 06 Javascript
使用watch监听路由变化和watch监听对象的实例
Feb 24 Javascript
详解jQuery获取特殊属性的值以及设置内容
Nov 14 jQuery
vue项目添加多页面配置的步骤详解
May 22 Javascript
JavaScript语法约定和程序调试原理解析
Nov 03 Javascript
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
Zend Framework中的简单工厂模式 图文
2012/07/10 PHP
Nginx+php配置文件及原理解析
2020/12/09 PHP
收集的10个免费的jQuery相册
2011/02/26 Javascript
判断js对象是否拥有某一个属性的js代码
2013/08/16 Javascript
jQuery学习笔记之 Ajax操作篇(一) - 数据加载
2014/06/23 Javascript
Firefox下无法正常显示年份的解决方法
2014/09/04 Javascript
jQuery使用之标记元素属性用法实例
2015/01/19 Javascript
7个有用的jQuery代码片段分享
2015/05/19 Javascript
JavaScript实现级联菜单的方法
2015/06/29 Javascript
JavaScript计算某一天是星期几的方法
2015/08/05 Javascript
jQuery实现简单下拉导航效果
2015/09/07 Javascript
JQuery标签页效果实例详解
2015/12/24 Javascript
node.js微信公众平台开发教程
2016/03/04 Javascript
Bootstrap每天必学之按钮(Button)插件
2016/04/25 Javascript
Javascript计算二维数组重复值示例代码
2016/12/18 Javascript
JS实现浏览上传文件的代码
2017/08/23 Javascript
详解vue.js下引入百度地图jsApi的两种方法
2018/07/27 Javascript
实例分析vue循环列表动态数据的处理方法
2018/09/28 Javascript
在JavaScript中实现链式调用的实现
2019/12/24 Javascript
Python实现的多线程http压力测试代码
2017/02/08 Python
python模块之paramiko实例代码
2018/01/31 Python
基于MSELoss()与CrossEntropyLoss()的区别详解
2020/01/02 Python
关于tf.TFRecordReader()函数的用法解析
2020/02/17 Python
keras读取h5文件load_weights、load代码操作
2020/06/12 Python
CSS3 中filter(滤镜)属性使用详解
2020/04/07 HTML / CSS
波兰最大的儿童服装连锁店之一:5.10.15.
2018/02/11 全球购物
电子商务专业自我鉴定
2013/12/18 职场文书
学习党的群众路线教育实践活动心得体会
2014/03/01 职场文书
人力资源主管职责范本
2014/03/05 职场文书
五年级学生评语
2014/04/22 职场文书
2014年班主任自我评价范文
2014/04/23 职场文书
教研活动总结
2014/04/28 职场文书
党的群众路线对照检查材料范文
2014/09/24 职场文书
2015年业务员工作总结范文
2015/04/07 职场文书
2015年留守儿童工作总结
2015/05/22 职场文书
2016年小学生清明节广播稿
2015/12/17 职场文书