Performance de code

waterw72 Messages postés 63 Date d'inscription jeudi 30 septembre 2004 Statut Membre Dernière intervention 18 juillet 2008 - 18 janv. 2008 à 09:50
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 - 21 janv. 2008 à 14:22
Bonjour,

<li>J'ai un fichier texte de 1200 lignes que je parcours ligne par ligne.</li><li>J'ai des phrases ( 2 ou 3 mots) qui sont interdites.</li><li>Je dois copier le fichier texte dans un autre sans les phrases interdites.</li>
2 solutions :
1°) je fais une boucle qui parcours mon tableau "interdit" (contenant les phrases interdites)  à chaque ligne lues.

2°) je fais une succession de if ... then à chaque ligne lues.

le code est plus facile à gérer pour la première solution mais sans doute moins rapide.

Que feriez-vous?

2 réponses

jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
18 janv. 2008 à 11:37
Bonjour,

Pourquoi moins rapide ? car tu as un tableau et tu boucles sur ce tableau ? tu sentiras pas la différence à côté d'une comparaison de String, et puis au moins ton code sera lisible et maintenable ...

<hr />Cyril - MSP - MCPD ASP.net & MCTS SQL - Consultant indépendant
0
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
21 janv. 2008 à 14:22
Salut

Tu as d'autres solutions a étudiée

Tu mets tes mots dans une Arraylist ou encore mieux une List<String>
et après tu testes avec un
malisteinterdite.contains(monmotatester) et si false tu ne l'ecrit pas dans le fichier de sortie.

Encore plus rapide normalement, tu utilises
1-> Remplir avec la liste des mots interditsun dictionnary<String> la clé ton mot et ta valeur null
2-> Test mot interdit
et tu fais un ContainsKey(motatester)
normalement cette méthode doit être plus rapide car les dictionnaires utilise un temps quasi constant pour trouver un élement dans une liste.

Bon courage
0
Rejoignez-nous