Autor Beitrag
madmat
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 28



BeitragVerfasst: Mo 29.07.02 01:19 
Hello again....
Mein Problem ist jetzt "nur" noch Geschwindigkeit.
Ich habe jetzt (mit Eurer Hilfe :) ein Programm für stochastische Netzplantechnik erstellt.
Dieses ermittelt in mehreren Durchläufen für verschiedene Verteilungstypen die Ergebnisse, wobei jeder Durchlauf auf den Ergebnissen der Vorgänger basiert.
Das Problem:
Die Ergebnisse werden in die per ADO angebundene Access DB geschrieben und permanent ausgelesen.
Ein Durchlauf dauert dabei zur Zeit ca. 0.7 s (mit OBDC 1,6s!!!)
Und da für jeden Plan zwischen 10.000 - 20.000 Durchläufen nötig sind...nunja, jedesmal knapp 4 Stunden warten ist nicht so prickelnd.
Was kann ich tun um das Ganze zu beschleunigen ?

Bin für jeden Tip dankbar....

_________________
mfg
madmat
Life is what happens while you ´re making other plans
Klabautermann
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Veteran
Beiträge: 6366
Erhaltene Danke: 60

Windows 7, Ubuntu
Delphi 7 Prof.
BeitragVerfasst: Mo 29.07.02 12:35 
Hallo,

wie bereits in Datenbankzugriff mit Delphi erwähnt ist Access nicht das schnellste.
Desweiteren solltest du dir die Frage Stellen, ob du jeden Datensatz sofort in der Datenbank benötigst oder ob du deine Operationen zuerst im Speicher bis zum vollständigen Ende durchführen kannst um sie erst dann zu speichern. Das währe mit sicherheit ein gutes Stück schneller.

Gruß
Klabautermann
madmat Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 28



BeitragVerfasst: Mo 29.07.02 16:01 
Ja, ich weiss.
Bisher hab ich mich aus Bequemlichkeit darum gedrückt, aber jetzt hab ich das Programm umgeschrieben und verwende statt der DB Arrays und Records.

_________________
mfg
madmat
Life is what happens while you ´re making other plans
Klabautermann
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Veteran
Beiträge: 6366
Erhaltene Danke: 60

Windows 7, Ubuntu
Delphi 7 Prof.
BeitragVerfasst: Mo 29.07.02 17:53 
Und wieviel schneller ist es?
madmat Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 28



BeitragVerfasst: Mo 29.07.02 19:34 
Zeitspanne eines einzelnen Durchlaufes nicht mehr messbar :)
Jaja, war schon blöd das Ganze an physische Schreibvorgänge zu binden, Asche auf mein Haupt.
20.000 Durchläufe dauern jetzt ca. 15s, jetzt sitz ich an den Reports....

_________________
mfg
madmat
Life is what happens while you ´re making other plans
Klabautermann
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Veteran
Beiträge: 6366
Erhaltene Danke: 60

Windows 7, Ubuntu
Delphi 7 Prof.
BeitragVerfasst: Mo 29.07.02 23:17 
cool.
Ich finde es immer wieder erschreckend, wie sehr die nebensächlichkeiten (ständiges speichern, oder auch nur Aktualisieren eines Textes auf dem Bildschirm) das eigentliche Programm ausbremsen. Das soll nicht heißen, dass es nicht situationen gibt in denen dieses vorgehen sinvoll ist.

Dann viel Spaß mit deinen Reports.

Klabautermann
Fanatics
Hält's aus hier
Beiträge: 6



BeitragVerfasst: So 11.08.02 00:35 
Titel: Lösung durch TSQL
Welchen Algorithmus verwendest Du für die Berechnung? Ohne Kenntnis hierüber kann ich nur folgenden Vorschlag machen:

1. Auslagerung der DB auf den MSDE (SQL)Server 2000
2. Formulierung des Problems als stored procedure/function mit
tables je Durchlauf

-> die Prozeduren werden 1mal je Durchlauf kompiliert und die Werte nur noch verpointert gespeichert und gelesen (Weniger physikalische Bewegung)