JavaScript監控當前cpu使用狀況

來源:互聯網
上載者:User

想擷取當前系統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();    })();}
如果想判定的更為精準,那隻能在定時器的執行時間和對差值的對比上進行調整了。早在幾年前ajax.com上就有人已經寫出來這樣的例子了。使用起來還比較簡單,直接在你的需要監測的網頁地址欄中輸入: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使用率是比較高的,只能進行一個大概的估算,不是很精確)這裡有一個線上例子:
<html><head><script    type="text/javascript"    src="http://www.3site.eu/JPU/JPU.js"><!--//    JPU - by WebReflection//--></script><script type="text/javascript"><!--//function randomString(){    for(var    i = 0, a = []; i < Math.ceil(Math.random() * 123456789); i++)        a[i] = String.fromCharCode(Math.round(Math.random() * 50) + 30);    return    a.join("");};onload = function(){    setInterval(function(){        var    div = document.getElementById("demo");        div.appendChild(document.createTextNode(randomString()));    }, 300);};//--></script><style type="text/css">div{overflow:hidden;width:80%;height:80%;color:#FFF;}</style></head><body><div id="demo"></div></body></html>
它整個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');

  

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.