Получить информацию о CPU/GPU/памяти

Мне нужно получить информацию о CPU/GPU/памяти. Количество ядер, значение памяти, память и использование процессора... Я нашел способ сделать это для IE: как использовать JavaScript для поиска информации об оборудовании

решения для других браузеров я не знаю. Есть идеи, как это сделать? возможно, у webgl есть доступ к информации о вашем компьютере? или вспышка? или любой другой технологии?

большое спасибо

Ответ 1

Этот код будет печатать информацию о GPU и перечислит всю информацию, которую вы можете иметь с объектом производительности этого браузера (для спецификации не существует стандарта, поэтому он изменяется для каждого браузера).

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

Ответ 2

В настоящее время Chrome Canary поддерживает возврат количества процессорных ядер, используя:

navigator.hardwareConcurrency

Это работало для меня в Chrome Canary 37.

Ответ 3

Я написал этот быстрый скрипт, чтобы получить скорость процессора:

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. Надеюсь, вы найдете это полезным!


UPDATE 10/19/17: Изменено _speedconstant для нового двигателя Chrom V8 JS и добавлен раздел о том, для чего я его использую.