Frage

Haben Sie jemand die kumulative Maximum Funktoids und bemerkte, Performance-Probleme verwendet?

Zusammenfassung
Wenn man den maximalen Wert eines Feldes zur Karte will, kann man das Funktoid Kumulative Maximum verwenden.

Problem
Nachdem wir es für eine Weile benutzt hatte, bemerkten wir, verminderte Leistung auf größere Dateien.

Die Untersuchung der Xslt merkt man, dass die maximale Anzahl der für jede Schleife Aufzeichnung gemacht wird ...

Man könnte die Berechnung die groß Eltern bewegen, und die neue Xslt im Pfad Benutzerdefinierte XSL weist darauf hin, aber ich wirklich die Möglichkeit, in dem Mapping-Tool zur Karte halten mag.

Irgendwelche Vorschläge?

Mit freundlichen Grüßen
Martin Bringen

http://martinbring.blogspot.com

War es hilfreich?

Lösung

Durch das kumulative Maximum Entfernen und Hinzufügen von 3 scripting Funktoiden, die Berechnung in einer anderen Art und Weise zu tun, ist das Problem gelöst. Mapping Zeit um den Faktor 40 verringert.

11 Mb, 10 000 Zeilen, die zuvor in 200 Minuten kartiert wurden nun in 5 Minuten abgebildet wird.

Lösung
Ein Skripterstellungsfunktoid, „Inline XSLT Anruf Template“ ohne Eingabe oder Ausgabe, welche den max () Anteil der Bibliothek von EXSLT Math-Bibliothek gefunden hier . Statt die gesamte Bibliothek der Verwendung dekomprimiert ich die Datei und „extrahiert“ die max () Vorlage.

 <xsl:template name="GetMax">
   <xsl:param name="nodes" /> 

    <xsl:choose>
      <xsl:when test="not($nodes)">NaN</xsl:when> 
      <xsl:otherwise>
        <xsl:for-each select="$nodes">
          <xsl:sort data-type="number" order="descending" /> 
          <xsl:if test="position() = 1">
          <xsl:value-of select="number(.)" /> 
        </xsl:if>
       </xsl:for-each>
     </xsl:otherwise>
   </xsl:choose>
 </xsl:template>

Ein Skripterstellungsfunktoid, „Inline XSLT Anruf Template“ ohne Eingabe oder Ausgabe, eine Variable enthalten, die mit dem Knoten auf die Vorlage Attributpunkte auszuwählen gesetzt berechnen

<xsl:variable name="var:MaxValueDate">
    <xsl:call-template name ="GetMax">
            <xsl:with-param name ="nodes" select="Root//Parent/ValueToCalculate" />
    </xsl:call-template>
</xsl:variable>  

Ein Skripterstellungsfunktoid, „Inline XSLT“ mit einem Ausgang, die Variable mit einem Ausgangselement mit seinem Wert zu füllen.

<OutputElement>
        <xsl:value-of select="$var:MaxValueDate" />
</OutputElement>

Voila!

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top