Author: Armin Rigo <[email protected]>
Branch:
Changeset: r67848:5ac514ca713a
Date: 2013-11-05 12:49 +0100
http://bitbucket.org/pypy/pypy/changeset/5ac514ca713a/
Log: Rewrite string.maketrans() in a more pypy-friendly way, using
bytearray().
diff --git a/lib-python/2.7/string.py b/lib-python/2.7/string.py
--- a/lib-python/2.7/string.py
+++ b/lib-python/2.7/string.py
@@ -66,16 +66,17 @@
must be of the same length.
"""
- if len(fromstr) != len(tostr):
+ n = len(fromstr)
+ if n != len(tostr):
raise ValueError, "maketrans arguments must have same length"
- global _idmapL
- if not _idmapL:
- _idmapL = list(_idmap)
- L = _idmapL[:]
- fromstr = map(ord, fromstr)
- for i in range(len(fromstr)):
- L[fromstr[i]] = tostr[i]
- return ''.join(L)
+ # this function has been rewritten to suit PyPy better; it is
+ # almost 10x faster than the original.
+ buf = bytearray(256)
+ for i in range(256):
+ buf[i] = i
+ for i in range(n):
+ buf[ord(fromstr[i])] = tostr[i]
+ return str(buf)
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit