webapp 的核心组件是一个相对繁重的算法来处理几何运算。
有两种解决方案可以让高端机器和相对较慢的移动设备都可以访问整个内容。
如果我检测到用户机器“慢”或者如果我检测到用户机器可以正常处理它,我可以使用 RPC(远程过程调用),然后我向 web 应用程序提供脚本来处理它客户端边。
现在检测用户机器速度的可靠方法是什么?
我正在考虑在页面加载时提供一个示例脚本作为测试,并检测执行该脚本所花费的时间。
有任何想法吗?
webapp 的核心组件是一个相对繁重的算法来处理几何运算。
有两种解决方案可以让高端机器和相对较慢的移动设备都可以访问整个内容。
如果我检测到用户机器“慢”或者如果我检测到用户机器可以正常处理它,我可以使用 RPC(远程过程调用),然后我向 web 应用程序提供脚本来处理它客户端边。
现在检测用户机器速度的可靠方法是什么?
我正在考虑在页面加载时提供一个示例脚本作为测试,并检测执行该脚本所花费的时间。
有任何想法吗?
我写了这个快速脚本来获得 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");
请注意,这取决于浏览器选项卡、内存使用等,但我发现如果你只运行一次它就非常准确,比如在加载页面时。
如果你想改变 _speedconstant 来改变速度,只需用公式 (knowncpuspeed*knowntimetocomplete)/knowncycles 计算它。希望你觉得这个有用!