Forked from brandon93s/Node.js physical cpu count
Last active
August 21, 2023 13:52
-
-
Save jakoboo/82be8c031bc09cf2e75dac9253645f2a to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Source of https://www.npmjs.com/package/physical-cpu-count | |
'use strict' | |
const os = require('os') | |
const childProcess = require('child_process') | |
function exec (command) { | |
const output = childProcess.execSync(command, {encoding: 'utf8'}) | |
return output | |
} | |
let amount | |
const platform = os.platform() | |
if (platform === 'linux') { | |
const output = exec('lscpu -p | egrep -v "^#" | sort -u -t, -k 2,4 | wc -l') | |
amount = parseInt(output.trim(), 10) | |
} else if (platform === 'darwin') { | |
const output = exec('sysctl -n hw.physicalcpu_max') | |
amount = parseInt(output.trim(), 10) | |
} else if (platform === 'win32') { | |
const output = exec('WMIC CPU Get NumberOfCores') | |
amount = output.split(os.EOL) | |
.map(function parse (line) { return parseInt(line) }) | |
.filter(function numbers (value) { return !isNaN(value) }) | |
.reduce(function add (sum, number) { return sum + number }, 0) | |
} else { | |
const cores = os.cpus().filter(function (cpu, index) { | |
const hasHyperthreading = cpu.model.includes('Intel') | |
const isOdd = index % 2 === 1 | |
return !hasHyperthreading || isOdd | |
}) | |
amount = cores.length | |
} | |
module.exports = amount |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment