CPU 占比探测
通过 setTimeout 的方式探测 CPU 已经不是秘密,去年腾讯的朋友在 Velocity 上分享过,北京有朋友还通过这个原理,几年前就实现了网页游戏中动画等耗时操作的自动调节。原理很简单:
var data = [] var t function pulse() { t && data.push(Date.now() - t) t = Date.now() setTimeout(pulse, 50) } pulse()
就是每隔 50ms 打一下点。理想情况下,data 的值应该是
data = [50, 50, 50, 50, ...]
但实际情况,data 会是
data = [51, 52, 50, 52, ...]
当 CPU 比较忙时,data 的数据变成
data = [81, 102, 90, 62, ...]
即 CPU 越忙,data 数据项会越大。这样,记录一系列 data 值,就可以绘制出 CPU 占比趋势图,和通过任务管理器看到的 CPU 趋势图非常接近。
上面只是原理说明,实际情况没这么简单。但很明显,通过这么一个简单的规律,就能实现用纯 JavaScript 来探测 CPU 占比了。
转自:https://github.com/lifesinger/lifesinger.github.com/issues/122