Ansicht
Dokumentation

ABENSTRING_EXPR_PERFO - STRING EXPR PERFO

ABENSTRING_EXPR_PERFO - STRING EXPR PERFO

General Material Data   General Material Data  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

- Performance-Hinweis

Wenn auf der rechten Seite einer Zuweisung an eine auf der linken Seite angegebene Variable str vom Typ string in einem Zeichenkettenausdruck Zeichenketten angehängt werden, wird in folgenden Fällen direkt mit der Variable gearbeitet ohne ein Zwischenergebnis zu erzeugen.

  • str &&= dobj1 && dobj2 && ... .
  • str = |{ str }...{ dobj1 [format_options] }...{ dobj2 [format_options] }...|.

Die angehängten Zeichenketten dürfen für den Compiler nicht von str abhängen:

  • Das Zielfeld str darf im Zeichenkettenausdruck nur einmal und nur ganz am Anfang vorkommen.
  • Es dürfen nur direkt angegebene Datenobjekte dobj1, dobj2, ... und keine anderen Ausdrücke oder Funktionen aufgeführt werden, selbst wenn diese nicht von str abhängen.

Die Optimierung wird also etwa in folgenden Fällen aufgehoben:

  • str &&= ... && meth( ... ) && ... .
  • str &&= ... && str && ... .
  • str = |{ str }...{ expr( ... ) }...|.
  • str = |{ str format_options }...|.
  • str = |{ str }...{ str }...|.

Während das Aufheben der Optimierung für nicht zu häufig ausgeführte Zuweisungen in aller Regel unkritisch ist, wird dringend empfohlen, innerhalb von Schleifen nur die optimierbaren Formen zu verwenden, weil der Laufzeitbedarf ansonsten quadratisch mit der Anzahl der Iterationen anwächst. Innerhalb von Schleifen sollten die Ergebnisse von Ausdrücken und Funktionen, die nur dort bestimmt werden können, an Hilfsvariablen dobj1, dobj2, ... zugewiesen und diese verwendet werden.

Hinweis

Wenn keine Optimierung stattfindet, hängt die Laufzeit deshalb quadratisch von der Anzahl an Iterationen ab, da die Länge der Zeichenkette im Zwischenergebnis proportional zur Anzahl der Iterationen anwächst und in jedem Schleifendurchgang in das Ergebnis kopiert werden muss.

Im folgenden Beispiel zur Generierung einer HTML-Datei findet keine Optimierung statt. Die Laufzeit hängt quadratisch von der Anzahl der Iterationen n ab.

Das folgende Beispiel zeigt, wie die Laufzeit durch die Verwendung einer Hilfsvariable optimiert werden kann. Je größer die Zahl n ist, desto größer wird der Laufzeitunterschied zum vorherigen Beispiel.

Verkettung von Zeichenketten






SUBST_MERGE_LIST - merge external lists to one complete list with #if... logic for R3up   SUBST_MERGE_LIST - merge external lists to one complete list with #if... logic for R3up  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Length: 3499 Date: 20240523 Time: 114632     sap01-206 ( 71 ms )