mirror of
https://github.com/discordeno/discordeno.git
synced 2026-06-02 00:40:07 +00:00
bench: add cpu correction (#2572)
* feat: add cpu correction * feat: add more bench * fix: cpu correction * chore: add comment * fix: add unstable to tranform * fix: comment message * deno fmt
This commit is contained in:
4
.github/workflows/benchmark.yml
vendored
4
.github/workflows/benchmark.yml
vendored
@@ -17,10 +17,12 @@ jobs:
|
||||
# this is the performance benchmark
|
||||
- name: Cache deps
|
||||
run: deno cache performance/mod.ts
|
||||
- name: Download sysbench
|
||||
run: sudo apt-get install -y sysbench
|
||||
- name: Run Benchmark
|
||||
run: NO_COLOR=true deno bench --unstable -A performance/mod.ts | tee output.txt
|
||||
- name: Format Benchmark Output
|
||||
run: deno run -A performance/tranformOutput.ts
|
||||
run: deno run --unstable -A performance/tranformOutput.ts
|
||||
|
||||
# this is the memory benchmark
|
||||
- name: Download db from benchmark repo
|
||||
|
||||
@@ -70,7 +70,7 @@ for (const benchmark of latestHeadBenchmarks.benches) {
|
||||
compareWithHead[benchmark.name] = {
|
||||
//@ts-ignore
|
||||
previous: {},
|
||||
...compareWithBase[benchmark.name],
|
||||
...compareWithHead[benchmark.name],
|
||||
current: benchmark,
|
||||
};
|
||||
}
|
||||
|
||||
@@ -14,6 +14,16 @@ const discordGuild = JSON.parse(
|
||||
const currentGuild = bot.transformers.guild(bot, { guild: discordGuild, shardId: 0 });
|
||||
const previousGuild = oldBot.transformers.guild(oldBot, { guild: discordGuild, shardId: 0 });
|
||||
|
||||
Deno.bench("[Transformer] Discord Guild to a Guild", () => {
|
||||
bot.transformers.guild(bot, { guild: discordGuild, shardId: 0 });
|
||||
});
|
||||
|
||||
Deno.bench("[Transformer - Previous] Discord Guild to a Guild", {
|
||||
ignore: Deno.env.get("CI") === "true",
|
||||
}, () => {
|
||||
oldBot.transformers.guild(oldBot, { guild: discordGuild, shardId: 0 });
|
||||
});
|
||||
|
||||
Deno.bench("[Guild.toggles.features] Get the features of a guild", () => {
|
||||
currentGuild.toggles.features;
|
||||
});
|
||||
@@ -68,7 +78,8 @@ for (
|
||||
`https://raw.githubusercontent.com/discordeno/discordeno/benchies/cache/cachedObject/${channelType}.json`,
|
||||
)).text(),
|
||||
);
|
||||
const formattedChannelType = channelType.split("-").map((word) => word[0].toUpperCase() + word.slice(1)).join(" ");
|
||||
let formattedChannelType = channelType.split("-").map((word) => word[0].toUpperCase() + word.slice(1)).join(" ");
|
||||
if (formattedChannelType === "Rules") formattedChannelType = "Rules Channel";
|
||||
|
||||
Deno.bench(`[Transformer] Discord ${formattedChannelType} to a ${formattedChannelType}`, () => {
|
||||
bot.transformers.channel(bot, { channel: discordChannel });
|
||||
@@ -95,3 +106,96 @@ for (
|
||||
});
|
||||
*/
|
||||
}
|
||||
|
||||
// Fetch the cached member
|
||||
const discordMember = JSON.parse(
|
||||
await (await fetch("https://raw.githubusercontent.com/discordeno/discordeno/benchies/cache/cachedObject/member.json"))
|
||||
.text(),
|
||||
);
|
||||
|
||||
const newMember = bot.transformers.member(bot, discordMember, 0n, 0n);
|
||||
const oldMember = oldBot.transformers.member(oldBot, discordMember, 0n, 0n);
|
||||
|
||||
Deno.bench("[Transformer] Discord Member to a Member", () => {
|
||||
bot.transformers.member(bot, discordMember, 0n, 0n);
|
||||
});
|
||||
|
||||
Deno.bench("[Transformer - Previous] Discord Member to a Member", {
|
||||
ignore: Deno.env.get("CI") === "true",
|
||||
}, () => {
|
||||
oldBot.transformers.member(oldBot, discordMember, 0n, 0n);
|
||||
});
|
||||
|
||||
Deno.bench("[Transformer] Member to a Discord Member", () => {
|
||||
bot.transformers.reverse.member(bot, newMember);
|
||||
});
|
||||
|
||||
Deno.bench("[Transformer - Previous] Member to a Discord Member", {
|
||||
ignore: Deno.env.get("CI") === "true",
|
||||
}, () => {
|
||||
oldBot.transformers.reverse.member(oldBot, oldMember);
|
||||
});
|
||||
|
||||
// Fetch the cached role
|
||||
const discordRole = JSON.parse(
|
||||
await (await fetch("https://raw.githubusercontent.com/discordeno/discordeno/benchies/cache/cachedObject/role.json"))
|
||||
.text(),
|
||||
);
|
||||
|
||||
const newRole = bot.transformers.role(bot, { role: discordRole, guildId: 0n });
|
||||
const oldRole = oldBot.transformers.role(oldBot, { role: discordRole, guildId: 0n });
|
||||
|
||||
Deno.bench("[Transformer] Discord Role to a Role", () => {
|
||||
bot.transformers.role(bot, { role: discordRole, guildId: 0n });
|
||||
});
|
||||
|
||||
Deno.bench("[Transformer - Previous] Discord Role to a Role", {
|
||||
ignore: Deno.env.get("CI") === "true",
|
||||
}, () => {
|
||||
oldBot.transformers.role(oldBot, { role: discordRole, guildId: 0n });
|
||||
});
|
||||
|
||||
/* Not implemented
|
||||
Deno.bench("[Transformer] Role to a Discord Role", () => {
|
||||
bot.transformers.reverse.role(bot, newRole);
|
||||
});
|
||||
|
||||
Deno.bench("[Transformer - Previous] Role to a Discord Role", {
|
||||
ignore: Deno.env.get("CI") === "true",
|
||||
}, () => {
|
||||
oldBot.transformers.reverse.role(oldBot, oldRole);
|
||||
});
|
||||
*/
|
||||
|
||||
// Fetch the cached message
|
||||
const discordMessage = JSON.parse(
|
||||
await (await fetch(
|
||||
"https://raw.githubusercontent.com/discordeno/discordeno/benchies/cache/cachedObject/message.json",
|
||||
))
|
||||
.text(),
|
||||
);
|
||||
|
||||
const newMessage = bot.transformers.message(bot, discordMessage);
|
||||
const oldMessage = oldBot.transformers.message(oldBot, discordMessage);
|
||||
|
||||
Deno.bench("[Transformer] Discord Message to a Message", () => {
|
||||
bot.transformers.message(bot, discordMessage);
|
||||
});
|
||||
|
||||
Deno.bench("[Transformer - Previous] Discord Message to a Message", {
|
||||
ignore: Deno.env.get("CI") === "true",
|
||||
}, () => {
|
||||
oldBot.transformers.message(oldBot, discordMessage);
|
||||
});
|
||||
|
||||
/* Not implemented
|
||||
Deno.bench("[Transformer] User to a Discord User", () => {
|
||||
bot.transformers.reverse.message(bot, newUser);
|
||||
});
|
||||
|
||||
Deno.bench("[Transformer - Previous] User to a Discord User", {
|
||||
ignore: Deno.env.get("CI") === "true",
|
||||
}, () => {
|
||||
oldBot.transformers.reverse.message(oldBot, oldUser);
|
||||
});
|
||||
*/
|
||||
|
||||
@@ -1,13 +1,26 @@
|
||||
// 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,
|
||||
"ms": 1000 * 1000,
|
||||
"µs": 1000,
|
||||
"ns": 1,
|
||||
"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) {
|
||||
|
||||
Reference in New Issue
Block a user