2013-03-17 18 views
23

CPU/GPU /メモリに関する情報を取得する必要があります。コア数、メモリ値、メモリおよびCPU使用量... 私はIEでこれを行う方法を見つけました: How to Use JavaScript to Find Hardware InformationCPU/GPU /メモリ情報を取得する

私が知らない他のブラウザのソリューションどのようにそれを行うにはどのようなアイデア? 多分webglがあなたのコンピュータに関する情報にアクセスしていますか? またはフラッシュ? または他の技術ですか?

ありがとうございました

+1

google chromeでは、console.memoryを使用してJSヒープで使用可能なメモリ量を調べることができます。 –

+0

Flash shimが役立つかもしれないかどうかを見てみましょう。以前はハードウェア情報用のクロスブラウザAPIは見ていませんでした。 –

+0

これらのメソッドはIEでは動作しません。ブラウザは人々を追跡することをより困難にしようとしています。人を追跡する1つの方法は、自分のマシンに関するすべての情報を調べることです。そのIPアドレスは、しばしば誰かを特定するか、特定のマシンを特定するのに十分です。したがって、ブラウザはCPU/GPU /メモリ/#コア/などを表示しません。 (https://panopticlick.eff.org/) – gman

答えて

11

現在、クロムカナリアは、使用してCPUコアの量を返すことができます。

navigator.hardwareConcurrency 

このworkedを私のためにChromeでカナリア37.

+0

Chrome 40で動作します。 – cprcrack

+0

ここに他のブラウザのhardwareConcurrencyについて書きました:http://stackoverflow.com/a/31896597/1026 – Nickolay

+0

このコアまたはスレッドですか?私がこれをしたとき、私は4番のバックを持っていたので、私のプロセッサは2つのコアしか持っていませんでした(しかし、4つのスレッドがあります)。私はこれが私が[i7](http://ark.intel.com/products/64893/Intel-Core-i7-3520M-Processor-4M-Cache-up-to-3_60-GHz) ? – Johannes

17

このコードは、GPUに関する情報を表示しますこのブラウザのパフォーマンスオブジェクトに含めることができるすべての情報が一覧表示されます(BOMの標準がないため、ブラウザごとに変更されます)。 Chromeで

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

出力:Firfoxで

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 

出力:Safariで

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



Mozilla 
Mozilla 

出力:

navigation 
timing 
now 



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

とにかく、私はノーIEのことに本当に感謝します。どうして10%未満の世界シェアを持つブラウザについて、なぜ私たちは疑問に思っていますか?投票+ 1 – Ant

3

私は、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では正確ではないかもしれませんが、私は最初の1つのような他の解決策が失敗した場合にのみ使用します(モバイルデバイスの平均速度を取得するクライアントサイドのJSだけです。それは最高ではないかもしれませんが、それはかなりうまくいきます。

速度を変更するように_speedconstantを変更したい場合は、(knowncpuspeed * knowntimetocomplete)/ knowncyclesの式で計算してください。これが便利だと思っていますか?


UPDATE 10/19/17:新しいクロームV8 JSエンジンの変更_speedconstantと私はそれを使用するかについてのセクションを追加しました。

+0

まあ、あなたは '_speedconstant'私の4歳のマシンでこれを実行すると、23.753GHzと見積もられます。これはjavascriptエンジンの最適化にも影響を受けます。 – olivarra1

+1

@ olivarra1しかし、それは最も信頼性の高いものではありませんが、特にモバイルデバイスのCPUスピードのクライエント側の近似推定には良いことが分かりました。私は、過去のような他のソリューションが失敗したとき、またはブラウザが特定できないときにこれを使ってきました。私はあなたのポイントを見ることができますが、それは実際にはJSの最適化や複数のコアでPCで動作しません:) –

+0

はい、それは間違いなく何よりも優れています....私はこのメソッドの出力を一般的な "JS速度値"プロセッサのGHz以上で、これはマシンのパワーに合わせてアプリを最適化するのに十分なものです。 – olivarra1

関連する問題