Achieves another 30% increase in trace header reading performance.

This commit is contained in:
Robert Smallshire
2015-05-06 10:38:32 +02:00
parent 05b1352730
commit abf093bce2
+9 -4
View File
@@ -123,6 +123,8 @@ class HeaderPacker:
header_format_class.LENGTH_IN_BYTES,
endian)
self._struct = Struct(self._format)
self._one_to_one = all(len(fields) == 1 for fields in self._field_name_allocations)
pass
@property
def header_format_class(self):
@@ -151,11 +153,14 @@ class HeaderPacker:
"""
values = self._struct.unpack(buffer)
kwargs = {name: value
for names, value in zip(self._field_name_allocations, values)
for name in names}
if self._one_to_one:
return self._header_format_class(*values)
else:
kwargs = {name: value
for names, value in zip(self._field_name_allocations, values)
for name in names}
return self._header_format_class(**kwargs)
return self._header_format_class(**kwargs)
def __repr__(self):
return "{}({})".format(