begin process at 2008 07 04 01:03:13
1 204 456 membres
3 nouveaux aujourd'hui
14 114 membres club

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 380 / 216

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

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.
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

05 janvier 2005 16:06:14 :
Ajout de capture
  • 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

Pub



Appels d'offres

CalendriCode

Juillet 2008
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Boutique

Boutique de goodies CodeS-SourceS