Développement

background

Première approche de Boucle d'Air

Un nouveau départ

vincjo · 2020 M05 12

L’application Boucle d’Air existe depuis un an, permettant de créer aléatoirement des circuits de balade. Plusieurs paramètres sont considérés dans le choix du parcours : type de chemin, dénivelé, occupation du sol, points d’intérêt ou encore les zones naturelles traversées. Boucle d’Air génère plusieurs options, dans toutes les directions autour du point de départ.

A l’occasion de ce nouveau développement, certains choix techniques ont été revus ou adaptés dans le but d’étendre progressivement les fonctionnalités de l’application.

Côté client web, le templating PHP a été entièrement supprimé au profit d’une SPA (single page application) Javascript + API REST. Parmi les framework Javascript, Svelte JS, l’un des derniers nés dans cette catégorie est utilisé. Enfin, Materialize-CSS remplace Bootstrap.

Côté serveur, dans le code original, l’algorithme de création d’itinéraires est exécuté par l’intermédiaire de fonctions PL/SQL. Le temps d’exécution varie de 5 secondes à plusieurs minutes selon l'activité et la durée en paramètre. L’objectif de cette phase de développement a été de réorganiser les traitements SQL en les structurant séquentiellement dans 4 étapes logiques :

  • I - Définition du schéma et des tables, import des données sources
  • II - Création de la topologie du réseau et analyse du graphe
  • III - Création des itinéraires aller-retours
  • IV – Agrégation des résultats, correctifs et statistiques
Étape Temps d'exécution moyen (s)
I - Shéma / tables 3,909 s
II - Topologie 3,023 s
III - Itinéraires aller / retour 6,836 s
IV - Compilation et statistiques 3,911 s
Total 17,679 secondes


Malgré la factorisation du code SQL, le délai cumulé d'exécution des requêtes demeurent trop élevé. L’algorithme effectue la majeure partie des calculs à la volée, ce qui ne permet pas d’optimiser significativement les performances. Dès la prochaine version de Boucle d’Air, l'attention sera portée sur les données sources : de nombreux calculs devraient s’effectuer en amont pour accélérer la génération des boucles.