Live data from Hacker News

Web Framework Benchmarks Round 4

techempower.com

151–160 of 358 posts

Re: Web Framework Benchmarks Round 4

#151
post #26

Thanks for doing these extensive benchmarking tests. It would be really helpful to see a more complex example that includes user authentication. Aside from the benchmarks it's also a really good starting point to compare the code in different languages and get a first impression of a framework. On a side-note, I'd really like to know why so few start-ups seem to be using Spring. It could be just a wrong impression .…

> It could also be that Spring works better with the waterfall model

I've used spring mvc in an agile setting a couple times now, and it has worked fine. It doesn't tend to make developers all that happy, in my experience. If you're in an enterprise full of spring, starting up the next app with it can be attractive -- there likely already exists a bunch of tooling and knowledge around spring.

I wouldn't use spring directly if I were trying to build something quickly for a startup. I'd be more apt to reach for grails (which wraps spring), dropwizard, or any of the other rapid-development frameworks.

Re: Web Framework Benchmarks Round 4

#152
post #22

Why I'm still using Play! these results are disappointing once again, atleast beat node.js. Go is looking great though.

Raw comparisons are quite misleading - ridiculous setups or slow interpreted languages aside, full stacks with ORM are going to be slower than micro stacks with raw DB access. Play! does fairly well compared to other frameworks of its kind.

Re: Web Framework Benchmarks Round 4

#153

Earlier quoted context omitted.

Except benchmarking is really, really hard to get right, and these benchmarks aren't really testing anything that resembles a production app. For all non-trivial apps, by the time you get 100 req/sec your bottleneck is very likely going to be your database.

This is a good point. Especially if you only cared about how fast you can make your app. But if you want to also consider how cheap you can run your app, you need to consider how many app servers will it take to saturate the DB? 1 or 10? At certain scales for certain tasks, the hosting costs matter more than the development costs.

>But if you want to also consider how cheap you can run your app, you need to consider how many app servers will it take to saturate the DB?

Moore's law has made this sorta moot. Unless you're on Heroku, for a successful small-to-medium app, the denominator in your hosting costs is doing to be the salary of the engineer or sysadmin who tends to it.

(If you're on Heroku, then you start worrying about dynos because, with monitoring, you're paying $60 per "worker".)

This is to say, the cost in salary to properly shard a database probably outweighs a year or two of hosting for the extra two or three boxes you're spinning up; almost no one experiences explosive growth where you need to spin up dozens of new boxes overnight.

Re: Web Framework Benchmarks Round 4

#154
post #140
post #135

What about vibe.d? While D is listed, vibe.d seems to be missing.

Good catch. I have "D" listed because I heard from the vibe.d community [1] that a pull request was incoming. We have not yet received it. Can you help the vibe.d guys get it submitted? [1] http://forum.dlang.org/thread/urpqdftuofgwespkcdxg@forum.dla...

I am active on D forums and remember reading about it.

I guess everyone is busy because of the DConf 2013 http://dconf.org/

Otherwise I will remember them next week.

Re: Web Framework Benchmarks Round 4

#155
post #80

Earlier quoted context omitted.

I take it you didn't switch the graphs to the latency view.

Because of your comment I checked the latency view and found Go doing quite well, sometimes in the second or third spot. Perhaps I'm missing your point?

Well, in the database access test with multiple queries, Go has an outrageous max latency of 19 seconds, and a stddev of 3x the mean, which is terrible.

Re: Web Framework Benchmarks Round 4

#157
post #22

Why I'm still using Play! these results are disappointing once again, atleast beat node.js. Go is looking great though.

I've dabbled a bit with Play, but found it too slow (with Scala). Have a look at Scalatra or, if you don't need a full blown framework, Spray

Re: Web Framework Benchmarks Round 4

#158
post #18

http://openresty.org/ Looks interesting but at a quick glance it looks like you are programming in configuration files? I'm not sure I like the idea.

If you're building an actual webapp I assume you wouldn't put anything more than a require and a call to the app's entry point in the config file. Putting nontrivial amounts of Lua in the config file is more of a way to stave off the evolution into terrible turing-complete languages that config files often make.

Re: Web Framework Benchmarks Round 4

#159

First off, I love the work you're doing, keep it up. Benchmarks like this are designed to be the starting-point of a discussion an investigation, and not as anything meaningful in their own right. Boiling it down a framework to one performance number ignores the many, many nuances of a framework. What surprises me most is the difference between different frameworks. A few years ago the mantra seemed to be "Use Rails,…

Thanks, Periodic. It's especially rewarding to hear that people have gleaned value from the project.

You're precisely right about how to put this data to use: as one point in a holistic decision making process. We address that in the Questions section of the site, in fact. That said, we are not reducing each framework to a single performance number. Our goal is to measure the performance of several key components of modern frameworks: database abstraction and connection pool performance, JSON serialization, list and collection functions, and server-side templates. We'd like to add even more computationally-intensive request types in future rounds.

So, no, we're not testing your (or anyone else's) specific application on each framework. But we are testing functions that your application is likely to use. You're still better off measuring the performance of your use-case on candidate frameworks before you start work, but perhaps you can first trim the field to a manageable number.

In the first round, we echoed your surprise at the spread--four orders of magnitude! I think the shifting winds of opinion come from the fact that today's high-performance languages, platforms, frameworks are not necessarily more cumbersome to use for development than the old guard. As others have pointed out elsewhere in this thread, Go is not a terribly verbose language, and yet its performance is fantastic.

Has the era of sacrificing performance at the altar of developer efficiency ended? I'm not sure. But we have some data to add to the conversation.

Re: Web Framework Benchmarks Round 4

#160
post #156

It'd be nice to also have a "lines of code" comparison, because i can see how some benchmarks are at the top but after looking at the code they also tend to be quite "manual".

We do plan to start tackling that other dimension, efficiency. Source lines of code is one objective measure that, for all its faults, we plan to include.

In a previous round, I pasted the relevant code directly into the results view. I will likely do that again soon since it's convenient for the reader.

For the time being, I invite you to browse the Github repository and examine the test implementation source.

Post reply on HN