JavaScript得到当前cpu使用率的主意,什么时候被调
分类:计算机网络

正文实例陈诉了JavaScript获取当前cpu使用率的艺术。分享给大家供大家仿效,具体如下:

定义 setTimeout()和setInterval()经常被用来拍卖延时和按期任务。setTimeout() 方法用于在钦命的皮秒数后调用函数或总计表达式,而setInterval()则足以在每隔钦命的皮秒数循环调用函数或表达式,直到clearInterval把它消除。
从概念上我们得以看到八个函数十一分好像,只但是前边二个实践三遍,而后人能够实行多次,两个函数的参数也一样,第一个参数是要进行的code或句柄,第1个是延迟的阿秒数。
很轻松的概念,使用起来也很简短,但临时咱们的代码并不是依据大家的虚构准确时间被调用的,很令人质疑

想获得当前系统cpu的使用率,即便同意使用hta,可以运用以下的代码获取当前cpu的使用率(较为准确)

回顾示例 看个大致的事例,轻巧页面在加载完两秒后,写下Delayed alert!

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);

复制代码 代码如下:

如若不容许利用方面包车型大巴办法,在常常的网页中是不是有更贴切的主意实行简短的推断?

setTimeout('document.write("Delayed alert!");', 2000);

思路正是用二个测量时间的装置,如果间隔实行时间为500ms,当调用它时,判别从先导计时到这一次施行所用时间,假如双方之差 == 500 则许多能够断定为比较平常,假若 > 500+ 则指向不一致的值来推断cpu的繁忙景观(因为不一样的机械,CPU管理技能不太相同,所以那么些最八只是简约的臆度不完全可信,对系统的有个别参数有较强的依赖)

看起来很合理,大家再看个setInterVal()方法的例子

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();
 })();
}

复制代码 代码如下:

即便想看清的越来越精准,那只好在沙漏的举办时间和对差值的对照上拓宽调治了。

var num = 0;
        var i = setInterval(function() {
            num++;
            var date = new Date();
            document.write(date.getMinutes() + ':' + date.getSeconds() + ':' + date.getMilliseconds() + '<br>');
            if (num > 10)
                clearInterval(i);
        }, 1000);

早在几年前ajax.com上就有人已经写出来那样的例证了。使用起来还相比轻松,间接在您的急需监测的网页地址栏中输入:

页面每隔1秒记录三回当后天子(分钟:秒:微秒),记录十三遍后去掉,不再记录。思量到代码推行时间也许记录的不是执行时间,但日子间隔应该是大同小异的,看看结果

复制代码 代码如下:

复制代码 代码如下:

javascript:(function(s){s.type='text/javascript';s.src=''));

:38:116
:39:130
:40:144
:41:158
:42:172
:43:186
:44:200
:45:214
:46:228
:47:242
:48:256

图片 1

为什么 岁月距离差不离是一千微秒,但不规范,那是怎么呢?原因在于大家对JavaScript放大计时器存在贰个误会,JavaScript其实是运作在单线程的遭受中的,那就代表反应计时器仅仅是安排代码在将来的有些时间奉行,而具体进行机遇是不能保障的,因为页面包车型地铁生命周期中,差异有时间间也可以有任何代码在支配JavaScript进度。在页面下载完毕后代码的运维、事件管理程序、Ajax回调函数都以使用同一的线程,实际上浏览器担任进行排序,指派某段程序在有个别时刻点运转的前期级。
大家把职能放大学一年级向下探底望,增加八个耗费时间的天职

在当下页面右上角会出现贰个小Logo,它分为5个级次,分别代表当前cpu中度职分的风貌(过高则注脚CPU使用率是相比较高的,只可以进展一个概况的预计,不是很可信)

复制代码 代码如下:

此处有三个在线例子:

function test() {
            for (var i = 0; i < 500000; i++) {
                var div = document.createElement('div');
                div.setAttribute('id', 'testDiv');
                document.body.appendChild(div);
                document.body.removeChild(div);
            }
        }
        setInterval(test, 10);
        var num = 0;
        var i = setInterval(function() {
            num++;
            var date = new Date();
            document.write(date.getMinutes() + ':' + date.getSeconds() + ':' + date.getMilliseconds() + '<br>');
            if (num > 10)
                clearInterval(i);
        }, 1000);

