1Danke
ERLEDIGT
NEIN
NEIN
ANTWORTEN
4
4
ZUGRIFFE
1912
1912
EMPFEHLEN
-
Guten Tag Tutorials.de Com!
Ich hab ein kleines Problem ein Perlskript unter Windows auszuführen.
In dem Skript wird eine Textdatei(ca 70 MB) eingelesen und mittels join() zu einem String zusammengepackt. Darin suche ich dann mittels der index()-Funktion.
Das Problem ist, dass ich nach kurzer Zeit einen "Out of Memory!"-Error bekomme.
Mein Windows-PC hat 3 GB RAM. Da sollten 70MB bzw. 140MB doch eigentlich kein Problem sein, oder?
Auf meinem Netbook mit nur 1GB RAM (Linux-System) funktioniert es auch einwandfrei. Nur unter Windows eben nicht.
Vll hat ja jemand eine Idee woran das liegen könnte.
Gruss,
Ole
p.s.
hier nochmal die entsprechende Codestelle:
Code :1 2 3 4
open(F, "./Chromosomes/chr1.fasta") || die(); @fastacontent = <F>; $fastacontent[0] = ""; $joinedFasta = lc(join("", @fastacontent));
-
23.08.10 09:24 #2
- Registriert seit
- Jun 2007
- Ort
- Passau (Niederbayern)
- Beiträge
- 1.394
Hallo,
auf die Schnelle hat mir Google folgendes geliefert:
http://www.unix.com/shell-programmin...mory-perl.html
So wie der eine in dem Thread liest du die ganze Datei auf einem Schlag ein und arbeitest dann damit. Dies ist sehr ineffizient, du solltest die Datei lieber in Stücken einlesen und dann nach und nach verarbeiten.
Mal grob geschätzt braucht dein Script für die Daten mindestens 4x soviel RAM, wahrscheinlich sogar mehr.
Bei 100 MB Daten macht das 400 MB, bei 500 MB Daten sind es schon 2 GB.
Gruß
BKGeändert von Bratkartoffel (23.08.10 um 09:27 Uhr)
Über eine gute Bewertung freut sich jeder ;)
Bitte erledigte Threads als "Erledigt" markieren.
"Though a program be but three lines long, someday it will have to be maintained.''
-- Geoffrey James, "The Tao of Programming"
-
Ja das würde es erklären. Habe es inzwischen auch so umgeschrieben dass ich while(<F>){} benutze um die Datei zu durchsuchen.
Trotzdem vielen Dank für deine Antwort. Wieder was gelernt
-
Auch wenn das Problem schon gelöst ist: Für die Bearbeitung von FASTA-Dateien gibt es verschiedene Module auf CPAN, wie z.B. BioPerl[1] (das eine ganze Palette an Modulen für Bioinformatik-Anwendungen bietet) und Bio::FASTASequence[2] / Bio::FASTASequence::File[3]
Mit solchen Modulen lässt sich sehr häufig sehr viel Arbeit sparen...
[1] http://search.cpan.org/dist/BioPerl
[2] http://search.cpan.org/dist/Bio-FASTASequence
[3] http://search.cpan.org/dist/Bio-FASTASequence-File
-
Werd ich mir auch mal anschauen. Vielen Dank für den Tipp
Ähnliche Themen
-
Memory Error
Von Zack im Forum PHPAntworten: 6Letzter Beitrag: 19.12.08, 23:27 -
Memory Error
Von Duellking im Forum PHPAntworten: 3Letzter Beitrag: 31.07.07, 09:41 -
Fatal error: Allowed memory...
Von em3L im Forum PHPAntworten: 26Letzter Beitrag: 06.05.07, 15:22 -
Memory Error
Von rayinstructor im Forum 3D Studio MaxAntworten: 4Letzter Beitrag: 18.01.05, 17:05 -
Out of Memory error
Von MiRaMC im Forum JavaAntworten: 7Letzter Beitrag: 02.12.04, 15:48





Zitieren

Login





