Archiv

TechInfo

Schneller ohne Sortierung

By Dirk Bergles

An mehreren Stellen im CMS ist es erforderlich Daten zu sortieren. Z.B. bei Datenquellen, welche in Notes Datenbanken suchen und ein unsortiertes Ergebnis erhalten. Nun hat es sich gezeigt das das Sortieren per LotusScript ein Zeitfresser ist.
Es wurde ein konkretes Beispiel verglichen und analysiert. Eine unsortierte Liste mit 129 Elementen. Egal mit welchem Sortieralgorithmus die anschließende Sortierung der Daten erfolgte, sie benötigt im Schnitt 3 Sekunden.
Was für den Seitenaufbau eine Ewigkeit bedeutet.

Nun versuchen wir etwas neues. Da der Schlüssel zum Sortieren bereits beim Erhalt der Daten bekannt ist, fügen wir die Daten in eine sortierte Liste ein. Also quasi eine Pointerliste.
Ein Element besitzt einen Nachfolger und einen Vorgänger. Wird ein neues Element eingefügt, so werden die Pointer auf neuen Nachfolger einfach geändert.
Mit dieser Methode ließen sich die 129 Elemente in 0,7 Sekunden sortieren.

Herauszufinden wäre nun noch ab welcher Anzahl sich wieder ein Sortieralgorithmus lohnt.

Diese Änderung fließt zunächst in die CMS Version 8.05 0 ein.

Archiv

TechInfo

Sortierungsgeschwindigkeit und Kategorien

By Dirk Bergles

Da haben wir Lotus Script leider etwas verfrüht eine langsame Sortierung vorgeworfen. Der drastische Zeitunterschied zwischen einer herkömmlichen Sortierung und dem Aufbau einer verketteten Liste, bzw. eines Binärbaums ist auf einen Messfehler zurückzufürhen. Das heißt wir bleiben bei der Sortierung.


Dann haben wir der Anforderungsliste für die CMS Version 8.05 0 die Lösung des 32K Fehlers bei übergroßen Kategorielisten für News, Events und Items hinzugefügt. Wir werden also aller Voraussicht nach die Einstellungen der Kategorien in ein neues Setting verlagern, welches die Kategorien, bzw. die XML Struktur in einem RichTextFeld erlaubt. An allen Stellen wo diese Kategorien ausgewertet werden oder zur Auswahl angeboten werden, werden wir dann die @Formeln ersetzen oder umgehen müssen und den Script Code entsprechend anpassen.
Da die Kategroien auch zur Zugriffssicherheit herangezogen werden ist in diesem Bereich natürlich eine sensible Entwicklung und intensive Testphase vorgesehen.

Tags:
Alle Tags