Live data from Hacker News

Web Framework Benchmarks Round 5

techempower.com

31–40 of 58 posts

Re: Web Framework Benchmarks Round 5

#32

It would be nice to add Beego [1], as I'm currently learning Go from an ebook written by the author of the framework [2][3], and it would be nice to see how it performs. Thanks for your hard work! [1] https://github.com/astaxie/beego [2] https://github.com/Unknwon/build-web-application-with-golang... English translation [3] https://github.com/astaxie/build-web-application-with-golang Original version in Chinese

I had not heard of Beego, but we'd love to accept a pull request with a Beego implementation of the tests. Perhaps you could put one together as an exercise while learning the language and framework? :) Sorry, I can't resist playing the "pull request" card.

Re: Web Framework Benchmarks Round 5

#33
post #31

If I am not mistaken, Java servlet version use prepared statement https://github.com/TechEmpower/FrameworkBenchmarks/blob/mast... Which is kinda faster than other full ORM and smaller network round trips.

Yes, it does. Additionally, several of the ORMs leverage prepared statements.

Re: Web Framework Benchmarks Round 5

#34
post #11

Earlier quoted context omitted.

A pure Go MySQL driver is being used for the Go test. OpenResty probably uses a thin wrapper around the C library.

The openresty mysql driver is in pure lua. It has a very efficient socket/pooling mechanism, using sockets from nginx.

It would be even more (much more?) effective to use preconfigured https://github.com/chaoslawful/drizzle-nginx-module location and 'ngx.location.capture' I suppose

And http://leafo.net/lapis/ is missing again.

Re: Web Framework Benchmarks Round 5

#36

There are some strange things I noticed about this benchmark's organization: - JRuby is a Ruby implementation. Why is it listed under Platform? It should be listed under Language. - Why are Unicorn and Gunicorn listed under front-end web servers? Unicorn and Gunicorn are explicitly not front-end web servers, but are meant to be put behind a reverse proxy, by design. The Unicorn author tells users very clearly not to…

Thanks for the feedback, FooBarWidget.

We have received some similar feedback previously and have discussed some possible changes to the meta-data structure [1] [2]. As you can imagine, it is actually a complex problem assigning consistent terminology to all of the various parts that can compose a web application's deployment.

Consider Go (language, platform, framework, and server all in one, at least from our perspective) versus Rails (framework only). Some frameworks embed a web server, others don't, and so on. We have had to make several judgment calls in classifying this very broad spectrum of frameworks, and freely admit that there is room for improvement in that classification.

Incidentally, the Ruby deployment is Unicorn behind nginx. We opted to identify the Ruby deployment as "Unicorn" because that is the key among the two, and to clearly indicate the divergence from a previous round in which we were using Passenger, much to the dismay of the community.

[1] https://github.com/TechEmpower/FrameworkBenchmarks/issues/26...

[2] https://github.com/TechEmpower/FrameworkBenchmarks/issues/26...

Re: Web Framework Benchmarks Round 5

#37
post #32

It would be nice to add Beego [1], as I'm currently learning Go from an ebook written by the author of the framework [2][3], and it would be nice to see how it performs. Thanks for your hard work! [1] https://github.com/astaxie/beego [2] https://github.com/Unknwon/build-web-application-with-golang... English translation [3] https://github.com/astaxie/build-web-application-with-golang Original version in Chinese

I had not heard of Beego, but we'd love to accept a pull request with a Beego implementation of the tests. Perhaps you could put one together as an exercise while learning the language and framework? :) Sorry, I can't resist playing the "pull request" card.

I might give it a Go :)

Re: Web Framework Benchmarks Round 5

#38
post #34
post #11

Earlier quoted context omitted.

The openresty mysql driver is in pure lua. It has a very efficient socket/pooling mechanism, using sockets from nginx.

It would be even more ( much more? ) effective to use preconfigured https://github.com/chaoslawful/drizzle-nginx-module location and 'ngx.location.capture' I suppose And http://leafo.net/lapis/ is missing again.

I benchmarked the pure postgresql lua driver to be ˜3 times as fast as the nginx-postgresql-c driver. When you use the nginx drivers from a lua context you have to use an internal nginx request to that location, so there's some overhead.

If you want to improve even further on the lua drivers, LuaJIT FFI is probably the right answer.

Re: Web Framework Benchmarks Round 5

#39
Thanks for the benchmarks.

While it will not affect the way i work it is interesting to see the differences between languages and plateforms , in the context of a web application. Clearly Go and the JVM are doing very well in term of performance. In some cases it can affect the hosting cost , especially when deploying on pay as you go saas.

Big frameworks and ORM , especially in dynamic languages should really get into serious optimization , there is no excuses for some frameworks to be so slow on trivial things like DB requests ,etc ... there will always a last one in the list , but that last one doesnt have to be only 1% of the performances of the first one in the list. It's pretty shamefull.

Re: Web Framework Benchmarks Round 5

#40
post #34
post #11

Earlier quoted context omitted.

The openresty mysql driver is in pure lua. It has a very efficient socket/pooling mechanism, using sockets from nginx.

It would be even more ( much more? ) effective to use preconfigured https://github.com/chaoslawful/drizzle-nginx-module location and 'ngx.location.capture' I suppose And http://leafo.net/lapis/ is missing again.

I asked leafo about adding Lapis and he sounded interested. Since then I haven't harassed him. I figure he will get to it when he can.
Post reply on HN