Thread auswerten einer Binärdatei - Größe 2GB (2 answers)
Opened by Gast at 2004-08-10 12:26

Gast Gast
 2004-08-10 12:26
#85657 #85657
Hallo,
habe großes Problem, will Binärdatei von einer Größe 2GB bearbeiten. Nehme mir dabei immer 16 Byte = einem Informationsblock und lege ihn als Element in einem Feld ab.
Dann erfolgt ein Feldzugriff über foreach bei dem ich den Informationsblock spalte/ wandle/ prüfe/ kennzeichne und in ein multihash einlese um elemente bestmöglich abzulegen und diese dann zeilenweise in mehrere Dateien zu schreiben

hier meine eineleseroutine

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
################################################################################
sub read_in
{
   my ($botschaft_bin) = "\x00" x 16;


open FILE, "CCO_Quelldatei/Trigger/RC0.CCO");
binmode (FILE);

       seek (FILE, 1024, 0);

until (substr($botschaft_bin,0,5) eq "\xFF" x 5 && $botschaft_bin ne "\xFF" x 16)
{

       ######################################################################
  #Einlesen einer Botschaft des cco.files -> i.O.
    read (FILE, $botschaft_bin, 16);

       ######################################################################
  #Triggerabfrage und Speichern
      if (substr($botschaft_bin,5,1) eq "\x40") {
        push(@triggerzeitpunkt, substr($botschaft_bin,0,5));
       }

  ######################################################################
  #in der Botschaftsstruktur abspeichern

       push (@botschaften_gesamt, $botschaft_bin);
  }
close (FILE);
}
################################################################################  


-ist das multihash als struktur zu langsam?
-wie lese ich noch schneller ein?
-ist das kopieren vom Array in multihash (wie oben beschrieben) zu langsam?
-muss ich Arbeitstpeicherplatz beachten oder puffert Perl für mich?
-wie beschleunige ich vom Ablauf her, den Code?

danke=)

Edit: Code-Tags eingefuegt, -Dubu-\n\n

<!--EDIT|Dubu|1092130795-->

View full thread auswerten einer Binärdatei - Größe 2GB