Algorythme de recherche dans une String [Résolu]

Signaler
Messages postés
8
Date d'inscription
dimanche 18 décembre 2005
Statut
Membre
Dernière intervention
26 décembre 2005
-
Messages postés
8
Date d'inscription
dimanche 18 décembre 2005
Statut
Membre
Dernière intervention
26 décembre 2005
-
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

Messages postés
8
Date d'inscription
dimanche 18 décembre 2005
Statut
Membre
Dernière intervention
26 décembre 2005

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.
Messages postés
764
Date d'inscription
mardi 25 mai 2004
Statut
Membre
Dernière intervention
8 mars 2011
8
t as essayé avec des string buffer ca risque d aller plus vite
Messages postés
2835
Date d'inscription
lundi 11 août 2003
Statut
Modérateur
Dernière intervention
16 décembre 2006
10
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 ;-)



++
Messages postés
40
Date d'inscription
vendredi 26 août 2005
Statut
Membre
Dernière intervention
8 septembre 2006
1
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
Messages postés
2835
Date d'inscription
lundi 11 août 2003
Statut
Modérateur
Dernière intervention
16 décembre 2006
10
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 ??



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

Morphorpse
Messages postés
8
Date d'inscription
dimanche 18 décembre 2005
Statut
Membre
Dernière intervention
26 décembre 2005

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.