JavaScript에서 CPU 코어 수를 얻습니까?
JavaScript에서 사용 가능한 CPU 코어 수를 결정하는 방법이 있습니까? 이에 따라 웹 작업자 수를 조정할 수 있습니까?
예, navigator.hardwareConcurrency 입니다. Chrome, Firefox, Edge, Opera 및 Webkit에서 기본적으로 지원됩니다. polyfill이 있는 모든 브라우저에서 지원됩니다 .
아니요, ActiveX를 사용하지 않는 한 없습니다.
https://github.com/oftn/core-estimator 를 사용하여 코어 수를 추정 할 수 있습니다.
데모 : http://eligrey.com/blog/post/cpu-core-estimation-with-javascript
여기 제가 함께 해킹 한 상당히 빠른 동시성 추정기가 있습니다 ... 아직 많은 테스트를 거치지 않았습니다.
다음은 작업자가 실행하는 코드입니다 (jsfiddle 링크가 있으므로 샘플이 필요합니다).
// create worker concurrency estimation code as blob
var blobUrl = URL.createObjectURL(new Blob(['(',
function() {
self.addEventListener('message', function(e) {
// run worker for 4 ms
var st = Date.now();
var et = st + 4;
while(Date.now() < et);
self.postMessage({st: st, et: et});
});
}.toString(),
')()'], {type: 'application/javascript'}));
추정기는 단기간 (4ms) 동안 많은 수의 작업자가 실행되고 실행 된 시간을보고합니다 (불행히도 더 정확한 타이밍을 위해 웹 작업자에서 performance.now ()를 사용할 수 없음). 그런 다음 주 스레드는 동시에 실행중인 작업자의 최대 수를 확인합니다. 이 테스트를 여러 번 반복하여 추정치를 생성 할 적절한 샘플을 얻습니다.
따라서 주된 아이디어는 충분히 작은 작업 청크가 주어지면 해당 동작을 지원할 수있는 충분한 코어가있는 경우에만 작업자가 동시에 실행되도록 예약해야한다는 것입니다. 분명히 추정치 일 뿐이지 만 지금까지 테스트 한 몇 대의 머신에 대해 상당히 정확했습니다. 이는 제 사용 사례에 충분합니다. 보다 정확한 근사치를 얻기 위해 샘플 수를 늘릴 수 있습니다. 저는 10 개를 사용합니다. 빠르기 때문에 계산하는 데 시간을 낭비하는 대신 작업을 완료하는 데 시간을 낭비하고 싶지 않습니다.
작업자에서 데이터 크 런칭을 수행하려는 경우 navigator.hardwareConcurrency
최신 브라우저에서 논리 코어 수를 반환하므로 충분하지 않을 수 있습니다 . WebCPU를 사용하여 물리적 코어 수를 추정 할 수 있습니다 .
import {WebCPU} from 'webcpu';
WebCPU.detectCPU().then(result => {
console.log(`Reported Cores: ${result.reportedCores}`);
console.log(`Estimated Idle Cores: ${result.estimatedIdleCores}`);
console.log(`Estimated Physical Cores: ${result.estimatedPhysicalCores}`);
});
참조 URL : https://stackoverflow.com/questions/3289465/get-number-of-cpu-cores-in-javascript
'developer tip' 카테고리의 다른 글
Linux에서 두 SQLite 데이터베이스를 비교하는 방법 (0) | 2021.01.11 |
---|---|
Ruby 모듈의 상수 범위 (0) | 2021.01.11 |
Sublime Text 3에서 기본 코드 조각을 변경하는 방법은 무엇입니까? (0) | 2021.01.10 |
Rails 개발 로그를 어떻게 볼 수 있습니까? (0) | 2021.01.10 |
뒤에 aspx 코드를 통해 CSS 클래스 추가 (0) | 2021.01.10 |