[ANN] UXStrings s'enrichit d'une troisième implémentation.

Par Pascal Pignard

UXStrings (en version UXS_20230401 et aussi sur Alire), bibliothèque Ada d'utilisation de chaînes de caractères Unicode de longueur dynamique, s'enrichit d'une troisième implémentation : UXStrings3. Avec cette dernière implémentation, les caractères sont stockés sous forme Unicode et la gestion de la taille dynamique en mémoire utilise la bibliothèque standard Ada.Strings.Wide_Wide_Unbounded.

Avec UXStrings3, les performances avec Gnoga s'en trouvent bien meilleures. UXStrings2 apportaient déjà de meilleures performances dans le cas de chaînes uniquement constituées de caractères ASCII (amélioration d'un facteur 2 à 3 par rapport à UXStrings1). Avec UXStrings3 les performances dans ce dernier cas sont encore améliorées (facteur 6 à 7 par rapport à UXStrings1) mais dans le cas de chaînes accentuées en français et de chaînes contenant que des Emojis les temps de traitements sont aussi améliorés (facteur 7 à 8 par rapport à UXStrings1 ou bien plus dans le cas des Emojis). Pour l'ensemble des cas, l'occupation mémoire de l'application Gnoga est globalement similaire (9 à 10 Mb). L'occupation mémoire due à UXStrings est négligeable devant l'occupation mémoire de la mécanique mis en œuvre par Gnoga.

Cas d'étude : application AdaEdit utilisant la bibliothèque graphique Gnoga sur des fichiers texte en UTF-8 :

  • English 315 Kb
  • Français : 447 Kb
  • Emojis : 439 kb

Processus : lecture complet du fichier ligne à ligne et affichage du texte complet

Indépendamment de l'implémentation retenue, l'attractivité d'une bibliothèque repose principalement sur les fonctionnalités qu'elle propose (API). Jusqu'à présent celles-ci sont similaires à celles des bibliothèques standard Ada. Si vous trouvez qu'il en manque, faites vos propositions sur Github.