Thread Spreadsheet::WriteExcel Spreadsheet::ParseExcel: Resourcenverwendung?
(21 answers)
Opened by GoodFella at 2007-04-04 02:24
Nach 5 Monaten Arbeit, die ich auf das Programmieren eines auf Spreadsheet::WriteExcel und Spreadsheet::ParseExcel basierenden Tools verwandt habe, ist mir jetzt beim betatesten der enorme Speicherverbrauch aufgefallen.
Zum Testen las ich eine 46.000 Zeilen x 20 Spalten lange Exceltabelle ein und speicherte diese sogleich wieder, ohne die Daten zusätzlich in einem Perl-Array zu haben. Das fras 1,05 GigaByte Arbeitsspeicher. Das System war ausserdem 30min lang nicht mehr richtig ansprechbar, dann jedoch hatte es die Datei gespeichert, waren 19MB, naja, schon gross für eine Exceldatei, allerdings kann Excel ja bis zu 65.500 Datensätze. Als ich mir dann mal angesehen habe, wie es mit der Validität des Inhalts steht, hab ich echt Angst bekommen, das ganze umsonst programmiert zu haben: So in ca. Zeile 7000 stehen komische Umbrüche, dann Daten aus den nächsten Spalten, dann eine Leerspalte, dann wieder normale Daten (im Vergleich zu den Originaldaten, wo alles stimmt). Das tritt zum Glück nicht bei Dateien kleiner als (geschätzt) 32.000 Zeilen auf, ist einfach die Anzahl an Datensätzen, bei dem per try & error alles noch gestimmt hat. Achja, Windows hat eine Warning wegen zu wenig virtuellem Arbeitsspeicher, der vergrössert wird, ausgegeben. Jetzt zu meinen Fragen: 1. Wie kann ich den Speicherverbrauch minimieren? (Ich weiss, das Ding benutzt Storage_Lite, also muss es daran liegen?) 2. Hat jemand schonmal Datenmüll mit diesen Modulen bekommen? Also Datenmüll, der ausschliesslich von diesen Modulen produziert wurde, wie in meinem Fall das Excel-Format nicht eingehalten wurde für ein paar Datensätze mittendrin. Umsteigen auf Win32::OLE ist schon insofern vorbereitet, als dass ich jegliches Lesen/Schreiben mit zentralen Funktionen mache; allerdings hätte ich lieber etwas OpenOffice-kompatibles. Gruss Pete |