Optimizing Ruby Path Methods
En novembre, l'auteur a rejoint Intercom et s'est concentré sur la réduction du temps de configuration du CI du monolithe pour améliorer l'expérience utilisateur et diminuer les coûts. Il décrit comment Bootsnap accélère le démarrage Ruby en construisant un cache des chemins de chargement pour éviter les recherches linéaires coûteuses lors des require. Le principal goulot d'étranglement était le balayage récursif des répertoires provoquant de nombreux appels système (N+1 syscalls), problème amplifié sur les CI où les mtime ne sont pas préservés par git. Pour y remédier, il a prototypé et poussé une API Dir.scan et intégré ces optimisations à Bootsnap, réduisant le temps de scan d'environ 2x sur leur repo. Il a en outre accéléré File.join et d'autres fonctions de chemin en ajoutant des fastpaths d'encodage, une recherche inverse plus efficace, en supprimant des vérifications et allocations inutiles, obtenant des gains allant jusqu'à plusieurs fois la vitesse.