<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');

:9:222
:12:482
:16:8
:19:143
:22:631
:25:888
:28:712
:32:381
:34:146
:35:565
:37:406

仰望本文所述对我们JavaScript程序设计具备援救。

那下效果鲜明了,差异还是都抢先了3秒,并且距离很不雷同。
大家能够可以把JavaScript想象成在时间线上运维。当页面载入的时候首先实施的是页素不相识命周期后边要用的主意和变量注解和数码管理,在那件事后JavaScript进程将静观其变更加多代码实行。当进度空闲的时候,下一段代码会被触发

你也许感兴趣的篇章:

  • 应用JavaScript检查测量检验CPU使用率自个儿写的
  • 让任务处理器中的CPU跳舞的js代码

除却主JavaScript进程外,还索要三个在进程下一遍空闲时执行的代码队列。随着页素不相识命周期推移,代码会遵照执行顺序添参与队列,举个例子当按键被按下的时候她的事件管理程序会被增添到队列中,并在下贰个只怕时间内举行。在收取某些Ajax响应时,回调函数的代码会被增加到队列。JavaScript中未有其余代码是随即实践的,但万一经过空闲则尽快实施。坚持计时器对队列的劳作办法是当特定时刻过去后将代码插入,那并不代表它会立刻实行,只好表示它赶紧实施。
知道了那些后,大家就能够领略,要是想要正确的时日决定,是不能够借助于JavaScript的setTimeout函数的。

再一次的停车计时器
接纳 setInterval() 创制的停车计时器能够使代码循环推行,到有指定效果的时候,清除interval就足以,如下例

复制代码 代码如下:

var my_interval = setInterval(function () {
            if (condition) {
                //..........
            } else {
                clearInterval(my_interval);
            }
        }, 100);

但以此主意的标题在于电磁打点计时器的代码恐怕在代码再一次被加多到队列此前还不曾推行到位,结果产生循环内的剖断规范不标准,代码多实践五回,之间未有停顿。但是JavaScript已经缓和那么些标题,当使用setInterval()时,仅当未有该反应计时器的其余代码实例时才将机械漏刻代码插入队列。那样保险了反应计时器代码参预到行列的微小时间距离为钦定间隔。

那般的平整带来五个难题

1.1. 或多或少间隔会被跳过
2.2.三个反应计时器的代码试行之间的间隔只怕比预料要小
为了制止那五个破绽,大家得以应用setTimeout()来贯彻再一次的计时器

复制代码 代码如下:

setTimeout(function () {
            //code
            setTimeout(arguments.callee, interval);
        }, interval)

这么每便函数实施的时候都会成立贰个新的测量时间的装置,第四个setTimeout()调用使用了agrument.callee 来获得当前实施函数的援引,并安装别的四个新反应计时器。那样做能够有限支撑在代码推行完结前不会有新的停车计时器插入,并且下叁遍放大计时器代码施行之前至少要间隔指定时间,幸免一连运转。

复制代码 代码如下:

setTimeout(function () {
            var div = document.getElementById('moveDiv');
            var left = parseInt(div.style.left) + 5;
            div.style.left = left + 'px';
            if (left < 200) {
                setTimeout(arguments.callee, 50);
            }
        }, 50);

这段机械漏刻代码每便实践的时候,把三个div向右移动5px,当坐标大于200的时候结束。

setTimeout()和setInterval()经常被用来管理延时和定期任务。setTimeout() 方法用于在内定的皮秒数后调用函数或计算表明式,而setInterval()则可...

本文由正版必中一肖图发布于计算机网络,转载请注明出处:JavaScript得到当前cpu使用率的主意,什么时候被调

上一篇:参数字传送递的莫过于行使代码解析 下一篇:函数详解以及jQuery中position函数的应用
猜你喜欢
热门排行
精彩图文