Fullmoon System

Fullmoon Core Engine : notes de conception pour l’optimisation du build et du rendu

Conception de performances web qui mesure séparément l’optimisation des bundles pendant le build et la répartition des tâches lors de l’exécution dans le navigateur.

1. Distinguer le temps de build du temps d’exécution

Ce document présente des notes de conception pour l’optimisation du build et du rendu web. L’adoption de Rust ou de WebAssembly ne suffit pas à accélérer toute une application. Il faut d’abord identifier les goulets d’étranglement par l’analyse des bundles et le profilage du navigateur.

Au stade du build, examinez la séparation des modules, l’élimination du code inutilisé et l’optimisation des ressources. Dans le navigateur, mesurez séparément les requêtes réseau, l’analyse et l’exécution de JavaScript, la mise en page et le dessin. La taille du JavaScript téléchargé et le délai de première réponse du serveur sont deux indicateurs différents.

2. Frontière entre WebAssembly et les Workers

Les calculs gourmands en CPU peuvent se prêter à WebAssembly, mais il faut aussi mesurer l’initialisation et le coût des échanges avec JavaScript. Un Worker ne peut ni parcourir ni modifier directement le DOM. Extrayez les données nécessaires dans le thread principal, transmettez-les, puis appliquez les résultats à l’affichage. Consultez la documentation des Web Workers.

  • Utiliser un Worker ne signifie pas qu’une instance WebAssembly unique s’exécute automatiquement sur plusieurs threads.
  • Mesurer le coût de sérialisation des messages et de copie des données ; envisager des objets transférables si nécessaire.
  • Implémenter l’annulation et des délais limites, et préserver les fonctions de base de la page même en cas d’échec du Worker.

3. Comparaison reproductible des performances

Effectuez plusieurs mesures sur le même appareil et dans les mêmes conditions réseau, en distinguant les caches froids et chauds. Consignez séparément le temps de build, la taille de transfert, le LCP, l’INP et le CLS. Un chiffre unique ne résume pas l’ensemble des performances.

Ne présentez pas comme des résultats des facteurs d’accélération ou des valeurs en millisecondes dépourvus de benchmarks distincts, ni une garantie inconditionnelle de rendu en moins d’une seconde.