From 14b64a0596ae71bdd8e9818cdc3ba7a5424b1aab Mon Sep 17 00:00:00 2001 From: devdudumuniz <82589615+devdudumuniz@users.noreply.github.com> Date: Sat, 29 Aug 2026 21:30:32 +0000 Subject: [PATCH] =?UTF-8?q?=E2=9A=A1=20Bolt:=20[performance=20improvement]?= =?UTF-8?q?=20optimize=20=5Fdecode=20string=20logic=20in=20dbf=5Freader?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pysus/data/dbf_reader.py | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/pysus/data/dbf_reader.py b/pysus/data/dbf_reader.py index 4730f48e..7b4b0fff 100644 --- a/pysus/data/dbf_reader.py +++ b/pysus/data/dbf_reader.py @@ -158,12 +158,14 @@ def read_dbf_fast( data = {} for fld in target: col: np.ndarray = records[fld.name] - decoded = np.empty(n, dtype=object) - for i in range(n): - val = col[i] - b = val if isinstance(val, bytes) else val.tobytes() - decoded[i] = _decode(b) - data[fld.name] = decoded + # Optimize decoding loop with list comprehension + data[fld.name] = [ + (b if isinstance(b, bytes) else b.tobytes()) + .decode(_ENCODING, errors="replace") + .replace("\x00", "") + .strip() + for b in col + ] return pd.DataFrame(data) @@ -273,12 +275,14 @@ def stream_dbf_fast( data = {} for fld in schema.fields: col: np.ndarray = records[fld.name] - decoded = np.empty(chunk_n, dtype=object) - for i in range(chunk_n): - val = col[i] - b = val if isinstance(val, bytes) else val.tobytes() - decoded[i] = _decode(b) - data[fld.name] = decoded + # Optimize decoding loop with list comprehension + data[fld.name] = [ + (b if isinstance(b, bytes) else b.tobytes()) + .decode(_ENCODING, errors="replace") + .replace("\x00", "") + .strip() + for b in col + ] yield pd.DataFrame(data)