[pypy-commit] pypy default: kill few lines of hacks here - net result named tuple >2x faster
fijal
noreply at buildbot.pypy.org
Sat Feb 2 15:26:51 CET 2013
Author: Maciej Fijalkowski <fijall at gmail.com>
Branch:
Changeset: r60816:4237a1dca2e8
Date: 2013-02-02 16:25 +0200
http://bitbucket.org/pypy/pypy/changeset/4237a1dca2e8/
Log: kill few lines of hacks here - net result named tuple >2x faster
diff --git a/lib-python/2.7/collections.py b/lib-python/2.7/collections.py
--- a/lib-python/2.7/collections.py
+++ b/lib-python/2.7/collections.py
@@ -6,7 +6,6 @@
__all__ += _abcoll.__all__
from _collections import deque, defaultdict
-from operator import itemgetter as _itemgetter
from keyword import iskeyword as _iskeyword
import sys as _sys
import heapq as _heapq
@@ -298,7 +297,7 @@
_fields = %(field_names)r \n
def __new__(_cls, %(argtxt)s):
'Create new instance of %(typename)s(%(argtxt)s)'
- return _tuple.__new__(_cls, (%(argtxt)s)) \n
+ return tuple.__new__(_cls, (%(argtxt)s)) \n
@classmethod
def _make(cls, iterable, new=tuple.__new__, len=len):
'Make a new %(typename)s object from a sequence or iterable'
@@ -323,14 +322,13 @@
'Return self as a plain tuple. Used by copy and pickle.'
return tuple(self) \n\n''' % locals()
for i, name in enumerate(field_names):
- template += " %s = _property(_itemgetter(%d), doc='Alias for field number %d')\n" % (name, i, i)
+ template += " %s = property(lambda self: self[%d], doc='Alias for field number %d')\n" % (name, i, i)
if verbose:
print template
# Execute the template string in a temporary namespace and
# support tracing utilities by setting a value for frame.f_globals['__name__']
- namespace = dict(_itemgetter=_itemgetter, __name__='namedtuple_%s' % typename,
- OrderedDict=OrderedDict, _property=property, _tuple=tuple)
+ namespace = {'__name__': 'namedtuple_%s' % typename}
try:
exec template in namespace
except SyntaxError, e:
More information about the pypy-commit
mailing list