利用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 相关文章推荐
Extjs学习笔记之二 初识Extjs之Form
Jan 07 Javascript
JavaScript 保存数组到Cookie的代码
Apr 14 Javascript
js确认删除对话框适用于a标签及submit
Jul 10 Javascript
jQuery常用数据处理方法小结
Feb 20 Javascript
jQuery弹簧插件编写基础之“又见弹窗”
Dec 11 Javascript
HTML5 js实现拖拉上传文件功能
Nov 20 Javascript
node.js平台下的mysql数据库配置及连接
Mar 31 Javascript
Vue2路由动画效果的实现代码
Jul 10 Javascript
jQuery获取所有父级元素及同级元素及子元素的方法(推荐)
Jan 21 jQuery
微信小程序实现animation动画
Jan 26 Javascript
JavaScript读写二进制数据的方法详解
Sep 09 Javascript
koa2 用户注册、登录校验与加盐加密的实现方法
Jul 22 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 危险函数全解析
2009/09/09 PHP
php实现猴子选大王问题算法实例
2015/04/20 PHP
php如何实现不借助IDE快速定位行数或者方法定义的文件和位置
2017/01/17 PHP
css动画效果之animation的常用样式
2021/03/09 HTML / CSS
阻止JavaScript事件冒泡传递(cancelBubble 、stopPropagation)
2007/05/08 Javascript
ExtJS Grid使用SimpleStore、多选框的方法
2009/11/20 Javascript
事件绑定之小测试  onclick &amp;&amp; addEventListener
2011/07/31 Javascript
JavaScript 参数中的数组展开 [译]
2012/09/21 Javascript
为jquery的ajaxfileupload增加附加参数的方法
2014/03/04 Javascript
Javascript中3种实现继承的方法和代码实例
2014/08/12 Javascript
20条学习javascript的编程规范的建议
2014/11/28 Javascript
微信小程序 参数传递详解
2016/10/24 Javascript
微信小程序 支付后台java实现实例
2017/05/09 Javascript
通过构造函数实例化对象的方法
2017/06/28 Javascript
angular项目中bootstrap-datetimepicker时间插件的使用示例
2018/03/15 Javascript
node基于puppeteer模拟登录抓取页面的实现
2018/05/09 Javascript
解决angular2在双向数据绑定时[(ngModel)]无法使用的问题
2018/09/13 Javascript
jQuery层叠选择器用法实例分析
2019/06/28 jQuery
Python利用openpyxl库遍历Sheet的实例
2018/05/03 Python
Python(TensorFlow框架)实现手写数字识别系统的方法
2018/05/29 Python
python抓取网页内容并进行语音播报的方法
2018/12/24 Python
Algenist奥杰尼官网:微藻抗衰老护肤品牌
2017/07/15 全球购物
Office DEPOT法国官网:欧迪办公用品采购
2018/01/03 全球购物
俄罗斯Sportmarket体育在线商店:用于旅游和户外活动
2019/11/12 全球购物
Moda Operandi官网:美国奢侈品电商,海淘秀场T台同款
2020/05/26 全球购物
应届生程序员求职信
2013/11/05 职场文书
高中语文教学反思
2014/01/16 职场文书
春季运动会广播稿大全
2014/02/19 职场文书
厨师个人自我鉴定范文
2014/04/19 职场文书
《恐龙》教学反思
2014/04/27 职场文书
体育之星事迹材料
2014/05/11 职场文书
学党史心得体会
2014/09/05 职场文书
2015年人事工作总结范文
2015/04/09 职场文书
初中语文教学随笔
2015/08/15 职场文书
mysql字段为NULL索引是否会失效实例详解
2022/05/30 MySQL
nginx设置资源请求目录的方式详解
2022/05/30 Servers