获取CPU / GPU /内存信息(Get CPU/GPU/memory information)

2019-07-21 20:10发布

我需要得到有关CPU / GPU /内存。核心数量,内存值,内存和CPU使用的任何信息。我找到了一种方法来为IE做到这一点: 如何使用JavaScript来查找硬件信息

对于其他浏览器,我不知道解决方案。 任何想法,该怎么办呢? 也许WebGL的访问有关计算机的信息? 或闪光? 或任何其他技术?

非常感谢你

Answer 1:

这段代码打印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


Answer 2:

目前Chrome Canary版支持返回使用的CPU内核的数量:

navigator.hardwareConcurrency

这个工作在Chrome金丝雀37我。



Answer 3:

我写了这个快速脚本来获取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");

请注意,这依赖于浏览器标签,内存使用等,但我发现它相当准确的,如果你只运行一次,说在页面的加载。

这可能是不准确的桌面设备,特别是电脑,我却用它在我的网站只有当像第一个其他解决方案失败,为获得移动设备的平均速度(允许我估计使用的核心)只使用客户端JS。 它可能不是最好的,但它确实相当不错。

如果你想,你可以改变_speedconstant改变速度,正好与方程(knowncpuspeed * knowntimetocomplete)/ knowncycles计算。 希望你觉得这个有用!


更新17年10月19日:改变_speedconstant新的镀铬V8 JS引擎,并加入部分什么,我用它。



文章来源: Get CPU/GPU/memory information