Optmisation boucle

Résolu
cs_aurel16 Messages postés 75 Date d'inscription samedi 17 septembre 2005 Statut Membre Dernière intervention 29 octobre 2010 - 13 janv. 2009 à 10:14
cs_aurel16 Messages postés 75 Date d'inscription samedi 17 septembre 2005 Statut Membre Dernière intervention 29 octobre 2010 - 14 janv. 2009 à 12:53
Bonjour,

J'ai à l'origine une boucle :

    For  x=0 To 100000000
            If not(x=10000) Then
                y+=1
            End If
        Next

Est ce que en faisant comme ci dessous, cela optimise la chose ?

    For  x=0 To 9999
            y+=1
        Next
        for x=10001 to 100000000
        y+=1
        next

Je pense que oui, mais je n'arrive pas à faire les calculs de temps, cela est toujours variable.
Merci de votre aide.

10 réponses

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 71
13 janv. 2009 à 10:49
ca optimise, oui, je le pense, tu supprime un test sur un bon paquet d'iterations
3
cs_aurel16 Messages postés 75 Date d'inscription samedi 17 septembre 2005 Statut Membre Dernière intervention 29 octobre 2010
13 janv. 2009 à 10:31
J'ai oublié de préciser que le y+=1 est juste un exemple de code. ( l'optimisation en peut donc pas venir de la )
0
jrivet Messages postés 7393 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
13 janv. 2009 à 11:20
Salut
Question quel est l'intérêt d'une telle boucle (ou des deux d'ailleurs)
Est ce que une simple addition ne suffit pas?
(possible que je dise une grosse bêtise et d'avance m'en excuse )
@+: Ju£i€n
Pensez: Réponse acceptée
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 71
13 janv. 2009 à 11:23
l'aurait mieux vallu mettre

[...]

pour mentionner un code lambda, plutot que

y+=1

qui lui est inutile dans une telle boucle
0

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

Posez votre question
cs_aurel16 Messages postés 75 Date d'inscription samedi 17 septembre 2005 Statut Membre Dernière intervention 29 octobre 2010
13 janv. 2009 à 11:23
Après les tests, en effet, cela est plus rapide.
Pour information je mets 14.1075s avec le code non optimisé et 13.4621s avec le code optimisé ( environ 5% de gain ) avec une dizaine d'itérations.
Je vous remercie pour votre aide [../auteur/RENFIELD/2359.aspx Renfield].
0
jrivet Messages postés 7393 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
13 janv. 2009 à 11:27
Re,
Je renouvelle ma question [../auteur/AUREL16/580665.aspx aurel16]
@+: Ju£i€n
Pensez: Réponse acceptée
0
cs_aurel16 Messages postés 75 Date d'inscription samedi 17 septembre 2005 Statut Membre Dernière intervention 29 octobre 2010
13 janv. 2009 à 11:39
Pour [auteur/JRIVET/89254.aspx jrivet] : " J'ai oublié de préciser que le y+=1 est juste un exemple de code. ( l'optimisation en peut donc pas venir de la ) "
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 71
13 janv. 2009 à 11:41
j'vois pas ce qui te gène, jrivet...
aurel16 a mis y+=1 histoire de mettre du code.

il aurait surement du mettre [...] ou un truc non dérangeant
0
cs_aurel16 Messages postés 75 Date d'inscription samedi 17 septembre 2005 Statut Membre Dernière intervention 29 octobre 2010
13 janv. 2009 à 14:59
Sinon pour le If not(x=10000) on peut le remplacer par if not(x.equals(10000))

Lien : http://geekswithblogs.net/viktorbergman/archive/2007/03/26/109801.aspx
0
cs_aurel16 Messages postés 75 Date d'inscription samedi 17 septembre 2005 Statut Membre Dernière intervention 29 octobre 2010
14 janv. 2009 à 12:53
Bonjour,

Je rencontre un problème avec le findstring d'une listbox :
Selon un site : x=List1.FindString("pa",12)  
retourne le numéro de l'élément commençant par 'pa' en cherchant à partir de l'élément
numéro 12.

J'ai donc créé une listbox qui contient :

a
b
c
d
e

J'exécute alors x=List1.FindString("b",3) normalement comme b est à l'index numero 1, x devrait être  -1 mais la il me renvoit 1 comme si la commande x=List1.FindString("b",3) devenait x=List1.FindString("b").

Est ce moi qui a loupé quelque chose ou cette méthode ne marche pas ?

merci
0