2013-03-17 10 views
23

Ho bisogno di ottenere qualsiasi informazione sulla CPU/GPU/memoria.Il numero di core, valore di memoria, memoria e utilizzo della CPU ... Ho trovato un modo per farlo per IE: How to Use JavaScript to Find Hardware InformationOttieni informazioni CPU/GPU/memoria

soluzioni per altri browser che non conosco. Qualche idea su come farlo? forse webgl ha accesso alle informazioni sul tuo computer? o flash? o qualsiasi altra tecnologia?

La ringrazio molto

+1

In google chrome è possibile utilizzare console.memory per scoprire la quantità di memoria disponibile nell'heap JS. –

+0

Vorrei sapere se uno shim Flash potrebbe essere d'aiuto. Non ho mai visto alcuna API cross-browser per informazioni sull'hardware. –

+0

Questi metodi non funzionano più in IE. I browser stanno cercando di rendere più difficile rintracciare le persone. Un modo per tenere traccia delle persone è cercare tutte le informazioni sulla loro macchina. Quello più il loro indirizzo ip è spesso sufficiente per identificare qualcuno o almeno una macchina specifica. Quindi, il browser non mostra CPU/GPU/memoria/# core/ecc. (https://panopticlick.eff.org/) – gman

risposta

11

Attualmente Chrome Canary supporta il ritorno della quantità di core della CPU utilizzando:

navigator.hardwareConcurrency 

Questo worked per me in Chrome Canary 37.

+0

Funziona in Chrome 40 stabile. – cprcrack

+0

Ho scritto su hardwareConcurrency in altri browser qui: http://stackoverflow.com/a/31896597/1026 – Nickolay

+0

Sono questi core o thread? Perché quando l'ho fatto ho ottenuto il numero 4, ma il mio processore ha solo due core (ha comunque 4 thread). Immagino che sia perché ho un [i7] (http://ark.intel.com/products/64893/Intel-Core-i7-3520M-Processor-4M-Cache-up-to-3_60-GHz) ? – Johannes

17

Questo codice stamperà informazioni GPU un elencherà tutte le informazioni che puoi avere con l'oggetto prestazioni di questo browser (non esiste uno standard per la distinta base, quindi cambia per ogni browser).

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

uscita 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 

uscita in Firfox:

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



Mozilla 
Mozilla 

uscita in Safari:

navigation 
timing 
now 



WebKit WebGL 
WebKit 
NVIDIA Corporation 
NVIDIA GeForce GTX 775M OpenGL Engine 
+1

Apprezzo davvero la cosa del non-IE, comunque, perché dovremmo chiederci di un browser con meno del 10% di quota di mercato in tutto il mondo .... Votazione + 1 – Ant

3

Ho scritto questo script veloce per ottenere la velocità della 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"); 

Si noti che questo dipende schede del browser, l'utilizzo della memoria, ecc ma ho trovato abbastanza preciso se solo si esegue una volta, dire in il caricamento di una pagina.

Questo potrebbe non essere accurato per i dispositivi desktop, in particolare i PC, ma lo uso nel mio sito solo quando altre soluzioni come la prima falliscono, per ottenere la velocità media dei dispositivi mobili (mi permette di stimare i core utilizzati) usando solo JS lato client. Potrebbe non essere il migliore, ma funziona piuttosto bene.

Se si desidera modificare il valore di _stecostanza per modificare la velocità, è sufficiente calcolarla con l'equazione (knowncpuspeed * knowntimetocomplete)/knowncycles. Spero che tu trovi questo utile!


UPDATE 10/19/17: Cambiato _speedconstant per il nuovo motore V8 Chrome JS e sezione aggiunta a quello che lo uso per.

+0

Bene .. Immagino sia accurato se modifichi il '_speedconstant' per la "tua" macchina, perché l'esecuzione di questo nella mia macchina di 4 anni stima 23.753 GHz. Questo è anche suscettibile di ottimizzazioni del motore javascript. – olivarra1

+1

@ olivarra1 Sì, non è il più affidabile, ma ho trovato che è buono per una stima approssimativa della velocità della CPU sul lato client, soprattutto per i dispositivi mobili. L'ho usato in passato quando altre soluzioni come la prima falliscono o quando il browser non può essere identificato. Posso vedere il tuo punto, però, non funziona su PC con ottimizzazioni JS o più core :) –

+0

Sì, è decisamente meglio di niente .... Prenderò in considerazione l'output di questo metodo come un generico "valore di velocità JS" "più del GHz del processore, che è più che sufficiente per ottimizzare l'app alla potenza della macchina. – olivarra1