Juste comme ça, questions idiotes, mais on sait jamais :
1) Le type string en .NET est limité à combien ? Le document entier ne tient pas dans une seule chaîne ? (plutôt que lire ligne par ligne ce qui me semble être source de lenteur pour un fichier relativement petit - en dessous de 2 Mo, de toute façon le fichier est intégralement chargé en cache, donc autant le lire d'un coup)
2) La méthode .inStr() ou je sais plus quoi. Ca donne quoi comme perfs sur une chaîne de grande taille ? Etant une fonction de la lib de base, je pencherais pour des perfs "remarquables".
Ainsi, sans passer par un algo complexe, tu devrais avoir avec ça une solution simple pour tester rapidement...
Sinon, t'as essayé de charger ton document dans un tableau trié par ordre alphabétique ? Un peu plus long à l'initialisation, mais ensuite tu ne parcours qu'une seule fois chacun des deux tableaux en //, et tu n'as plus à traîter de grandes chaînes, juste à comparer l'égalité entre des chaînes de même longueur... Je pense que ça devrait te permettre d'obtenir d'excellentes perfs, y compris sur des dicos de 500 000 mots et des fichiers de 2 000 000 de mots. (moins de 10 minutes pour de tels fichiers en tout cas...)
Le seul souci de cette méthode, c'est que pour de gros fichiers (plus de 10 Mo) il faut le découper en petits tableau et les charger en plusieurs fois, sinon tu vas saturer la mémoire à vitesse grand V.
Message édité par MagicBuzz le 28-01-2004 à 16:54:19