<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet title="XSL formatting" type="text/xsl" href="http://www.shadoware.org/feed/rss2/xslt" ?><rss version="2.0"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:wfw="http://wellformedweb.org/CommentAPI/"
  xmlns:content="http://purl.org/rss/1.0/modules/content/"
  xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
  <title>Shadoware.Org - Mot-clé - xml</title>
  <link>http://www.shadoware.org/</link>
  <atom:link href="http://www.shadoware.org/index.php/feed/tag/xml/rss2" rel="self" type="application/rss+xml"/>
  <description>Moi, mes idées, mes logiciels ...</description>
  <language>fr</language>
  <pubDate>Mon, 06 Feb 2012 15:38:11 +0100</pubDate>
  <copyright>Ulrich VANDENHEKKE</copyright>
  <docs>http://blogs.law.harvard.edu/tech/rss</docs>
  <generator>Dotclear</generator>
  
    
  <item>
    <title>XINX v0.10.1</title>
    <link>http://www.shadoware.org/post/XINX-v0.10.1</link>
    <guid isPermaLink="false">urn:md5:9724be160d0bd6ff2bd95468ae56238e</guid>
    <pubDate>Tue, 03 May 2011 18:46:00 +0200</pubDate>
    <dc:creator>Ulrich Van Den Hekke</dc:creator>
        <category>XINX</category>
        <category>egx</category><category>generix</category><category>generix group</category><category>libre</category><category>logiciel</category><category>qt</category><category>xinx</category><category>xml</category><category>xsl</category>    
    <description>&lt;p&gt;Bonjour à tous,&lt;/p&gt;


&lt;p&gt;Je suis heureux de vous annoncer la nouvelle version de &lt;a href=&quot;http://xinx.shadoware.org?piwik_campaign=20110504_0.10.1_blog&quot; hreflang=&quot;fr&quot; title=&quot;Site internet de XINX&quot;&gt;XINX&lt;/a&gt;. Cette version apporte, en plus de la ré-écriture complète de la gestion du contenu et de la complétion, son petit lot de nouveautés et de corrections.&lt;/p&gt;


&lt;p&gt;La version &lt;em&gt;0.10.1&lt;/em&gt; est beaucoup plus stable que sa grande soeur &lt;em&gt;0.9&lt;/em&gt;. Un soin particulier a été apporté à la recherche des sources d'anomalie possible, ainsi que des fuites mémoires. Ces opérations ont été faites grâce à des outils tels que &lt;a href=&quot;http://valgrind.org/&quot; hreflang=&quot;en&quot;&gt;valgrind&lt;/a&gt;, mais aussi grâce aux béta-testeurs (Merci à eux).&lt;/p&gt;


&lt;p&gt;De plus l'utilisation des pointeurs intelligents de &lt;a href=&quot;http://qt.nokia.com/&quot; hreflang=&quot;en&quot; title=&quot;Nokia Qt&quot;&gt;Qt&lt;/a&gt; ont permis de passer plus de temps, sur la gestion des structures et moins de temps sur la gestion de la mémoire, sur des parties du code assez critiques (comme ContentView et CodeCompletion). Ils ont également permis un partage plus facile des structures entre les différents threads avec moins de contrôle de synchronisation.&lt;/p&gt;


&lt;h3&gt;Liens&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://xinx.shadoware.org?piwik_campaign=20110504_0.10.1_blog&quot; hreflang=&quot;fr&quot; title=&quot;Site Internet de XINX&quot;&gt;Site Internet de XINX&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://xinx.shadoware.org/wiki/Download?piwik_campaign=20110504_0.10.1_blog&quot; hreflang=&quot;fr&quot; title=&quot;Téléchargement de XINX&quot;&gt;Téléchargement de XINX&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://xinx.shadoware.org/newticket?piwik_campaign=20110504_0.10.1_blog&quot; hreflang=&quot;fr&quot; title=&quot;Reporter un ticket&quot;&gt;Faire une demande d'évolution ou reporter un bug&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;    &lt;h3&gt;Gestion Projet et Gestion des sessions&lt;/h3&gt;


&lt;h4&gt;Multi-projet&lt;/h4&gt;


&lt;p&gt;&lt;img src=&quot;http://www.shadoware.org/public/billets/xinx/projectDirectory10.png&quot; alt=&quot;Project Directory v0.10.1&quot; style=&quot;float:right; margin: 0 0 1em 1em;&quot; title=&quot;Project Directory v0.10.1, mai 2011&quot; /&gt;
&lt;strong&gt;XINX&lt;/strong&gt; est maintenant capable d'ouvrir plusieurs projets en même temps. Cela permet donc plusieurs choses&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Rechercher un fichier pouvant se trouver dans plusieurs projets différents (par exemple un projet trunk et un projet branche).&lt;/li&gt;
&lt;li&gt;Comparer des fichiers venant de plusieurs projets différents.&lt;/li&gt;
&lt;li&gt;Ne pas basculer d'un projet à l'autre en continu, lorsque l'on travaille sur plusieurs projets en même temps.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A cause de cette gestion de plusieurs projets en même temps, toute la partie de gestion de projet de XINX a été ré-écrite (entre autre la partie concernant la session, que l'on verra ensuite).&lt;/p&gt;


&lt;p&gt;De plus à l'ouverture du projet, l'application recherche l'ensemble des fichiers présents sur le disque afin de permettre une recherche beaucoup plus rapide. Cela a néanmoins quelques répercussions&amp;nbsp;: il n'est pas possible de supprimer un dossier du projet sans fermer XINX.&lt;/p&gt;


&lt;h4&gt;Inclusion / Exclusion de chemin&lt;/h4&gt;


&lt;p&gt;Afin d'avoir une vue propre, XINX affiche déjà uniquement les fichiers qu'il est capable de gérer. Il est également possible de lui définir une liste de chemin qu'il doit ignorer.&lt;/p&gt;


&lt;p&gt;Exemple&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;WEB-INF/lib&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;dico&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;configuration&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;img src=&quot;http://www.shadoware.org/public/billets/xinx/.projectpropertyIncludeExclude10_m.jpg&quot; alt=&quot;Project Property v0.10.1&quot; style=&quot;display:block; margin:0 auto;&quot; title=&quot;Project Property v0.10.1, mai 2011&quot; /&gt;&lt;/p&gt;


&lt;p&gt;Il est possible d'utiliser des expressions régulières pour définir ces chemins.&lt;/p&gt;


&lt;p&gt;A l'inverse il est possible d'inclure un dossier externe au projet directement dans la vue de celui-ci. L'équivalent d'un lien symbolique mais propre au projet sous XINX. Il est alors possible d'inclure dans le dossier projet, un répertoire temporaire contenant les données utilisées par les feuilles de styles, ou inclure un dossier contenant des fichiers de logs, ...&lt;/p&gt;


&lt;h4&gt;Sessions&lt;/h4&gt;


&lt;p&gt;&lt;img src=&quot;http://www.shadoware.org/public/billets/xinx/.welcomDialog10_s.jpg&quot; alt=&quot;Welcom Dialog v0.10.1&quot; style=&quot;float:left; margin: 0 1em 1em 0;&quot; title=&quot;Welcom Dialog v0.10.1, mai 2011&quot; /&gt;
Suite à la gestion du multi-projet, il a fallu ré-écrire le système de gestion des sessions. Il est maintenant plus proche des systèmes de session des autres applications.&lt;/p&gt;


&lt;p&gt;Alors que sur la version &lt;em&gt;0.9&lt;/em&gt; et précédente, la session était directement associée à un projet (et donc ouverte en même temps), maintenant la session est séparée de la notion de projet.&lt;/p&gt;


&lt;p&gt;Une session peut alors désormais contenir une liste de projet ouvert, une liste de fichier ouvert (associé ou non à un projet), des signets. Plusieurs sessions différentes peuvent pointer vers un même projet mais proposer une vue (un ensemble de fichier ouvert) différente. Une session par défaut est créée pour l'utilisation courante de l'application.&lt;/p&gt;


&lt;h3&gt;Modification du système de complétion&lt;/h3&gt;


&lt;p&gt;&lt;img src=&quot;http://www.shadoware.org/public/billets/xinx/.Completion10_m.jpg&quot; alt=&quot;Code Completion v0.10.1&quot; style=&quot;float:right; margin: 0 0 1em 1em;&quot; title=&quot;Code Completion v0.10.1, mai 2011&quot; /&gt;
Le système de vue contenue et de code complétion a complètement été ré-écrit. La lecture des différents imports des différents fichiers est faite en mémoire (et non plus dans une base de donnée SQL) et en parallèle (s'il y a plusieurs processeurs sur la machine). La lecture des fichiers est ainsi plus rapide. Le système a complètement été ré-écrit pour que la complétion du code soit rapide et stable en même temps.&lt;/p&gt;


&lt;p&gt;La complétion du code affiche désormais les différentes lignes dans des catégories suivant leur emplacement (par exemple le fichier où se trouve chaque template), les snipets dans une catégorie différente...&lt;/p&gt;


&lt;p&gt;XINX est maintenant capable également de compléter&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;les paramètres des templates du type call-template&lt;/li&gt;
&lt;li&gt;les imports (proposition des différents fichiers, et des alias si le plugin Generix est activé)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;et plein d'autres choses &lt;img src=&quot;/dotclear/themes/default/smilies/smile.png&quot; alt=&quot;:)&quot; class=&quot;smiley&quot; /&gt;&lt;/p&gt;


&lt;h3&gt;Et plein d'autres nouveautés&lt;/h3&gt;

&lt;h4&gt;Utilisation de la librairie SVN directement&lt;/h4&gt;


&lt;p&gt;Un nouveau plugin pour SubVersion a été écrit. Ce plugin utilise directement les librairies de SubVersion au lieu d'utiliser l'exécutable svn. Ce plugin est plus performant que le wrapper et ne nécessite pas l'installation d'un client SubVersion (tel que &lt;a href=&quot;http://www.collab.net/downloads/subversion/&quot; hreflang=&quot;en&quot;&gt;CollabNet SubVersion&lt;/a&gt; sous Windows ou le client svn sous linux.&lt;/p&gt;


&lt;p&gt;L'ancien plugin est toujours disponible et utilisable.&lt;/p&gt;


&lt;h4&gt;Créer des tickets depuis XINX&lt;/h4&gt;


&lt;p&gt;&lt;img src=&quot;http://www.shadoware.org/public/billets/xinx/.TicketCreation10_m.jpg&quot; alt=&quot;Create Ticket v0.10.1&quot; style=&quot;display:block; margin:0 auto;&quot; title=&quot;Create Ticket v0.10.1, mai 2011&quot; /&gt;&lt;/p&gt;


&lt;p&gt;Une boite de dialogue permet maintenant de créer automatiquement un compte et un ticket sur le site Internet de XINX. Vous pouvez ainsi créer facilement des demandes d'évolution, des demandes de correction, ...
De plus lors de la sortie d'une nouvelle version, XINX vous informera automatiquement qu'une nouvelle version est disponible.&lt;/p&gt;


&lt;h4&gt;Dock des logs et des erreurs&lt;/h4&gt;


&lt;p&gt;&lt;img src=&quot;http://www.shadoware.org/public/billets/xinx/.ErrorLog10_m.jpg&quot; alt=&quot;Error dock v0.10.1&quot; style=&quot;display:block; margin:0 auto;&quot; title=&quot;Error dock v0.10.1, mai 2011&quot; /&gt;&lt;/p&gt;


&lt;p&gt;Le dock d'affichage des erreurs a été amélioré pour ne plus perturber l'utilisateur en s'ouvrant de façon intempestive. Il est maintenant possible de définir que le dock doit rester fermé, un compteur affiche alors le nombre d'erreur .&lt;/p&gt;


&lt;h4&gt;Modification de la recherche&lt;/h4&gt;


&lt;p&gt;&lt;img src=&quot;http://www.shadoware.org/public/billets/xinx/.SearchDock10_m.jpg&quot; alt=&quot;Search Dock 10&quot; style=&quot;float:right; margin: 0 0 1em 1em;&quot; title=&quot;Search Dock 10, mai 2011&quot; /&gt;&lt;/p&gt;


&lt;p&gt;Suite à la gestion du multi-projet, XINX peut maintenant rechercher dans plusieurs projets en même temps. Il est aussi possible d'arrêter la recherche en plein milieu.&lt;/p&gt;


&lt;h4&gt;Validation d'un fichier XML&lt;/h4&gt;


&lt;p&gt;XINX peut également valider un fichier XML à partir d'un schéma. Il ne peut malheureusement pas encore valider de fichier XSL (les parseurs XSL trouvés n'arrivent pas à lire les schémas des fichiers XSLT).&lt;/p&gt;


&lt;h4&gt;Correction de bugs&lt;/h4&gt;


&lt;p&gt;Beaucoup de corrections de bug ont été faites ce qui rend cette version très stable.&lt;/p&gt;


&lt;h3&gt;Et pour la suite&amp;nbsp;?&lt;/h3&gt;


&lt;p&gt;Dans la même série, j'ai l'intention de sortir une version avec de nouveaux modèles, de la documentation, ....&lt;/p&gt;


&lt;p&gt;Pour la version suivante, le moteur JavaScript sera amélioré pour ne plus donner d'erreur, voir proposer de la complétion plus performante.&lt;/p&gt;</description>
    
    
    
          <comments>http://www.shadoware.org/post/XINX-v0.10.1#comment-form</comments>
      <wfw:comment>http://www.shadoware.org/post/XINX-v0.10.1#comment-form</wfw:comment>
      <wfw:commentRss>http://www.shadoware.org/feed/atom/comments/644</wfw:commentRss>
      </item>
    
  <item>
    <title>Parseur XML</title>
    <link>http://www.shadoware.org/post/2009/05/06/Parseur-XML</link>
    <guid isPermaLink="false">urn:md5:c38e3e38c95811c208acff03641cdefb</guid>
    <pubDate>Sun, 31 May 2009 23:13:00 +0200</pubDate>
    <dc:creator>Ulrich Van Den Hekke</dc:creator>
        <category>Performances</category>
        <category>performance</category><category>planet</category><category>qt</category><category>xml</category>    
    <description>&lt;p&gt;Bonjours à tous,&lt;/p&gt;


&lt;p&gt;L'utilisation des fichiers XML est, à ce jour, un fait dans la plupart des logiciels et est fortement à la mode. Une entreprise qui ne fait pas un peu de XML est souvent &lt;em&gt;has-been&lt;/em&gt;. On utilise alors le XML à bon ou mauvais escient.&lt;/p&gt;    &lt;style&gt;
th {
background-color: #E4E4E4;
weigh: bold;
}
.veryslow {
background-color: #FF0000;
}
.slow {
background-color: #FF8686;
}
.good {
background-color: #C3FFC7;
}
.ignored {
background-color: #E4E4E4;
}
&lt;/style&gt;


&lt;h3&gt;Avantages / Inconvénients&lt;/h3&gt;


&lt;p&gt;Pourquoi utiliser les fichiers XML&amp;nbsp;? Les fichiers XML sont, pour commencer, des fichiers textes, il seront donc toujours lisibles, ce qui garantit une meilleur pérennité de l'information. Les fichiers XML sont structurés hiérarchiquement et suivent une syntaxe stricte. Ainsi le XML est lisible informatiquement par les différents langages de programmation existant, pour organiser vos données, en utilisant différents niveaux. Les fichiers XML peuvent être commenté ce qui peut améliorer la lisibilité pour un humain.&lt;/p&gt;


&lt;p&gt;Le gros inconvénient du XML est sa verbosité. Pour chaque noeud dans la hiérarchie, il y a une balise de début, et une balise de fin contenant le nom de la balise. Le fichier est moins compact que s'il avait été écrit en binaire. Cela peut poser des problèmes comme alourdir les communications réseaux (ex: pour les webservices). Le fichier est aussi plus long à lire qu'un fichier binaire et peut contenir des erreurs.&lt;/p&gt;


&lt;p&gt;Si le fichier n'a pas besoin d'être hiérarchique, il est possible d'utiliser une structure de fichier INI pour ses données.&lt;/p&gt;


&lt;p&gt;Nous nous arrêterons là pour les avantages/inconvénients. L'utilisation ou non d'un fichier XML est ensuite une question (besoin, éthique, ...) à se poser pour ses données et la nécessité de pouvoir les lire autrement que par le programme lui-même.&lt;/p&gt;


&lt;h3&gt;Performance des parseurs.&lt;/h3&gt;


&lt;p&gt;Je me suis amusé à effectuer le test de lecture de différents fichiers de donnée au format XML de taille différentes par une variété de parseur XML en construisant si possible un arbre DOM. Le but est donc de créer un objet par noeud/attribut du fichier XML et de reconstituer la hiérarchie.&lt;/p&gt;


&lt;p&gt;Les parseurs choisis pour ce test sont&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;QtXml&lt;/strong&gt;&amp;nbsp;: Le module XML de la librairie Qt (de la société Nokia)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;LibXml2&lt;/strong&gt;&amp;nbsp;: Une librairie C permettant de faire du parsing XML en utilisant DOM ou SAX&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;LibExpat&lt;/strong&gt;&amp;nbsp;: Un parseur orienté flux (plus proche de la méthode SAX que du DOM)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SCEW&lt;/strong&gt;&amp;nbsp;: Un parseur basé sur Expat générant un arbre DOM (donc un peu plus comparable aux autre parseur).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;TinyXML&lt;/strong&gt;&amp;nbsp;: Encore un autre parseur XML&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Xerces-C++&lt;/strong&gt;&amp;nbsp;: Le parseur XML d’Apache&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Oracle XML Parser&lt;/strong&gt;&amp;nbsp;: Le parseur d’Oracle propriétaire utiliser dans le serveur d’application.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Pour faire cette suite de benchmark&lt;sup&gt;[&lt;a href=&quot;http://www.shadoware.org/post/2009/05/06/Parseur-XML#pnote-620-1&quot; id=&quot;rev-pnote-620-1&quot;&gt;1&lt;/a&gt;]&lt;/sup&gt;, j’ai utilisé la librairie QTestLib de Nokia/Qt. Je vous offre donc en avant première le résultat de ce test&amp;nbsp;:&lt;/p&gt;

&lt;table&gt;
&lt;caption&gt;Temps de lecture d'un fichier XML en ms&lt;/caption&gt;
&lt;tr&gt;
  &lt;td/&gt;
  &lt;th&gt;250k&lt;/th&gt;
  &lt;th&gt;9300k&lt;/th&gt;
  &lt;th&gt;11300k&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;th&gt;Qt DOM&lt;/th&gt;
  &lt;td class=&quot;veryslow&quot;&gt;41,42 ms&lt;/td&gt;
  &lt;td class=&quot;veryslow&quot;&gt;2184,34 ms&lt;/td&gt;
  &lt;td class=&quot;veryslow&quot;&gt;2648,71 ms&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;th&gt;LibXML2&lt;/th&gt;
  &lt;td&gt;16,55 ms&lt;/td&gt;
  &lt;td class=&quot;good&quot;&gt;710,09 ms&lt;/td&gt;
  &lt;td class=&quot;good&quot;&gt;874,42 ms&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;th&gt;Expat (SAX)&lt;/th&gt;
  &lt;td class=&quot;ignored&quot;&gt;5,95 ms&lt;/td&gt;
  &lt;td class=&quot;ignored&quot;&gt;312,02 ms&lt;/td&gt;
  &lt;td class=&quot;ignored&quot;&gt;393,58 ms&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;th&gt;Oracle&lt;/th&gt;
  &lt;td&gt;23,24 ms&lt;/td&gt;
  &lt;td&gt;928,93 ms&lt;/td&gt;
  &lt;td&gt;1135,86 ms&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;th&gt;Scew&lt;/th&gt;
  &lt;td class=&quot;good&quot;&gt;12,05 ms&lt;/td&gt;
  &lt;td&gt;944,37 ms&lt;/td&gt;
  &lt;td&gt;1184,46 ms&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;th&gt;Tiny XML&lt;/th&gt;
  &lt;td class=&quot;slow&quot;&gt;28,91 ms&lt;/td&gt;
  &lt;td class=&quot;slow&quot;&gt;1101,8 ms&lt;/td&gt;
  &lt;td class=&quot;slow&quot;&gt;1369,8 ms&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;th&gt;Xerces (Apache)&lt;/th&gt;
  &lt;td&gt;25,03 ms&lt;/td&gt;
  &lt;td&gt;742,22 ms&lt;/td&gt;
  &lt;td&gt;904,62 ms&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;



&lt;p&gt;La conclusion de ce résultat signifie que le parseur inclu dans Qt (pour la construction d'un arbre DOM) est très lent ;). Mais pour une utilisation dans une interface graphique, sur de petits fichiers, ne devrait pas poser de problème.&lt;/p&gt;


&lt;p&gt;Enfin le parseur le plus rapide (pour les gros fichiers) est Libxml2. Le parseur C d'oracle, bien que propriétaire n'a rien d'exceptionnel (si on compte avec les problèmes présenté également ci-dessous). Peut-être que la version Java est elle plus performante.&lt;/p&gt;


&lt;p&gt;Vous pouvez retrouver quelques graphiques ci-dessous&amp;nbsp;:&lt;/p&gt;


&lt;p&gt;&lt;img src=&quot;http://www.shadoware.org/public/billets/xmlparser/.TestXMLPerf_m.jpg&quot; alt=&quot;TestXMLPerf.png&quot; style=&quot;display:block; margin:0 auto;&quot; title=&quot;TestXMLPerf.png, mai 2009&quot; /&gt;&lt;/p&gt;


&lt;h3&gt;Le source du benchmark&lt;/h3&gt;


&lt;p&gt;Vous pouvez trouver attaché au billet, le source de l'application ayant servi au bench. Pour la partie utilisation du Parseur Oracle, il a fallut contourner plusieurs petits problèmes. Ceci est la joie des librairies propriétaires bien documentées.&lt;/p&gt;


&lt;h4&gt;Compilation avec le XDK 9&lt;/h4&gt;


&lt;p&gt;Lors de la compilation avec le XDK 9, l'application ne dépasse pas le stade du &lt;em&gt;linkage&lt;/em&gt;. Les méthodes sont pourtant bien dans les &lt;em&gt;includes&lt;/em&gt;. De plus les librairies sont bien précisées pour le &lt;em&gt;linkage&lt;/em&gt;.&lt;/p&gt;


&lt;p&gt;La définition faite dans le projet est&amp;nbsp;:&lt;/p&gt;
&lt;pre&gt;
XDKPATH = xdk9
XDK_LIB = -lxmlg9 -lxml9 -lxsd9
ORA_LIB = -lcore9 -lnls9 -lunls9 -lcore9 -lnls9 -lcore9
NET_LIB = -lnsl
LIBS += -L$$XDKPATH/lib $$XDK_LIB $$ORA_LIB $$NET_LIB -lpthread
INCLUDEPATH += $$XDKPATH/xdk/include
&lt;/pre&gt;


&lt;p&gt;A la suite de ça, lors de la phase de compilation, on se retrouve avec les messages d'erreurs suivants&amp;nbsp;:&lt;/p&gt;
&lt;pre&gt;
g++ -Wl,-O1 -o xmlparserbenchmark libxml2parser.o expatparser.o xercescppparser.o oracleparser.o qtparser.o scewparser.o tinyparser.o tinyxml.o tinystr.o tinyxmlerror.o tinyxmlparser.o xmlparserbenchmark.o moc_xmlparserbenchmark.o -L/usr/lib -lxml2 -lexpat -lxerces-c -Lxdk9/lib -lxmlg9 -lxml9 -lxsd9 -lcore9 -lnls9 -lunls9 -lcore9 -lnls9 -lcore9 -lnsl -lpthread -Lscew/scew -lscew -lQtTest -lQtXml -lQtGui -lQtCore -lpthread
oracleparser.o: In function `parseWithOracleParser(QString const&amp;amp;)':
oracleparser.cpp:(.text+0x82): undefined reference to `XMLParser::xmlinit(unsigned char*, void (*)(void*, unsigned char const*, unsigned int), void*, xmlsaxcb*, void*, unsigned char*)'
oracleparser.cpp:(.text+0xa8): undefined reference to `XMLParser::xmlparse(unsigned char*, unsigned char*, unsigned int)'
oracleparser.cpp:(.text+0x2b4): undefined reference to `XMLParser::getDocumentElement()'
oracleparser.cpp:(.text+0x2ca): undefined reference to `XMLParser::xmlterm()'
&lt;/pre&gt;


&lt;p&gt;J'ai alors essayé de recompiler les exemples de démonstrations mais là, même problème ...&lt;/p&gt;


&lt;h4&gt;Compilation avec le XDK 10&lt;/h4&gt;


&lt;p&gt;Avec cette version du XDK, nous avons le droit à deux problèmes. Le premier est une grosse fuite mémoire (si on écrit le programme tel que décrit dans la démo), et à un problème d'initialisation du parseur.&lt;/p&gt;


&lt;p&gt;Le code permettant de parser le fichier XML et de générer l'arbre DOM ressemble à ceci&amp;nbsp;:&lt;/p&gt;
&lt;pre class=&quot;c c&quot; style=&quot;font-family:inherit&quot;&gt;CXmlCtx &lt;span style=&quot;color: #339933;&quot;&gt;*&lt;/span&gt; ctxp &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #0000dd;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
try &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;
	ctxp &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; new CXmlCtx&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt; catch&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt; XmlException &lt;span style=&quot;color: #339933;&quot;&gt;&amp;amp;&lt;/span&gt; e &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;
	&lt;span style=&quot;color: #993333;&quot;&gt;unsigned&lt;/span&gt; ecode &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; e.&lt;span style=&quot;color: #202020;&quot;&gt;getCode&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
	QFAIL&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt; qPrintable&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt; QString&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;Failed to initialize XML context, error %1&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span style=&quot;color: #202020;&quot;&gt;arg&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt; ecode &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
Factory&lt;span style=&quot;color: #339933;&quot;&gt;&amp;lt;&lt;/span&gt;CXmlCtx&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt;xmlnode&lt;span style=&quot;color: #339933;&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;*&lt;/span&gt; fp &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #0000dd;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
try &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;
	fp &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; new Factory&lt;span style=&quot;color: #339933;&quot;&gt;&amp;lt;&lt;/span&gt;CXmlCtx&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt;xmlnode&lt;span style=&quot;color: #339933;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt; ctxp &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt; catch&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt; FactoryException &lt;span style=&quot;color: #339933;&quot;&gt;&amp;amp;&lt;/span&gt; fe &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;
	&lt;span style=&quot;color: #993333;&quot;&gt;unsigned&lt;/span&gt; ecode &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; fe.&lt;span style=&quot;color: #202020;&quot;&gt;getCode&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
	QFAIL&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt; qPrintable&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt; QString&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;Failed to create create parser, error %1&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span style=&quot;color: #202020;&quot;&gt;arg&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt; ecode &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
DOMParser&lt;span style=&quot;color: #339933;&quot;&gt;&amp;lt;&lt;/span&gt;CXmlCtx&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt;xmlnode&lt;span style=&quot;color: #339933;&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;*&lt;/span&gt; parserp &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #0000dd;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
try &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;
	parserp &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; fp&lt;span style=&quot;color: #339933;&quot;&gt;-&amp;gt;&lt;/span&gt;createDOMParser&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt; DOMParCXml&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt; NULL &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt; catch&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt; FactoryException &lt;span style=&quot;color: #339933;&quot;&gt;&amp;amp;&lt;/span&gt; fe &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;
	delete fp&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
	&lt;span style=&quot;color: #993333;&quot;&gt;unsigned&lt;/span&gt; ecode &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; fe.&lt;span style=&quot;color: #202020;&quot;&gt;getCode&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
	QFAIL&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt; qPrintable&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt; QString&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;Failed to create parser, error %1&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span style=&quot;color: #202020;&quot;&gt;arg&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt; ecode &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span style=&quot;color: #993333;&quot;&gt;const&lt;/span&gt; &lt;span style=&quot;color: #993333;&quot;&gt;char&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;*&lt;/span&gt; fname &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; filename&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
FileSource &lt;span style=&quot;color: #339933;&quot;&gt;*&lt;/span&gt; isrcp &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; new FileSource&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;oratext&lt;span style=&quot;color: #339933;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt; fname &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
try &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;
	DocumentRef&lt;span style=&quot;color: #339933;&quot;&gt;&amp;lt;&lt;/span&gt;xmlnode&lt;span style=&quot;color: #339933;&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;*&lt;/span&gt; docrefp &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; parserp&lt;span style=&quot;color: #339933;&quot;&gt;-&amp;gt;&lt;/span&gt;parse&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt; isrcp&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt; FALSE &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
	&lt;span style=&quot;color: #b1b100;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt; docrefp &lt;span style=&quot;color: #339933;&quot;&gt;==&lt;/span&gt; NULL &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;
		QFAIL&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt; qPrintable&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt; QString&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;NULL document&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
		&lt;span style=&quot;color: #b1b100;&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
	&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;
	xmlnode &lt;span style=&quot;color: #339933;&quot;&gt;*&lt;/span&gt; np &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; docrefp&lt;span style=&quot;color: #339933;&quot;&gt;-&amp;gt;&lt;/span&gt;getDocumentElement&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
	&lt;span style=&quot;color: #b1b100;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt; np &lt;span style=&quot;color: #339933;&quot;&gt;==&lt;/span&gt; NULL &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;
		QFAIL&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt; qPrintable&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt; QString&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;Empty document&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
		&lt;span style=&quot;color: #b1b100;&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
	&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;
	docrefp&lt;span style=&quot;color: #339933;&quot;&gt;-&amp;gt;&lt;/span&gt;markToDelete&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
	delete docrefp&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt; catch&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt; ParserException &lt;span style=&quot;color: #339933;&quot;&gt;&amp;amp;&lt;/span&gt; pe &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;
	delete parserp&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
	delete isrcp&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
	delete fp&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
	&lt;span style=&quot;color: #993333;&quot;&gt;unsigned&lt;/span&gt; ecode &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; pe.&lt;span style=&quot;color: #202020;&quot;&gt;getCode&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
	QFAIL&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt; qPrintable&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt; QString&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;Failed to parse the document, error %1&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span style=&quot;color: #202020;&quot;&gt;arg&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt; ecode &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span style=&quot;color: #666666; font-style: italic;&quot;&gt;//	delete parserp;&lt;/span&gt;
&lt;span style=&quot;color: #666666; font-style: italic;&quot;&gt;//	delete isrcp;&lt;/span&gt;
&lt;span style=&quot;color: #666666; font-style: italic;&quot;&gt;//	delete fp;&lt;/span&gt;
&lt;span style=&quot;color: #666666; font-style: italic;&quot;&gt;//	delete ctxp;&lt;/span&gt;&lt;/pre&gt;


&lt;p&gt;Le premier problème se situe lors de la suppression du contexte (dernière ligne, en commentaire). Si cette ligne est exécutée, alors nous avons une grosse erreur de segmentation. J'ai le problème, quels que soient les &lt;code&gt;delete&lt;/code&gt; que je fais avant.
Même en faisant le maximum de &lt;code&gt;delete&lt;/code&gt; (soit parserp, isrcp, fp), le fait de ne pas supprimer le context (ctxp), fait qu'au bout de plusieurs itérations, nous avons une bonne fuite mémoire&lt;sup&gt;[&lt;a href=&quot;http://www.shadoware.org/post/2009/05/06/Parseur-XML#pnote-620-2&quot; id=&quot;rev-pnote-620-2&quot;&gt;2&lt;/a&gt;]&lt;/sup&gt;.&lt;/p&gt;


&lt;p&gt;Vient ensuite le second problème, celui des erreurs d'intialisation. Si le parseur est lancé plusieurs fois de suite, alors l'application affiche les erreurs suivantes à l'écran&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
LPX-00202: Message 202 not found; No message file for product=XDK, facility=LPX
FAIL!  : XmlParserBenchmark::oracleParser(file250k.xml) Failed to parse the document, error 202
   Loc: [oracleparser.cpp(73)]
&lt;/pre&gt;


&lt;p&gt;Aucune explication sur le pourquoi. Parfois ça marche, parfois non... Pour contourner le problème, j'ai forké le parseur pour l'exécuter isolé du reste.&lt;/p&gt;

&lt;pre class=&quot;c c&quot; style=&quot;font-family:inherit&quot;&gt;pid_t pid &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; fork&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
&lt;span style=&quot;color: #b1b100;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt; pid &lt;span style=&quot;color: #339933;&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&quot;color: #0000dd;&quot;&gt;0&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;
	waitpid&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt; pid&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #993333;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #0000dd;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #0000dd;&quot;&gt;0&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span style=&quot;color: #b1b100;&quot;&gt;else&lt;/span&gt; &lt;span style=&quot;color: #b1b100;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt; pid &lt;span style=&quot;color: #339933;&quot;&gt;==&lt;/span&gt; &lt;span style=&quot;color: #0000dd;&quot;&gt;0&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;
	&lt;span style=&quot;color: #b1b100;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;!&lt;/span&gt; filename.&lt;span style=&quot;color: #202020;&quot;&gt;isEmpty&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;
		parse&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt; qPrintable&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt; filename &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
	exit&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span style=&quot;color: #0000dd;&quot;&gt;0&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span style=&quot;color: #b1b100;&quot;&gt;else&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;
	QFAIL&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;Cannot fork&amp;quot;&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;
&lt;div class=&quot;footnotes&quot;&gt;&lt;h4&gt;Notes&lt;/h4&gt;
&lt;p&gt;[&lt;a href=&quot;http://www.shadoware.org/post/2009/05/06/Parseur-XML#rev-pnote-620-1&quot; id=&quot;pnote-620-1&quot;&gt;1&lt;/a&gt;] Ces tests ont été réalisé dans un chroot 32-bits allant à 2,4GHz. Les temps sont une moyenne sur 100 itérations&lt;/p&gt;
&lt;p&gt;[&lt;a href=&quot;http://www.shadoware.org/post/2009/05/06/Parseur-XML#rev-pnote-620-2&quot; id=&quot;pnote-620-2&quot;&gt;2&lt;/a&gt;] Si quelqu'un a déjà utilisé ce parseur, et qu'il sait comment il fonctionne, il peut m'écrire&lt;/p&gt;&lt;/div&gt;
</description>
    
          <enclosure url="http://www.shadoware.org/public/billets/xmlparser/benchmark_100iterations.ods"
      length="13231" type="application/vnd.oasis.opendocument.spreadsheet" />
          <enclosure url="http://www.shadoware.org/public/billets/xmlparser/xmlparser-bench.7z"
      length="15716" type="text/plain" />
    
    
          <comments>http://www.shadoware.org/post/2009/05/06/Parseur-XML#comment-form</comments>
      <wfw:comment>http://www.shadoware.org/post/2009/05/06/Parseur-XML#comment-form</wfw:comment>
      <wfw:commentRss>http://www.shadoware.org/feed/atom/comments/620</wfw:commentRss>
      </item>
    
</channel>
</rss>
