• [^] # Re: C'est bien la peine !

    Posté par . En réponse au journal EDSL et F-algèbres. Évalué à 1.

    En réalité, j'ai mal nommé mes modules : dans tous les cas on a un AST, c'est juste la structure de données pour le représenter qui change. L'encodage de Boeham-Berarducci permet de les représenter dans un langage qui ne possède pas de types inductifs.

    Sinon, la différence de performance semble également dépendre de la complexité des fonctions d'interprétations impliquées. Dans les tests précédents les fonctions étaient simples : l'identité pour les litéraux et l'addition pour les nœuds. En prenant la fonction de pretty printing cela change un peu la donne :

     Name Time/Run mWd/Run mjWd/Run Prom/Run Percentage 
     ----------------------- ---------- ---------- ---------- ---------- ------------ 
     Trav/Ast-Perf:22 9.66s 581.74Mw 308.01Mw 543.01kw 100.00% 
     Trav/Boehmdic-Perf:22 8.57s 581.74Mw 308.01Mw 544.31kw 88.69% 
    

    Là l'arbre a environ 8 millions de nœuds. Pour des arbres parfaits de 2000 à 500_000 nœuds, cela donne :

     Name Time/Run mWd/Run mjWd/Run Prom/Run Percentage 
     ----------------------- ---------- ------------- ------------- ------------ ------------ 
     Trav/Ast-Perf:10 1.07ms 141.98kw 16.83kw 138.88w 0.25% 
     Trav/Ast-Perf:12 4.91ms 568.06kw 106.25kw 556.69w 1.15% 
     Trav/Ast-Perf:14 22.33ms 2_272.39kw 580.68kw 2_255.60w 5.22% 
     Trav/Ast-Perf:16 99.55ms 9_089.71kw 2_945.12kw 8_802.56w 23.26% 
     Trav/Ast-Perf:18 428.06ms 36_359.03kw 14_270.78kw 35_135.02w 100.00% 
     Trav/Boehmdic-Perf:10 1.05ms 141.98kw 16.83kw 141.82w 0.24% 
     Trav/Boehmdic-Perf:12 4.79ms 568.06kw 106.25kw 561.63w 1.12% 
     Trav/Boehmdic-Perf:14 21.06ms 2_272.40kw 580.67kw 2_246.01w 4.92% 
     Trav/Boehmdic-Perf:16 91.97ms 9_089.74kw 2_945.06kw 8_749.15w 21.48% 
     Trav/Boehmdic-Perf:18 415.97ms 36_359.08kw 14_270.81kw 35_170.54w 97.18% 
    

    Et encore, ici il s'agit d'une structure simple : une seule opération binaire. Sur des langages plus riches, si les transformations sur l'arbre sont un peu plus complexes qu'une simple addition, il se peut bien que cette représentation soit plus performante comme le disait Perthmâd pour l'usage qui en est fait dans Coq.

    Sapere aude ! Aie le courage de te servir de ton propre entendement. Voilà la devise des Lumières.