logo

Node.js vs Erlang

  • Node.js:
    • cooperative scheduling algorithm : the program explicitly yields the CPU for the next task
    • same as old operating systems: MacOS 9, Windows 95 running legacy 16-bit code, MS-DOS and so on.
    • advantages: easy to adapt existing languages and systems to the method; highly efficient in throughput; allows you to "pack" lots of work into a single process.
    • weakness: if one of the tasks in the task queue monopolizes the CPU, hangs or blocks, then the impact is worse throughput, higher latency, or a deadlocked server.
  • Erlang runtime:
    • preemptively: An internal funcall counter measures "reductions" and once 2000 of these has been used, the process is forced off the CPU and the next one is switched in.
    • same as modern time-sharing operating systems: UNIX, Windows NT+