Domanda

ha nessuno usato il cumulativo functoid massima e ho notato problemi di prestazioni?

Riepilogo
Se si vuole mappare il valore massimo di un campo è possibile utilizzare la massima cumulativa functoid.

problema
Dopo che avevamo usato per un po 'abbiamo notato un decadimento delle prestazioni su file di grandi dimensioni.

Esaminando la XSLT si nota che il calcolo max è fatto per ogni record loop ...

Si potrebbe spostare il calcolo per il nonno, e sottolineare il nuovo XSLT nel percorso personalizzato XSL, ma mi piace molto per mantenere la possibilità di mappare in strumento di mappatura.

Qualche suggerimento?

Cordiali saluti
Martin Portare

http://martinbring.blogspot.com

È stato utile?

Soluzione

Rimuovendo il massimo cumulativo e aggiungendo 3 functoid di script, facendo il calcolo in un altro modo, il problema è risolto. tempo Mappatura diminuita di un fattore di 40.

11 Mb, 10 000 righe, è stato precedentemente mappati in 200 minuti è ora mappato in 5 minuti.

Soluzione
Un functoid di script, "Inline XSLT chiamata Modello" senza ingresso o uscita, contenente la porzione massima () della libreria da EXSLT libreria matematica trovato qui . Invece di utilizzare l'intera libreria ho scompattato il file e "estratto" il massimo () modello.

 <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>

Un functoid di script, "Inline XSLT chiamata Modello" senza ingresso o uscita, che contiene una variabile che selezionare punti attributo al modello con il nodo impostato per calcolare

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

Un functoid di script, "linea XSLT" con un'uscita, utilizzando la variabile di popolare un elemento di uscita con il suo valore.

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

Voila!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top