Có cách nào để xác định số lõi CPU có sẵn trong JavaScript, để bạn có thể điều chỉnh số lượng nhân viên web tùy thuộc vào điều đó không?Lấy số lõi CPU trong JavaScript?
Trả lời
Có, navigator.hardwareConcurrency. Được hỗ trợ nguyên bản trong Chrome, Firefox, Edge, Opera và Webkit; được hỗ trợ trong tất cả các trình duyệt với a polyfill.
Nó không xác định khi tôi chạy này trong Chrome 35. – jmort253
Nó có sẵn trong xây dựng Chrome Canary hiện tại theo http://src.chromium.org/ viewvc/blink? view = revision & revision = 175629 Đã xác nhận đã làm việc trong Chrome Canary 37. –
Đây có phải là một phần tiêu chuẩn của một số loại (như được hỗ trợ hoặc có nghĩa là được hỗ trợ trong các trình duyệt khác) không? – jayarjo
Không, không có, trừ khi bạn sử dụng một số ActiveX.
Ngắn gọn và cho điểm. 1;) – falstro
Ok, đó là những gì tôi mong đợi. Vẫn cảm ơn! – tsauerwein
Mặc dù có các cuộc thảo luận trong danh sách gửi thư WHATWG về việc cung cấp thuộc tính tương tự trong phiên bản 2 của thông số: http://lists.whatwg.org/pipermail/whatwg-whatwg.org/2009-November/024058.html http: //lists.whatwg.org/htdig.cgi/whatwg-whatwg.org/2009-November/023993.html – tsauerwein
Không. JavaScript rất xa các chi tiết phần cứng như vậy và không có cơ chế hợp pháp để truy vấn chúng.
Bạn có thể thử để ước tính số lượng lõi với: https://github.com/oftn/core-estimator
demo: http://eligrey.com/blog/post/cpu-core-estimation-with-javascript
Dưới đây là một ước lượng đồng thời khá nhanh tôi bị hack với nhau ... nó đã không trải qua nhiều thử nghiệm được nêu ra:
Dưới đây là mã người lao động chạy (kể từ khi tôi có một liên kết jsfiddle một mẫu là cần thiết):
// 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'}));
ước tính có một số lượng lớn các công nhân chạy trong một khoảng thời gian ngắn (4ms) và báo cáo lại những thời điểm họ chạy (không may, performance.now() là không có sẵn trong Web Workers để biết thêm thời gian chính xác). Các chủ đề chính sau đó kiểm tra để xem số lượng tối đa của công nhân đang chạy trong cùng một thời gian. Thử nghiệm này được lặp đi lặp lại nhiều lần để có được một mẫu phong nha để tạo ra một ước tính. Vì vậy, ý tưởng chính là, với một đoạn công việc đủ nhỏ, công nhân chỉ nên được lên kế hoạch để chạy cùng một lúc nếu có đủ lõi để hỗ trợ hành vi đó. Nó rõ ràng chỉ là một ước tính, nhưng cho đến nay nó đã được hợp lý chính xác cho một vài máy tôi đã thử nghiệm - đó là đủ tốt cho trường hợp sử dụng của tôi. Số lượng mẫu có thể được tăng lên để có được một xấp xỉ chính xác hơn; Tôi chỉ sử dụng 10 vì nó nhanh chóng và tôi không muốn lãng phí thời gian ước tính so với chỉ nhận được công việc làm.
+1 cho rằng fiddle – random6174
nên đượC# 2 câu trả lời, tốc độ tốt và độ chính xác – ViliusL
@meo: "Máy tính này có huh? Lõi CPU". Người dùng trung bình biết thậm chí ít hơn về lõi hơn JS;) – Piskvor
hahaha điểm tốt – meo
Tại sao mọi người viết một trang web giả định họ có thể kiểm soát toàn bộ tài nguyên của máy tính của tôi? Tôi muốn hoàn thành những thứ khác trong khi tôi đọc một mẩu thông tin tôi cần từ trang web của bạn. –