diff options
| author | Chris McDonough <chrism@agendaless.com> | 2009-09-23 11:44:56 +0000 |
|---|---|---|
| committer | Chris McDonough <chrism@agendaless.com> | 2009-09-23 11:44:56 +0000 |
| commit | afc4bba9d08233824977215429d3e0ca6fb9fa02 (patch) | |
| tree | 704c92ff0aa63adac3f560eca0945335b8eb193b | |
| parent | 94da801721dc65110cb94a25d75f6200adf3d125 (diff) | |
| download | pyramid-afc4bba9d08233824977215429d3e0ca6fb9fa02.tar.gz pyramid-afc4bba9d08233824977215429d3e0ca6fb9fa02.tar.bz2 pyramid-afc4bba9d08233824977215429d3e0ca6fb9fa02.zip | |
- Speed up ``repoze.bfg.url.model_url`` slightly.
- Speed up ``repoze.bfg.url.route_url`` slightly.
| -rw-r--r-- | CHANGES.txt | 4 | ||||
| -rw-r--r-- | 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]) |
