Das Notes Forum

Domino 9 und frühere Versionen => ND9: Entwicklung => Thema gestartet von: snore am 04.01.17 - 16:05:23

Titel: Programmierung über Funktionsformeln -> Geschwindigkeit der Anwendung
Beitrag von: snore am 04.01.17 - 16:05:23
Hallo Forum,
ich habe eine ältere ..damals noch einfach und banal programmierte Anwendung erweitert.
In der Maske stecken irre viele @DbLookup und @DbColumn ...Felder, welche sich Daten aus Ansichten ziehen.
Die Anwendung funktioniert super ... sieht auch gut aus... aber könnte wirklich eine Tick schneller sein.
Hinweis: Läuft auf einem Notes9 Domino-Server.

Gibt's noch generelle Kniffe die DB flotter zu machen ?

Danke
snore
Titel: Re: Programmierung über Funktionsformeln -> Geschwindigkeit der Anwendung
Beitrag von: eknori am 04.01.17 - 16:52:40
Klar, a bisserl was geht immer.

Aber mal ehrlich, wie soll hier irgenjeman Tipps geben, wenn wir die Datenbank und den Code nicht kennen.
Titel: Re: Programmierung über Funktionsformeln -> Geschwindigkeit der Anwendung
Beitrag von: Tode am 05.01.17 - 11:48:49
Mache statt vieler Lookups einen (wenn Du immer mit dem gleichen Schlüssel suchst und nur andere Werte ausliest) und ziehe Dir aus dem die Info, und benutze den Parameter Cache, das sollte schonmal viel bringen


Gesendet von iPad mit Tapatalk Pro
Titel: Re: Programmierung über Funktionsformeln -> Geschwindigkeit der Anwendung
Beitrag von: snore am 05.01.17 - 12:28:46
Servus und Danke soweit!
Den Code hier zu platzieren würde nicht viel bringen. Mir ging es rein pauschal um Möglichkeiten meine vielen berechneten Felder etwas zu optimieren.

Tode -> was kommt da noch hin:
....Mache statt vieler Lookups einen...?

1) Mit den Cache probiere ich, das könnte nicht schlecht sein!
2) Bringt eigentlich "Nach Validierung berechnen" viel ... ich hab' das bisher nie richtig verstanden wann man das brauchen könnte?

Danke
snore
Titel: Re: Programmierung über Funktionsformeln -> Geschwindigkeit der Anwendung
Beitrag von: Klafu am 05.01.17 - 14:23:12
Der Satz war komplett  ;D

Mache aus vielen - einen. Also einen einzigen Lookup.

Chris
Titel: Re: Programmierung über Funktionsformeln -> Geschwindigkeit der Anwendung
Beitrag von: it898ur am 05.01.17 - 14:34:12
Um es etwas konkreter zu machen:
1. In der lookup-Ansicht eine versteckte Spalte einfügen, in der alle benötigten Angaben in einem String verkettet sind
2. Verstecktes Feld am Anfang der Maske, welches einen Lookup ausführt, um alle Angaben aus dieser Spalte zu holen
3. In den einzelnen Feldern dann nur noch mit @Word den jeweiligen Teil aus dem String extrahieren

Gruß

André
Titel: Re: Programmierung über Funktionsformeln -> Geschwindigkeit der Anwendung
Beitrag von: Tode am 05.01.17 - 15:54:05
Grundsätzlich gibt es zwei Möglichkeiten:

1. Spalte mit Werten verkettet:
MeineStrasse~MeinePostleitzahl~MeinOrt~MeineTelefonnummer~MeinFax~MeineMail

Dann machst Du einen Lookup. speicherst das Ergebnis und die Felder selbst haben dann die Formel (Beispiel für Strasse):

Code
@Word( LookupFeld; "~" ; 1 )

Vorteil: Sehr einfach zu codieren, man muss nur zählen können.
Nachteil: bei sehr vielen Werten wird der String unübersichtlich, Mehrfachwerte erfordern zusätzliche Trennzeichen und Implode / Explode

2. Spalte mit Mehrfachwerten:
Strasse=MeineStrasse
Postleitzahl=MeinePostleitzahl
Ort=MeinOrt
telefonnummer=MeineTelefonnummer
Fax=MeinFax
Mail=MeineMail


Auch wieder ein Feld mit dem Lookup, das muss mehrfachwerte erlauben.

In den LookupFeldern steht dann code, der etwa so aussieht:
Code
_myName := @Thisname; 
@Trim( @Right( "#" + LookupFeld; "#" + _myName + "=" ) )

Vorteile:
- Reihenfolge ist egal, die Zuordnung erfolgt über den Feldnamen
- Code in den Feldern ist portabel, weil er sich auf den Feldnamen bezieht, so lange die "Bezeichner" im Lookupfeld genauso heisst wie das Feld, muss man ein neues Feld einfach kopieren, und den Feldnamen anpassen.
- Mehrfachwerte funktionieren direkt (diese tauchen dann ím Lookupfeld einfach mehrfach auf, z.B. so: Telefon=12345; Telefon=45678, und das @Right liefert beide zurück)

Nachteile:
- Etwas komplizierter, overhead im Lookup, weil die Feldnamen mit übertragen werden
Titel: Re: Programmierung über Funktionsformeln -> Geschwindigkeit der Anwendung
Beitrag von: thkn777 am 11.01.17 - 14:39:42
@snore
Ich hatte letztens das Problem, daß die Latenz der Netzwerkverbindung Client-Server recht hoch war. Da überraschend viele Aufrufe z.B. beim Öffnen einer Maske erfolgten, war die Anwendung für diesen Client "lahm".

Mal so Größenordnungen:
- "gute" Latenz <=1ms
- "schlechte" Latenz >40ms

Vielleicht trifft Dich das ja?

Tips:
- Client_Clock=1 in der notes.ini erzeugt ein detailliertes Log
- mit dem Notes RPC Parser (siehe OpenNTF.org) kann man so ein Log sogar analysieren

Viel Erfolg,
Th.