HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
mroth
phoenix-showdown
Elixir2014–2018
mroth / phoenix-showdown · Archived

phoenix-showdown

:horse_racing: benchmark Sinatra-like web frameworks

14Distinct people
16Mentions
0Explicit recommenders
700GitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

:horse_racing: benchmark Sinatra-like web frameworks

GitHub

Where it is used

No documented product use was verified in the last source check.

What people are saying

No recommendation phrase was found in the indexed comments.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

No other repository is repeatedly linked in the same discussions.

This week on Hacker News

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 3:56:07 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by year16 dated mentions

Observed mentions: 2014-11-28 21:38:06 UTC to 2018-09-26 02:52:52 UTC.

02468102014-01-01 00:00:00 UTC to 2015-01-01 00:00:00 UTC (exclusive): 2 mentions; 1 submissions, 1 comments20142015-01-01 00:00:00 UTC to 2016-01-01 00:00:00 UTC (exclusive): 4 mentions; 0 submissions, 4 comments2016-01-01 00:00:00 UTC to 2017-01-01 00:00:00 UTC (exclusive): 9 mentions; 1 submissions, 8 comments20162017-01-01 00:00:00 UTC to 2018-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2018-01-01 00:00:00 UTC to 2019-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2018

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
20142014-01-01 00:00:00 UTC2015-01-01 00:00:00 UTC211
20152015-01-01 00:00:00 UTC2016-01-01 00:00:00 UTC404
20162016-01-01 00:00:00 UTC2017-01-01 00:00:00 UTC918
20172017-01-01 00:00:00 UTC2018-01-01 00:00:00 UTC000
20182018-01-01 00:00:00 UTC2019-01-01 00:00:00 UTC101

What Hacker News says

