Rage compared to Falcon #222
Replies: 1 comment
-
|
Thanks for the great question! It completely makes sense why comparing these two can be a bit tricky, as they approach Ruby concurrency from different angles. High-Level DifferenceFalcon & Async: Async is a concurrency library (a building block), and Falcon is a Rack-compatible web server built on top of it. You build your application using a framework like Rails or Sinatra, and then you use Falcon as the web server to run it. Rage & Iodine: Rage is an integrated runtime - the server and the framework are tightly integrated by design. Rage is built on top of a custom fork of Iodine, which I maintain and treat as an internal part of the framework. Also, Rage does not use Async. Instead, it relies on its own fiber scheduler. What Makes Them Fundamentally DifferentThe biggest difference is scope and philosophy:
Falcon
Rage
Async is a low-level concurrency toolkit that can power many systems. Rage is a complete system built on top of optimized primitives. Respective PrimitivesIf by primitives you mean concurrency primitives:
So Async exposes the primitives. Rage encapsulates the primitives. That's probably the cleanest way to describe it. BenchmarksThere isn't a direct benchmark between Rage and Falcon+Async, because they sit at different layers of the stack. Instead, it's more accurate to compare Rage against other frameworks, like Rails or Sinatra. This is what the TechEmpower benchmarks do. In fact, if you look at the TechEmpower results, you'll notice an entry for Rails+Falcon, which highlights how Falcon is used as a server to run an existing framework, whereas Rage is measured on its own. Because Rage controls the entire stack, it minimizes overhead and performs strongly in high-throughput scenarios. You can check out the performance data here: |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
I'm trying to understand the difference between Falcon & Rage, and their respective primitives, which I think is Ruby Async and iodine.
Are there any quick comparisons for this libraries? Existing articles (I couldn't find anybody)? Benchmarks?
I'm guessing contributors to this project probably know some of the differences.
Beta Was this translation helpful? Give feedback.
All reactions