Autor Thema: Lotus Notes 8.5.2 Skript Verarbeitung ehrheblich langsamer als 7.0.2  (Gelesen 14066 mal)

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Vielleicht ist es mit v8 aber noch schlimmer geworden, Peter?
Ich halte schon die eine Stunde für 15.000 (IIRC) Dokumente für sehr lange.

Bernhard

Offline rabdos

  • Frischling
  • *
  • Beiträge: 19
  • Geschlecht: Männlich
  • Ich liebe dieses Forum!
So hole ich mir die Dokumente

Code
	Public Sub New(inView As NotesView, inLogFile As LogFile, profil As notesdocument)
		Set logFile = inLogFile	
		
		Dim Doc As NotesDocument
		Dim InstNr As String
		Set Doc = inView.GetFirstDocument()
		While Not (Doc Is Nothing)
			Set item = Doc.GetFirstItem( "$Conflict" )
			'Replizierkonflikte nicht bearbeiten
			If item Is Nothing Then
				
				InstNr = HolFeld(Doc, "KundenNr")
				
				If Iselement(Institute(InstNr)) Then
					Call Institute(InstNr).InsertLeitung(Doc, profil)
				Else
					Set Institute(InstNr) = New Institut(Doc, logFile, profil)
				End If
			End If
			
			Set Doc = inView.GetNextDocument(Doc)
		Wend
	End Sub

Allerdings wusste ich das mit dem GetNth nicht. Das nutzt ich sicherlich in dem einem oder andere Skript   ::)
Das werde ich mir dann einmal merken.
Ich habe den Profiler nun am Start und jetzt auch endlich verstanden wie der funktioniert. Bin gerade in den Tests und Analysen zugange.

Offline pedsola

  • Aktives Mitglied
  • ***
  • Beiträge: 128
  • Geschlecht: Männlich
    • anders und sehr GmbH - Internetagentur und eCollaboration
nochmal kurz zum Verständnis.
Der Agent läuft lokal auf Deinem Notes Client und schreibt dann lokal 6 Dateien raus, richtig ?
Oder läuft da doch irgendwas auf dem Server und wird mit runonserver getriggert ?
Gruß
Pedro

Offline atbits

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 708
  • Geschlecht: Männlich
  • sei Du selbst die Veränderung, die Du Dir wünschst
    • atBits
Schalte mal inView.AutoUpdate = False

Sonst wird ständig der View Index aktualisiert ...

Wenn Du das benötigst würde ich das alle 1000 Dokumente oder so per Script machen.

inView.refresh

Aber vermutlich wirds nicht gebraucht
David Schiffer
================================
atBits GmbH & Co. KG - https://atbits.de
im Einsatz: Lotus Domino 8.5, 9, 10

Offline marschul

  • Senior Mitglied
  • ****
  • Beiträge: 280
  • Geschlecht: Männlich
