Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

BENCHMARK DE BOUCLES


Information sur la source

Catégorie :Optimisation du code Niveau : Initié Date de création : 05/01/2005 Date de mise à jour : 05/01/2005 16:06:14 Vu / téléchargé: 4 656 / 237

Note :
8 / 10 - par 1 personne
8,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (3)
Ajouter un commentaire et/ou une note

Description

Cliquez pour voir la capture en taille normale
Suite aux posts sur la source de Proger ( http://www.vbfrance.com/code.aspx?ID=8198 ), je voulais essayer de dissiper la polémique pour les Do/While et For/next, et me fixer par la même occasion. J'ai inclus toutes les boucles que je connaissais.
 

Conclusion

Désolé, j'avais pas vu qu'il y avait déjà autant de sources sur ce sujet, sinon j'aurais pas fait cette application. Bon, étant donné que je l'ai faite, je la mets quand même sur le site. Eviter de trop m'en vouloir. :oP
En plus c'est une première pour moi, j'ai mis plein de commentaires, trop cooooool.

Pour ceux qui ne le savent pas : ne vous basez pas sur les performances que vous avez sur l'IDE (interface de développement), parce qu'une fois votre application compilée, vous risquez d'être surpris. Beaucoup de fonctions portent à confusion, on pourrait croire que certaines sont plus rapides, mais c'est uniquement en compilant qu'on peux vraiment tester.
Par exemple sur mon appli, c'est entre les For/Next et Do/While. On pourrait croire que les premières sont plus rapides, mais c'est uniquement valabe sur l'IDE. Après compilation, c'est différent.

D'après ce que j'ai pu voir (inutile de m'incendier si vous n'êtes pas d'accord), les boucles s'exécutant le plus rapidement sont Do/Loop Until et Do/Loop While, en fait celles dont la vérification se trouvent à la fin. Mais ça a un prix : puisque la vérification se trouve en fin de boucle, VB ne la vérifie que lorsqu'il aura exécuté le code précédant ladite vérification. Donc la boucle sera obligatoirement exécutée la première fois, même si la vérification voudrait l'interdire. Dangereux si vous faite pas attention. :o)
Elles sont plus rapides, mais de très peu. Sur 2 milliards d'itération, on gagne moins d'une seconde, donc autant dire que ça revient au même : arrêtez de vous prendre la tête. :oP

PS : ça dépend peut-être aussi du type de processeur, j'ai testé sur un P4 Northwood 3GHz.

 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Historique

05 janvier 2005 16:06:14 :
Ajout de capture

Commentaires et avis

signaler à un administrateur
Commentaire de Drakkhen le 05/01/2005 16:08:46

J'ai oublié, il était aussi question de boucles imbriquées. Ca change pas grand chose.

signaler à un administrateur
Commentaire de Proger le 22/08/2005 18:06:11

J'ai épluché la source, a priori rien a redire, même que tu tiens compte du délai d'appel à l'API queryperformance :D

En revanche il faudrai faire une opération standard dans les boucles. Je craint que les versions optimisé "grillent" les boucles puisqu'elles sont inutile.

Sinon, pour faire plus simple dans le changement de type :
(general)
Option Explicit
DefLng A-Z

(subs)
Dim T, I 'automatiquement en mode Long

et version integer :
(general)
Option Explicit
DefInt A-Z

etc :)

signaler à un administrateur
Commentaire de santiago69 le 04/10/2005 13:03:55

salut Proger,
interessant le coup de DefLng et DefInt ; je connaissais pas.
est-ce que ca nous fait gagner en rapidite ?
parcequ'en ce qui me concerne, j'ecrit toujours tout en toute lettre a des fins de lisibilite :
dim NombreDeChiffres as Long
dim TexteAffiche as String
dim ConditionDeSortie as Boolean
etc...

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,390 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.