Zum Hauptinhalt springen

Tipps & Tricks: Die Wiederholen-Schleife als Performancekiller

Die Wiederholen-Schleife ist grundsätzlich eine schnelle Funktion, die erst bei mehreren tausend Durchläufen merklich langsam wird. Die derzeitige arcplan-Realisierung bei Zuweisung (wie bei dem Zähler notwendig [OBJx] := [OBJx] +1) führt aber dazu, dass abhängig von der summierten Anzahl der Objekte der geöffneten Dokumente die Laufzeit bei der Zuweisung von Werten anwächst. (Dies ist ein Problem der grundlegenden Programmierung von arcplan Enterprise bei der Ermittlung des Objekts im Objektstack, der alle Objekte aller offenen Dokumente enthält.)  Bei komplexen Anwendungen ist daher die Laufzeit der Wiederholen-Schleife stark erhöht, so dass diese unter Umständen selbst für nur wenige Einträge Sekunden statt Millisekunden läuft. Daher sollten alle Funktionalitäten für eine gute Performance möglichst ohne Wiederholen-Schleife umgesetzt werden.

Nachfolgend ein Beispiel, das häufig mit der Wiederholen-Schleife realisiert wird, obwohl eine Umsetzungsoption mit anderen Formeln existiert.

Der aus Excel bekannte S-Verweis

Der S-Verweis ist durch den Umgang mit Excel bekannt: Sollen Werte aus einer Basis-Tabelle zu abhängigen Werten ermittelt werden, z. B. um einzelne Steuerparameter zu lesen, wird in Excel der S-Verweis genutzt. Einzelne Schlüssel werden angegeben, zu denen die abhängigen Werte ermittelt werden sollen.

In arcplan ist dies auch mit einer Funktion möglich, dies ist aber nicht sofort ersichtlich. Daher wird häufig eine Kombination der Funktionen WIEDERHOLEN und FILTER eingesetzt.

Die arcplan Funktion SCHNITTMENGE als Lösung

Eleganter zu lösen ist dies durch die Funktion SCHNITTMENGE, die den aus Excel bekannten S-Verweis 1:1 nachbilden kann.

 

Beispiel:
beispiel-funktion-schnittmenge

 

Im Beispiel enthält OBJ5 den Schlüssel und OBJ3 den zugehörigen Parameter. In OBJ2 stehen die Schlüssel, für welche die Werte benötigt werden. OBJ4 enthält den eigentlichen S-Verweis, der aus OBJ3 die Werte zugehörig zu den in OBJ2 angegebenen Schlüsseln ermittelt. Diese Funktion kann für mehrere tausend Einträge unabhängig von der Komplexität der Anwendung genutzt werden und bietet auch bei großen Inhalten eine sehr gute Performance.

München
b.telligent Group Holding GmbH
Walter-Gropius-Straße 17
80807 München


Zürich
b.telligent Schweiz GmbH
Kanzleistrasse 57
8004 Zürich