py3: make py3 compat.iterbytestr simpler and faster
authorMartin von Zweigbergk <martinvonz@google.com>
Wed, 15 Mar 2017 09:32:18 -0700
changeset 31425 63a39d647888
parent 31424 4acc49335a6e
child 31426 43a7dfbead0c
py3: make py3 compat.iterbytestr simpler and faster With Python 3.4.3, timit says 11.9 usec-> 6.44 usec. With Python 3.6.0, timeit says 14.1 usec -> 9.55 usec.
mercurial/pycompat.py
--- a/mercurial/pycompat.py	Wed Mar 15 09:30:50 2017 -0700
+++ b/mercurial/pycompat.py	Wed Mar 15 09:32:18 2017 -0700
@@ -78,7 +78,7 @@
 
     def iterbytestr(s):
         """Iterate bytes as if it were a str object of Python 2"""
-        return iter(s[i:i + 1] for i in range(len(s)))
+        return map(bytechr, s)
 
     def sysstr(s):
         """Return a keyword str to be passed to Python functions such as