我需要获取有关 CPU/GPU/内存的任何信息。核心数、内存值、内存和 cpu 使用情况......我找到了一种为 IE 执行此操作的方法:如何使用 JavaScript 查找硬件信息
我不知道其他浏览器的解决方案。知道怎么做吗?也许 webgl 可以访问有关您计算机的信息?或闪光?或任何其他技术?
非常感谢
我需要获取有关 CPU/GPU/内存的任何信息。核心数、内存值、内存和 cpu 使用情况......我找到了一种为 IE 执行此操作的方法:如何使用 JavaScript 查找硬件信息
我不知道其他浏览器的解决方案。知道怎么做吗?也许 webgl 可以访问有关您计算机的信息?或闪光?或任何其他技术?
非常感谢
此代码将打印 GPU 信息,并将列出您可以使用此浏览器的性能对象获得的所有信息(BOM 没有标准,因此每个浏览器都会更改)。
<html>
<body>
<canvas id="glcanvas" width="0" height="0"></canvas>
<script>
var performance = window.performance || window.mozPerformance || window.msPerformance || window.webkitPerformance || {};
document.write("<br>");
for (var value in performance) {
document.write(value + "<br>");
}
document.write("<br><br><br>");
var canvas;
canvas = document.getElementById("glcanvas");
var gl = canvas.getContext("experimental-webgl");
document.write(gl.getParameter(gl.RENDERER) + "<br>");
document.write(gl.getParameter(gl.VENDOR) + "<br>");
document.write(getUnmaskedInfo(gl).vendor + "<br>");
document.write(getUnmaskedInfo(gl).renderer + "<br>");
function getUnmaskedInfo(gl) {
var unMaskedInfo = {
renderer: '',
vendor: ''
};
var dbgRenderInfo = gl.getExtension("WEBGL_debug_renderer_info");
if (dbgRenderInfo != null) {
unMaskedInfo.renderer = gl.getParameter(dbgRenderInfo.UNMASKED_RENDERER_WEBGL);
unMaskedInfo.vendor = gl.getParameter(dbgRenderInfo.UNMASKED_VENDOR_WEBGL);
}
return unMaskedInfo;
}
</script>
</body>
在 Chrome 中输出:
onresourcetimingbufferfull
onwebkitresourcetimingbufferfull
timing
navigation
memory
now
getEntries
getEntriesByType
getEntriesByName
clearResourceTimings
setResourceTimingBufferSize
webkitClearResourceTimings
webkitSetResourceTimingBufferSize
mark
clearMarks
measure
clearMeasures
addEventListener
removeEventListener
dispatchEvent
WebKit WebGL
WebKit
NVIDIA Corporation
NVIDIA GeForce GTX 775M OpenGL Engine
Firfox 中的输出:
now
getEntries
getEntriesByType
getEntriesByName
clearResourceTimings
setResourceTimingBufferSize
mark
clearMarks
measure
clearMeasures
toJSON
timing
navigation
onresourcetimingbufferfull
Mozilla
Mozilla
Safari 中的输出:
navigation
timing
now
WebKit WebGL
WebKit
NVIDIA Corporation
NVIDIA GeForce GTX 775M OpenGL Engine
我写了这个快速脚本来获得 CPU 速度:
var _speedconstant = 8.9997e-9; //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");
请注意,这取决于浏览器选项卡、内存使用等,但我发现如果你只运行一次它就非常准确,比如在加载页面时。
对于桌面设备,尤其是 PC,这可能不准确,但我仅在第一个解决方案等其他解决方案失败时在我的网站中使用它,以便仅使用客户端获得移动设备的平均速度(允许我估计使用的核心) JS。它可能不是最好的,但它做得很好。
如果你想改变 _speedconstant 来改变速度,只需用公式 (knowncpuspeed*knowntimetocomplete)/knowncycles 计算它。希望你觉得这个有用!
2017 年 10 月 19 日更新:为新的 chrome V8 JS 引擎更改了 _speedconstant,并添加了关于我使用它的部分。