Algorythme de recherche dans une String

Résolu
BlueRab Messages postés 8 Date d'inscription dimanche 18 décembre 2005 Statut Membre Dernière intervention 26 décembre 2005 - 21 déc. 2005 à 16:21
BlueRab Messages postés 8 Date d'inscription dimanche 18 décembre 2005 Statut Membre Dernière intervention 26 décembre 2005 - 26 déc. 2005 à 18:35
Bonjour,



Je ne vous apprend rien si je vous dit que la machine Java est plutôt lente.

Mon problème c'est que je dois retrouver dans un châine de quelques 20000 caractères, seulement quelques mots.

Je me sers pour cela des méthodes public int indexOf(String) et
public String substring(int, int) de cette merveilleuse
classe String.



Seulement, ces deux methodes prennent beaucoup de temps et rendre mon programme quasi inutilisable.

Auriez vous un quelconque methode de recherche de mots efficace sans passer par la JNI?



Merci

7 réponses

BlueRab Messages postés 8 Date d'inscription dimanche 18 décembre 2005 Statut Membre Dernière intervention 26 décembre 2005
26 déc. 2005 à 18:35
J'ai donc utiliser des classes personelles qui me permettent de lire un fichier et "de mettre en pause" la lecture.



Le temps de lecture reste assez lent mais je pense que ca vient du serveur web de la page qui arrive pas à suivre ^^



Je vais voir si je peux mettre ces classes à disposition sur le site.
3
super_toinou Messages postés 764 Date d'inscription mardi 25 mai 2004 Statut Membre Dernière intervention 8 mars 2011 6
21 déc. 2005 à 16:26
t as essayé avec des string buffer ca risque d aller plus vite
0
cs_neodante Messages postés 2835 Date d'inscription lundi 11 août 2003 Statut Modérateur Dernière intervention 16 décembre 2006 11
21 déc. 2005 à 17:12
StringBuffer ne sert pas à ça, mais simplement à avoir une chaine où
les concaténations vont être nombreuses (genre chaine de log ou autre),
cela ne sera pas plus rapide .. y a qu'à regarder les sources de
StringBuffer pour en être convaincu ;-)



++
0
morphorpse Messages postés 40 Date d'inscription vendredi 26 août 2005 Statut Membre Dernière intervention 8 septembre 2006 1
21 déc. 2005 à 17:17
Pourquoi ne pas créer des threads et diviser ta chaine en plus petite
et faire tourner les thread en parallele et faire une recheche par
partie, diviser pour mieux regner.

C'est peut etre pas plus rapide faut tester

Morphorpse
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_neodante Messages postés 2835 Date d'inscription lundi 11 août 2003 Statut Modérateur Dernière intervention 16 décembre 2006 11
21 déc. 2005 à 17:19
Egalement pourquoi as-tu une chaine de 20 000 caractères ?

Pourquoi ne pas la diviser (voir structures de données) et appliquer des algos directement dessus ??



++
0
morphorpse Messages postés 40 Date d'inscription vendredi 26 août 2005 Statut Membre Dernière intervention 8 septembre 2006 1
21 déc. 2005 à 17:47
C'esst surement une meilleure idée de la diviser

Morphorpse
0
BlueRab Messages postés 8 Date d'inscription dimanche 18 décembre 2005 Statut Membre Dernière intervention 26 décembre 2005
21 déc. 2005 à 23:38
Je recupère cette chaine en lisant l'integralité d'une page d'un site...

Mais peut etre serait il plus rapide que je lise directement et petit à
petit sur le site et que je n'y recupère que la partie du texte qui
m'interesse vraiment.



Ensuite je ne vois pas très bien comment diviser mon texte en structure de données.
0
Rejoignez-nous