Autor Thema: Don't use GetNthDocument  (Gelesen 3366 mal)

Offline Axel

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Don't use GetNthDocument
« am: 12.04.02 - 08:34:51 »
Hi,

das hab ich heute zufällig gefunden.

Zitat
The GetNthDocument method is widely publicized as the way to loop through a collection.

It works - within a loop, you will progress through a collection and successfully process all documents.

However - on a medium to huge collection, processing speed will deteriorate dramatically.

Why? - because position in the collection is re-established on every GetNthDocument by counting upwards from the first document each and every time. Thus, performance deteriorates as the position increases.

What else then? - Use the GetFirstDocument and GetNextDocument methods in all your collection and see your code speed along!

As a guide, one relatively simple agent running against 110,000 documents took 48+ hours using GetNthDocument and less than 1.5 hours when GetFirstDocument and GetNextDocument was used.


Axel
« Letzte Änderung: 01.01.70 - 01:00:00 von 1034200800 »
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline Till_21

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 708
  • Geschlecht: Männlich
  • I love Germany
Re: Don't use GetNthDocument
« Antwort #1 am: 16.04.02 - 14:01:14 »
Das mag sein, aber:
1) willst du z.b. best. doks loeschen, musst du getnthdocument() verwenden,
2) wer nutzt schon für DB von 110000! Dok-Größe Notes ?
« Letzte Änderung: 01.01.70 - 01:00:00 von 1034200800 »

Offline Axel

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: Don't use GetNthDocument
« Antwort #2 am: 16.04.02 - 14:17:24 »
Hi,

zu 1.

Zum Löschen kannst du auch GetFirstDocument, GetLastDocument, GetNextDocument und GetPreviousDocument verwenden. Das ist sogar in bestimmten Fällen sinnvoller.

Wenn du markierte Dokumente löschen willst geb' ich dir recht.

zu 2.

Warum nicht ?

Axel
« Letzte Änderung: 01.01.70 - 01:00:00 von 1034200800 »
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline Till_21

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 708
  • Geschlecht: Männlich
  • I love Germany
Re: Don't use GetNthDocument
« Antwort #3 am: 18.04.02 - 11:51:52 »
zu 1) hol ich mir mit getfirstdocument ds erste document und loesch dieses mit der methode remove, kann ich nicht mittels set doc = collection.getnextdocument(doc) auf das nächste document verweisen, da die referenz vom objekt doc nicht mehr gegeben ist. merk ich mir das dokument mittels set temp = doc und loesch es nach dem aufruf getnextdocument, hab ich bei 100000 dokumenten auch erheblich längere zeiten.

Gruss / Till
« Letzte Änderung: 01.01.70 - 01:00:00 von 1034200800 »

Offline Axel

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: Don't use GetNthDocument
« Antwort #4 am: 18.04.02 - 12:27:45 »
Hi Till,

ich glaube das bezieht sich nicht unbedingt auf das Löschen, sondern auf Aktualisierungen von Dokumenten.

Axel

« Letzte Änderung: 01.01.70 - 01:00:00 von 1034200800 »
Ohne Computer wären wir noch lange nicht hinterm Mond!

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz