Patchwork [2,of,2,V2] py3: make py3 compat.iterbytestr simpler and faster

login
register
mail settings
Submitter via Mercurial-devel
Date March 15, 2017, 5:33 p.m.
Message ID <74e92020e65e4014ac88.1489599192@martinvonz.mtv.corp.google.com>
Download mbox | patch
Permalink /patch/19367/
State Accepted
Headers show

Comments

via Mercurial-devel - March 15, 2017, 5:33 p.m.
# HG changeset patch
# User Martin von Zweigbergk <martinvonz@google.com>
# Date 1489595538 25200
#      Wed Mar 15 09:32:18 2017 -0700
# Node ID 74e92020e65e4014ac880542e8a03714810bcde8
# Parent  db74b2599efc1997b0e7e6bb7b699717029c11d8
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.

Patch

diff -r db74b2599efc -r 74e92020e65e 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