Optmisation boucle

Résolu
Signaler
Messages postés
75
Date d'inscription
samedi 17 septembre 2005
Statut
Membre
Dernière intervention
29 octobre 2010
-
Messages postés
75
Date d'inscription
samedi 17 septembre 2005
Statut
Membre
Dernière intervention
29 octobre 2010
-
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

Messages postés
17288
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
71
ca optimise, oui, je le pense, tu supprime un test sur un bon paquet d'iterations
Messages postés
75
Date d'inscription
samedi 17 septembre 2005
Statut
Membre
Dernière intervention
29 octobre 2010

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 )
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
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
Messages postés
17288
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
71
l'aurait mieux vallu mettre

[...]

pour mentionner un code lambda, plutot que

y+=1

qui lui est inutile dans une telle boucle
Messages postés
75
Date d'inscription
samedi 17 septembre 2005
Statut
Membre
Dernière intervention
29 octobre 2010

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].
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
Re,
Je renouvelle ma question [../auteur/AUREL16/580665.aspx aurel16]
@+: Ju£i€n
Pensez: Réponse acceptée
Messages postés
75
Date d'inscription
samedi 17 septembre 2005
Statut
Membre
Dernière intervention
29 octobre 2010

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 ) "
Messages postés
17288
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
71
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
Messages postés
75
Date d'inscription
samedi 17 septembre 2005
Statut
Membre
Dernière intervention
29 octobre 2010

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
Messages postés
75
Date d'inscription
samedi 17 septembre 2005
Statut
Membre
Dernière intervention
29 octobre 2010

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