Domino 9 und frühere Versionen > ND8: Entwicklung
Lotus Notes 8.5.2 Skript Verarbeitung ehrheblich langsamer als 7.0.2
Thomas Schulte:
Wenn ich grundsätzlich weiss das das Script läuft, dann bau ich das so um, das es nur noch jedes 1000 ste oder 5000 ste Mal piep sagt. Vor allem dann, wenn ich da Massen von Dokumenten verarbeite. Jeder Print auf dem Server läuft nämlich ins Log und initiiert damit einen Schreibzyklus. Vollkommen egal wie performant das IBM gestaltet hat, das bremst. Und zwar erheblich.
pedsola:
--- Zitat von: rabdos am 02.05.11 - 13:10:01 ---@Batped
Das Skript läuft ja lokal. Oder kann ich da auch den Wert einstellen ?
--- Ende Zitat ---
jep, probiers einfach aus, dann ist die ganze Diskussion vorbei.
Peter Klett:
Auf die 40.000 komme ich, weil Du geschrieben hast, dass Du 1. bis zu 20.000 Elemente hast und 2. Deine Listenelemente von einer Klasse sind, die beim "New" zwei Dokumente als Parameter übergeben bekommen. 2 x 20.000 = 40.000 (so meine vielleicht etwas naive Rechenmethode).
Wenn ich massenhaft Daten von Dokumenten im Speicher halten muss (ich mache das auch mit Listen, ist mein Lieblingskonstrukt in Script), nehme ich Dokumente nur, wenn es nicht anders geht. Meist beschränkt sich das ganze ja auf ein paar Felder pro Dokument. Dann deklariere ich einen eigenen Datentyp
Type meinDatentyp
Datum1 As ...
Datum2 As ...
Datum3 As ...
End Type
und definiere darüber die Liste
Dim meineListe List As MeinDatentyp
Der Zugriff erfolgt dann genauso, als wenn es ein Dokument wäre (evtl. ohne (0), wenn die einzelnen Daten z.B. als String deklariert sind).
rein:
meineListe ("Test").Datum1 = "1"
meineListe ("Test").Datum2 = "2"
meineListe ("Test").Datum3 = "3"
raus:
return = meineListe ("Test").Datum1
Im Ergebnis habe ich die gleichen Daten im Speicher, muss beim Schreiben in den Speicher zwar etwas mehr tun als nur Set meineDokumente ("Test") = doc, verbrauche aber wesentlich weniger Platz. Ist vielleicht nicht wirklich die Ursache Deines Problems, es kann aber nie schaden, auch mit den scheinbar unendlich vorhandenen Ressourcen heutiger Rechner etwas sparsamer umzugehen.
Gespannt bin ich auf das Ergebnis Deines Versuches mit FullTrimFix ...
rabdos:
so komme gerade aus meinem Meeting. Skript war nach 80 Minuten bei 39% und die Speicherauslastung war bei 1,6GB. Also keine wirkliche Veränderung.
@Peter
Dieses Abrechnungsskript ist schon nen paar Jahre alt und funktioniert einwandfrei. Mit der einen Stunde Laufzeit konnte ich immer Leben. Nur mit viel mehr halt nicht. Daher habe ich noch nicht das Bedürfnis gehabt, hier viele Veränderungen vorzunehmen. Immer nur ein paar Erweiterungen halt.
In vielen anderen Skripten die ich so baue, nehme ich auch die Deklaration von eigenen Datentypen vor. Dieses Skript müsste ich halt komplett neu schreiben und das ist schon extrem aufwändig. Wenns nicht anders zu lösen ist, mache ich das auch. Aber ich hoffe das bringt dann auch etwas...wer weiss
Ich habe nu erst einmal den FullTrimFix=0 in die notes.ini eingetragen und das Skript neu gestartet. Das rauswerfen der Fortschrittsanzeige ist dann der nächste Punkt.
Das Problem tritt auch nur bei dieser grossen Anzahl auf. Ich habe noch einen weiteren Lauf für Sonstige Abrechnungen mit ca 1000 Dokumenten, der läuft annähernd so schnell wie vorher -.-
rabdos:
Leider brachte sowohl die Aufnahme von FulltrimFix = 0 als auch das entfernen meiner Fortschrittsanzeige absolut keinen Performanceschub. Das Skript benötigt ziemlich genau 8 Stunden für den Durchlauf unter 8.5.2. Unter Notes 7 benötigt es nicht einmal mehr 1 Stunde. Gleiches Skript auf dem selben Arbeitsgerät...ich verstehe das nicht.
Leider habe ich noch keine Serial vom Teamstudio Profiler bekommen
Navigation
[0] Themen-Index
[#] Nächste Seite
[*] Vorherige Sete
Zur normalen Ansicht wechseln