Javascript 获取CPU/GPU/内存信息

Javascript 获取CPU/GPU/内存信息,javascript,memory,webgl,cpu,gpu,Javascript,Memory,Webgl,Cpu,Gpu,我需要获得有关CPU/GPU/内存的任何信息。核心数、内存值、内存和CPU使用率。。。 我为IE找到了一种方法: 其他浏览器的解决方案我不知道。知道怎么做吗? 也许webgl可以访问有关您计算机的信息? 还是闪光? 或者其他技术 非常感谢目前Chrome Canary支持通过以下方式返回CPU内核数量: navigator.hardwareConcurrency 这是Chrome Canary 37中为我准备的。此代码将打印GPU信息,并将列出此浏览器性能对象的所有信息(BOM没有标准,因此每

我需要获得有关CPU/GPU/内存的任何信息。核心数、内存值、内存和CPU使用率。。。 我为IE找到了一种方法:

其他浏览器的解决方案我不知道。知道怎么做吗? 也许webgl可以访问有关您计算机的信息? 还是闪光? 或者其他技术


非常感谢

目前Chrome Canary支持通过以下方式返回CPU内核数量:

navigator.hardwareConcurrency

这是Chrome Canary 37中为我准备的。

此代码将打印GPU信息,并将列出此浏览器性能对象的所有信息(BOM没有标准,因此每个浏览器的BOM都会更改)


var performance=window.performance | | window.mozPerformance | | window.msPerformance | | | |{};
文件。写(“
”); for(性能中的var值){ 文件。写入(值+“
”); } 文件。写(“


”); var帆布; canvas=document.getElementById(“glcanvas”); var gl=canvas.getContext(“实验性webgl”); document.write(gl.getParameter(gl.RENDERER)+“
”; document.write(总账获取参数(总账供应商)+“
”; document.write(getUnmaskedInfo(gl.vendor+“
”); document.write(getUnmaskedInfo(gl.renderer+“
”); 函数getUnmaskedInfo(gl){ var unMaskedInfo={ 渲染器:“”, 供应商:“” }; var dbgRenderInfo=gl.getExtension(“WEBGL_调试_渲染器_信息”); 如果(dbgRenderInfo!=null){ unMaskedInfo.renderer=gl.getParameter(dbgRenderInfo.UNMASKED_renderer_WEBGL); unMaskedInfo.vendor=gl.getParameter(dbgRenderInfo.UNMASKED_vendor_WEBGL); } 返回未屏蔽信息; }
我编写了这个快速脚本以获得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就可以获得移动设备的平均速度(允许我估计使用的核心数)。它可能不是最好的,但它做得很好

如果你想改变_speed常量来改变速度,只需用公式(knowncpuspeed*knowntimetocomplete)/knowncycles计算即可。希望你觉得这个有用



17年10月19日更新:为新的chrome V8 JS引擎更改了speedconstant,并添加了关于我使用它的部分。

在google chrome中,你可以使用console.memory来查找JS堆中可用的内存量。我想看看Flash shim是否有帮助。我以前从未见过任何用于硬件信息的跨浏览器API。这些方法在IE中不再有效。浏览器正试图使跟踪人员变得更加困难。跟踪人们的一种方法是查找有关他们机器的所有信息。加上他们的ip地址,通常足以识别某人或至少是特定的机器。所以,浏览器不显示CPU/GPU/Memory/#cores/etc.()在Chrome 40 stable中工作。我在这里写过其他浏览器中的硬件货币:这是内核还是线程?因为当我这样做时,我得到了数字4,但我的处理器只有两个核心(虽然它有4个线程)。我猜这是因为我有一个?根据它返回用户代理可用的逻辑处理器的数量,每个源的线程限制是可选的。@Johannes有支持超线程的处理器。系统将双核处理器视为四核处理器。不仅是浏览器,还有操作系统本身。我真的很欣赏没有IE的东西,不管怎样,我们为什么要怀疑一款全球市场份额不到10%的浏览器。。。。投票+1好。。我想如果你调整“你的”机器的
\u speedconstant
,这是准确的,因为在我4岁的机器上运行这个估计值为23.753GHz。这也容易受到javascript引擎优化的影响。@olivarra1是的,它不是最可靠的,但我发现它有助于快速估算客户端的CPU速度,尤其是移动设备。我曾经在其他解决方案(如第一个)出现故障或无法识别浏览器时使用过它。不过我明白你的观点,它在使用JS优化或多核的PC上并不真正起作用:)是的,这肯定比什么都没有好。。。。我将把这个方法的输出看作一个通用的“JS速度值”,它比处理器的GHz更大,这足以使应用程序优化到机器的功率。@ OLVRARA1好主意:在3.1GHz的英特尔核心I7 iMac(2013年底)模型上试用这个脚本,它报告7.7GHz…似乎很不准确。