Unfair comparisons
tiamat.tsotech.com
tiamat.tsotech.com
Personally, this project has prompted me to change my career path from C# to something else, due to the abysmal performance of ASP.NET. I'm still waiting to see more tests, especially the asp-stripped one, and hopefully some OWIN/Katana in the near future. But for now, I'm seriously considering JS/Node.js or Scala/JVM as my main development platform. So thanks.
Is there any date for the next round?
We've been really busy of late, so we still don't have an ETA for Round 7, but believe me that we are very eager to get that completed. One thing we're hoping to include in Round 7 is Windows on physical hardware.
Also, just another aside, some folks might hate the background animation. You can turn it off at the bottom right. Consider it my trolling you if you must. :)
> X Nazis will complain about any X, no matter what. Don't let them dissuade you from continuing work on X.
I love contrarianism and geekery, just don't get lost in the infinite correctness maze.
As that committer, I have to ask: Why would you change your career path due to supposed 'abysmal performance' reported on a website?
Keep in mind that the 'abysmal performance' of many of the frameworks can still handle millions of requests per day. Plus, many of the 'slower' frameworks have other development benefits like ease of development, community ecosystem, static type checking, etc.
The reason I replied is because I'm considering jumping from aspnet to a 'slower' framework like django and I'm not basing my decisions solely on the results of this collaborative benchmark where I don't even know if experts have tuned the results, and where I don't know why the results are 'poor'.
I'm not basing my decision solely on these benchmarks either, this is just the straw that broke the camel's back. Microsoft doesn't inspire me too much confidence on the future of .NET and neither does Mono. The .NET open source community has never taken off. And changing my main development language is not such a big deal, I already work with five languages on a regular basis.
I hope to see better results on future tests. I hope OWIN improves the situation for ASP.NET. And I hope future versions of Mono focus more on performance. But that's a lot to hope for and I'm not holding my breath.
[1] https://github.com/TechEmpower/FrameworkBenchmarks/pulls
Right now, the setup.py for Django specifies that it will create 3 * NCPU worker processes. On the i7, that would probably be 24 processes and possibly using an eighth of the RAM in the box. Similarly, for Rails, the Unicorn configuration specifies 8 worker processes (one process per GB of RAM) regardless of whether it's on EC2 or the i7 (while Django goes from 6 to 24 processes depending on the box it's on since it's 3 * NCPU). For all we know, the CPU usage might be around 25% and the RAM usage even less. As such, it's hard to determine if the speed achieved is because of the limitations in the framework or whether the box is simply being under-utilized due to sub-optimal configuration.
If you're going to do another around, more than any other changes, I think a view of the CPU and RAM usage would really help - if for no other reason than to show that the test is accurate. Right now, I have questions about whether the process concurrency frameworks are well set-up. Why would Django benefit from getting 4x the number of worker processes on the i7, but not Rails? Is 24 processes utilizing the i7 box with Django? CPU and RAM numbers would help provide answers.
That said, across the board, inclusive of both process-concurrent and thread-concurrent frameworks, we never rule out the possibility of a configuration glitch. We've asked that any subject-matter experts for any framework perceived as underperforming review the code and configuration. To date, we've received a great deal of pull requests to deal with many such matters. On the other hand, very few such tweaks have had a significant impact on performance data.
We do intend to capture CPU, network, and IO utilization in the future. For the time being, we invite fans/SMEs to review the code, run the tests on their own multi-core machine and/or EC2 instances and determine if there is room for improvement.
[1] http://www.techempower.com/benchmarks/#section=motivation
I discovered some interesting and speedy platforms like OpenResty. And PHP performance for multiple queries isn't too bad either - top five.
For round #7, I suggest an addition of the HipHop-PHP (hhvm) Facebook's speedy open source PHP implementation. https://github.com/facebook/hiphop-php/wiki
https://github.com/TechEmpower/FrameworkBenchmarks/issues/41...
Getting the various vendors involved would require a lot of clout though :(
Here is some commentary on the MySQL configuration: https://github.com/TechEmpower/FrameworkBenchmarks/blob/mast...
* innodb_log_flush_at_trx_commit is not specified, so it's going to default to 1 (durable). This is a little unfair, since other databases won't do this.
* innodb_buffer_pool_size isn't specified, so it's going to default to 128M. A database that uses mmap files will have an atvantage here - since it can automatically use free memory and won't require this level of tuning.
* I thought it was fair to disable query cache though :)
I had in passing asked a few if they would be willing to apply an "official" indicator next to their rows. But the response had been uniformly "not interested." Maybe later I'll ask again. :)
Thanks for the notes on the MySQL configuration. There are a lot of gray areas in setting up the configuration, but we do seek recommendations such as these. Aside from concessions we've made to the matter of running a benchmark, the overriding goal for configuration is that "production-class" configuration is preferred.
I'm not an expert at InnoDB tuning, so you might tell me that "innodb_log_flush_at_trx_commit = 1" is not typical for production environments, in which case I'd want to make a change. But if it is typical for production, I'd like to keep it as-is.
If the point is that other databases do not have something comparable, that speaks to the point of the linked blog entry. These things are not directly comparable, feature-by-feature. We would like Postgres and MongoDB to be deployed in a typical "production-class" configuration, but that may or may not be feature-identical with MySQL.
> If the point is that other databases do not have something comparable, that speaks to the point of the linked blog entry.
Other databases do have something comparable. It looks like MongoDB actually doesn't, but that's highly unusual. Postgres does (I believe it's on by default), Riak does, Voldemort does (one could make an argument that it's safer to leave it off in the latter two cases than elsewhere).
But I do recommend it for the majority of people. Shameless plug: http://www.tocker.ca/2013/06/19/deciding-whether-or-not-to-m...
Also: http://dom.as/2013/08/09/on-durability/ (Domas works on MySQL@Facebook).
Just for the record, on our i7 tests, starting with Round 6, we have been using a Samsung 840 Pro SSD for the database server.
Can't find anything on whether their newer SSD-providing instances guarantee durability, though.
I think it is the exact opposite - a benchmark is wonderful in showing a product weakness but you should be very careful of http://en.wikipedia.org/wiki/Goodharts_law this.
And old joke back in the day with 3d mark enthusisasts was "I tried this 3d mark thing but after 8 hours still could not find the second level"
Jokes aside, if you hate it, you can turn it off at the bottom right. Maybe some day I'll disable it by default. But for now, I kind of enjoy these responses. Edit: very well, it's disabled by default. :)
But in any case, I'd rather not distract from the points I'm trying to make in the blog entry, so the background is now off by default.
On my box, it uses ~2.1% CPU and ~16% GPU in Aurora.
I'd love to see Perl Mason on here (the benchmarks)
Make the DB something CPAN like tie::Storable and load it in RAM. Lets see how that stands up XD