Thread 2 Arrays abwechselnd miteinander "verbinden" (12 answers)
Opened by Ensretted at 2008-07-23 17:09

Dubu
 2008-07-26 14:50
#112776 #112776
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
@Ensretted: Ich glaube, du bist dir gar nicht bewusst, wie ineffizient deine erste Lösung ist! Dort liest du die gesamten 2 GB (oder wieviel auch immer) erstmal in ein Array ein, obwohl deiner Aussage nach die '00'- und '20'-Zeilen nur einen ganz kleinen Teil der Daten ausmachen. Das verbraucht immens viel Speicher (deutlich mehr als 2 GB RAM, je nach mittlerer Zeilenlänge auch das Doppelte) und dauert ziemlich lang. Perl muss halt immer wieder mehr Speicher reservieren für das Array. Wenn dein Rechner dann noch anfängt zu swappen, wartest du vielleicht Stunden darauf, dass er mit dem Einlesen fertig wird. Dann kopierst du die von dir benötigten Daten nochmal in extra Arrays, womit deren Speichermenge nochmal dazu kommen. Und grep selbst ist zwar effizient, aber das heißt nicht, dass man es immer bevorzugen sollte. Vor allem, da du hier sehr gut die Daten schon beim Einlesen auf das Sinnvolle begrenzen kannst.

Nein, nein, da ist sicherlich jede Lösung besser, die die Datei zeilenweise einliest und nur die relevanten Zeilen behält. Und schneller sollte sie auch sein. Hast du es mal verglichen? Vielleicht hast du gar nicht gemerkt, wie viel Zeit perl mit dem Einlesen der Datei verbringt? Zehn Sekunden für 2 GB mit Linuxers Code halte ich für ziemlich fix. Wie lange brauchte denn dein Code, nur der Teil der da schon steht? Oder hast du das Programm noch beim Einlesen abgebrochen, weil sich vorgeblich nichts tat? ;-)

View full thread 2 Arrays abwechselnd miteinander "verbinden"