Autor Thema: Wie performant sind Listen?  (Gelesen 1654 mal)

Offline pippo

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 580
  • I love YaBB 1G - SP1!
Wie performant sind Listen?
« 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

Offline Thomas Schulte

  • @Notes Preisträger
  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 4.388
  • Geschlecht: Männlich
  • Ich glaub mich tritt ein Pferd
Re: Wie performant sind Listen?
« Antwort #1 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.
Thomas Schulte

Collaborative Project Portfolio and Project Management Software

"Aber wo wir jetzt einmal soweit gekommen sind, möchte ich noch nicht aufgeben. Versteh mich recht, aufgeben liegt mir irgendwie nicht."

J.R.R.Tolkien Herr der Ringe, Der Schicksalsberg

OpenNTF Project: !!HELP!! !!SYSTEM!!  !!DRIVER!!

Skype: thomasschulte-kulmbach

Offline pippo

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 580
  • I love YaBB 1G - SP1!
Re: Wie performant sind Listen?
« Antwort #2 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

Glombi

  • Gast
Re: Wie performant sind Listen?
« Antwort #3 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

Offline pippo

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 580
  • I love YaBB 1G - SP1!
Re: Wie performant sind Listen?
« Antwort #4 am: 16.06.08 - 12:32:12 »
OK - schönen TAG

Offline LN4ever

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 505
  • Geschlecht: Männlich
Re: Wie performant sind Listen?
« Antwort #5 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
Situs vilate in isse tabernit.

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re: Wie performant sind Listen?
« Antwort #6 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
Grüßle Toni :)

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz