利用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 相关文章推荐
setTimeout和setInterval的浏览器兼容性分析
Feb 27 Javascript
javascript hashtable 修正版 下载
Dec 30 Javascript
CSS3,HTML5和jQuery搜索框集锦
Dec 02 Javascript
JavaScript取得WEB安全颜色列表的方法
Jul 14 Javascript
JavaScript实现图片轮播的方法
Jul 31 Javascript
jquery判断当前浏览器的实现代码
Nov 07 Javascript
jQuery Ajax 实例代码 ($.ajax、$.post、$.get)
Apr 29 Javascript
简易的JS计算器实现代码
Oct 18 Javascript
Bootstrap风格的zTree右键菜单
Feb 17 Javascript
jQuery简易时光轴实现方法示例
Mar 13 Javascript
一次记住JavaScript的6个正则表达式方法
Feb 22 Javascript
Vue使用Element实现增删改查+打包的步骤
Nov 25 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
如何开始收听短波广播
2021/03/01 无线电
win10环境PHP 7 安装配置【教程】
2016/05/09 PHP
PHP文件与目录操作示例
2016/12/24 PHP
IOS 开发之NSDictionary转换成JSON字符串
2017/08/14 PHP
PHP实现创建一个RPC服务操作示例
2020/02/23 PHP
JavaScript Cookie显示用户上次访问的时间和次数
2009/12/08 Javascript
JS实现的省份级联实例代码
2013/06/24 Javascript
jQuery源码解读之hasClass()方法分析
2015/02/20 Javascript
JavaScript实现拖拽网页内元素的方法
2015/04/15 Javascript
jquery图片滚动放大代码分享(2)
2015/08/28 Javascript
使用jQuery的load方法设计动态加载及解决被加载页面js失效问题
2017/03/01 Javascript
微信小程序手势操作之单触摸点与多触摸点
2017/03/10 Javascript
webpack2.0搭建前端项目的教程详解
2017/04/05 Javascript
详解nodejs微信公众号开发——6.自定义菜单
2017/04/13 NodeJs
基于ES6作用域和解构赋值详解
2017/11/03 Javascript
VUE2.0+Element-UI+Echarts封装的组件实例
2018/03/02 Javascript
微信小程序bindinput与bindsubmit的区别实例分析
2019/04/17 Javascript
VueCli4项目配置反向代理proxy的方法步骤
2020/05/17 Javascript
python fabric实现远程操作和部署示例
2014/03/25 Python
Python检测QQ在线状态的方法
2015/05/09 Python
Python的时间模块datetime详解
2017/04/17 Python
python实现对excel进行数据剔除操作实例
2017/12/07 Python
聊聊Python中的pypy
2018/01/12 Python
Python pymongo模块常用操作分析
2018/09/01 Python
Python查找文件中包含中文的行方法
2018/12/19 Python
使用python制作一个为hex文件增加版本号的脚本实例
2019/06/12 Python
Python计算不规则图形面积算法实现解析
2019/11/22 Python
Python selenium模拟手动操作实现无人值守刷积分功能
2020/05/13 Python
PyCharm安装PyQt5及其工具(Qt Designer、PyUIC、PyRcc)的步骤详解
2020/11/02 Python
python绘制高斯曲线
2021/02/19 Python
SQL面试题
2013/12/09 面试题
高级Java程序员面试要点
2013/08/02 面试题
售后服务承诺书怎么写
2014/05/21 职场文书
Python面向对象编程之类的概念
2021/11/01 Python
Python的代理类实现,控制访问和修改属性的权限你都了解吗
2022/03/21 Python
BCL经典机 SONY ICF-5900W电路分析
2022/04/24 无线电