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. --- CHANGES.txt | 4 ++++ repoze/bfg/url.py | 9 +++++++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/CHANGES.txt b/CHANGES.txt index 96f5a8355..95ca8e3e2 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -15,6 +15,10 @@ Features - Speed up ``repoze.bfg.traversal.traverse`` slightly. +- Speed up ``repoze.bfg.url.model_url`` slightly. + +- Speed up ``repoze.bfg.url.route_url`` slightly. + Internal -------- 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