<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Performance |</title><link>https://clementgodbarge.com/fr/tag/performance/</link><atom:link href="https://clementgodbarge.com/fr/tag/performance/index.xml" rel="self" type="application/rss+xml"/><description>Performance</description><generator>HugoBlox Kit (https://hugoblox.com)</generator><language>fr-fr</language><lastBuildDate>Fri, 28 Mar 2025 00:00:00 +0000</lastBuildDate><image><url>https://clementgodbarge.com/media/icon_hu_64a6c3bec25b3d7b.png</url><title>Performance</title><link>https://clementgodbarge.com/fr/tag/performance/</link></image><item><title>Multi-Saxon</title><link>https://clementgodbarge.com/fr/code/multi-saxon/</link><pubDate>Fri, 28 Mar 2025 00:00:00 +0000</pubDate><guid>https://clementgodbarge.com/fr/code/multi-saxon/</guid><description>&lt;h2 id="multi-saxon-du-xslt-en-parallèle-pour-les-grands-corpus-tei"&gt;Multi-Saxon : du XSLT en parallèle pour les grands corpus TEI&lt;/h2&gt;
&lt;p&gt;Multi-Saxon comble une lacune sérieuse de l’outillage XML : il exécute en parallèle des transformations XSLT 2.0 et 3.0 que LXML, la bibliothèque XML la plus répandue en Python, ne sait pas traiter. Conçu tout exprès pour les grandes collections de documents XML TEI, il en abrège sensiblement le traitement par une parallélisation efficace.&lt;/p&gt;
&lt;h2 id="principales-fonctions"&gt;Principales fonctions&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;XSLT de dernière génération&lt;/strong&gt; : traite les transformations XSLT 2.0 et 3.0, hors de portée de LXML&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Traitement parallèle&lt;/strong&gt; : la parallélisation abrège considérablement la transformation des grandes collections de documents&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Taillé pour la TEI&lt;/strong&gt; : conçu spécialement pour les documents XML de la Text Encoding Initiative (TEI)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Montée en charge&lt;/strong&gt; : traite avec la même aisance des corpus de quelques centaines ou de plusieurs milliers de documents&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Multiplateforme&lt;/strong&gt; : fonctionne sur les divers systèmes d’exploitation et environnements&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="le-problème-que-multi-saxon-résout"&gt;Le problème que Multi-Saxon résout&lt;/h2&gt;
&lt;p&gt;Les chercheurs en humanités numériques qui travaillent en TEI butent souvent sur deux obstacles :&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;LXML (bibliothèque Python courante pour le traitement XML) ne connaît que XSLT 1.0, ce qui interdit les fonctions plus avancées de XSLT 2.0/3.0&lt;/li&gt;
&lt;li&gt;Traiter un grand corpus de documents TEI l’un après l’autre peut prendre un temps rédhibitoire&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Multi-Saxon répond aux deux à la fois : il s’appuie sur les capacités XSLT avancées de Saxon, et répartit le traitement sur plusieurs cœurs, d’où des gains de performance considérables.&lt;/p&gt;
&lt;h2 id="mise-en-œuvre"&gt;Mise en œuvre&lt;/h2&gt;
&lt;p&gt;Multi-Saxon associe Python au processeur Java Saxon pour former une chaîne de transformation à haute performance :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;il s’appuie sur la bibliothèque Java Saxon pour un traitement XSLT 2.0/3.0 robuste ;&lt;/li&gt;
&lt;li&gt;il recourt au multitraitement pour distribuer les transformations sur les cœurs disponibles ;&lt;/li&gt;
&lt;li&gt;il gère les réserves de processus de façon à maximiser le débit ;&lt;/li&gt;
&lt;li&gt;il offre une interface simple pour traiter les documents TEI par lots.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="exemple-dutilisation"&gt;Exemple d’utilisation&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;multi_saxon&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;MultiSaxon&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Initialize with your XSLT stylesheet&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;transformer&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;MultiSaxon&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;transform.xsl&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Transform a single document&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;transformer&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;transform&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;input.xml&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;output.xml&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Transform an entire directory in parallel&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;transformer&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;transform_directory&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;input_dir&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;output_dir&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="ce-que-cela-change-pour-les-humanités-numériques"&gt;Ce que cela change pour les humanités numériques&lt;/h2&gt;
&lt;p&gt;Pour les projets qui manipulent de grandes collections de documents TEI, Multi-Saxon rend possibles :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;des transformations complexes à l’échelle du corpus, impossibles avec LXML ;&lt;/li&gt;
&lt;li&gt;des temps de traitement considérablement réduits (souvent d’un facteur 5 à 10 sur les machines multicœurs) ;&lt;/li&gt;
&lt;li&gt;des analyses plus fines, grâce aux fonctions avancées de XSLT 2.0/3.0 ;&lt;/li&gt;
&lt;li&gt;une chaîne de travail simplifiée pour traiter des collections entières.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Le code source et la documentation sont sur le
.&lt;/p&gt;</description></item></channel></rss>