Comparer les instructions case of, if then et if then else

Description

Petit test très minimal affichant la durée d'exécution en ms pour chaque instruction dans une boucle paramétrable.

Suite à une question très pertinente posée par bundyboss sur le forum :

http://www.delphifr.com/forum.v2.aspx?ID=393257

et animé de manière passionnante par Kenavo, jinh68 et ni69, j'ai voulu vérifier par moi-même.

Pour ce faire, j'ai largement utilisé l'idée et le code de Kenavo, que j'ai quasiment copié-collé pour les trois procedures.

Il m'a paru intéressant de contrôler la valeur de la variable testée afin de vérifier deux ou trois choses que l'on pressent :

- si la condition est satisfaite au tout début de la suite d'instructions conditionnelles, l'avantage va à if then else;

- case of reprend très vite l'avantage;

- if then, bien que forcément très stable quelle que soit la valeur de la variable testée, semble pas mal dépassé;

- case of semble d'une régularité et d'une rapidité remarquables;

Voilà, ça semble finalement assez logique, avec une grosse surprise quand même pour l'efficacité de case of.

Sinon, pour le principe du test, très inspiré par Kenavo :

- on teste une variable dans une boucle de 0 à 59 qui affectera cette valeur à la variable, ce qui permet de vérifier l'incidence de cette valeur à l'intérieur des instructions comparées;

- les instructions à comparer sont répétées dans une boucle suffisamment étendue pour que les valeurs soient significatives, que l'on peut paramétrer avec l'interface;

- les résultats sont exprimés en millisecondes et apparaissent dans les memos respectifs dans un ordre de 0 à 59;

- la moyenne des durées de traitement est calculée et affichée dans les edits correspondants.

Voilà, je me suis bien amusé.

Merci à tous, on a vraiment par moments des forums passionnants sur Delphifr ! ;)


Mise à jour du 20-02-05

J'ai rajouté la procedure de Manchester dans le quatrième memo.

Elle "ratatine" toutes les autres !

Petit plus :

Le résultat des tests peut maintenant être enregistré dans un fichier Result.txt, les enregistrements suivants s'appelleront Result001.txt, Result002.txt, etc, donc pas de risque d'écrasement.

Détail amusant (ouais, mais quand même...) et inexpliqué :

Renommez, pour voir, le bouton servant à la sauvegarde de "BtnSaveFile" en "BtnSave".
Les temps d'exécution sont quasiment doublés !!!
J'ai failli virer bredin complet, avant de résoudre ce problème, mais je pas encore compris le pourquoi du comment de cet état de fait...

Conclusion :


Vous pouvez modifier/bidouiller ce code, c'est fait pour !

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.