Removing interning of IBMFloat instances gives a 20% performance improvement reading trace data.

This commit is contained in:
Robert Smallshire
2015-05-06 12:50:45 +02:00
parent fd35fd4cd6
commit 05ecd3423e
-13
View File
@@ -174,11 +174,6 @@ class IBMFloat(Real):
__slots__ = ['_data']
_INTERNED = {IBM_ZERO_BYTES: None,
IBM_NEGATIVE_ONE_BYTES: None,
IBM_POSITIVE_ONE_BYTES: None}
# noinspection PyUnresolvedReferences
def __new__(cls, b):
obj = object.__new__(cls)
@@ -187,16 +182,8 @@ class IBMFloat(Real):
if num_bytes != 4:
raise ValueError("{} cannot be constructed from {} values".format(cls.__name__, num_bytes))
obj._data = data
# Intern common values
if data in cls._INTERNED:
if cls._INTERNED[data] is None:
cls._INTERNED[data] = obj
return cls._INTERNED[data]
return obj
@classmethod
def from_float(cls, f):
"""Construct an IBMFloat from an IEEE float.