Domino 9 und frühere Versionen > ND6: Entwicklung

[LotusScript] Type Mismatch

<< < (4/6) > >>

koehlerbv:

--- Zitat von: Glombi am 01.03.05 - 20:38:28 ---Leider finde ich den Artikel auch nicht, aber ich kann mich erinnern, dass die Performance der Extended Class Syntax signifikant schlechter ist.

--- Ende Zitat ---

Komisch, keiner findet den Artikel  ;D


--- Zitat von: Glombi am 01.03.05 - 20:38:28 ---Bemerkenswert u.a.:
Using the ColumnValues property is about 10 percent faster than getting a handle to a document and using the extended class syntax-- e.g., x=doc.fieldname.

--- Ende Zitat ---

Bemerkenswert finde ich hier eher die Aussage, dass der Zugriff via ColumnValues nur 10% schneller sein soll, als das Dokument selber auszulesen - immerhin greift man hier auf den ViewIndex zu. Auch mit dieser Aussage wäre ich vorsichtig.

Das wäre was für einen BP-Artikel. In das Thema Massendatenverarbeitung spielt ja noch viel mehr hinein. Wenn es nur um ein Dokument geht, lohnt wegen Millionstel Sekunden die Diskussion sowieso nicht.

Bernhard

Marinero Atlántico:

--- Zitat von: Glombi am 01.03.05 - 20:38:28 ---Bemerkenswert u.a.:
Using the ColumnValues property is about 10 percent faster than getting a handle to a document and using the extended class syntax-- e.g., x=doc.fieldname.

--- Ende Zitat ---

Fragt sich natürlich 10% von was.
Wenn in einem Skript die Zugriffe auf Items insgesamt nur 10% der Zeit ausmachen, ist der Performance-Gewinn insgesamt nur ungefähr 1%.

TMC:
Gesucht, und was gefunden, meinte aber einen anderen Artikel.


--- Code: ---Although we prefer to use the "GetItemValue" method of the NotesDocument object to retrieve a field value, we know that many developers prefer to use the extended syntax to retrieve a field value. If you aren't familiar with the extended syntax, these two statements are equivalent:
result = doc.GetItemValue("MyField")(0)
result = doc.MyField(0)

The true difference between the above statements is performance. The first line will be slightly faster than the second line. In the first line, the LotusScript interpreter knows that "GetItemValue" is a method so it immediately finds the method and runs it. The second line looks to the interpreter like a property, so it tries to find the property. When that isn't found, it says, "oh, it must be a field" and then finds the field. So the first statement is just a little faster. One trial we did ended up with a 4% time savings, but that's not the point of this tip.

If you still would like to use the extended syntax, and have a need to access some reserved fields (like $UpdatedBy or $Ref), if you try to put this statement in your script:
result = doc.$UpdatedBy(0)
The compiler will immediately give you an error:
Unexpected: $UpdatedBy; Expected: Identifier

To access a reserved field with the extended syntax, there's a little trick you can use:
result = doc.~$UpdatedBy(0)

The tilde character in front of the dollar sign satisfies the compiler and the interpreter knows to ignore that tilde when it's going through the code. So it gets the "$UpdatedBy" field off the document.

--- Ende Code ---

Quelle: http://www.breakingpar.com/bkp/home.nsf/0/87256B280015193F87256BD6004B7868

BreakingPar meint: 4%.
Meist also zu vernachlässigen.

Aber aufgrund o.g. Vorteile von GetItemValue IMHO ein kleiner weiterer Grund, GetItemValue immer auszuschreiben. Geht ja auch um Pflege des Codes. Was, wenn sich doch z.B. der Itemname von "Autoren" auf "Authors" ändert? Bei konsequent verwendetem GetItemValue 2 Mausklicks (Suchen/Ersetzen), bei Extended Class Syntax: u.U. sehr viel zu tun. Natürlich sollte man "Authors" eh nicht als Itemname nehmen.

Glombi:

--- Zitat von: Marinero Atlántico am 01.03.05 - 21:10:27 ---Fragt sich natürlich 10% von was.

--- Ende Zitat ---
Von der Zeit denke ich  ;)


--- Zitat ---Natürlich sollte man "Authors" eh nicht als Itemname nehmen.

--- Ende Zitat ---
Warum nicht? Nur interesse halber.

Natürlich sollte man in R5 auch kein Feld Lock nennen  ;D
Tja leider kann man nicht in die Zukunft blicken. Was IBM da so veranstaltet mit reservierten Feldnamen, die kein $$ vorangestellt haben, ist schon sehr nachlässig wenn nicht fahrlässig.

Andreas

TMC:
Da hast Du Recht Andreas: Warum nicht? Eben da Authors auch gleichzeitig eine Property von NotesDocument ist  :P

Schwierig abzuschätzen, welche internen Bezeichnungen IBM in der Zukunft noch einsetzen wird.

Also noch ein Grund für GetItemValue, eben um sicher zu gehen.  :)

Navigation

[0] Themen-Index

[#] Nächste Seite

[*] Vorherige Sete

Zur normalen Ansicht wechseln