Live data from Hacker News

Benchmarking Phoenix vs. Rails vs. Sinatra vs. Express vs. Martini

github.com

31–34 of 34 posts

Re: Benchmarking Phoenix vs. Rails vs. Sinatra vs. Express vs. Martini

#31

Martini is slow, try again with Negroni which is the new lib by the author of Martini.

So, profiled the Martini bench and discovered it was doing a LOT of file operations. I looked in the code and found that it does that in dev mode. The benchmark sets the mode to "production". D'oh! Ok, so I profiled it again and guess what? Martini is STILL doing a lot of file stuff. It's in net/http.Dir.Open and I believe it has to do with how the middleware is setup. You can see a TON of time spent in runtime.cgocall which I believe is it waiting for a syscall to come back. Don't have time to look into it further today but I'd imagine clearing that up could possibly double the performance.

Re: Benchmarking Phoenix vs. Rails vs. Sinatra vs. Express vs. Martini

#33

Is elixir just a different syntax for erlang, or are the semantic differences? Their website doesn't seem to make it very clear.

Being able to use all of erlang's inbuilt modules and functions are an advantage. But there's way more to Elixir that just syntax. 1.) Elixir ships with a build tool called Mix. Falls back to use rebar for erlang projects. Mix is awesome and IMHO way more stable that rebar (Had problems with erlang libs shipping diff versions of rebar binaries in the git repo itself). 2.) There's a really good package manager - Hex.p…

>I'm not sure what project had pipes first (should we credit F# or Unix shell itself?)

You'd have to go with unix out of those options, F#'s pipe operator is just flipped function application, and is primarily to make up for the poor type inference F# has. Every functional language has or can easily have a function application operator.

Re: Benchmarking Phoenix vs. Rails vs. Sinatra vs. Express vs. Martini

#34

Martini is not a good reflection on Go's performance (no pun intended). If you want a Go benchmark of a minimalistic framework, use Gorilla mux or even Beego

Also check out Gin which is very lightweight and performant with a great API.

https://github.com/gin-gonic/gin

Post reply on HN