diff options
author | Gaëtan de Menten <gdementen@gmail.com> | 2015-04-24 14:26:42 +0200 |
---|---|---|
committer | Gaëtan de Menten <gdementen@gmail.com> | 2015-04-24 14:26:42 +0200 |
commit | e77cf339ee504ca9973d88e486d174f1ffa87302 (patch) | |
tree | d9c67490fdebbd0ee134ef00baeb239540eaa2da | |
parent | 0fc751e4abea999b5cc7ba8c3a87a7a84cd5aa8c (diff) | |
download | sqlalchemy-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.py | 7 |
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): |