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
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-->