Sind die Dokumente groß?
Ich hatte nämlich mal ein Problem mit nur sehr wenigen Dokumenten, die waren aber riesig, weil die Anwender Bilder per Copy & Paste und anschließender Skalierung (verkleinern) in die Body-Felder gepackt hatten. Das ist so ziemlich das Uneffektivste, was man machen kann, durfte den Anwendern aber (weil zu kompliziert) nicht abgewöhnt werden (besser wäre Bild vorher auf vernünftige Größe für Bildschirmanzeige runterrechnen und anschließend über Datei \ Importieren in das Feld laden, dann wird's nativ im Richtext abgelegt und das Dok bleibt relativ klein).
Ergebnis war, dass ein Agent, der über alle Dokumente rannte, extrem lange brauchte, weil zum Auslesen von ein paar Feldinhalten (nicht die Richtexte) die Dokumente über die Methode set doc = view.getnextdocument komplett in den Speicher geladen werden.
Lösung:
Habe die relevanten Felder in Spalten einer Suchansicht gepackt und bin über die NotesViewEntries gegangen, d.h. Werte direkt aus dem Ansichtsindex auslesen. Zeitersparnis: Faktor > 100.
Das sollte sich auch auf die hier gezeigte Methode anwenden lassen, es sei denn, die Bremse liegt in der Klasse Institute und den Methoden InsertLeitung bzw. New .
Gruß
Marco

Ich, der ich weiß, mir einzubilden, dass ich weiß, nichts zu wissen, weiß, dass ich nichts weiß. (Sokrates)
Keiner ist unnütz, er kann immer noch als schlechtes Beispiel dienen. (unbekannt)

Offline rabdos

  • Frischling
  • *
  • Beiträge: 19
  • Geschlecht: Männlich
  • Ich liebe dieses Forum!
Ganz genau @Batped

Ich führe das Skript immer in einer Kopie der Datenbank aus, zwecks Sicherheitskopie und Abrechnungen die einmalig stattfinden. Es werden 6 Textdateien geschrieben und 1 Excel Datei.
Aber das schreiben der Dateien findet erst ganz am Ende nach 100% Durchlauf statt. Das zusammenbauen dauert nur nen paar Minuten.
Vorher generiere ich halt die Listen aus denen ich dann die Dateien fülle. Und dieses dauert nun ca 8mal so lang wie unter Notes 7.

@marschul
Es gibt keinen Anhang und die Dokumente sind max 4.000 Byte gross
« Letzte Änderung: 03.05.11 - 13:40:47 von rabdos »

Offline eknori

  • @Notes Preisträger
  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.730
  • Geschlecht: Männlich
Zitat
Schalte mal inView.AutoUpdate = False

Sonst wird ständig der View Index aktualisiert ...

Hat absolut keinen Einfluss auf die Performance; ist lediglich für die NAVIGATION interessant.
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline atbits

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 708
  • Geschlecht: Männlich
  • sei Du selbst die Veränderung, die Du Dir wünschst
    • atBits
@eknori: Bist Du sicher? Ich weiß, dass Deine Tests beim Entwicklercamp das ergeben haben.

Aber: Wie hast Du das getestet? Testserver mit nur dieser Test-DB?
Ich meine auf einem Server unter Last hier schon Unterschiede gehabt zu haben (könnte aber auch mit VirtualDocuments von LEI  + http-Task zu tun gehabt haben).

Wartet LotusScript beim view.getNextDocument nicht darauf, dass der ViewIndex ggf. geupdatet wurde? Falls ja, dann hat es schon einen Impact, denn auf einem Server unter Last flutscht der Update des Viewindex ja nicht mal schnell so durch (zumindest, wenn die View ein paar Dokumente hat).

Ich lasse mich aber gerne eines besseren belehren ...
David Schiffer
================================
atBits GmbH & Co. KG - https://atbits.de
im Einsatz: Lotus Domino 8.5, 9, 10

Offline eknori

  • @Notes Preisträger
  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.730
  • Geschlecht: Männlich
Ich kenne es nur beim GetNextDocument in der ViewNavigator Class.
Wenn du Dokumente in der View BEARBEITEST und dann speicherst, wird der Index beim Fehlen des Eintrags aktualisiert und das kann dann zur Folge haben, das das NextDocument nicht mehr das next Document ist.
Auf die Performance hat das meines Wissens keinen nennenswerten Eindruck, was ja auch die Test gezeigt haben.
Die habe ich sowohl auf meinem Testserver als auch in einer Umgebung unter Last ausgeführt. In letzterer sind die Laufzeiten dann aber über alle Tests verständlicherweise länger.
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline atbits

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 708
  • Geschlecht: Männlich
  • sei Du selbst die Veränderung, die Du Dir wünschst
    • atBits
Klar, gilt nur wenn man selbst oder jemand anderes die Dokumente bearbeitet - Ok sehe schon, das passiert hier nicht, da hast Du Recht ...

Wie auch immer, ich nehme das jetzt mal als neue Erkenntnis mit und werde es beim nächsten mal mit AutoUpdate machen (ich bin gespannt)

Danke - man lernt nie aus!
David Schiffer
================================
atBits GmbH & Co. KG - https://atbits.de
im Einsatz: Lotus Domino 8.5, 9, 10

Offline pedsola

  • Aktives Mitglied
  • ***
  • Beiträge: 128
  • Geschlecht: Männlich
    • anders und sehr GmbH - Internetagentur und eCollaboration
kannst Du das Script denn auch testweise mal auf einem Domino Server laufen lassen mit und ohne FullTrimFix=0 ?
Gruß
Pedro

Offline rabdos

  • Frischling
  • *
  • Beiträge: 19
  • Geschlecht: Männlich
  • Ich liebe dieses Forum!
Ich hab leider mit der Domino Administration nichts am Hut. Daher kann ich serverseitig keine Einstellungen vornehmen.

Ich bin auf jeden Fall immer noch mit dem Profiler am testen. Mit 5000 Dokumenten auch kein Problem, habe auch hier und da schon an der Optimierungsschraube gedreht. Warum hier kein Performanceproblem unter Notes 7 vorliegt weiss ich allerdings nicht. Denn die Anzahl der Abfragen sind die gleichen. Auf einer Kiste unter beiden Version gestartet ist Notes 7 einfach viel viel schneller.
Jetzt habe ich aber das Problem, dass der Profiler wohl selbst Ärger macht bei der Anzahl der Dokumente und der Abfragen und mir zwischendurch mit Fehlermeldung aussteigt.

So wies aussieht werde ich wohl alles ein bisserl überarbeiten müssen. Nur in welche Richtung ich das programmieren soll, weiss ich noch nicht. Ich denke ich werde nen paar Type Definitionen erfinden müssen...

Offline rabdos

  • Frischling
  • *
  • Beiträge: 19
  • Geschlecht: Männlich
  • Ich liebe dieses Forum!
Interessanterweise habe ich das Skript nun so extrem überarbeitet, dass es unter Notes 7 nach 10min Durchlauf fertig ist. Notes 8 benötigt ca 80 Minuten. Anscheinend ist Notes 8 einfach so langsam bei meinen Skripten.
Der Profiler stürzt mir leider mit eine VB Fehlermeldung der nlnotes.exe nach 75% Durchlauf ab. Da habe ich keinen Plan warum.

So kann ich erst einmal wieder damit Leben, auch wenn es ein Unding mit der Laufzeit ist.

Danke euch für eure Mühen

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Dass R8 prinzipiell langsamer ist, kann ich nicht bestätigen - und bin da sicherlich nicht der einzige.
Ich würde hier auf jeden Fall noch tiefer graben - Du musst ja auf irgend etwas gestossen sein, was in R8 eben doch erheblich langsamer abläuft. Und das würde hier noch etliche mehr interessieren - deren Dank Dir dann lange nachschleichen würde  :)

Vorschlag: Log doch in Deinem Code, wann welcher Teil startet. An Hand der geloggten Zeitwerte erkennst Du ja, wo was lahmer läuft als mit dem 7er Client.

Bernhard

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz