ich schreibe gerade einen Parser für ein bestimmtes Binärfileformat und verwende zum "übersetzen" der Rohdaten struct.unpack.
Das funktioniert auch ganz gut.
Mein Problem: Die Dateien sind relativ groß und ich sitze dann schon mal eine Minute bis die Datei gelesen ist.
Ich habe meinen Code auch schon optimiert (zu Beginn waren es noch 2 Minuten).
Jetzt bin ich an einem Punkt angelangt, an dem der Profiler mir anzeigt: "Mache was an den struct.unpack Aufrufen."
Hier meine Schleife in der ich die Zeit liegen lasse:
Code: Alles auswählen
for i_record in range(1,number_of_records):
start_index=i_record*size_of_DATARECORD+offset_in_record
stop_index=start_index+signal_byte_length
raw_data=raw_data_datablock[start_index:stop_index]
int_data=struct.unpack(fmt,raw_data)[0]
int_data_vec[i_record]=int_data
Meine Frage:
Macht es Sinn das Auspacken in C oder C++ zu implementieren? Wird man da schneller?
Gibt es eine Alternative zu struct.unpack die schneller arbeitet, weil vielleicht weniger Overhead.
Denn eigentlich muss ich nur eine Anzahl von Bytes in integer und float Werte entpacken.
Hat da jemand Erfahrung?
Was ich bräuchte wäre halt sowas wie struct.unpack bloss schneller.
Gruß Marcus