博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JavaScript监控当前cpu使用状况
阅读量:5956 次
发布时间:2019-06-19

本文共 2716 字,大约阅读时间需要 9 分钟。

想获取当前系统cpu的使用率,如果允许使用hta,可以使用以下的代码获取当前cpu的使用率(较为精确)

setInterval(function() {    var locator=new ActiveXObject ("WbemScripting.SWbemLocator");    var    service=locator.ConnectServer(".");    var cpu=new Enumerator (service.ExecQuery("SELECT * FROM Win32_Processor")).item();    document.title = cpu.LoadPercentage;}, 1000);
如果不允许使用上面的方法,在正常的网页中是否有更合适的方法进行粗略的估算?
思路就是用一个定时器,假设间隔执行时间为500ms,当调用它时,判断从开始计时到本次执行所用时间,如果两者之差 == 500 则基本上可以认定为比较正常,如果 > 500+ 则针对不同的值来判定cpu的繁忙状况(因为不同的机器,CPU处理能力不太一样,所以这个最多只是粗略的估算不完全准确,对系统的一些参数有较强的依赖性)
function cpuSimulator() {    var J = 100,        getNow = function() {            return new Date().getTime();        };    !(function() {        var I = document.createElement("div"),            s = 50,            fn = function(l) {                l = 1;                var now = getNow();                var c = 1;                while (c < J) {                    if (now > D + c*s) {                        l++;                    }                    c++;                }                D = getNow();                I.innerHTML = "CPU:" + l/J * 100 + "%";            },            t = setInterval(fn, 500),            D = getNow();            I.style.cssText = "width:80px; height:20px; position:fixed !important; _position:absolute; top:10px; right:10px; border:1px solid #406c99; padding:2px; color:#f00;";            document.body.appendChild(I);            fn();    })();}
如果想判定的更为精准,那只能在定时器的执行时间和对差值的对比上进行调整了。
早在几年前 上就有人已经写出来这样的例子了。使用起来还比较简单,直接在你的需要监测的网页地址栏中输入:
javascript:(function(s){s.type=’text/javascript’;s.src=’http://www.3site.eu/JPU/IJPU.js’;document.getElementsByTagName(‘head’)[0].appendChild(s)})(document.createElement(‘script’));
在当前页面右上角会出现一个小图标,它分为5个等级,分别代表当前cpu高度任务的状况(过高则说明CPU使用率是比较高的,只能进行一个大概的估算,不是很精确)
这里有一个在线例子:
它整个IJPU的代码比较简短,可以参考一下:/* (C) Andrea Giammarchi */(function (J, P, U) {    var a = 'appendChild',        c = 'createElement',        e = 'addEventListener',        d = document,        l = "load",        w = window;    (function () {        var i = setInterval(function (l) {            l = 1;            D = new Date - D;            if (D > 700) l++;            if (D > 650) l++;            if (D > 600) l++;            if (D > 550) l++;            s(J = l < J ? --J : l);            D = new Date        }, 500),            b = d.body,            s = function () {                I.className = U + J            },            I = d[c]('p'),            C = d[c]('link'),            D = new Date;        C.rel = 'stylesheet';        C.type = 'text/css';        C.href = P + U + '.css';        s(b[a](C), b[a](I)); /*@cc_on setInterval(function(){I.style.top=document.body.scrollTop+"px"},50)@*/    })()})(5, 'http://www.3site.eu/JPU/', 'JPU');

  

 

 

转载地址:http://yuexx.baihongyu.com/

你可能感兴趣的文章
Extjs4.x (MVC)Controller中refs以及Ext.ComponentQuery解析
查看>>
Server-01 How to Find the Remote Desktop Port
查看>>
Java--接口、抽象与继承
查看>>
通过IP判断登录地址
查看>>
Oracle闪回技术
查看>>
利用单壁路由实现vlan间路由
查看>>
hello world
查看>>
CentOS 7 配置yum本地base源和阿里云epel源
查看>>
python 学习导图
查看>>
生成树
查看>>
(MYSQL) Unknown table 'a' in MULTI DELETE的解决办法
查看>>
作为一个程序员必备的素质
查看>>
Webpack入门教程十四
查看>>
HDU - 3564 Another LIS(LIS+线段树)
查看>>
深入浅出JavaScript (五) 详解Document.write()方法
查看>>
hibernate简单入门教程(四)---------关联映射
查看>>
去 IOE,MySQL 完胜 PostgreSQL
查看>>
++i 和 i++ 性能上的区别
查看>>
Mysql运维管理-一主多从宕机从库切换主库继续和从库同步过程16
查看>>
Redis的RDB AOF DATABASE
查看>>