From afc4bba9d08233824977215429d3e0ca6fb9fa02 Mon Sep 17 00:00:00 2001 From: Chris McDonough Date: Wed, 23 Sep 2009 11:44:56 +0000 Subject: - Speed up ``repoze.bfg.url.model_url`` slightly. - Speed up ``repoze.bfg.url.route_url`` slightly. --- repoze/bfg/url.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'repoze') diff --git a/repoze/bfg/url.py b/repoze/bfg/url.py index 1fd9bab1e..40badf5d1 100644 --- a/repoze/bfg/url.py +++ b/repoze/bfg/url.py @@ -5,6 +5,8 @@ import os from zope.component import getUtility from zope.component import queryMultiAdapter +from repoze.lru import lru_cache + from repoze.bfg.interfaces import IContextURL from repoze.bfg.interfaces import IRoutesMapper @@ -103,7 +105,7 @@ def route_url(route_name, request, *elements, **kw): anchor = '#' + anchor if elements: - suffix = '/'.join([quote_path_segment(s) for s in elements]) + suffix = _join_elements(elements) if not path.endswith('/'): suffix = '/' + suffix else: @@ -194,7 +196,7 @@ def model_url(model, request, *elements, **kw): anchor = '#' + anchor if elements: - suffix = '/'.join([quote_path_segment(s) for s in elements]) + suffix = _join_elements(elements) else: suffix = '' @@ -249,3 +251,6 @@ def static_url(path, request, **kw): raise ValueError('No static URL definition matching %s' % path) +@lru_cache(1000) +def _join_elements(elements): + return '/'.join([quote_path_segment(s) for s in elements]) -- cgit v1.2.3