javascript - para - renderizar con gpu vray
Obtener informaciĆ³n de CPU/GPU/memoria (3)
Necesito obtener información sobre la CPU / GPU / memoria. La cantidad de núcleos, el valor de la memoria, la memoria y el uso de la CPU ... Encontré una forma de hacerlo para IE: Cómo usar JavaScript para encontrar información del hardware
soluciones para otros navegadores, no lo sé. ¿Alguna idea de cómo hacerlo? tal vez webgl tiene acceso a la información sobre su computadora? o flash? o cualquier otra tecnología?
Muchas gracias
Actualmente, Chrome Canary admite la devolución de la cantidad de núcleos de CPU utilizando:
navigator.hardwareConcurrency
Esto worked para mí en Chrome Canary 37.
Escribí este guión rápido para obtener la velocidad de la 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");
Tenga en cuenta que esto depende de las pestañas del navegador, del uso de la memoria, etc., pero me pareció bastante preciso si solo lo ejecuta una vez, por ejemplo, al cargar una página.
Esto puede no ser exacto para dispositivos de escritorio, especialmente PC, pero lo uso en mi sitio web solo cuando otras soluciones como la primera falla, para obtener la velocidad promedio de los dispositivos móviles (me permite estimar los núcleos utilizados) usando solo el lado del cliente JS. Puede que no sea el mejor, pero lo hace bastante bien.
Si desea cambiar el valor _speedconstant para cambiar la velocidad, simplemente calcúlelo con la ecuación (knowncpuspeed * knowntimetocomplete) / knowncycles. ¡Espero que encuentres esto útil!
ACTUALIZACIÓN 19/10/17: Cambié _speedconstant para el nuevo motor chrome V8 JS y agregué una sección sobre para qué lo uso.
Este código imprimirá las informaciones de la GPU y mostrará toda la información que pueda tener con el objeto de rendimiento de este navegador (no hay un estándar para la lista de materiales, por lo que cambia para cada navegador).
<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>
Salida en 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
Salida en Firfox:
now
getEntries
getEntriesByType
getEntriesByName
clearResourceTimings
setResourceTimingBufferSize
mark
clearMarks
measure
clearMeasures
toJSON
timing
navigation
onresourcetimingbufferfull
Mozilla
Mozilla
Salida en Safari:
navigation
timing
now
WebKit WebGL
WebKit
NVIDIA Corporation
NVIDIA GeForce GTX 775M OpenGL Engine