利用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的js分页代码
Jun 10 Javascript
Jquery插件编写简明教程
Mar 25 Javascript
jquery 自定义容器下雨效果可将下雨图标改为其他
Apr 23 Javascript
jQuery扁平化风格下拉框美化插件FancySelect使用指南
Feb 10 Javascript
Js可拖拽放大的层拖动特效实现方法
Feb 25 Javascript
jQuery动态背景图片效果实现方法
Jul 03 Javascript
通过点击jqgrid表格弹出需要的表格数据
Dec 02 Javascript
js html5 css俄罗斯方块游戏再现
Oct 17 Javascript
微信小程序封装http访问网络库实例代码
May 24 Javascript
浅谈node中的exports与module.exports的关系
Aug 01 Javascript
vue一个页面实现音乐播放器的示例
Feb 06 Javascript
vue+element ui实现锚点定位
Jun 29 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
php 信息采集程序代码
2009/03/17 PHP
codeigniter中view通过循环显示数组数据的方法
2015/03/20 PHP
PHP常用工具函数小结【移除XSS攻击、UTF8与GBK编码转换等】
2019/04/27 PHP
深入理解JavaScript系列(3) 全面解析Module模式
2012/01/15 Javascript
Java File类的常用方法总结
2015/03/18 Javascript
JavaScript知识点总结(十一)之js中的Object类详解
2016/05/31 Javascript
JS模仿腾讯图片站的图片翻页按钮效果完整实例
2016/06/21 Javascript
javascript与jquery动态创建html元素示例
2016/07/25 Javascript
easyui导出excel无法弹出下载框的快速解决方法
2016/11/10 Javascript
AngularJS表格样式简单设置方法示例
2017/03/03 Javascript
js实现年月日表单三级联动
2020/04/17 Javascript
一篇看懂vuejs的状态管理神器 vuex状态管理模式
2017/04/20 Javascript
强大的 Angular 表单验证功能详细介绍
2017/05/23 Javascript
js实现随机数字字母验证码
2017/06/19 Javascript
vue 每次渲染完页面后div的滚动条保持在最底部的方法
2018/03/17 Javascript
Node.js模块全局安装路径配置方法
2018/05/17 Javascript
JavaScript中reduce()的5个基本用法示例
2020/07/19 Javascript
node.js通过Sequelize 连接MySQL的方法
2020/12/28 Javascript
vue-resource 拦截器interceptors使用详解
2021/01/18 Vue.js
[42:32]完美世界DOTA2联赛循环赛 Magma vs PXG BO2第二场 10.28
2020/10/28 DOTA
对python中assert、isinstance的用法详解
2019/11/27 Python
Pandas实现dataframe和np.array的相互转换
2019/11/30 Python
Python selenium实现断言3种方法解析
2020/09/08 Python
美国蔬菜和植物种子公司:Burpee
2017/02/01 全球购物
TripAdvisor土耳其网站:全球知名旅行社区,真实旅客评论
2017/04/17 全球购物
Orvis官网:自1856年以来,优质服装、飞钓装备等
2018/12/17 全球购物
汽车销售员如何做职业生涯规划
2014/02/16 职场文书
艺校音乐专业自我鉴定范文
2014/03/01 职场文书
群众路线教育实践活动心得体会
2014/03/07 职场文书
2014新课程改革心得体会
2014/03/10 职场文书
产品销售计划书
2014/05/04 职场文书
入职担保书怎么写
2014/05/12 职场文书
2015年销售部工作总结范文
2015/04/27 职场文书
毕业班工作总结
2015/08/10 职场文书
mysql 索引合并的使用
2021/08/30 MySQL
36个正则表达式(开发效率提高80%)
2021/11/17 Javascript