CPU/GPU /メモリに関する情報を取得する必要があります。コアの数、メモリ値、メモリ、およびCPU使用量... IEでこれを行う方法を見つけました: JavaScriptを使用してハードウェアを見つける方法情報
私が知らない他のブラウザのためのソリューション。それを行う方法はありますか?多分webglはあなたのコンピューターに関する情報にアクセスできますか?またはフラッシュ?または他の技術?
どうもありがとうございました
このコードはGPU情報を出力し、このブラウザーのパフォーマンスオブジェクトで使用できるすべての情報をリストします(BOMには標準がないため、ブラウザーごとに変更されます)。
<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>
出力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
Firfoxでの出力:
now
getEntries
getEntriesByType
getEntriesByName
clearResourceTimings
setResourceTimingBufferSize
mark
clearMarks
measure
clearMeasures
toJSON
timing
navigation
onresourcetimingbufferfull
Mozilla
Mozilla
Safariでの出力:
navigation
timing
now
WebKit WebGL
WebKit
NVIDIA Corporation
NVIDIA GeForce GTX 775M OpenGL Engine
現在Chrome Canaryは次を使用してCPUコアの量を返すことをサポートしています:
navigator.hardwareConcurrency
この worked for for Chrome Canary 37。
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では正確ではないかもしれませんが、クライアント側のみを使用してモバイルデバイスの平均速度を取得するために(使用するコアを推定できるようにするために)最初のソリューションのような他のソリューションが失敗する場合にのみ、私のWebサイトで使用しますJS。最高ではないかもしれませんが、かなりうまくいきます。
_speedconstantを変更して速度を変更したい場合は、式(knowncpuspeed * knowntimetocomplete)/ knowncyclesで計算します。これがあなたの役に立つことを願っています!
更新10/19/17:新しいchrome V8 JSエンジンの_speedconstantを変更し、使用目的に関するセクションを追加しました。