From 14e147924d74e7b7f924f853849f36bc6b628015 Mon Sep 17 00:00:00 2001 From: sent Date: Mon, 19 May 2025 19:16:48 -0700 Subject: [PATCH] Performance 2 --- others/surge.mjs | 57 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 others/surge.mjs diff --git a/others/surge.mjs b/others/surge.mjs new file mode 100644 index 00000000..4a37b334 --- /dev/null +++ b/others/surge.mjs @@ -0,0 +1,57 @@ +import { execSync } from "child_process"; +import os from "os"; +import fs from "fs"; +import path from "path"; + +const log = (msg) => console.log(`[SURGE] ${msg}`); +const surgePath = path.resolve("surge.config.json"); + +function generateSurgeFlags() { + const cpus = os.cpus().length; + const flags = [ + "--max-old-space-size=4096", + "--optimize_for_size", + "--gc-global", + "--max-semi-space-size=256", + "--no-warnings", + "--expose-gc" + ]; + + if (process.platform !== "win32") { + flags.push("--use-largepages"); + } + + return { + uvThreadpoolSize: cpus * 2, + nodeFlags: flags + }; +} + +function writeSurgeFile(flags) { + fs.writeFileSync(surgePath, JSON.stringify(flags, null, 2)); + log("Surge config saved."); +} + +function launchSurgedBackend(flags) { + const args = [ + ...flags.nodeFlags, + "index.mjs", + "--surged" + ]; + log(`Launching backend: node ${args.join(" ")}`); + execSync(`node ${args.join(" ")}`, { stdio: "inherit" }); +} + +function isSurgedRun() { + return process.argv.includes("--surged"); +} + +(async () => { + if (isSurgedRun()) return; + + log("Detecting best settings..."); + const flags = generateSurgeFlags(); + writeSurgeFile(flags); + launchSurgedBackend(flags); + process.exit(0); +})(); \ No newline at end of file