[web-devel] Performance of Yesod 0.7 fourteen times slower than Rails 2.3?

Michael Snoyman michael at snoyman.com
Mon Mar 21 13:49:20 CET 2011

Looks like my initial guess was completely wrong: on my system, almost
no time is spent on the database query. Instead, it looks like there's
some kind of performance issue with Hamlet. For example, changing line
20 of Handler/Quote.hs from "addWidget" to "addHtml" increases
performance dramatically (25 sec to 4.5 sec). I'll need to spend some
more time to properly diagnose the problem. Again, thanks for bringing
this to my attention.


On Mon, Mar 21, 2011 at 12:40 PM, Michael Snoyman <michael at snoyman.com> wrote:
> Firstly, thank you for running this benchmark: it's the only way we
> can find out where Yesod needs to be fixed.
> I haven't had a chance to look into the code properly, but it looks
> like this is more a test of the database backend than of the web
> framework. I'll try to get to this myself later, but it would be very
> interesting to see the difference in response times between PostgreSQL
> and sqlite. Currently, persistent-sqlite binds directly to the sqlite
> C API, while persistent-postgresql uses HDBC. It's entirely possible
> that HDBC is adding some overhead.
> One of the items on our wish list[1] is to migrate away from HDBC.
> Having hard numbers like you are providing will help us figure out our
> priorities a bit better.
> Thanks,
> Michael
> [1] http://wiki.yesodweb.com/Wishlist
> On Mon, Mar 21, 2011 at 12:10 PM, Sven Koschnicke (GFXpro)
> <s.koschnicke at gfxpro.com> wrote:
>> Hello,
>> I'm coming from a Rails background and was very impressed by the features of
>> the Yesod Web Framework. Working on an trading app in Rails I wanted to port
>> some features of this app to a Yesod app just to learn the framework and
>> because we have some performance issues with Rails.
>> The first thing I noticed was that the Yesod app was significantly slower
>> than the Rails app at trivial tasks. I am very astonished about that. I
>> thought Rails should be slower because of its interpreted nature. I made
>> some benchmarking and measured that a simple Rails app is fourteen times
>> faster than a Yesod app that did the same thing (loading some records from
>> the database and displaying them). Did I made a mistake or is my
>> understanding, that the compiled app should be faster, just wrong?
>> I documented the results on github:
>> https://github.com/SKoschnicke/performance-test
>> Greetings
>>  Sven Koschnicke
>> _______________________________________________
>> web-devel mailing list
>> web-devel at haskell.org
>> http://www.haskell.org/mailman/listinfo/web-devel

More information about the web-devel mailing list