2013-03-17 11 views
23

Ich brauche Informationen über die CPU/GPU/Speicher.Die Anzahl der Kerne, Speicherwert, Speicher und CPU-Auslastung ... Ich habe einen Weg gefunden, dies für IE zu tun: How to Use JavaScript to Find Hardware InformationGet CPU/GPU/Speicherinformationen

Lösungen für andere Browser, die ich nicht kenne. Irgendeine Idee, wie es geht? vielleicht hat webgl Zugriff auf Informationen über Ihren Computer? oder blinken? oder eine andere Technologie?

Vielen Dank

+1

In Google Chrome können Sie console.memory verwenden, um herauszufinden, wie viel Speicher im JS-Heap verfügbar ist. –

+0

Ich würde mir ansehen, ob ein Flash-Shim helfen könnte. Ich habe noch keine Cross-Browser-API für Hardware-Informationen gesehen. –

+0

Diese Methoden funktionieren nicht mehr in IE. Browser versuchen, die Verfolgung von Personen zu erschweren. Eine Möglichkeit, Leute zu verfolgen, besteht darin, alle Informationen über ihre Maschine nachzuschlagen. Das und ihre IP-Adresse reichen oft aus, um jemanden oder zumindest eine bestimmte Maschine zu identifizieren. Also, der Browser zeigt keine CPU/GPU/Speicher/# Kerne/etc. (https://panopticlick.eff.org/) – gman

Antwort

11

Derzeit Chrome Canary unterstützt die Menge der CPU-Kerne mit der Rückkehr: GPU-Infos

navigator.hardwareConcurrency 

Diese worked für mich in Chrome Canary 37.

+0

Funktioniert in Chrome 40 stabil. – cprcrack

+0

Ich schrieb über HardwareConcurrency in anderen Browsern hier: http://StackOverflow.com/a/31896597/1026 – Nickolay

+0

Ist das Kerne oder Threads? Weil, als ich das tat, habe ich die Nummer 4 zurück, aber mein Prozessor hat nur zwei Kerne (es hat aber 4 Threads). Ich vermute, das liegt daran, dass ich einen [i7] habe (http://ark.intel.com/products/64893/Intel-Core-i7-3520M-Processor-4M-Cache-up-to-3_60-GHz) ? – Johannes

17

Dieser Code gedruckt wird Sie werden alle Informationen auflisten, die Sie mit dem Leistungsobjekt dieses Browsers haben können (es gibt keinen Standard für die Stückliste, sodass sie für jeden Browser geändert wird).

<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>

Ausgabe in 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 

Ausgabe in Firfox:

now 
getEntries 
getEntriesByType 
getEntriesByName 
clearResourceTimings 
setResourceTimingBufferSize 
mark 
clearMarks 
measure 
clearMeasures 
toJSON 
timing 
navigation 
onresourcetimingbufferfull 



Mozilla 
Mozilla 

Ausgabe in Safari:

+1

Ich schätze wirklich die no-IE-Sache, wie auch immer, warum sollten wir uns über einen Browser mit weniger als 10% weltweitem Marktanteil wundern .... Vote + 1 – Ant

3

Ich schrieb diesen schnellen Skript, um die CPU-Geschwindigkeit zu bekommen:

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"); 

Beachten Sie, dass diese auf Browser-Tabs abhängen, Speichernutzung, etc., aber ich fand es ziemlich genau, wenn Sie es nur einmal ausgeführt, sagen zu das Laden einer Seite.

Dies ist möglicherweise nicht genau für Desktop-Geräte, insbesondere PCs, aber ich verwende es auf meiner Website nur, wenn andere Lösungen wie die erste fehlschlagen, um die durchschnittliche Geschwindigkeit von mobilen Geräten (ermöglicht mir, Kerne geschätzt) zu verwenden nur clientseitige JS. Es ist vielleicht nicht das Beste, aber es ist ziemlich gut.

Wenn Sie möchten, dass Sie die _speedconstant ändern können, um die Geschwindigkeit zu ändern, berechnen Sie es einfach mit der Gleichung (knowncpuspeed * wissnimetocomplete)/knowncycles. Hoffe, du findest das nützlich!


UPDATE 10/19/17: Geänderte _speedconstant für den neuen Chrom V8 JS Motor und hinzugefügt Abschnitt über das, was ich es verwenden.

+0

Nun .. Ich denke, es ist genau, wenn Sie die '_speedconstant 'zwicken für "Ihre" Maschine, weil das Laufen in meiner 4-jährigen Maschine 23.753GHz schätzt. Dies ist auch anfällig für Javascript-Engine-Optimierungen. – olivarra1

+1

@ olivarra1 Ja, es ist nicht die zuverlässigste, aber ich fand, dass es für eine schnelle clientseitige ungefähre Schätzung der CPU-Geschwindigkeit, für mobile Geräte besonders gut ist. Ich habe es in der Vergangenheit verwendet, wenn andere Lösungen wie die erste fehlschlagen oder wenn der Browser nicht identifiziert werden kann. Ich kann deinen Punkt aber sehen, es funktioniert nicht wirklich auf PCs mit JS-Optimierungen oder mehreren Kernen :) –

+0

Ja, das ist definitiv besser als nichts .... Ich werde die Ausgabe dieser Methode als generischen "JS-Geschwindigkeitswert" betrachten "Mehr als die GHz des Prozessors, das ist mehr als genug, um die App auf die Macht der Maschine zu optimieren. – olivarra1