Objectif des tests : Trouver, pour le dictionnaire, quelle structure et quelle méthode d'accès permettraient les meilleurs performances selon nos critères. Nous utiliserons le module Benchmark::Timer et notre unique critère est pour le moment le temps d'exécution. Idées : A] Première série de tests : choix de l'algo et de la structure 1) - load_dictionnary() : mettre les mots dans un simple array - check_word() : faire une recherche dichotomique 2) - load_dictionnary() : mettre les mots dans un simple array et renseigner un hash qui fasse correspondre à chaque lettre de l'alphabet l'indice du tableau du dictionnaire pour lequel elle apparait la première fois en position de première lettre. - check_word() : faire une recherche dichotomique non plus sur le dictionnaire complet comme dans 1) mais sur la tranche @words[$indexes{$printf("%.1s", $word)} .. $indexes{cle_suivante}] => voire du côté de Tie::IxHash pour pouvoir aller chercher la clé correspondant à la lettre consécutive. Peut-être qu'on peut faire des slices d'instances d'objet de Tie::IxHash => A VOIR Sur la bonne tranche (slice), on procéderait à une recherche dichotomique. 3) - load_dictionnary() : mettre les mots dans un simple array et renseigner un hash qui fasse correspondre à chaque lettre de l'alphabet tous les indices du tableau du dictionnaire pour lequel elle apparait en position de première lettre. - check_word() : faire une recherche dichotomique sur la tranche ci-dessous : @words[@{$indexes{printf("%.1s",$word)}}] 4) - load_dictionnary() : mettre les mots dans un simple hash - check_word() : faire une recherche au moyen de la fonction exists() 5) - load_dictionnary() : mettre les premières lettres dans un hash, et faire des arrays de mots dans la valeur correspondante pour lesquels la premiière lettre correspond à la clé. - check_word() : recherche dichotomique sur @{ $ce_hash{$first_letter} } ... B] Seconde série de tests : choix de hacks sur la structure choisie à l'issu de la première série de tests ( genre modules perl existant )