利用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 相关文章推荐
jquery ajax post提交数据乱码
Nov 05 Javascript
jquery对单选框,多选框,文本框等常见操作小结
Jan 08 Javascript
JavaScript中的document.referrer在各种浏览器测试结果
Jul 18 Javascript
Firefox下无法正常显示年份的解决方法
Sep 04 Javascript
js变形金刚文字特效代码分享
Aug 20 Javascript
JS实现日期时间动态显示的方法
Dec 07 Javascript
Sortable.js拖拽排序使用方法解析
Nov 04 Javascript
javaScript生成支持中文带logo的二维码(jquery.qrcode.js)
Jan 03 Javascript
js实现复选框的全选和取消全选效果
Jan 03 Javascript
Vue.js实现一个漂亮、灵活、可复用的提示组件示例
Mar 17 Javascript
解决bootstrap模态框数据缓存的问题方法
Aug 10 Javascript
在vue项目中利用popstate处理页面返回的操作介绍
Aug 06 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
虫族 Zerg 历史背景
2020/03/14 星际争霸
PHP 文件类型判断代码
2009/03/13 PHP
php学习之 数组声明
2011/06/09 PHP
有关php运算符的知识大全
2011/11/03 PHP
如何使用Gitblog和Markdown建自己的博客
2015/07/31 PHP
详解php设置session(过期、失效、有效期)
2015/11/12 PHP
PHP如何实现跨域
2016/05/30 PHP
PHP反射机制原理与用法详解
2017/02/15 PHP
PHP封装的page分页类定义与用法完整示例
2018/12/24 PHP
使用Laravel中的查询构造器实现增删改查功能
2019/09/03 PHP
js防止表单重复提交实现代码
2012/09/05 Javascript
JS.GetAllChild(element,deep,condition)使用介绍
2013/09/21 Javascript
js 绑定键盘鼠标事件示例代码
2014/02/12 Javascript
在JavaScript中使用NaN值的方法
2015/06/05 Javascript
js实现精确到毫秒的倒计时效果
2016/08/05 Javascript
浅谈JS继承_寄生式继承 &amp; 寄生组合式继承
2016/08/16 Javascript
JavaScript探测CSS动画是否已经完成的方法
2016/08/30 Javascript
JS防止网页被嵌入iframe框架的方法分析
2016/09/13 Javascript
js实现常见的工具条效果
2017/03/02 Javascript
ES6新特性六:promise对象实例详解
2017/04/21 Javascript
angular+webpack2实战例子
2017/05/23 Javascript
React SSR样式及SEO的实践
2018/10/22 Javascript
JavaScript实现小球沿正弦曲线运动
2020/09/07 Javascript
用Python计算三角函数之atan()方法的使用
2015/05/15 Python
tensorflow 1.0用CNN进行图像分类
2018/04/15 Python
实例讲解Python中浮点型的基本内容
2019/02/11 Python
Python生态圈图像格式转换问题(推荐)
2019/12/02 Python
pytorch-神经网络拟合曲线实例
2020/01/15 Python
Pytorch转onnx、torchscript方式
2020/05/25 Python
对CSS3选择器的研究(详解)
2016/09/16 HTML / CSS
HTML5 语音搜索只需一句代码
2013/01/03 HTML / CSS
使用Html5中的cavas画一面国旗
2019/09/25 HTML / CSS
h5页面背景图很长要有滚动条滑动效果的实现
2021/01/27 HTML / CSS
大学生学习党课思想汇报
2014/01/03 职场文书
麦田里的守望者读书笔记
2015/06/30 职场文书
MySQL学习之基础操作总结
2022/03/19 MySQL