利用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 相关文章推荐
javascript 面向对象继承
Nov 26 Javascript
javascript XMLHttpRequest对象全面剖析
Apr 24 Javascript
Javascript下IE与Firefox下的差异兼容写法总结
Jun 18 Javascript
jQuery中change事件用法实例
Dec 26 Javascript
Node.js的包详细介绍
Jan 14 Javascript
pace.js页面加载进度条插件
Sep 29 Javascript
使用JavaScript触发过渡效果的方法
Jan 19 Javascript
一篇文章搞定JavaScript类型转换(面试常见)
Jan 21 Javascript
react-native动态切换tab组件的方法
Jul 07 Javascript
使用layer模态框给新页面传值的方法
Sep 27 Javascript
vue实现数据控制视图的原理解析
Jan 07 Javascript
小程序自定义模板实现吸顶功能
Jan 08 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
PHP中的string类型使用说明
2010/07/27 PHP
PHP遍历数组的几种方法
2012/03/22 PHP
php实现aes加密类分享
2014/02/16 PHP
MacOS 安装 PHP的图片裁剪扩展Tclip
2015/03/25 PHP
php实现的错误处理封装类实例
2017/06/20 PHP
Laravel路由研究之domain解决多域名问题的方法示例
2019/04/04 PHP
通过JAVASCRIPT读取ASP设定的COOKIE
2006/11/24 Javascript
JQuery 无废话系列教程(一) jquery入门 [推荐]
2009/06/23 Javascript
jQuery入门知识简介
2010/03/04 Javascript
ImageZoom 图片放大镜效果(多功能扩展篇)
2010/04/14 Javascript
javascript 全选与全取消功能的实现代码
2012/12/23 Javascript
javascript计时器事件使用详解
2014/01/07 Javascript
Jquery实现Div上下移动示例
2014/04/23 Javascript
JQuery实现的购物车功能(可以减少或者添加商品并自动计算价格)
2015/01/13 Javascript
jQuery验证插件validate使用方法详解
2020/09/13 Javascript
jQuery使用JSONP实现跨域获取数据的三种方法详解
2017/05/04 jQuery
关于webpack2和模块打包的新手指南(小结)
2017/08/07 Javascript
Webpack中雪碧图插件使用详解
2018/05/25 Javascript
Vue从TodoList中学父子组件通信
2019/02/05 Javascript
详解为什么Vue中不要用index作为key(diff算法)
2020/04/04 Javascript
js将日期格式转换为YYYY-MM-DD HH:MM:SS
2020/09/18 Javascript
Python文件夹与文件的操作实现代码
2014/07/13 Python
浅析使用Python操作文件
2017/07/31 Python
Python 实现一行输入多个值的方法
2018/04/21 Python
完美解决Python 2.7不能正常使用pip install的问题
2018/06/12 Python
pytorch: tensor类型的构建与相互转换实例
2018/07/26 Python
Python3 无重复字符的最长子串的实现
2019/10/08 Python
python用requests实现http请求代码实例
2019/10/31 Python
通过python扫描二维码/条形码并打印数据
2019/11/14 Python
python多维数组分位数的求取方式
2020/03/03 Python
如何基于python对接钉钉并获取access_token
2020/04/21 Python
css3实现信纸/同学录效果的示例代码
2018/12/11 HTML / CSS
草莓网官网:StrawberryNET
2019/08/21 全球购物
英语专业毕业生自我鉴定
2013/11/09 职场文书
争做文明公民倡议书
2014/08/29 职场文书
担保书范文
2019/07/09 职场文书