Autor Beitrag
Sylvus
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 195



BeitragVerfasst: Mo 24.08.09 16:09 
hay Leute, ich hab ein einfaches Programm, wo ich verschiedene Stellung speicher und abrufe!
Also der Programmablauf ist der folgende:

- Baue Stellung nach einem Algorithmus auf
- Vergleiche Stellung mit allen vorhandenen
- Speicher Stellung ab, falls sie noch nicht bekannt ist!

Das ganze Funktioniert zur Zeit mit IniFiles die unegfähr so aussehen:

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
[1]
1=2
2=8
3=17
...
19=27
[2]
1=3
...
[223]
...


das ganze ist nur verdammt langsam :) Also ihn 200 Stellungen finden zu lassen dauert schon einige Minuten!
Darum jetzt die Frage:
ist es damit getan, auf FastIniFiles auszuweichen, oder sollte ich das alles ganz anders anpacken?
Wie vergleiche ich am effizientesten die Stellungen miteinander?
Und sonstige noch Tips?

:) das ganze ist jetzt etwas abstahiert, aber das Prinzip bleibt das gleiche, ich kann auch gerne Ausschnitte des momentanen Quellcodes posten, aber ich will euch nicht verwirren :)

Grüße Sylvus
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10184
Erhaltene Danke: 1259

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Mo 24.08.09 16:19 
Moin!

Zuerstmal: du greifst beim Vergleichen doch nicht etwa jedes mal auf die Platte zu, oder? Du solltest schon deine Daten möglichst in einer geeigneten Struktur im RAM halten und nur beim Start/Ende/Anforderung auf die Platte schreiben/lesen. :idea:

Klar bringen FastIniFiles hier was (da sollte sogar TMemIniFile schon für reichen ;)), aber das ist wohl nicht der entscheidende Tipp. Falls die "Stellungen" beim Vergleich als statisch zu betrachten sind, kannst du einfach einen Hash-Wert aus einer Stellung berechnen und diese vergleichen, das sollte schon sehr schnell gehen. Wenn eine "Stellung" allerdings Isomere hat (es also einen Algorithmus geben muss, der die Gleichheit berechnet), dann nutzt dieser Trick natürlich nix. :nixweiss:

Eine DB ist dafür nicht unbedingt notwendig, IMHO.

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
mkinzler
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 4106
Erhaltene Danke: 13


Delphi 2010 Pro; Delphi.Prism 2011 pro
BeitragVerfasst: Mo 24.08.09 16:20 
Schadet aber auch nicht.

_________________
Markus Kinzler.
Sylvus Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 195



BeitragVerfasst: Mo 24.08.09 16:29 
na im Moment ist die Platte dran :D
ok ich denke mit nem hash könnte ich weiter kommen, ist aber im Moment nichts, DB würd ich nur benutzten, wenns wirklich nötig ist :P

Wie mache ich das ganze jetzt am besten Virtuell?
Also ich lese die Daten am Anfang einmal ein und schreib sie am Ende einmal wieder rauf.
Dazwieschen benutz ich immer nur das Array, was ich dann über Setlength erweitern muss?
Oder macht man das eleganter?

Grüße Sylvus


//geht super :P
Dann noch FastIniFiles und das Thema ist gegessen :D
Danke euch^^

Achso nur aus Interesse, hast du mal nen Link, wie das mit dem Hash geht?
Also sich einfach nen String ausdenken, wo alle Informationen drinstehen und dann Strings vergleichen?