通过JS测量CPU性能

时间:2013-11-03 15:50:37

标签: javascript

webapp作为一个核心组件,具有处理几何操作的相对繁重的算法。

有两种解决方案可以从高端机器和相对较慢的移动设备访问整个设备。

如果我检测到用户机器“慢”,我可以使用RPC(远程过程调用),否则如果我检测到用户机器可以处理它,那么我向web-app提供脚本处理客户端。

现在检测用户机器速度的可靠方法是什么?

我在考虑在页面加载时提供示例脚本作为测试,并检测执行该操作所花费的时间。

有什么想法吗?

2 个答案:

答案 0 :(得分:7)

JSLitmus是一个用于创建临时JavaScript基准测试的轻量级工具。可能有帮助....您可以查看demo test page

答案 1 :(得分:3)

我写了这个快速脚本来获得cpu速度:

var _speedconstant = 1.15600e-8; //if speed=(c*a)/t, then constant=(s*t)/a and time=(a*c)/s
var d = new Date();
var amount = 150000000;
var estprocessor = 1.7; //average processor speed, in GHZ
console.log("JSBenchmark by Aaron Becker, running loop " + amount + " times.     Estimated time (for " + estprocessor + "ghz processor) is " + (Math.round(((_speedconstant * amount) / estprocessor) * 100) / 100) + "s");
for (var i = amount; i > 0; i--) {}
var newd = new Date();
var accnewd = Number(String(newd.getSeconds()) + "." + String(newd.getMilliseconds()));
var accd = Number(String(d.getSeconds()) + "." + String(d.getMilliseconds()));
var di = accnewd - accd;
//console.log(accnewd,accd,di);
if (d.getMinutes() != newd.getMinutes()) {
  di = (60 * (newd.getMinutes() - d.getMinutes())) + di
}
spd = ((_speedconstant * amount) / di);
console.log("Time: " + Math.round(di * 1000) / 1000 + "s, estimated speed: " + Math.round(spd * 1000) / 1000 + "GHZ");

请注意,这取决于浏览器选项卡,内存使用情况等,但如果您只运行一次,例如在加载页面时,我发现它非常准确。

如果您希望更改_speed常量以更改速度,只需使用公式(knowncpuspeed * knowntimetocomplete)/ knowncycles计算它。希望你觉得这很有用!