Domino 9 und frühere Versionen > ND8: Entwicklung

Performance - Dokumente durchloopen

(1/2) > >>

AleX_-_:
Hallo zusammen,
kennt jemand eine Möglichkeit mit der man eine NotesDocumentCollection schneller durchloopen könnte?

Im Moment setzte ich immer folgendes ein:
Set nd = nc.Getfirstdocument()
While Not (nd Is Nothing)
  ...
  Set nd = nc.Getnextdocument(nd)
Wend

Dies dauert bei 40.000 Dokumenten schon mal 3 Minuten.

Danke für die Hinweise
AleX

Ralf_M_Petter:
Woher kommt die Notesdocumentcollection?

eknori:
Wenn die collection aus einer View kommt, nimm den ViewNavigator. Viel schneller, weil direkt auf die Werte in der View zurückgegriffen werden kann und nicht erst das Dokument "geöffnet" wwerden muss. Die Spalten müssen dann so aufgebaut werden, daß sie die gewünschten Werte enthalten.

Ralf_M_Petter:
An das habe ich auch gedacht.

Für ein Beispiel:

http://petterralf.blogspot.co.at/2012/04/peformance-trick-beim-durchlesen-von.html

pram:
Unsere Server schaffen in so einer Schleife ~300-600 Dokumente pro Sekunde.
40000/300 wären dann 133 sec. Was > 2 min entspricht und somit deinen Wert bestätigt.

Clients sind hier langsamer und hängen sehr stark von der Netzwerklatenz ab. (Über eine WAN Verbindung mit 40ms Ping Zeit schafft man nur noch in der Größenordnung von 10 Dokumenten)

und wie Ulrich schon schrieb ist der ViewNavigator hier deutlich schneller... so lange man nicht auf entry.document zugreift, sondern nur Spalten ausliest.
Achtung, Stolperfalle: die Rückgabe von "entry.columnvalues(x)" kann entwender ein skalarer Wert sein (wenn nur ein Wert in der Spalte steht) oder ein Array, wenn es sich um Mehrfachwerte handelt und auch tatsächlich mehr als ein Wert vorhanden ist.

Gruß
Roland

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln