Introduction
Les demandes d'extraction sont au cœur de GitHub. En tant qu'ingénieurs, c'est là que nous passons une grande partie de notre temps. Et à l'échelle de GitHub, où les demandes d'extraction peuvent aller de petites corrections d'une ligne à des modifications s'étendant sur des milliers de fichiers et des millions de lignes, l'expérience de révision des demandes d'extraction doit rester rapide et réactive.
Contexte Technique
Récemment, nous avons mis en ligne la nouvelle expérience basée sur React pour l'onglet Fichiers modifiés (maintenant l'expérience par défaut pour tous les utilisateurs). L'un de nos principaux objectifs était de garantir une expérience plus performante dans l'ensemble, en particulier pour les grandes demandes d'extraction. Cela signifiait investir dans et donner la priorité de manière constante aux problèmes difficiles tels que le rendu optimisé, la latence des interactions et la consommation de mémoire.
Les améliorations récentes apportées à l'onglet Fichiers modifiés ont amélioré de manière significative certains de ces indicateurs de performance clés. Nous allons couvrir ces changements en détail, en expliquant pourquoi ils étaient importants, ce que nous avons mesuré et comment ces mises à jour ont amélioré la réactivité et la pression sur la mémoire dans l'ensemble, en particulier pour les grandes demandes d'extraction.
Analyse et Implications
Nos recherches ont montré qu'il n'y avait pas de solution unique pour résoudre les problèmes de performances. Les techniques qui préservent chaque fonctionnalité et comportement natif du navigateur peuvent toujours atteindre un plafond à l'extrémité la plus élevée. En revanche, les atténuations conçues pour empêcher les pires cas de basculer peuvent être de mauvaises compromissions pour les révisions quotidiennes.
Au lieu de rechercher une solution unique, nous avons élaboré un ensemble de stratégies. Nous avons sélectionné plusieurs approches ciblées, chacune conçue pour répondre à une taille et une complexité spécifiques de demande d'extraction.
Perspective
Ces stratégies se sont concentrées sur les thèmes suivants : optimisation ciblée des composants de ligne de différence pour rendre l'expérience de différence principale efficace pour la plupart des demandes d'extraction ; dégradation en douceur avec la virtualisation pour maintenir l'expérience utilisable pour les plus grandes demandes d'extraction ; investissement dans les composants et les améliorations de rendu fondamentaux qui se cumulent sur toutes les tailles de demande d'extraction, indépendamment du mode dans lequel se trouve l'utilisateur.
Ces améliorations ont considérablement amélioré la réactivité et réduit la pression sur la mémoire, même pour les plus grandes demandes d'extraction, démontrant l'importance d'une approche ciblée et continue pour résoudre les problèmes de performances dans les applications web à grande échelle.