mirror of
https://github.com/wassname/segpy.git
synced 2026-08-12 12:30:30 +08:00
Achieves another 30% increase in trace header reading performance.
This commit is contained in:
+9
-4
@@ -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(
|
||||
|
||||
Reference in New Issue
Block a user