JavaScript獲取當(dāng)前cpu使用率的方法
本文實(shí)例講述了JavaScript獲取當(dāng)前cpu使用率的方法。分享給大家供大家參考,具體如下:
想獲取當(dāng)前系統(tǒng)cpu的使用率,如果允許使用hta,可以使用以下的代碼獲取當(dāng)前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);
如果不允許使用上面的方法,在正常的網(wǎng)頁中是否有更合適的方法進(jìn)行粗略的估算?
思路就是用一個定時(shí)器,假設(shè)間隔執(zhí)行時(shí)間為500ms,當(dāng)調(diào)用它時(shí),判斷從開始計(jì)時(shí)到本次執(zhí)行所用時(shí)間,如果兩者之差 == 500 則基本上可以認(rèn)定為比較正常,如果 > 500+ 則針對不同的值來判定cpu的繁忙狀況(因?yàn)椴煌臋C(jī)器,CPU處理能力不太一樣,所以這個最多只是粗略的估算不完全準(zhǔn)確,對系統(tǒng)的一些參數(shù)有較強(qiáng)的依賴性)
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();
})();
}
如果想判定的更為精準(zhǔn),那只能在定時(shí)器的執(zhí)行時(shí)間和對差值的對比上進(jìn)行調(diào)整了。
早在幾年前ajax.com上就有人已經(jīng)寫出來這樣的例子了。使用起來還比較簡單,直接在你的需要監(jiān)測的網(wǎng)頁地址欄中輸入:

在當(dāng)前頁面右上角會出現(xiàn)一個小圖標(biāo),它分為5個等級,分別代表當(dāng)前cpu高度任務(wù)的狀況(過高則說明CPU使用率是比較高的,只能進(jìn)行一個大概的估算,不是很精確)
這里有一個在線例子:
<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');
希望本文所述對大家JavaScript程序設(shè)計(jì)有所幫助。
相關(guān)文章
微信小程序從服務(wù)器中獲取數(shù)據(jù)的示例代碼
要從服務(wù)器中獲取數(shù)據(jù),可以使用微信小程序提供的wx.request()方法,下面通過示例代碼介紹微信小程序怎么從服務(wù)器中獲取數(shù)據(jù),感興趣的朋友一起看看吧2024-03-03
淺析jsopn跨域請求原理及cors(跨域資源共享)的完美解決方法
由于同源策略的緣故,ajax不能向不同域的網(wǎng)站發(fā)出請求。接下來通過本文給大家介紹jsopn跨域請求原理及cors(跨域資源共享)的完美解決方法,需要的朋友可以參考下2017-02-02
JavaScript運(yùn)動原理基礎(chǔ)知識詳解
這篇文章主要介紹了JavaScript運(yùn)動原理基礎(chǔ)知識詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-04-04
原生js實(shí)現(xiàn)jquery函數(shù)animate()動畫效果的簡單實(shí)例
下面小編就為大家?guī)硪黄鷍s實(shí)現(xiàn)jquery函數(shù)animate()動畫效果的簡單實(shí)例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-08-08
Javascript實(shí)現(xiàn)的類似Google的Div拖動效果代碼
Javascript實(shí)現(xiàn)的類似Google的Div拖動效果代碼,需要的朋友可以參考下。2011-08-08
JS實(shí)現(xiàn)多張圖片預(yù)覽同步上傳功能
這篇文章主要介紹了JS實(shí)現(xiàn)多張圖片預(yù)覽同步上傳功能的相關(guān)資料,需要的朋友可以參考下2017-06-06

