swc-project / swc-node

Faster ts-node without typecheck
MIT License
1.69k stars 69 forks source link

Question: how to make swc-node to use less memory #730

Open erfanium opened 10 months ago

erfanium commented 10 months ago

I use @swc-node to run TypeScript backend in production. because i don't like to add a build step to my workflow, on-the-fly transpilation just makes life easier

everything works fine, but the extra memory usage caused by swc is a downside to me.

to reproduce:

import { memoryUsage } from "node:process";

setInterval(() => {
  console.log(memoryUsage());
}, 2000);

node main.js: rss: 45MB, heapTotal: 6MB, heapUsed: 6MB, external: 421KB, arrayBuffers: 18KB deno main.ts: rss: 52MB, heapTotal: 11MB, heapUsed: 10MB, external: 76KB, arrayBuffers: 0 node -r @swc-node/register main.ts: rss: 102MB, heapTotal: 30MB, heapUsed: 23MB, external: 592KB, arrayBuffers: 57KB

There is a huge gap here. I was able to 60% reduce one of my project rss, just by compiling the source code before runtime.

I wonder is there anyway to consume less memory for production usage? maybe unload/free the swc compiler after a while during runtime.

I can work on a PR, but i have no idea to start

Brooooooklyn commented 10 months ago

Don't use register in production, it's for development usage

erfanium commented 10 months ago

@Brooooooklyn well there is a similar threads in ts-node: https://github.com/TypeStrong/ts-node/issues/104 i can reference. that's an old debate

Many are using ts-node in production, so maybe it's better to create this module not only for development usage

yeliex commented 4 months ago

You can use it in production for free, but it is not recommended. and I guess it would never be officially supported