IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

XSL/XSLT/XPATH XML Discussion :

Ordre d'exécution des conditions et vitesse de traitement


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 14
    Points : 11
    Points
    11
    Par défaut Ordre d'exécution des conditions et vitesse de traitement
    Bonjour,

    J'effectue une transformation d'un gros fichier XML + XSL -> nouveau XML.

    C'est un très gros XML à la base et la transfo, même sur serveur la nuit en automatisé, prend bien 2 heures quand tout va bien. J'ai encore besoin d'ajouter de nouvelles transfos, y'a donc un moment où ça va devenir vraiment trop long.

    Au niveau de l'organisation du xsl, j'ai déjà bcp optimisé, jonglant entre les variables, when et autres pour gagner du temps de traitement.

    Pour gagner encore plus en vitesse de traitement, j'ai pensé qu'il y aurait peut-être qqchse à faire du côté de l'ordre des conditions.

    Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <xsl:variable name="PremiereVariable">
     <xsl:if test="product[condition 1][condition 2][condition 3][condition 4]">
      <xsl:value-of select="dvd[condition 5][condition 6][condition 7][condition 8]"/>
     </xsl:if>
    </xsl:variable>
     
    <xsl:variable name="DeuxiemeVariable">
     <xsl:if test="product[condition 1B][condition 2B][condition 3B][condition 4B]">
      <xsl:value-of select="dvd[condition 5B][condition 6B][condition 7B][condition 8B]"/>
     </xsl:if>
    </xsl:variable>
    Est-ce qu'en changeant l'ordre des [conditions], on change qqchse ? Par exemple, il y aurait d'abord un test virtuel de la condition 1, si ok, on passe à la 2, puis 3 et enfin 4. Si la 1 n'est pas vérifiée, on saute immédiatement tout le code de la variable, sans aller jusqu'à la 4. Dans ce cas, l'idée serait de placer la condition la plus facile à tester et la plus souvent improbable en premier, et laisser pour la fin les conditions complexes avec des "preceding-sibling" et "contains" à rallonge.

    A moins que la première condition testée soit la dernière de la chaîne ? Ou autre ?

    Merci d'avance

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Hello, il s'est passé pas mal de temps avec les fêtes mais je réponds quand même pour pas laisser la discussion oubliée.

    - La complexité algorithmique est la même, donc une différence de rapidité serait injustifiable... Mais est-ce qu'il y en a une ou pas, tout dépend du moteur XSLT utilisé, évidemment.
    Si on croit vraiment en ce genre d'économies de bouts de ficelle (ou qu'on a un moteur XSLT où elles ont vraiment un effet,) le mieux est plutôt d'avoir un seul prédicat :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:value-of select="dvd[(condition 5) and (condition 6) and (condition 7) and (condition 8)]"/>
    Ça veut dire la même chose, mais si le moteur est naïf ça lui évitera au moins de construire 4 représentations de listes distinctes.

    - Quand on a besoin d'optimiser une transformation XSLT, on ne change pas l'ordre des trucs ou la syntaxe utilisée.

    -- D'abord on regarde si utiliser des clés peut améliorer les choses, et si oui on le fait. Là ça n'a pas l'air d'être le cas.
    -- Ensuite, on remplace XSLT par un programme ad hoc qui fera directement les choses de la manière la plus rapide possible. Les moteurs XSLT n'utilisent pas d'optimisation JIT qui ferait mieux qu'un programmeur.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. Pb ordre d'exécution des procédures
    Par ogeiger dans le forum Windows Forms
    Réponses: 6
    Dernier message: 19/12/2008, 19h44
  2. [TestNG] Ordre d'exécution des tests
    Par crawling5 dans le forum Tests et Performance
    Réponses: 0
    Dernier message: 29/09/2008, 17h01
  3. L'ordre d'exécution des threads
    Par Dosseh dans le forum Modules
    Réponses: 1
    Dernier message: 05/07/2007, 20h24
  4. [URL Rewriting] ordre d'exécution des règles
    Par safisafi dans le forum Apache
    Réponses: 1
    Dernier message: 21/11/2006, 18h52
  5. ordre d'exécution des événements onblur et onfocus
    Par letycaf dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 23/05/2006, 15h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo