Anish Shah added the comment:
I ran regex and issuperset version on a random string. The regex one gives
better performance. So, I have included the re.escape in the patch.
>>> random_str = ''.join(random.choice(_LegalChars) for _ in range(10 ** 8))
>>> is_legal_key = re.compile('[%s]+' % re.escape(_LegalChars)).fullmatch
>>> Timer("is_legal_key(random_str)", setup="from __main__ import random_str,
>>> is_legal_key").timeit(1)
0.3168252399998437
>>> def is_legal_key(key):
... return key and set(_LegalChars).issuperset(key)
...
>>> Timer("is_legal_key(random_str)", setup="from __main__ import random_str,
>>> is_legal_key").timeit(1)
4.3335622880001665
Also, I have updated the patch. Can you please review it? :)
----------
Added file: http://bugs.python.org/file41841/issue26302_20160207.patch
_______________________________________
Python tracker <[email protected]>
<http://bugs.python.org/issue26302>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com