<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Performance | SNAIL team</title><link>https://snail.info.unamur.be/tag/performance/</link><atom:link href="https://snail.info.unamur.be/tag/performance/index.xml" rel="self" type="application/rss+xml"/><description>Performance</description><generator>Hugo Blox Builder (https://hugoblox.com)</generator><language>en-us</language><copyright>© 2026 SNAIL team</copyright><lastBuildDate>Sun, 17 May 2026 14:10:00 +0200</lastBuildDate><image><url>https://snail.info.unamur.be/media/icon_hu16841600028746016185.png</url><title>Performance</title><link>https://snail.info.unamur.be/tag/performance/</link></image><item><title>CrisPy : Révéler les réalités bas-niveau derrière l'abstraction Python</title><link>https://snail.info.unamur.be/post/2026-05-07-crispy/</link><pubDate>Sun, 17 May 2026 14:10:00 +0200</pubDate><guid>https://snail.info.unamur.be/post/2026-05-07-crispy/</guid><description>&lt;p>Dans le paysage actuel de l&amp;rsquo;enseignement de la programmation, Python occupe une place prépondérante en tant que premier langage pour les étudiants. Sa syntaxe claire et son niveau d&amp;rsquo;abstraction élevé en font un outil d&amp;rsquo;apprentissage séduisant. Cependant, le projet CrisPy, mené par une équipe d&amp;rsquo;étudiants du cours de Test et Qualité 2026 composée de Samuel Amani Kinyongolo, Esteban Baracho, Jonathan Kondoli Nkebi et Bénédicte Tuteka Mukuta, en collaboration avec l&amp;rsquo;équipe de recherche SNAIL, remet en question cette approche dominante.&lt;/p>
&lt;h2 id="le-paradoxe-de-labstraction-python">Le paradoxe de l&amp;rsquo;abstraction Python&lt;/h2>
&lt;p>L&amp;rsquo;abstraction importante de Python a tendance à masquer de nombreux aspects des mécanismes systémiques et de bas niveau. Pour les étudiants, cela peut se traduire par une compréhension limitée des enjeux de performance et une capacité réduite à optimiser efficacement leurs programmes. Le projet part du constat que l&amp;rsquo;apprentissage initial de Python, sans mise en garde sur ses limites, risque de former des développeur.euse.s incapables de saisir les implications réelles de leur code sur la machine.&lt;/p>
&lt;h2 id="objectifs-pédagogiques-et-livrables">Objectifs pédagogiques et livrables&lt;/h2>
&lt;p>L&amp;rsquo;objectif principal de CrisPy est de développer du matériel pédagogique destiné à renforcer la conscience des aspects système et bas niveau dans la programmation. L&amp;rsquo;équipe s&amp;rsquo;est donné pour mission d&amp;rsquo;identifier les antipatterns de performance propre à Python et de fournir des ressources pour les éviter. Le résultat est un manuel d&amp;rsquo;optimisation des performances conçu spécifiquement pour les programmeurs Python débutants. Ce manuel est intégré directement à l&amp;rsquo;environnement de développement via un plugin pour VSCode. Ce plugin a pour fonction de lier le code parcouru à des fiches explicatives détaillant les méthodes d&amp;rsquo;optimisation, offrant ainsi un apprentissage contextuel et immédiat.&lt;/p>
&lt;h2 id="architecture-technique-de-crispy">Architecture technique de CrisPy&lt;/h2>
&lt;p>CrisPy se compose de trois couches étroitement intégrées formant une plateforme d&amp;rsquo;analyse statique basée sur des règles. Le moteur principal, l&amp;rsquo;analyseur Python, analyse le code source pour le convertir en un arbre de syntaxe abstraite (AST) et applique chacune des règles enregistrées. Les résultats sont générés au format JSON structuré, ce qui permet une exploitation facile depuis n&amp;rsquo;importe quel outil.&lt;/p>
&lt;p>L&amp;rsquo;extension intègre cet analyseur et affiche les résultats sous forme de diagnostics natifs de VS Code. Les utilisateurs peuvent passer la souris sur un avertissement pour lire l&amp;rsquo;explication complète de la règle sans quitter leur fichier. La documentation interactive constitue la source de vérité unique pour chaque règle, détaillant les raisons pour lesquelles une pratique est déconseillée, présentant les bénéfices de l&amp;rsquo;approche recommandée et proposant des exemples de code concrets avant et après. Le code source, l&amp;rsquo;outil complet et la documentation sont accessibles publiquement sur le &lt;a href="https://github.com/snail-unamur/CrisPy" target="_blank" rel="noopener">dépôt GitHub&lt;/a>. La documentation est quant à elle disponible sur &lt;a href="https://snail-crispy.netlify.app/" target="_blank" rel="noopener">le site web suivant&lt;/a>.&lt;/p>
&lt;h2 id="fonctionnalités-clés-et-expérience-utilisateur">Fonctionnalités clés et expérience utilisateur&lt;/h2>
&lt;p>La philosophie de CrisPy se distingue des outils d&amp;rsquo;analyse statique traditionnels. Là où la plupart des outils se contentent d’indiquer ce qui ne va pas, CrisPy explique pourquoi c’est important et comment y remédier. Chaque règle est accompagnée d&amp;rsquo;une explication claire, d&amp;rsquo;un niveau de sévérité (info, warning ou error) et d&amp;rsquo;au moins un exemple de correction.&lt;/p>
&lt;p>Les règles sont définies de manière centralisée et partagées entre l&amp;rsquo;interface en ligne de commande, l&amp;rsquo;extension et la documentation. CrisPy est livré avec des paramètres par défaut judicieux et l&amp;rsquo;ensemble complet de règles « performance » activé par défaut. L&amp;rsquo;installation de l&amp;rsquo;extension VS Code permet d&amp;rsquo;être opérationnel en moins d&amp;rsquo;une minute.&lt;/p>
&lt;h2 id="exemple-concret-dapplication">Exemple concret d&amp;rsquo;application&lt;/h2>
&lt;p>Considérons le cas de la concaténation de chaînes de caractères dans une boucle. Le code suivant déclenche un avertissement PY002 :&lt;/p>
&lt;pre>&lt;code class="language-python"># ❌ Avant — concaténation de chaînes avec temps d'exécution quadratique
mots = [&amp;quot;Python&amp;quot;, &amp;quot;est&amp;quot;, &amp;quot;génial&amp;quot;]
phrase = &amp;quot;&amp;quot;
for mot in mots:
phrase += mot + &amp;quot; &amp;quot; # Crée une nouvelle chaîne à chaque iteration
&lt;/code>&lt;/pre>
&lt;p>CrisPy recommande d&amp;rsquo;utiliser &amp;quot; &amp;ldquo;.join(&amp;hellip;) pour éviter des copies en mémoire de complexité O(n²), ce qui transforme le code en une allocation mémoire unique et idiomatique.&lt;/p>
&lt;h2 id="perspectives-et-réflexions">Perspectives et réflexions&lt;/h2>
&lt;p>Au-delà de la production technique, le projet CrisPy soulève des questions fondamentales sur l&amp;rsquo;évolution de l&amp;rsquo;enseignement de l&amp;rsquo;informatique. Il invite à réfléchir à la manière dont Python peut devenir un « cache-misère » pour la gestion des performances si les fondements ne sont pas correctement maîtrisés. De plus, l&amp;rsquo;équipe s&amp;rsquo;interroge sur l&amp;rsquo;influence croissante des modèles de langage (LLMs) dans cette démarche : comment ces outils modifient-ils l&amp;rsquo;approche d&amp;rsquo;optimisation et la pertinence du plugin développé ?&lt;/p>
&lt;p>Le projet CrisPy témoigne de la volonté des étudiants de ne pas se contenter d&amp;rsquo;un usage superficiel des outils modernes, mais de creuser pour comprendre les mécanismes sous-jacents qui garantissent la robustesse et l&amp;rsquo;efficacité des logiciels.&lt;/p></description></item><item><title>Automated performance testing for mixed reality systems</title><link>https://snail.info.unamur.be/project/msc-denis-detry/</link><pubDate>Mon, 23 Jun 2025 10:47:40 +0200</pubDate><guid>https://snail.info.unamur.be/project/msc-denis-detry/</guid><description>&lt;p>Software engineering for mixed reality headsets is still in its early genesis even though the required hardware for it has been available for several decades. Existing methods to streamline development are still limited and developers often find themselves doing things manually. Mixed Reality system testing, for example, are often done by hand by developers who have to wear the headsets and do the testing as if they were an end user. This is a significant time sink in the development process.&lt;/p>
&lt;p>This thesis focuses on the available methods for automating these tests, specifically, performance tests. They have the added challenge of requiring to run on the headset directly. It is of great priority for mixed reality apps because bad performance can at best make the experience worse and at worst cause motion sickness in users.&lt;/p>
&lt;p>To find a solution to the problem, we’ve firstly explored the different available avenues for automation of the tests. Then we’ve decided to adapt an existing mixed reality capture and replay of user interactions tool so that it would fit our needs. The tool’s objective would be to detect gains and losses in performance between two different builds of a same mixed reality app. Having access to this kind of tool would allow developers to gain a significant amount of time during the development of their apps when they have to do small performance optimizations. It would not only be quicker than a human doing the tests themselves but it would also be more precise, and better able to detect the differences more accurately.&lt;/p>
&lt;div class="linkedin-embed" style="display:flex; justify-content:center;">
&lt;iframe src="https://www.linkedin.com/embed/feed/update/urn:li:activity:7342837938759630848"
height="795"
width="504"
frameborder="0"
allowfullscreen=""
title="Embedded post">
&lt;/iframe>
&lt;/div></description></item></channel></rss>