Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: pippo am 16.06.08 - 12:19:01

Titel: Wie performant sind Listen?
Beitrag von: pippo am 16.06.08 - 12:19:01
Hallo,
wenn ich NOtesdocumente in Listen ablege, um später darauf zuzugreifen, wie wird das im Speicher abgelegt?
--------------------------------------------------
Dim listDoc List As NotesDocument
Set listDoc(doc.ID...) = doc
...
--------------------------------------------------
habe verschiedene Test gemacht, und mir kommt vor, dass ich damit schneller bin, als wenn ich jedesmal über getdoc... das Doc hole.

schönen Tag
Titel: Re: Wie performant sind Listen?
Beitrag von: Thomas Schulte am 16.06.08 - 12:21:42
Das ist logisch das die schneller sind.
Schließlich legst du das Doc dann ja direkt im Speicher ab.
Titel: Re: Wie performant sind Listen?
Beitrag von: pippo am 16.06.08 - 12:28:42
Ja, OK.

Aber: wenn die Docs nun auch mehrere MB groß sind???
Wird da alles im Speicher abgelegt?
Auch der INhalt der Richtextfelder?
Oder wird da was referenziert?

schönen TAG
Titel: Re: Wie performant sind Listen?
Beitrag von: Glombi am 16.06.08 - 12:29:42
Sieh mal hier:

http://www.nsftools.com/tips/PerfTips.htm

Use DocumentCollections
If you're working with a large number of NotesDocuments, don't create an array or list of NotesDocument objects -- this uses a lot of memory. Either use a DocumentCollection/NotesDocumentCollection or create an array/list of NoteIDs and access the documents as needed using the NoteIDs.


Ich würde die Dokumente auch nicht im Speicher halten.

Der Titel "Wie performant sind Listen?" ist etwas irreführend. Listen an sich sind eine tolle Sache, insb, wenn man etwas dynamisch machen will. Dann haben die gegenüber Redim (Preserve) Arrays echte Vorteile.

Andreas
Titel: Re: Wie performant sind Listen?
Beitrag von: pippo am 16.06.08 - 12:32:12
OK - schönen TAG
Titel: Re: Wie performant sind Listen?
Beitrag von: LN4ever am 16.06.08 - 12:39:37
Lieber "Schönen Tag" - ist ja schon ein komischer Name,

die Obergrenze für die Summe aller List-Elemente, die gleichzeitig von einem Server Task verarbeitet werden können, liegt, so ich mich dunkel erinnere, derzeit bei 60.000. Korrigiert mich, wenn ich falsch liege. Aber diese Grenze gibt es definitiv - und da ist schon mancher Entwickler von Superprogrammen dran gescheitert, wenn er von einer Test- auf eine Echt-DB gehen wollte.

Gruß

Norbert
Titel: Re: Wie performant sind Listen?
Beitrag von: ata am 19.06.08 - 12:02:56
Zitat
die Obergrenze für die Summe aller List-Elemente, die gleichzeitig von einem Server Task verarbeitet werden können, liegt, so ich mich dunkel erinnere, derzeit bei 60.000.

... das widerspricht sich mit meiner Praxis - ich habe List im Einsatz mit weit über 150.000 Einträgen.

Der Vorteil von List ist, daß sie im Gegensatz zu einem Array über den Wertebereich Integer hinausgeht. Was man aber nicht machen sollte ist NotesObjekte in List aufnehmen - also Dim List_Docs List As NotesDocument - oder derartiges - hier ist bei ca 12.000 Dokumenten bereits Schluß - dann steht der Server... ::)

Die 150.000 Einträge lese ich übrigens aus einer Textdatei in etwas mehr als 1 Minute in die List ein und kann dann mit der List arbeiten (If IsElement( MyList( "IndexString" ) ) Then... ) - und habe noch einige Verzweigungen und Operationen zur Behandlung des Strings - so viel zur Performance... ;D

Toni