animate/webGl/my-threejs-test/node_modules/@parcel/workers/lib/cpuCount.js

79 lines
2.0 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = getCores;
exports.detectRealCores = detectRealCores;
function _os() {
const data = _interopRequireDefault(require("os"));
_os = function () {
return data;
};
return data;
}
function _child_process() {
const data = require("child_process");
_child_process = function () {
return data;
};
return data;
}
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
const exec = command => {
try {
let stdout = (0, _child_process().execSync)(command, {
encoding: 'utf8',
// This prevents the command from outputting to the console
stdio: [null, null, null]
});
return stdout.trim();
} catch (e) {
return '';
}
};
function detectRealCores() {
let platform = _os().default.platform();
let amount = 0;
if (platform === 'linux') {
amount = parseInt(exec('lscpu -p | egrep -v "^#" | sort -u -t, -k 2,4 | wc -l'), 10);
} else if (platform === 'darwin') {
amount = parseInt(exec('sysctl -n hw.physicalcpu_max'), 10);
} else if (platform === 'win32') {
const str = exec('wmic cpu get NumberOfCores').match(/\d+/g);
if (str !== null) {
amount = parseInt(str.filter(n => n !== '')[0], 10);
}
}
if (!amount || amount <= 0) {
throw new Error('Could not detect cpu count!');
}
return amount;
}
let cores;
function getCores(bypassCache = false) {
// Do not re-run commands if we already have the count...
if (cores && !bypassCache) {
return cores;
}
// $FlowFixMe
if (process.browser) {
// eslint-disable-next-line no-undef
cores = navigator.hardwareConcurrency / 2;
}
if (!cores) {
try {
cores = detectRealCores();
} catch (e) {
// Guess the amount of real cores
cores = _os().default.cpus().filter((cpu, index) => !cpu.model.includes('Intel') || index % 2 === 1).length;
}
}
// Another fallback
if (!cores) {
cores = 1;
}
return cores;
}