4 ms·
These could probably be further broken down into micro-frameworks (like Express, Sinatra, Vert.x etc.) and large MVC frameworks (like Play and Rails). Gemini i
by goodwink 14y ago
These could probably be further broken down into micro-frameworks (like Express, Sinatra, Vert.x etc.) and large MVC frameworks (like Play and Rails).
Gemini is sort of an outlier that doesn't really fit either category well, but the micro-frameworks have a fairly consistently higher framework optimization index than the large MVC frameworks which is as expected.
Express and Sinatra really stand out as widely-used, very high percentage of platform performance retained frameworks here. I've never used Vert.x, but I will certainly look into it after seeing this. I'm very impressed that Express is so high on this list when it is relatively young compared to some of the others and the Node platform is also relatively young.
Play seems particularly disappointing here since it seems any good performance there is almost entirely attributable to the fast JVM it's running on. Compojure is also a bit disappointing here (I use it quite a bit).
- jholla14 14y agoThe play test was written totally incorrectly since it used blocking database calls. Since play is really just a layer on top of Netty it should perform nearly as well if correctly written.
- goodwink 14y agoI believe they're encouraging pull requests to fix that sort of thing. It will be interesting to see if it helps to that degree; I hope so!
- abalone 14y agoBut Play's trivial JSON test was much slower than Netty's.
- mrspeaker 14y agoThat's because they inexplicably use the Jackson library for the simple test, rather than Play's built in JSON support (they use the built-in JSON for the other benchmarks).
- rzidane 14y agoBoth Netty and Play use Jackson though one the Netty version uses a single ObjectMapper and the Play version uses a new ObjectNode per request (created through Play's Json library).
- ms-tg 14y agoI hope this gets fixed!
- abalone 14y agoNo, they use Play's JSON lib. It's kind of a moot point because Play's lib is in fact a wrapper for Jackson. Here's the source: https://github.com/TechEmpower/FrameworkBenchmarks/blob/master/play-java/app/controllers/Application.java https://github.com/TechEmpower/FrameworkBenchmarks/blob/mast... So the question stands: If Play & Netty are using the same JSON serialization code, why is Play seven times slower?
- ctide 14y agoI'd imagine that being relatively young is an advantage in a test like this. You're not utilizing any features, and features are what slow down requests. The less features something has, the faster it should perform in these trivial tests.
- goodwink 14y agoThat's a very good point; I hadn't thought of it that way. Maybe this is some small part of why we seem to keep flocking to the new kids on the block.