Exemples d'optimisations réalisées
Pierre Beyssac et son script signal.eu.org/rail/
Source :
Echange sur MastodonGain : x60
Verbatim :
> passer son code au profiler, une bonne vieille technique qui semble un peu oubliée pour identifier rapidement où le code passe du temps. J'ai passé ainsi une de mes moulinettes, réécrit quelques bouts de code avec ajout de memo (cache), etc, bilan : vitesse d'exécution x60 environ (un script qui prenait 5-6 heures ne prend plus que quelques minutes).> ça prend tous les horaires des trains ou trams d'un fichier GTFS, ça cherche les gares correspondantes sur la carte OpenStreetMap, et ça calcule le trajet du train avec le même backend OSRM que https://signal.eu.org/osm/. Ensuite c'est stocké en base pour faire du trainspotting ou afficher les trajets sur https://signal.eu.org/rail/
> tout ce truc a été écrit à partir du confinement de 2020 (+ fracture perso qui m'a encore + confiné), donc des morceaux de 30 mn par-ci, 1h par-là depuis. Je dirais entre 50 et 150 heures au total, facilement 20 à 40 pour ce script-là qui est central. Ça tournait très vite initialement car c'était très fruste et limité aux trains, je l'ai étendu au fil du temps pour mieux retrouver et distinguer les gares, quais, arrêts de tram, etc.
> donc forcément plus on veut un résultat subtil, plus il faut d'informations de décision, et je récupère tout ça dans la base OSM, et l'algo de décision s'est complexifié et ralenti (plus de requêtes en base de données notamment). Mais sur l'optimisation ça a été très rapide.
> comme je me disais qu'il y avait sûrement des améliorations triviales à faire (low hanging fruit comme disent les anglophones), j'ai testé le profiler Python que je n'avais jamais utilisé, pour voir ce qu'il mettrait en évidence dans le code. Et il m'a identifié une fonction qui prenait un temps énorme, appelée plein de fois.
> et voilà le patch (lignes avec +). Il est con comme la lune, il m'a fallu peut-être 10 mn pour écrire et voir ce que ça donnait. Je pensais que ça ne ferait pas de mal mais ne m'attendais pas à une telle efficacité. + 10-15 mn pour lire la doc du profiler Python afin de voir comment s'en servir.
image du patch
> le patch est bêtement de la memoization, idée assez basique. Comme une gare est facilement recherchée des centaines ou milliers de fois pour les multiples relations qui y passent (avec différents paramètres le cas échéant), on gagne vite à gâcher un peu de mémoire pour ne pas la rechercher à chaque fois dans la base et recalculer les scores des points trouvés.
-
Pour améliorer votre visibilité en ligne, Dev-Maxime-Guinard.fr vous propose une gamme complète de services dans plusieurs régions. Découvrez nos offres adaptées à vos besoins :
Pour les entreprises à Madagascar, notre expertise SEO spécifique vous aidera à vous démarquer sur les moteurs de recherche locaux.
Si vous êtes basé à Bourg-en-Bresse, nous vous offrons des services comme notre développement web professionnel ou nos solutions de référencement sur mesure pour optimiser votre site internet.
Pour les besoins de création de sites web à Pulversheim, nous concevons des sites modernes et efficaces qui répondent à vos attentes.
Nous étendons également notre expertise dans les villes suivantes :
Services SEO à Avignon
Référencement au Mans
Solutions SEO à Bayonne
Optimisation de site en Vendée
Référencement à Reims
Expertise SEO à Niort
Services de référencement à Colmar
Agence SEO à Pau
Nous avons également des compétences spécialisées pour les sites PrestaShop avec notre service d’optimisation PrestaShop, et vous pouvez consulter notre exemple de devis pour un site WordPress pour obtenir une estimation claire des coûts.
Pour toute question ou pour discuter de votre projet, Dev-Maxime-Guinard.fr est là pour vous accompagner. Contactez-nous pour faire évoluer votre présence en ligne !