16 sources
I wouldn't recommend it today. Ruby/Rails is 10x to 20x slower as a web server compared to web frameworks for languages that were designed to be concurrent like Java (Play), Erlang (Plug, Phoenix), and GoLang (Gin, Martini). Even Nodejs Express is 3x faster. Benchmarks here: https://github.com/mroth/phoenix-showdown One of the core Rails developers José Valim created his own language Elixir built on top of Erlang and web framework Phoenix. Ruby is a beautiful language - well written code can bring a tear to your eye like Haiku. But its not designed for concurrency so you have to bend over backwards to add caching and scale your web server a lot more than other languages. Learning Ruby/Rails and being part of a team that followed Sandi Metz 5 Rules and TDD made me a better programmer in other languages. Most companies are moving towards mi
Read the rest
croservice architure where each service runs separately and can use whatever language makes sense for that service. We replaced our monolithic Rails web app with 20+ microservices, most of which use Golang, some Python and Node and Java. The main web server service renders one html page (about 20 lines!) that simply renders a React app that communicates with our API server (API server router then routes to the correct microservice). We don't need Rails view templates or localisation support as most dynamic websites do this clientside. Doing lots of Javascript in Rails was always clunky and poorly supported until a year or so ago when they caught up and added modules and hot reloading support. We have found Golang very easy to learn, ridiculously fast to compile and run tests and very robust. Google said it was designed for Programmer enjoyment and it really shows.
In Ask HN: What was the best decision you made in your career?
For math type benchmarks of the order of 2-10x slower http://benchmarksgame.alioth.debian.org/u64q/erlang.html For this web framework test Phoenix (Elixir) does almost as well as Play (Java) https://github.com/mroth/phoenix-showdown The benchmarksgame's site quotes "Most (all?) large systems developed using Erlang make heavy use of C for low-level code, leaving Erlang to manage the parts which tend to be complex in other languages, like controlling systems spread across several machines and implementing complex protocol logic." So it depends I guess.
In Why the Elixir language has great potential
The second time was a result of my inability to get the CTO to move off of an ancient version (0.10) of NodeJS--our web frontend could've been quite happy as a Rails or Sinatra app and we could've made great use of ActiveRecord for some of the early problems we tried to solve. However, the realtime component of the system (streaming data to the browser) was implemented using websockets through Node and even if we had Rails for that we still would've kept that part in Node. I would've loved to have kept Ruby around just for scripting and munging, but since it was also a Windows shop (uggggh) I found it more expedient to just move things over to Javascript. The things that I did manage to take from Rails were view helpers for things like generating links, certain types of buttons and forms, and that sort of thing. We ended up doing a lot of
Read the rest
reporting and that ended up in boring old SQL, but that would've been the case with Rails too. Today, I'm still a bit faster hacking in JS than I would be getting the rust off of my Ruby...so if I needed to do a spike, I'd do it in Node/Express/pg-node--again, that's just personal skill and speed, your mileage may vary. From a testability standpoint, I think the two ecosystems are about on par (finally), with a slight edge for Ruby. Either one is a fine choice, but if you don't need realtime (websockets) stuff, I think you'll probably just enjoy Ruby more. That said: For starting a new project today, I would use Elixir. I value the already-reasonable testing story. I value the general quality of the ecosystem packages and conservatism (good taste, sorely lacking in Node). I especially value that, as a compiled language, it can catch a lot more of my stupid. I also value that it is conservatively 10x using Phoenix than Rails ( https://github.com/mroth/phoenix-showdown ), and does so while having a much more compelling functional and reliability story than I see in Ruby without slowness-inducing metaprogramming tricks. For the prototype architecture I favor, monolith + a few microservices, that efficiency means I don't have to worry about ops stuff as much at the start. At the end of the day, though, go to war with the framework that you are most comfortable with or the one that most clearly matches the problem space of your domain. For me, that used to be Ruby. For you or somebody else, it still might be--and that's a great thing!
In Ask HN: What server side language/framework did you choose and why?
Go has more performance if there is some number crunching work but if it comes to APIs or web applications, I don't think so. That techempower benchmark for Phoenix is seriously flawed [3]. We use Elixir in production and according to our benchmarks, the performance is very close to Go or sometimes even better. We also use Plug (which is used by Phoenix underneath) directly if it is just a small API. These benchmarks relates more to our experience. [1] [2] 1. https://github.com/mroth/phoenix-showdown/blob/master/RESULT... 2. https://gist.github.com/omnibs/e5e72b31e6bd25caf39a 3. https://groups.google.com/d/msg/phoenix-talk/hljH55fsqqw/eFX...
In What Golang Is and Is Not
Looks very nice. I hope it gains momentum. For now, if you want a fast language with the beauty and productivity of Ruby, check out Elixir [0] and its web framework, Phoenix [1]. I've been using Phoenix for a year, and it's the first framework that I've actually liked more over time. And I've been a web developer for a decade. With its recent 1.0 release, Phoenix is gaining a lot of momentum. If you want some idea of the performance differences between Phoenix and Rails, see [2] and [3]. [0] http://elixir-lang.org/ [1] http://www.phoenixframework.org/ [2] https://github.com/mroth/phoenix-showdown/blob/master/RESULT... [3] http://www.phoenixframework.org/blog/the-road-to-2-million-w...
In Crystal: Fast as C, Slick as Ruby
IIRC there were some issues in how Phoenix was configured for the techempower benchmarks, I expect that it will have much better results in the next one. You may want to look at these benchmarks also: https://github.com/mroth/phoenix-showdown https://gist.github.com/omnibs/e5e72b31e6bd25caf39a Here is a post about using 2 million active websockets connections in Phoenix: http://www.phoenixframework.org/blog/the-road-to-2-million-w... From my experience, Rails and Phoenix speed isn't comparable. Even in development mode (with code-reloading etc) Phoenix is much faster than a production Rails server. I've also replaced three Node.js servers with one Elixir server which did the same work with less memory and CPU usage, but I'm aware that most rewrites have a similar story, so I won't claim that this is enough proof.
In Ask HN: Is Golang mature enough for FinTech startups?
Or the second version, with more frameworks: https://github.com/mroth/phoenix-showdown/blob/master/RESULT... I note with interest that the two frameworks which are faster than Phoenix (in both throughput and latency) are Gin, written in Go, and Play, written in Scala. In this run of the benchmark, they also have more consistent latency than Phoenix, although the author notes a suspected problem with his Erlang installation; previous runs had consistency better than Play, but still not as good as Gin. I note with amusement that: > Play consistently appeared to generate hundreds of socket read errors (see the detailed output), so I believe it should probably be semi-disqualified from the results for now. I'd be interested to see another JVM framework tested. Play is really rather complicated, and it's written in Scala, which is also rather
Read the rest
complicated. I'd love to see a comparison with a Sinatra-for-Java type framework like Spark, or perhaps Undertow (since it does so well on the TechEmpower benchmark). Oh well, maybe it's pull request time ...
In Erlang/OTP architectures: Cowboy

Showing the 15 most recent of 16 sources. Enable JavaScript to search and browse every indexed mention.

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.