TEST COMPARATIF.. FOR.. NEXT DANS LE COIN DROIT VERSUS ...

cs_EBArtSoft Messages postés 4525 Date d'inscription dimanche 29 septembre 2002 Statut Modérateur Dernière intervention 22 avril 2019 - 9 sept. 2004 à 20:05
LogRaam (aka Gabriel Mailhot) Messages postés 60 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 25 avril 2005 - 13 sept. 2004 à 16:35
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/26042-test-comparatif-for-next-dans-le-coin-droit-versus

LogRaam (aka Gabriel Mailhot) Messages postés 60 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 25 avril 2005
13 sept. 2004 à 16:35
Merci Benouille,


Vraiement touché.. ;-)



MadLucas (qui menace de faire maintenant un test de vitesse avec les opéreteurs mathématiques... Arf!)
cs_Benouille Messages postés 215 Date d'inscription jeudi 24 octobre 2002 Statut Membre Dernière intervention 7 septembre 2007
13 sept. 2004 à 11:34
exellent :)
j'aime bien la démarche spirituelle de la boucle en vb

10/10 parceque tu le vaux bien ;)
cs_yoman64 Messages postés 592 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 4 décembre 2008
11 sept. 2004 à 06:55
Qu'est ce que vous avez tous a faire des test avec les boucle :S ??


@++
YoMan64
PhPKoDe.Com
tr0piiic Messages postés 34 Date d'inscription vendredi 6 août 2004 Statut Membre Dernière intervention 1 octobre 2004
10 sept. 2004 à 12:58
Pour ce que ca gagne en plus ...
oui j'ai un amd athlon 64 3200+ 1giga de ram lol

=)))))
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
10 sept. 2004 à 09:21
Dans un tel cas, le tout n'est pas un histoire de choix de boucle !! mais de choix de technoligie et de langage....
cauroir Messages postés 27 Date d'inscription vendredi 18 octobre 2002 Statut Membre Dernière intervention 2 août 2007
10 sept. 2004 à 09:21
Bonjour,
Voila une approche qui me semble interessante. Belle initiative !
Je vais creuser un peu
LogRaam (aka Gabriel Mailhot) Messages postés 60 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 25 avril 2005
10 sept. 2004 à 01:59
Relatif BruNews,


En fait, tout est exponentiel. Si en effet tes boucles font en moyenne 1000 itérations, et bien pas besoin d'optimiser. Mais imagine maintenant que tu scan une matrice de pixels, que chacun des pixels doit être redéfini RGB séparément et que chacun des pixels est ensuite calculé avec une matrice de variation prenant en considération ses voisins... Et que tu décides de faire le tour d'une image de 40 Mo... Disons que dans ces cas extrêmes, le choix d'une boucle rapide peut être judicieux.

Bref, ce test ce veut avant tout un "jeu de courses" des boucles dans VB et comble plus la curiosité qu'autre chose.. Bien que l'utilité de ce test peut servir dans certain cas, il peut très bien ne servir absolument à rien dans d'autres...

Maddy
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
9 sept. 2004 à 23:13
Ceci ne sert strictement a rien.
Il n'y a pas une forme de boucle meilleure qu'une autre, tout dependra du code interne a la boucle.
Des que tu auras des instructions de chaine dans la boucle, son test de sortie ne representera meme pas la milliardieme partie du temps employe.
Ce n'est pas en VB qu'on s'en va a la chasse aux cycles, on n'a aucun controle sur le code produit, alors pure perte de temps.
LogRaam (aka Gabriel Mailhot) Messages postés 60 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 25 avril 2005
9 sept. 2004 à 22:32
Mmmmh, je viens de faire un essai avec le code compilé. Ça fonctionne à la différence que DO.. LOOP remporte la course. Si je fait le calcul:

ff = (ff+1)-1

dans chacune des boucles, j'ai à peu près les mêmes performances qu'avec les boucles vides.. ça rpend juste plus de temps.

Petit détail, le code compilé étant plus rapide, j'ai dû changer les valeurs suivantes:

myCOUNTER = 10000000
numOtest = 100

DOnc en augmentant "myCOUNTER", on peut percevoir le calcul avec le code compilé.

Pour ma part, non-compilé j'ai:

1, 10, 10, 15, 15, 15

Et compilé j'ai:

26, 19, 20, 26, 26, 27

Bien sûre, les itérations sont plus nombreuses avec la version compilée, donc les chiffres sont plus gros.

Verdict, DO..LOOP est plus performant lorsque compilé et FOR..NEXT est plus performant si on roule du code non-compilé (utile pour une application en temps réel)


Voilà,



MadLucas


note: je met une version avec un calcul pour faire plaisir à EB.. ;-)
cs_EBArtSoft Messages postés 4525 Date d'inscription dimanche 29 septembre 2002 Statut Modérateur Dernière intervention 22 avril 2019 9
9 sept. 2004 à 20:05
C'est ma fête aujourd'hui ou quoi, ya une ligue contre ma petite personne ? lool

Pour ce qui est de la source (et pour encore poser ma graine la ou il ne faut pas) j'ai compilé le projet avec toutes les options optimisation et figure toi que vb n'a même pas pris la peine de compiler le code suivant :

... 0003d ff 52 04 call DWORD PTR [edx+4]
; 29 : Dim a As Long
; 30 : Dim myCOUNTER As Long
; 31 : myCOUNTER = 100000
; 32 : For a& = 0 To myCOUNTER
; 33 : Next a
; 34 : End Sub
00040 c7 45 fc 00 00
...

Pourquoi ? par ce qu'une boucle vide n'a aucune influence sur le reste du code donc il ne le compile pas tout simplement ! De ce fait ton teste est comme qui dirais "éroné" (suffisais de voir les resultats du teste pour s'en apercevoir).

Aller, bonne continuation

@+
Rejoignez-nous