Tester le résultat et le temps de calcul d'instructions

Soyez le premier à donner votre avis sur cette source.

Vue 2 122 fois - Téléchargée 293 fois

Description

Pour calculer la division entière (qui n'a pas d'opérateur directement en Javascript), quel est le code le plus efficace:
(a/b>>0) ou Math.floor(a/b) ou ~~(a/b) ou (a-a%b)/b ou (a/b)|0 ?

Voici un code de moins d'une page qui permet de le tester directement.
Il permet même, avec une initialisation quelconque, d'expérimenter un bout de code quelconque.

Comme le temps de calcul de quelques instructions est en général très petit, on peut aussi indiquer combien de fois il faut les parcourir pour pouvoir en mesurer le temps d'exécution.

Pour améliorer les mesures, on parcoure d'abord la boucle "à vide", puis avec les instructions données, et on indique alors la différence des temps.

Les variations de la charge de l'ordinateur et du navigateur font que les temps d'exécution sont un peu aléatoires, surtout pendant l'initialisation du navigateur. Il se pourrait même qu'un temps négatif soit indiqué, par exemple, si le temps "à vide" est mesuré plus grand que celui des "instructions".

Pour essayer de neutraliser le temps d'initialisation des boucles, une première boucle "à vide" est d'abord exécutée "pour rien" (dummy empty run).

Pour éviter les "collisions" avec les noms des variables des codes à tester, les noms des variables dans la fonction RunTime sont de la forme _x_ .

Un résumé de chaque mesure faite est ajoutée à une "textarea".

Faites directement un test:
http://www.william-voirol.ch/Prog/Tests/Optimize/index.html

Ou accédez au zip qui contient le code source:
http://www.william-voirol.ch/Prog/Tests/Optimize.zip


Testé avec Firefox, Internet Explorer, Opera, Safari.

Ce programme n'a pas l'air de fonctionner avec Google Chrome: ce navigateur semble "bloquer" sur les boucles for qui contiennent eval("...") ! Pourquoi ?

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.