利用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 相关文章推荐
分享20多个很棒的jQuery 文件上传插件或教程
Sep 04 Javascript
JavaScript插件化开发教程(六)
Feb 01 Javascript
JavaScript搜索字符串并将搜索结果返回到字符串的方法
Apr 06 Javascript
input点击后placeholder中的提示消息消失
Jan 15 Javascript
原生JS实现轮播效果+学前端的感受(防止走火入魔)
Aug 21 Javascript
js表单元素checked、radio被选中的几种方法(详解)
Aug 22 Javascript
AngularJS的依赖注入实例分析(使用module和injector)
Jan 19 Javascript
基于JS开发微信网页录音功能的实例代码
Apr 30 Javascript
jquery多级树形下拉菜单的实例代码
Jul 09 jQuery
vue视频播放暂停代码
Nov 08 Javascript
vue props default Array或是Object的正确写法说明
Jul 30 Javascript
vue3使用vue-router的完整步骤记录
Jun 20 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环境搭建最新方法
2006/09/05 PHP
分页显示Oracle数据库记录的类之二
2006/10/09 PHP
shopex主机报错误请求解决方案(No such file or directory)
2011/12/27 PHP
WordPress特定文章对搜索引擎隐藏或只允许搜索引擎查看
2015/12/31 PHP
Thinkphp框架开发移动端接口(2)
2016/08/18 PHP
PHP+jQuery实现滚屏无刷新动态加载数据功能详解
2017/05/04 PHP
做网页的一些技巧
2007/02/01 Javascript
jquery 表单下所有元素的隐藏
2009/07/25 Javascript
Javascript面向对象之四 继承
2011/02/08 Javascript
谷歌浏览器不支持showModalDialog模态对话框的解决方法
2014/09/22 Javascript
jquery插件hiAlert实现网页对话框美化
2015/05/03 Javascript
简单介绍JavaScript数据类型之隐式类型转换
2015/12/28 Javascript
javascript超过容器后显示省略号效果的方法(兼容一行或者多行)
2016/07/14 Javascript
微信小程序 页面传参实例详解
2016/11/16 Javascript
AngularJS指令中的绑定策略实例分析
2016/12/14 Javascript
JavaScript常用正则验证函数实例小结【年龄,数字,Email,手机,URL,日期等】
2017/01/23 Javascript
Vue表单验证插件Vue Validator使用方法详解
2017/04/07 Javascript
Angular2使用Angular-CLI快速搭建工程(二)
2017/05/21 Javascript
JQuery 实现文件下载的常用方法分析
2019/10/29 jQuery
原生JavaScript写出Tabs标签页的实例代码
2020/07/20 Javascript
使用JS实现鼠标放上图片进行放大离开实现缩小功能
2021/01/27 Javascript
Python实现的特征提取操作示例
2018/12/03 Python
python实现整数的二进制循环移位
2019/03/08 Python
详解Python网络框架Django和Scrapy安装指南
2019/04/01 Python
python实现IOU计算案例
2020/04/12 Python
Django Model中字段(field)的各种选项说明
2020/05/19 Python
详解Tensorflow不同版本要求与CUDA及CUDNN版本对应关系
2020/08/04 Python
使用JS+CSS3技术:让你的名字动起来
2013/04/27 HTML / CSS
琳达·法罗眼镜英国官网:Linda Farrow英国
2021/01/19 全球购物
Servlet如何得到服务器的信息
2015/12/22 面试题
婚前协议书怎么写
2014/04/15 职场文书
村委会换届选举方案
2014/05/03 职场文书
全国优秀教师事迹材料
2014/08/26 职场文书
2014年学校法制宣传日活动总结
2014/11/01 职场文书
2015年护士医德医风自我评价
2015/03/03 职场文书
js基础语法与maven项目配置教程案例
2021/07/15 Javascript