Domino 9 und frühere Versionen > ND9: Entwicklung
Effektiver Datenabgleich
skywook:
Hallo,
ich müsste zwei Datenbestände vergleichen. Vielleicht habt ihr einen Tipp für mich.
Die Daten sind (beispielhaft) wie folgt aufgebaut:
[Produkt-A]
Inhalt A
Inhalt B
Inhalt C
[Produkt-B]
Inhalt A
Inhalt F
[Produkt-C]
Inhalt A
Inhalt C
Inhalt X
Inhalt Z
usw..
Würde die Daten in ein Array einlesen um diese dann mit dem Bestand des Vormonats zu vergleichen.
Folgende Idee:
Eindimensionaler Array, Aufbau wie folgt:
ProduktA#InhaltA
ProduktA#InhaltB
ProduktB#InhaltA
usw
Bei dieser Idee bin ich bei ca. 200.000 Dimensionen - eventuell ist dann die Verarbeitung zu langsam?
Der zweidimensionale Array fällt aus da die zweite Dimension nicht fest definiert werden kann (oder eventuell die zweite Dimension als Array).
Wäre hier eine Liste oder eine Klasse effektiver?
Tode:
Ich würde mit Listen von Listen arbeiten, das dürfte Performancemässig am besten sein. Damit Du Dir nicht die FInger brichst, würde ich eine Klasse "ListEnhanced" definieren:
--- Code: ---Class ListEnhanced
Public listContent List as Variant
Sub New()
End Sub
--- Ende Code ---
Und dann so:
--- Code: ---Dim listsEnhanced List as ListEnhanced
Forall ProduktName in .... '- irgendwie aufbauen
If Not Iselement( listsEnhanced( ProduktName ) ) then
Set listsEnhanced( ProduktName ) = New ListEnhanced
End If
Forall Inhalt in ...
listsEnhanced( ProduktName ).listContent( Inhalt ) = Inhalt
End Forall
End Forall
--- Ende Code ---
Damit kannst Du dann sehr schnell zwei Listen aus unterschiedlicher Herkunft vergleichen...
Der IsElement- Vergleich bei Listen ist saumässig schnell.
Ralf_B:
Als ich mal vor diesem Problem stand, hab ich mal versucht eine Sortierung (shell sort) zu machen und dann zu vergleichen,
Das hab ich aber recht schnell wieder verworfen, weil das viel Speicher und Zeit gekostet hat.
Ich habe dann eindimensionale Array's aufgebaut (mit Redim) und dann, fast wie empfolen , mit ArrygetIndex vergleichen.
Das passte dann.
Viel Erfolg.
Peter Klett:
Listen sind Arrays eindeutig vorzuziehen, da die nahezu keine Größenbeschränkung kennen
skywook:
Funktioniert, ist wirklich super schnell.
Aber wie Frage ich dann den listContent ab?
Funktioniert das auch mit IsElement oder muss ich diesen mit einer Schleife durchlaufen?
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln