Allgemeine Fragen zur PROFAN Programmierung

Views (Heute): 249303 (10739)

| Suchen
| Zurück zur Übersicht

Autor | Thema: Festplattenzugriff oder Arbeit im Speicher?
Stefan Schnell
| Datum:15.12.01 10:20 (mail@stschnell.de) |
Hallo Community, bin gerade mit folgendem Problem beschäftigt: Habe diverse Datenbanken im ASCII-Format, die ich jede Nacht in einem automatischen Lauf so konvertiere, dass via ODBC darauf zugegriffen werden kann. Insbesondere sind fehlende Satzendezeichen ein Problem. Bisher habe ich jeden Datensatz via BLOCKREAD ausgelesen und mittels BLOCKWRITE wieder geschrieben, ungefähr so: WhileNot Eof() @BlockRead(#1, B#, 0, 324) String B#, 324 = @Chr$(13) + @Chr$(10) BlockWrite #2, B#, 0, 326 EndWhile (Hier ist der Datensatz 324 Bytes lang und wird um $13$10 (CrLf) ergänzt. Jetzt bin ich auf die Idee gekommen, die massiven Festplattenzugriffe, die damit ja stattfinden, zu reduzieren und so eine Performancesteigerung durchzuführen. Dies habe ich mit folgendem Algorithmus versucht: While AnzBytes% = 32400 Clear B# AnzBytes% = @BlockRead(#1, B#, 0, 32400) Clear Pos%, i%, j% While Pos% <= AnzBytes% + i% Pos% = Pos% + 324 + j% BerStr$ = @String$(B#, Pos%) BerStr$ = @Chr$(13) + @Chr$(10) + BerStr$ String B#, Pos% = BerStr$ i% = i% + 2 j% = 2 EndWhile BlockWrite #2, B#, 0, AnzBytes% + i% - 2 EndWhile (Hier werden 100 Datensätze à 324 Bytes eingelesen und CrLf wird entsprechend im Speicher zugefügt und dann werden alle geänderten 100 Datensätze auf einmal wieder zurückgeschrieben.) Leider hat diese Vorgehensweise nicht den gewünschten Effekt. Sind die Routinen (hier Stringaddition, die STRING-Funktion, mathematische Addition und Variablenzuweisung), die verwendet werden, tatsächlich so langsam, wie ein Festplattenzugriff? Da sich meine Routine insgesamt noch in der Entwicklung befindet ist sie sicher nicht optimal. Wie kann ich mein Problem besser und schneller lösen? Bin für jeden Ansatz dankbar. Tschüss Stefan Schnell
Bernd Haase
| Datum:18.12.01 06:52 (info@ebs-haase.de) |
Verstehe ich das richtig, das Du DBs mit BLOCKREAD ausliest und wieder schreibst ?
Stefan Schnell
| Datum: 19.12.01 09:17 (mail@stschnell.de) |
Hallo Bernd, völlig richtig erkannt. Es handelt sich hier um ASCII-DB, eines etwa 10 Jahre alten ERP-Systems. Tschüss Stefan

| Zurück zur Übersicht