mirror of
https://github.com/discordeno/discordeno.git
synced 2026-05-29 15:00:07 +00:00
41 lines
1.3 KiB
TypeScript
41 lines
1.3 KiB
TypeScript
// Just a constant sysbench sorce to compare against
|
|
const baselineSysbenchScore = 2000
|
|
let sysbenchScore = 2000
|
|
|
|
try {
|
|
const { stdout } = await Deno.spawn('sysbench', { args: ['cpu', 'run'] })
|
|
const textout = new TextDecoder().decode(stdout)
|
|
sysbenchScore = parseFloat(textout.match(/\s+events per second:\s+(.+)/)![1])
|
|
} catch {
|
|
//
|
|
}
|
|
|
|
const output = await Deno.readTextFile('output.txt')
|
|
const lines = output.split(/\r?\n/g)
|
|
|
|
const ret = []
|
|
|
|
const unitMultiplier = {
|
|
s: 1000 * 1000 * 1000 * (sysbenchScore / baselineSysbenchScore),
|
|
ms: 1000 * 1000 * (sysbenchScore / baselineSysbenchScore),
|
|
µs: 1000 * (sysbenchScore / baselineSysbenchScore),
|
|
ns: 1 * (sysbenchScore / baselineSysbenchScore),
|
|
ps: 0.1 * (sysbenchScore / baselineSysbenchScore),
|
|
}
|
|
|
|
for (const line of lines) {
|
|
const m = line.match(/^(.+)\s+([0-9.]+) (.s)\/iter\s+\((.+) (.s) … (.+) (.s)\)(.+)$/)
|
|
if (m === null) continue
|
|
|
|
ret.push({
|
|
name: m[1].trim(),
|
|
value: Math.round(parseFloat(m[2]) * unitMultiplier[m[3] as keyof typeof unitMultiplier]),
|
|
range: `${Math.round(parseFloat(m[4]) * unitMultiplier[m[5] as keyof typeof unitMultiplier] * 100) / 100} … ${
|
|
Math.round(parseFloat(m[6]) * unitMultiplier[m[7] as keyof typeof unitMultiplier] * 100) / 100
|
|
}`,
|
|
unit: 'ns/iter',
|
|
})
|
|
}
|
|
|
|
await Deno.writeTextFile('output.txt', JSON.stringify(ret, undefined, 2))
|