swc-node icon indicating copy to clipboard operation
swc-node copied to clipboard

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

Open erfanium opened this issue 2 years ago • 3 comments

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

erfanium avatar Sep 06 '23 21:09 erfanium

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

Brooooooklyn avatar Sep 07 '23 05:09 Brooooooklyn

@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

erfanium avatar Sep 07 '23 05:09 erfanium

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

yeliex avatar Mar 04 '24 02:03 yeliex