summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGaëtan de Menten <gdementen@gmail.com>2015-04-24 14:26:42 +0200
committerGaëtan de Menten <gdementen@gmail.com>2015-04-24 14:26:42 +0200
commite77cf339ee504ca9973d88e486d174f1ffa87302 (patch)
treed9c67490fdebbd0ee134ef00baeb239540eaa2da
parent0fc751e4abea999b5cc7ba8c3a87a7a84cd5aa8c (diff)
downloadsqlalchemy-pr/169.tar.gz
micro-optimize unique_listpr/169
This makes unique_list approx 2x faster in my (simple) tests
-rw-r--r--lib/sqlalchemy/util/_collections.py7
1 files changed, 4 insertions, 3 deletions
diff --git a/lib/sqlalchemy/util/_collections.py b/lib/sqlalchemy/util/_collections.py
index 4fb12d71b..db2c21949 100644
--- a/lib/sqlalchemy/util/_collections.py
+++ b/lib/sqlalchemy/util/_collections.py
@@ -743,15 +743,16 @@ _property_getters = PopulateDict(
def unique_list(seq, hashfunc=None):
- seen = {}
+ seen = set()
+ seen_add = seen.add
if not hashfunc:
return [x for x in seq
if x not in seen
- and not seen.__setitem__(x, True)]
+ and not seen_add(x)]
else:
return [x for x in seq
if hashfunc(x) not in seen
- and not seen.__setitem__(hashfunc(x), True)]
+ and not seen_add(hashfunc(x))]
class UniqueAppender(object):