[Catalyst] Performance Tip (regarding URI handling)

Nilson Santos Figueiredo Junior acid06 at gmail.com
Wed Dec 27 21:44:59 GMT 2006


I've previously posted about my performance issues regarding TT.  At
the time, one of Matt's suggestions for improving performance was to
reduce the usage of uri_for() whenever possible.

I had some "list" pages where I'd need to display dozens of items and
link to each one of them and all my links were built using uri_for(),
e.g. [% c.uri_for("/item/view/$item.id") %].

I decided to give Matt's advice a try and changed that to something
along these lines:

  [% base_item_uri = c.uri_for('/item/view/') %]
  [% FOREACH item IN items %]
    [% base_item_uri  _  item.id %]
  [% END %]

This resulted in a ~20% speedup on these pages - which is a quite good
speedup for such a small change. So, if there's anyone else suffering
from some performance issues like myself, this might help out a little
bit.

I don't really know if the Catalyst devs can make uri_for() work
faster in a sane way (maybe some sort of caching of URI objects?) but
until then, I think I'll stick to this slightly less readable
approach.

I hope this tip can help others as it did help me.

-Nilson Santos F. Jr.



More information about the Catalyst mailing list