tobleron
If any of you knows a resource (website, docs, articles) where I can access to see a comparison of how both of these ecosystems works, it would be great.
Delving into NodeJS a bit, I feel like there is a lot of similarities:
- npm ↔ hex
- Chrome V8 (Javascript → C++ → machine code) ↔ Erlang Runtime (Elixir → Erlang → machine code)
- As far as my research can tell both ecosystems can run asynchronous code but would love to read more resources about this topic if exists.
- NodeJS speed depends on asynchronous processing whereas Erlang depends on ultra lightweight synchronous processing (optionally asynchronous).
One thing I am trying to get my head around is a missing layer. NodeJS is not a framework, but isn’t it doing a lot of the work that a phoenix web server is doing, or is it more fair to compare Elixir with NodeJS and Phoenix with ExpressJS?
The purpose of the comparison is not to see what is superior as obviously the use cases may be different, but it’s more like to understand where they are similar and where they are different. I am just brainstorming with you!
Trending in Questions
I having some trouble figuring out if I have set myself too strict of standards for my production server. Currently I can handle 75% of r...
New
Documentation
While reading the Scoped Routes section, I noticed that the documentation currently refers to a problem without explainin...
New
Hello,
I’m trying to build a basic Phoenix web-app, and I’d like to use Tailwind.
However, when I launch mix phx.server, I get an error...
New
Hi everyone,
I am toying with the idea of building a “match maker” for giving personal help to people that wants to start coding.
I sta...
New
I recently noticed that Elixir’s Logger defaults its primary log level to :debug when no :logger, :level application configuration is pre...
New
I’m working on a small exercise involving update_in/3, and I came up with this solution:
data = %{
name: "Periodic Table",
category:...
New
I’ve got trouble wrapping my head around the order in which functions are called in this snippet (from Phoenix’s authentication):
toke...
New
Other Trending Topics
Edit: 2026 May 15 - This post is archived.
Mob is alive!!
Main docs: mob v0.7.11 — Documentation
A bit of explanation for the slightly c...
New
Hey, I’m Jesse and I’m the main contributor behind Dexter, a full-featured, lightning-fast Elixir LSP optimized for large codebases. It s...
New
I am happy to introduce the very α version of the new programming language compiled to BEAM.
Welcome Cure.
It has literally three kille...
New
Hobbes is a low-level distributed database for the Elixir programming language.
Hobbes provides a simple, safe, and scalable storage lay...
New
Hi everyone!
The first release candidate for the Expert language server project is now available!
We’ve published a press release detai...
New
A little off-topic, but I feel like people here have a good head on their shoulders.
I used to be quite good at making software. Was luc...
New
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #library
- #deployment
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #elixirconf
- #channels
- #exunit
- #discussion
- #code-sync
- #podcasts
- #javascript
- #onsite
- #dialyzer
- #docker
- #authentication
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ai
- #ecto-query
- #elixirconf-us
- #blog-post
- #elixir-ls
- #phoenix_html
- #iex
- #graphql
- #genstage
- #websockets
- #supervisor
- #advent-of-code
- #distillery
- #processes
- #elixirconf-eu
- #api
- #forms
- #metaprogramming
- #hex










Showing Posts 1 to 3- Show Best Posts
- Show All (oldest first)
- Show All (newest first)
mythicalprogrammer
Chrome V8 doesn’t goes from javascript to C++ to machine code. It compiles directly to machine code according to the wikipedia.
NodeJS runs on one giant event loop last time I check. I believe there is a threading library API over yonder. So the programmers themselves are doing to “thread logic” when they do async stuff and catching all those error and weird logic cases.
Erlang you can just create bunch of Erlang’s processes. The whole concurrency concept is built into the language unlike Javascript so it’s pretty nice to write logic in Erlang/Elixir. The actor model that Erlang/Elixir uses is imo easier to reason with and easier to mentally model than NodeJS async style. But then again you’re asking in an Elixir forum…
NodeJS is just this technology that enable programmer to do javascript backend using V8. It also push for this async style concurrency paradigm.
You can compare Javascript to Elixir (they’re both languages).
Phoenix to ExpressJS (web framework).
NodeJS’s concurrency model (Async) to Elixir/Erlang’s concurrency model (Actor Model).
V8 vs BEAM VM I guess.
You can read about Erlang/Elixir’s VM here: Distributed Systems Chair
It’s a paper what makes Erlang’s VM unique and why it’s suited for concurrency.
For an overview of Erlang’s/Elixir’s Concurrency model try this:
hauleth
As it was said earlier V8 do not translate JS to C++ but rather uses its’ own internal representation that then is converted to the machine code. This is called JIT.
This isn’t true either, at least not in general case. IIRC Erlang do not have JIT compiler right now (but there is work in progress to allow that) and it always interpreted intermediate language which is low-level description of instructions, something like WASM. However there is HiPE compiler that is ahead-of-time compiler of Erlang code to native code which enables performance boost but with cost (barrier between HiPE and non-HiPE code is slow and it disables few Erlang features).
Node/V8 cannot process data in parallel within single VM instance, BEAM does that natively. It is worth remembering that Node/V8 is single-threaded environment that runs big event loop (
kqueue/epool/etc.).Yes, in Node everything depends how few cycles you spend in the JS and instead you will allow everything to spend in wait. BEAM in that manner do not care that much as it allows you to run things in parallel when possible.
Comparison to be fair should be made between:
tobleron
Wow, this topic seems more complex than I thought, but I am thankful for all your detailed responses!