Vb6+recherche nbre occurence

spootnic22 Messages postés 84 Date d'inscription mardi 31 octobre 2006 Statut Membre Dernière intervention 30 janvier 2010 - 13 déc. 2006 à 21:10
lemoret Messages postés 37 Date d'inscription vendredi 10 septembre 2004 Statut Membre Dernière intervention 11 mars 2007 - 15 déc. 2006 à 17:50
Salut,
Pourriez vous me dire comment je peux calculer le nbre d'occurence d'un mot par exemple "test" qui existe dans un fichier file.txt
Merci

32 réponses

jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
14 déc. 2006 à 19:48
Ecoute, Ami Lemoret,

Juste un peu plus haut, déjà, tu as un lien avec des sources....
Alors, si tu veux tester, teste donc...

Une chaine longue (2000 octets ou plus) que tu veux et :

utilise la fonction GetTickCount pour mesurer le temps écoulé et :

For i = 1 to 1000000
  'une première avec la solution par split
  'une 2ème avec la solution par replace
  'une 3eme avec uniquement instr
  et, bien sur : affichage du résultat comme du veux (debug.print, ou dans une listbox, iu sur une picturebox) , pourvu que la   méthode d'affichage utilisée soit toujours la même
next

Voila ! (et ce sera tout sauf du délire !.... le reste, par contre, risque d'en être)
Reviens si tu n'obtiens pas une différence avantageuse pour l'utilisation de Instr uniquement.

Nous t'attendons , mais uniquement avec celà et pas avec d'autres considérations qui ne s'appuieraient pas sur une telle mesure.
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
14 déc. 2006 à 19:59
Tu m'as demandé d'écrire avec instr uniquement et à ma façon, pardon ....

Alors je viens de le faire !

Voilà

Private Sub Command1_Click()
     la_chaine =  ' ici la chaine quèe tu veux
     le_mot =  'ici le mot que tu veux compter
    ou = InStr(1, la_chaine, le_mot)
    lon = Len(le_mot)
    Do While ou > 0
        Nb = Nb + 1
        ou= InStr(ou + lon, la_chaine, le_mot)
    Loop
    MsgBox Nb
End Sub

Satisfait ?
0
lemoret Messages postés 37 Date d'inscription vendredi 10 septembre 2004 Statut Membre Dernière intervention 11 mars 2007
14 déc. 2006 à 23:48
Non, j'avais demandé la fonction Split que tu utilises qui est plus rapide que le Split natif.
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
15 déc. 2006 à 08:27
Relis ce que j'ai écrit :

"J'ai même une fonction Detmot (qui va rechercher le mot correspondant à un rang), une fonction Rangmot (qui va rechercher le rang d'un mot) et une fonction Comptemots (qui va compter le nombre de mots) etc... , toutes paramétrables de différentes manières."

et tu comprendras (peut-être) que la philosophie elle même est différente (pas de tableau du tout). Je n'ai donc pas une fonction Split (isolée) à proprement parler, mais utilise tout bêtement ces fonctions pour la remplacer comme le l'entends, en fonction du résultat à obtenir. Et chacune se sert simplement de Instr et est donc très rapide.
0

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

Posez votre question
lemoret Messages postés 37 Date d'inscription vendredi 10 septembre 2004 Statut Membre Dernière intervention 11 mars 2007
15 déc. 2006 à 11:01
J'entends bin. La question demeure cependant, en admettant que tu veuilles récupérer un tableau de sous chaines, utiliserais tu Split ou une fonction de ton cru.
Par ailleurs, que est l'intérêt d'optimiser dans un cas où l'optimisation ne serais pas ou peu mesurable. Au temps de mes études d'informatique, on nous disais toujours qu'il fallait limiter l'optimisation à ce qui en valait la peine. Or dans le cadre de la question d'origine, sauf si la recherche porte sur un fichier où on peut avoir plusieurs dizaines de millier d'occurence, il n'y aura pas de différence pertinente entre l'appel de split ou la méthode InStr.
Enfin, mais là on s'éloigne du sujet, faire un test d'optimisation avec une stucture For de 1 million de boucle comme tu me l'as proposé n'est pas correct. Car dans ce cas il faut utiliser deux fonctions ayant la même signature pour avoir une comparaison juste, sinon c'est le cout de l'appel que je vais mesurer et non l'efficience de la fonction.
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
15 déc. 2006 à 11:51
Ecoute...
Tu développes (je te l'ai déjà dit) comme TU l'entends et je développe comme JE l'entends... Amen !

Quant à passer les données extraites à un tableau ou à autre chose sans le split (et plus rapidement) ... tu devrais chercher un peu... (j'ai donné très récemment diverses réponses à un demandeur, dont une avec l'utilisation de split et l'autre sans ... la dernière étant de loin la plus rapide)


 


Cette conversation devient totalement oiseuse.
0
drikce06 Messages postés 2236 Date d'inscription lundi 29 mai 2006 Statut Membre Dernière intervention 29 mai 2008 10
15 déc. 2006 à 11:54
Alors quel solution est la plus rapide?

Non Non! J'ai rien dis!

Bon d'accord je sorts!

 Drikce 06

Si la réponse vous convient: Réponse acceptée. Si la réponse vous convient pas:
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
15 déc. 2006 à 13:15
La solution la plus rapide est souvent, tout bêtement, Ami Drikce, celle qui est la plus adaptée...

Il est toujours possible d'utiliser une pelle Pauclain pour planter un rosier dans un jardin, par exemple.

Reste à voir si par hasard le temps nécessaire au transport de la dite pelle, puis son entrée dans le jardin et enfin sa mise en marche n'est pas bien supérieur à celui de l'emploi d'une simple bêche (choisie pour un gros rosier) ou d'un simple plantoir (pour un jeune rosier). Question de choix, donc, et de sagesse de choix, en fonction de ce à quoi que l'on a à faire.... Et c'est en cette façon judicieuse de faire son/ses choix que l'on distingue en général un développeur de l'autre...

Ami(s) ! ne perdez jamais de vue l'intérêt de choisir une méthode plutôt que l'autre.... D'autres (le jour où vous voudrez "vendre"), ne manqueront pas de faire des comparaisons "poussées" en mettant sur le "bench" votre appli et celles des autres. C'est notamment la raison pour laquelle j'ai utilisé et utilise encore un vieux "vélo" (cf. ce qu'en dit plus haut Lemoret). Aujourd'hui, pourtant, je ne cherche plus à "vendre" (je suis devenu bien vieux, hélàs),  j'ai "vendu" en mon temps ce qui était "vendable".

Oserais-je ajouter, pour enfoncer le clou, que ce que j'ai su "vendre" était dans un premier temps développé en VB puis "transposé" en ce qui ne nécessitait pas l'installation de runtimes et, parrallèlement, était plus rapide ?


Je comprends toutefois que d'aucuns se préoccupent plus du confort de développement que des résultats de ce développement à l'exécution. C'est là leur droit. Question, toutefois : ont-ils, eux,  "vendu" ?


Amitiés.
0
lemoret Messages postés 37 Date d'inscription vendredi 10 septembre 2004 Statut Membre Dernière intervention 11 mars 2007
15 déc. 2006 à 14:00
Je suis désolé d'avoir osé outrer sa seigneurie. Je comprends bien que lorsqu'on affirme des choses fausses et que quelqu'un le fait remarquer, il est plus simple de se draper dans sa dignité que de répondre.
Pardon, ohhhhh grand vendeur, roi des développeurs et demi dieu de l'optimisation de t'avoir troublé, moi un misérable vermisseau qui gagne bètement sa vie en écrivant des programmes qui forcément n'arriveront jamais au millionième de la qualité de ce qui coule de ton génialissime esprit. Je ne le referais plus, je vais vite retourner dans mes oubliettes de laborieux. J'irais maintenant répandre la bonne parole, ami développeurs, n'utilisez pas les fonctions intégrées car ce sont des démons de la fainéantise
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
15 déc. 2006 à 14:58
Amen
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
15 déc. 2006 à 16:42
Quant au "concret", ilo devrait normalement apparaître (je l'espère) là :
http://www.vbfrance.com/infomsg_SPLIT-VB-NET-VB6_860033.aspx
0
lemoret Messages postés 37 Date d'inscription vendredi 10 septembre 2004 Statut Membre Dernière intervention 11 mars 2007
15 déc. 2006 à 17:50
Le concret te satisfait il ?
0
Rejoignez-nous