Das Notes Forum

Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: AleX_-_ am 15.01.13 - 11:18:56

Titel: Performance - Dokumente durchloopen
Beitrag von: AleX_-_ am 15.01.13 - 11:18:56
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
Titel: Re: Performance - Dokumente durchloopen
Beitrag von: Ralf_M_Petter am 15.01.13 - 11:29:41
Woher kommt die Notesdocumentcollection?
Titel: Re: Performance - Dokumente durchloopen
Beitrag von: eknori am 15.01.13 - 11:32:02
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.
Titel: Re: Performance - Dokumente durchloopen
Beitrag von: Ralf_M_Petter am 15.01.13 - 11:40:36
An das habe ich auch gedacht.

Für ein Beispiel:

http://petterralf.blogspot.co.at/2012/04/peformance-trick-beim-durchlesen-von.html
Titel: Re: Performance - Dokumente durchloopen
Beitrag von: pram am 15.01.13 - 11:42:00
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
Titel: Re: Performance - Dokumente durchloopen
Beitrag von: AleX_-_ am 15.01.13 - 12:32:12
Danke für die Info. Das mit den NotesViewEntry war mir bereits bekannt.
Ich muss aber die Collection über '.search' laden, da ich ganz verschiedene Suchanforderungen auf die Datenbank habe.