[Catalyst] Catalyst vs Rails vs Django Cook off
Perrin Harkins
perrin at elem.com
Tue Jan 16 13:59:29 GMT 2007
Robert 'phaylon' Sedlacek wrote:
> Perrin Harkins wrote:
>> I think it's a lame benchmark too, but isn't a dispatcher mostly what
>> Catalyst is? DBIx::Class and TT are not Catalyst, as people often
>> mention on the list.
>
> I wouldn't say so. You can build applications that only use the
> dispatcher of Catalyst, but the model interface, the view (not TT, just
> the view classes), the plugin system, inherited actions, the config
> system, action classes, etc. are pretty well used in most of my apps too.
In the context of benchmarks, those things all seem pretty minimal to
me. The model interface is a razor-thin wrapper over calls to your ORM
of choice. There's not much reason to use it that I can see. Same with
the view: very little difference from calling templating tools directly.
(Somewhat more reason to use it though, since people often mess up the
caching in TT when they write their own calls to it.)
Most plugins don't do anything except pass your config to some module
and put a method in $c for something you could call directly. A few
specific plugins that contain some code do add real value -- session,
auth, pagecache -- and are frequently used, so I would consider them a
core part of Catalyst's functionality. Those would be fair game for a
benchmark.
Inherited actions and action classes are part of the dispatcher in a
broad sense (i.e. part of how URLs get mapped to methods).
The config system does provide convenient centralization but is mostly a
call to YAML or similar and won't contribute to runtime performance.
The biggest other thing that Catalyst itself provides is an abstraction
layer over runtime environments. That's a standard part of all modern
web framework, and shows up in any benchmark naturally.
The point being, saying that benchmarking the mapping of URLs to methods
isn't a good test of Catalyst is like saying that running SQL queries
isn't a good test of DBI. The bulk of the actual Catalyst code (not ORM
or templating) that will run on any request to a Catalyst app is the
dispatcher and the runtime environment abstraction. It's a *terrible*
test of the real-world performance of real web applications, which is
mostly about the database access and templates, but a good test of the
Catalyst code.
- Perrin
More information about the Catalyst
mailing list