Autor Thema: LotusScript - Lazy Evaluation?  (Gelesen 2083 mal)

Offline m3

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.102
  • Geschlecht: Männlich
  • Non ex transverso sed deorsum!
    • leyrers online pamphlet
LotusScript - Lazy Evaluation?
« am: 21.12.07 - 15:51:02 »
Könnte mir bitte jemand bestätigen, dass LotusScript KEINE "Lazy Evaluation" kennt?

Sehe ich das richtig, dass er bei Code wie
Code
if( (vergleich1) AND (vergleich2) AND (vergleich3) ) Then ...
IMMER alle drei Vergleiche durchführt, auch wenn der Erste schon falsch war?
HTH
m³ aka. Martin -- leyrers online pamphlet | LEYON - All things Lotus (IBM Collaborations Solutions)

All programs evolve until they can send email.
Except Microsoft Exchange.
    - Memorable Quotes from Alt.Sysadmin.Recovery

"Lotus Notes ist wie ein Badezimmer, geht ohne Kacheln, aber nicht so gut." -- Peter Klett

"If there isn't at least a handful of solutions for any given problem, it isn't IBM"™ - @notessensai

Glombi

  • Gast
Re: LotusScript - Lazy Evaluation?
« Antwort #1 am: 21.12.07 - 16:04:37 »
Ist zwar schon ne Weile her, aber ich glaube Notes 2 hat das standardmäßig gemacht.

Versuche es doch mal mit @V2If und einem Evaluate.

Andreas

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: LotusScript - Lazy Evaluation?
« Antwort #2 am: 21.12.07 - 16:09:15 »
Ich habe mal einen Test gemacht und auch einen Term wie Du erstellt, Martin. Die dritte Bedingung war sehr aufwändig, damit sich das auch ordentlich messen liess. Wenn ich Bedingung 1 und Bedingung 2 so eingestellt hatte, dass dieser Vergleich schon fehlschlagen musste, reduzierte sich die Laufzeit (innerhalb einer Schleife, damit man auch was zu messen hat) dramatisch.

Einen Beleg habe ich nicht zur Hand, aber nach meiner Erfahrung: Lazy evaluation kann auch LotusScript.

Bernhard

Offline ZaLudtske

  • Senior Mitglied
  • ****
  • Beiträge: 319
  • Geschlecht: Männlich
  • carpe diem
Re: LotusScript - Lazy Evaluation?
« Antwort #3 am: 21.12.07 - 16:13:52 »
Hallo,

ich kann mich daran erinnern, dass ich einen Artikel mal gelesen habe, dass Notes keine Lazy Evaluation macht. Man sollte statt dessen die Abfragen aufsplitten. Ich glaube das war in einem Artikel von Rocky Oliver zur Performance-Steigerung oder vielleicht bei Wild Bill Buchan.

Rainer
Rainer Zaske

MCSD - C#

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: LotusScript - Lazy Evaluation?
« Antwort #4 am: 21.12.07 - 16:20:37 »
Ich möchte hier nochmal betonen: Echte Belege habe ich nicht. Der Test ist auch länger her, und normalerweise splitte ich Abfragen auch immer auf. Ich sollte die "staade Zeit" nutzen, den Test zu wiederholen bzw. genauer zu evaluieren.
Ich bin gespannt, ob jemand einen wirklichen Beleg findet.

Bernhard

PS: Welche Erfahrung treibt mich eigentlich dazu, boolsche Operationen sowieso immer nach Möglichkeit zu splitten? Ich muss da nochmal in mich gehen ...

Offline Skorpi

  • Junior Mitglied
  • **
  • Beiträge: 79
  • Geschlecht: Männlich
Re: LotusScript - Lazy Evaluation?
« Antwort #5 am: 21.12.07 - 16:35:24 »
In dem Redbook "Performance Considerations for Domino Applications" (http://www.redbooks.ibm.com/redbooks/pdfs/sg245602.pdf) wird die Aussage getroffen, dass alle Bedingungen in einem If-Statement ausgewertet werden, auch wenn die Erste bereits FALSE ergibt (siehe Kaptiel 3 Programming Considerations - Language Performance - LotusSript).

Kein, Lazy Evaluation!

Also am besten einfache If's verwenden und diese ineinander verschachteln. Laut dem Redbook kann das zu einer Beschleunigung von bis zu 40% führen.

Code
If a=x Then
  If b=y Then
    If c=Z Then
    ...
Gruß

Fabian

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: LotusScript - Lazy Evaluation?
« Antwort #6 am: 21.12.07 - 16:45:27 »
DANKE, Fabian!

Und ich muss dringend diesen Test von vor x Jahren auf CD aufstöbern, um zu sehen, welchen Mist ich damals gemacht habe (oder ich erinnere mich heute falsch).

Ich glaube, derart schief habe ich hier seit langem nicht mehr gelegen (und gut, das ich es für guten Stil halte, die Konditionen sowieso einzeln abzuarbeiten und hierbei die zu erwartende Wahrscheinlichkeit "vorherzuahnen").

Bernhard

Offline m3

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.102
  • Geschlecht: Männlich
  • Non ex transverso sed deorsum!
    • leyrers online pamphlet
Re: LotusScript - Lazy Evaluation?
« Antwort #7 am: 21.12.07 - 17:00:35 »
@Andreas: LotusSCRIPT, nicht Formelsprache. Formelsprache hat Lazy Evaluation.
@Skorpi: Danke für den Pointer. In der Hilfe hab ich dazu nämlich leider nix gefunden.

Die Performancesteigerung durch die Verschachtelung ist mir wurscht, aber durch diese wüsten If-Kosntrukte wird der Code IMHO sehr unlesbar.

Sei es wie es sei, danke für Euren Input.
HTH
m³ aka. Martin -- leyrers online pamphlet | LEYON - All things Lotus (IBM Collaborations Solutions)

All programs evolve until they can send email.
Except Microsoft Exchange.
    - Memorable Quotes from Alt.Sysadmin.Recovery

"Lotus Notes ist wie ein Badezimmer, geht ohne Kacheln, aber nicht so gut." -- Peter Klett

"If there isn't at least a handful of solutions for any given problem, it isn't IBM"™ - @notessensai

Offline flaite

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.966
    • mein del.icio.us
Re: LotusScript - Lazy Evaluation?
« Antwort #8 am: 21.12.07 - 17:31:46 »
Die Performancesteigerung durch die Verschachtelung ist mir wurscht, aber durch diese wüsten If-Kosntrukte wird der Code IMHO sehr unlesbar.
Yup. Bei Performance Optimierungen sollte man immer schauen, ob das auch tatsächlich etwas bringt. In Ausnahmefällen kann das Fehlen von boolean short circuit Operators* (Boolsche Abkürzungs Operatoren [meine freie Übersetzung]) was bringen. Normal aber nicht. Ausnahme ist, wenn diese in einer Schleife stehen, die öfters durchlaufen wird.
Einfache Lesbarkeit des Code ist eben auch wichtig.
Und vor frühzeitiger Optimierung wird immer gewarnt.

* so heisst das in Java
Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz