AtNotes Übersicht Willkommen Gast. Bitte einloggen oder registrieren.
22.02.17 - 23:35:11
Übersicht Hilfe Regeln Glossar Suche Einloggen Registrieren
News:
Schnellsuche:
+  Das Notes Forum
|-+  Lotus Notes / Domino 9
| |-+  ND9: Entwicklung (Moderatoren: Axel, eknori, Glombi, Thomas Schulte, koehlerbv, m3)
| | |-+  Programmierung über Funktionsformeln -> Geschwindigkeit der Anwendung
« vorheriges nächstes »
Seiten: [1] Nach unten Drucken
Autor Thema: Programmierung über Funktionsformeln -> Geschwindigkeit der Anwendung  (Gelesen 436 mal)
snore
Junior Mitglied
**
Offline Offline

Beiträge: 86


« 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
Gespeichert
eknori
@Notes Preisträger
Moderator
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 10616


No guts, No glory!!


WWW
« Antworten #1 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.
Gespeichert

Gruß Ulrich (eknori) Krause

"Reich wird man nicht durch das, was man verdient, sondern durch das, was man spart"

pulmonale Hypertonie e.V.
Tode
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 5624


Geht nicht, gibt's (fast) nicht... *g*


« Antworten #2 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
Gespeichert

Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen...

Mit jedem Tag meines Lebens erhöht sich zwangsweise die Zahl derer...
... denen ich am AdminCamp ein Bier schulde... Wenn ich hier jemanden angehe: Das ist nie persönlich, sondern immer gegen die "Sparwut" der Firmen gedacht, die ungeschultes Personal in die Administration unternehmenskritischer Systeme werfen... Sprecht mich einfach am AdminCamp an, ich zahle gerne zur "Wiedergutmachung" das ein oder andere Bierchen an der Bar
snore
Junior Mitglied
**
Offline Offline

Beiträge: 86


« Antworten #3 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
Gespeichert
Klafu
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 1825


Remember the Cookies!


« Antworten #4 am: 05.01.17 - 14:23:12 »

Der Satz war komplett  Grin

Mache aus vielen - einen. Also einen einzigen Lookup.

Chris
Gespeichert

„Der einzige Mensch, der sich vernünftig benimmt, ist mein Schneider. Er nimmt jedesmal neu Maß, wenn er mich trifft, während alle anderen immer die alten Maßstäbe anlegen in der Meinung, sie paßten auch heute noch...“
it898ur
Senior Mitglied
****
Offline Offline

Beiträge: 436


« Antworten #5 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é
Gespeichert
Tode
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 5624


Geht nicht, gibt's (fast) nicht... *g*


« Antworten #6 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
Gespeichert

Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen...

Mit jedem Tag meines Lebens erhöht sich zwangsweise die Zahl derer...
... denen ich am AdminCamp ein Bier schulde... Wenn ich hier jemanden angehe: Das ist nie persönlich, sondern immer gegen die "Sparwut" der Firmen gedacht, die ungeschultes Personal in die Administration unternehmenskritischer Systeme werfen... Sprecht mich einfach am AdminCamp an, ich zahle gerne zur "Wiedergutmachung" das ein oder andere Bierchen an der Bar
thkn777
Aktives Mitglied
***
Offline Offline

Beiträge: 156


« Antworten #7 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.
Gespeichert
Seiten: [1] Nach oben Drucken 
« vorheriges nächstes »
Gehe zu:  


Einloggen mit Benutzername, Passwort und Sitzungslänge

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006, Simple Machines Prüfe XHTML 1.0 Prüfe CSS
Impressum Atnotes.de - Powered by Syslords Solutions - Datenschutz | Partner: