Accueil > > > UNIX - MODULE TIME : TEMPS D'UNE FONCTION ALGORITHMIQUE AVEC TIME() ET CLOCK()
UNIX - MODULE TIME : TEMPS D'UNE FONCTION ALGORITHMIQUE AVEC TIME() ET CLOCK()
Information sur la source
Description
Ce code source, présente les fonctions clock() et time() présent dans le module time. J'ai écris cette source pour mettre en avant ces deux fonctions, comprendre leur légère différence, et permettre simplement de tester ses fonctions algorithmiques à travers. En effet il est important de savoir, si son code est optimisé ou pas en le soumettant à un test de temps (bien sûr, il est nécessaire de disposer d'au moins deux algorihtmes pour les comparer). On aurait pu aussi inclure le test de pytone (peut être pour une prochaine fois) Il existe une autre méthode (surement la plus utilisé), qui permet de tester la vitesse d'un programme sous linux. C'est la commande "time monprogramme". Je vous laisse vous renseigner ;). Néanmoins ca pose des problèmes sur l'isolement de l'algo en question du reste du programme. Bref, en espérant que cette première contribution à CS soit utile :) NB : Je l'ai mis dans "Tutoriaux", car j'explique au début les deux fonctions, et comme c'est très important de réaliser ces tests qui peuvent être négligé, je pense qu'elle y trouvera sa plaçe
Source
- ## Unix -- Rapidité d'algorithme --
- """
- clock();
- On Unix, return the current processor time as a floating point
- number expressed in seconds. The precision, and in fact the very
- definition of the meaning of ``processor time'', depends on that
- of the C function of the same name, but in any case, this is the
- function to use for benchmarking Python or timing algorithms.
-
- Time():
- Return the time as a floating point number expressed in seconds since
- the epoch, in UTC. Note that even though the time is always returned
- as a floating point number, not all systems provide time with a better
- precision than 1 second. While this function normally returns
- non-decreasing values, it can return a lower value than a previous
- call if the system clock has been set back between the two calls.
-
- En français :
-
- Clock():
- Sous Unix, retourne le temps en valeur décimal(type float) exprimé
- en seconde du temps du processeur courant
- La précision, est la signification même du temps exprimé par le processeur,
- elle dépend de celle de la fonction de C du même nom, mais de toute façon,
- c'est la fonction à employer pour le benchmark sous python, ou le test sur
- la rapidité des algorithmes.
-
- Time():
- Retoune le temps en valeur décimal(type float) exprimé en seconde depuis la
- date d'Epoch, de l'UTC.
- Notez que même si le temps est retourné en nombre décimal, les systèmes
- n'ont pas tous une précision plus petite qu'une seconde.
- Attention toutefois, cette fonction renvoie normalement des valeurs
- croissantes à chaque appel, sauf si l'horloge du système a été modifié
- entre deux appels de fonction.
-
- 'UTC' : Coordinated Universal Time (UTC) est une grande précision du temps
- international, utilise partout dans le monde. C'est un standard.
-
- 'Epoch' : représente la date initiale à partir de laquelle est mesuré le
- temps par les systèmes d'exploitation
- -sous UNIX, c'est 1er janvier 1970 à 0 heure (UTC)
- (source : wikipédia)
-
-
- Ce sont les deux fonctions temps les plus utilisés.
- Néanmoins la fonction clock(), n'est pas assez précise.
- Sa précision après la virgule n'excède pas le centième.
- Il sera arrondis.
-
- Ma fonction propose d'utiliser les deux fonctions, de les appellé 10fois,
- et faire une moyenne.
- (lorsque bien sur le résultat de clock est différent de 0)
-
- Pour effectuer le test d'une de vos fonctions, remplacez "testb" par votre
- fonction.
-
- Pensez à fermez vos programmes
-
- """
-
- import time
-
- #Fonction inutile, juste pour le test (à remplaçer par votre algo)
- def testb():
- for i in range(500):
- for i2 in range(100):
- v=(i*i2)
-
- def getTime(mfunc, verbose=0):
-
- t0=time.time()
- mfunc()
- t1=time.time()
- t=t1-t0
-
- c0=time.clock()
- mfunc()
- c1=time.clock()
- c=c1-c0
-
- if (verbose):
- print "time() : ",t
- print "clock() : ",c
-
-
- if (c > 0):
- result=(t+c)/2
- else :
- result=t
-
- return result
-
- print "Demarrage du test, veuillez patientez..."
-
- # On stock nos temps dans la liste
- tab_result=[]
-
- # On appel 10 fois la fonction getTime pour stocker son résultat dans tab_result
- for i in range(10):
- tab_result.append(getTime(testb,0))
-
- moy=0
- for num in tab_result:
- moy=moy+num
- moy=moy/len(tab_result)
-
- print moy
## Unix -- Rapidité d'algorithme --
"""
clock();
On Unix, return the current processor time as a floating point
number expressed in seconds. The precision, and in fact the very
definition of the meaning of ``processor time'', depends on that
of the C function of the same name, but in any case, this is the
function to use for benchmarking Python or timing algorithms.
Time():
Return the time as a floating point number expressed in seconds since
the epoch, in UTC. Note that even though the time is always returned
as a floating point number, not all systems provide time with a better
precision than 1 second. While this function normally returns
non-decreasing values, it can return a lower value than a previous
call if the system clock has been set back between the two calls.
En français :
Clock():
Sous Unix, retourne le temps en valeur décimal(type float) exprimé
en seconde du temps du processeur courant
La précision, est la signification même du temps exprimé par le processeur,
elle dépend de celle de la fonction de C du même nom, mais de toute façon,
c'est la fonction à employer pour le benchmark sous python, ou le test sur
la rapidité des algorithmes.
Time():
Retoune le temps en valeur décimal(type float) exprimé en seconde depuis la
date d'Epoch, de l'UTC.
Notez que même si le temps est retourné en nombre décimal, les systèmes
n'ont pas tous une précision plus petite qu'une seconde.
Attention toutefois, cette fonction renvoie normalement des valeurs
croissantes à chaque appel, sauf si l'horloge du système a été modifié
entre deux appels de fonction.
'UTC' : Coordinated Universal Time (UTC) est une grande précision du temps
international, utilise partout dans le monde. C'est un standard.
'Epoch' : représente la date initiale à partir de laquelle est mesuré le
temps par les systèmes d'exploitation
-sous UNIX, c'est 1er janvier 1970 à 0 heure (UTC)
(source : wikipédia)
Ce sont les deux fonctions temps les plus utilisés.
Néanmoins la fonction clock(), n'est pas assez précise.
Sa précision après la virgule n'excède pas le centième.
Il sera arrondis.
Ma fonction propose d'utiliser les deux fonctions, de les appellé 10fois,
et faire une moyenne.
(lorsque bien sur le résultat de clock est différent de 0)
Pour effectuer le test d'une de vos fonctions, remplacez "testb" par votre
fonction.
Pensez à fermez vos programmes
"""
import time
#Fonction inutile, juste pour le test (à remplaçer par votre algo)
def testb():
for i in range(500):
for i2 in range(100):
v=(i*i2)
def getTime(mfunc, verbose=0):
t0=time.time()
mfunc()
t1=time.time()
t=t1-t0
c0=time.clock()
mfunc()
c1=time.clock()
c=c1-c0
if (verbose):
print "time() : ",t
print "clock() : ",c
if (c > 0):
result=(t+c)/2
else :
result=t
return result
print "Demarrage du test, veuillez patientez..."
# On stock nos temps dans la liste
tab_result=[]
# On appel 10 fois la fonction getTime pour stocker son résultat dans tab_result
for i in range(10):
tab_result.append(getTime(testb,0))
moy=0
for num in tab_result:
moy=moy+num
moy=moy/len(tab_result)
print moy
Conclusion
Le code est simple. Aucune surprise ou complexité. On appel 10 fois la fonction getTime, pour avoir le temps d'execution de notre fonction testb. Une fois les 10 valeurs stocké, on en fait une moyenne.
Historique
- 19 août 2007 12:58:12 :
- Légère faute :)
- 19 août 2007 13:47:31 :
- Erreur d'une condition (c0 remplaçé par c dans la condition "if c0<0")
- 28 janvier 2008 13:57:38 :
- Traduction francaise de time() refaite plus sérieusement, car l'ancienne était mal traduite.
- 28 janvier 2008 13:58:37 :
- Traduction francaise de time() refaite plus sérieusement, car l'ancienne était mal traduite.
- 28 janvier 2008 14:01:45 :
- Nombreuses corrections de la fonction time() mal traduite en francais.
- 28 janvier 2008 14:01:54 :
- Nombreuses corrections de la fonction time() mal traduite en francais.
Sources du même auteur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
Python,drôle d'animal [ par Vianneyp ]
Bonjour,Je programme en vb/vb.Net mais j'ai tout récemment (pas plus tard que ce matin enfaite :-) ) décider de me mettre a python avec un tutoriel vr
cacher les icones du bureau [ par DroodyDruid ]
Bonjour,Je débute en python et j'essaye de modifier le bureau windows.La je cherche plus particulièrement un moyen de cacher/afficher les icônes du bu
compilation [ par xmaw ]
J'ai fait une recherche et j'ai trouvé qu'il y avait des compilateurs pour les fichiers .py qui donnent des executables indépendants de python qui peu
script python [ par emma66 ]
Bonjour,J'aimerais ecrire un script python qui memorise tout les utilisateurs d'un fichier dans une liste de chaine "Utilisateurs", le nom d'un utilis
[Python+OpenCV] Lecture Vidéo [ par Vinzr ]
Bonjour,Je commence un nouveau projet en Python avec la librairie OpenCv.Ayant déjà utilisé de nombreuse fois cette librairie en C, je pensais que cel
Python et Windows Mobile 6 [ par jiyuu ]
Bonsoir à tous,Je me permets de poster ce message pour poser deux questions: *Quelqu'un sait-il comment charger wxPyCE (wxPython pour windows mobile)
Gestion des évènements: Clavier, Souris [ par GTomXIII ]
Salut tout le monde!Je débute avec python depuis le week-end dernier. J'utilise souvent AutoHotKey pour mes programmes mais j'ai voulu me mettre à un
Python / SQLite / for...in... [ par samylatortue ]
Bonjour à tous,je suis face à un problème depuis quelque jours...j'ai une base de donnée dans laquel il y a 2 tables j'aimerais prendre une partie des
Comment creer une GUI en pure python ??? [ par pythux ]
Bonjour a tous !!!Apres de nombreuse recherche infructueuses sur le net, je me tourne vers vous pour essayez de me donner quelque ellements de reponse
python ou php ? [ par eric35 ]
Salut J' hésite entre ces 2 langages ...Avant de choisir l'un ou l 'autre, pouvez vous me donner à titre d 'exemple, quel serait le code pour lancer
|
Derniers Blogs
[MIX10] KEYNOTE DEUXIèME JOURNéE - INTERNET EXPLORER 9, HTML5, VISUAL STUDIO 2010, ODATA[MIX10] KEYNOTE DEUXIèME JOURNéE - INTERNET EXPLORER 9, HTML5, VISUAL STUDIO 2010, ODATA par cyril
Le deuxième keynote du mix fut très riche en contenu. Internet Explorer 9 Juste un après le lancement de Internet Explorer 8, Microsoft a dévoilé les nouveautés de Internet Explorer 9. Désormais, IE supportera HTML5, SVG et CSS3. L'élément ...
Cliquez pour lire la suite de l'article par cyril CERTIFICATIONS BETA .NET 4CERTIFICATIONS BETA .NET 4 par KooKiz
Les inscriptions pour les certifications beta .NET 4 ont commencé. L'inscription est offerte pour les examens suivants : - 71-511, TS: Windows Applications Development with Microsoft .NET Framework 4 - 71-515, TS: Web Applications Development with...
Cliquez pour lire la suite de l'article par KooKiz [MIX 2010] - MICROSOFT TRANSLATOR TECHNOLOGY PREVIEW V2[MIX 2010] - MICROSOFT TRANSLATOR TECHNOLOGY PREVIEW V2 par redo
J'imagine que la plupart d'entre vous connaissent bien et utilisent le service de traduction de Google, mais connaissez-vous celui de Microsoft . Microsoft Translator ? Effectivement, Microsoft nous annoncé le lancement version 2 de la Technologie Preview...
Cliquez pour lire la suite de l'article par redo LANCEMENT EN PREVIEW DE CYCLONE LORS DES TECHDAYS 2010!LANCEMENT EN PREVIEW DE CYCLONE LORS DES TECHDAYS 2010! par MPOWARE
Toutes les vidéos de ce lancement sont en ligne!
Partie I - Intro
http://www.youtube.com/watch?v=LkQzTQ8T6CA
Partie II - Démo 1
http://www.youtube.com/watch?v=drAhYQ7lqvo
Partie III - Démo 2
http://www.youtube.com/watch?v=c8KM_1Gqybc...
Cliquez pour lire la suite de l'article par MPOWARE [WP7] JE NE VEUX PAS D'UN NOUVEL IPHONE[WP7] JE NE VEUX PAS D'UN NOUVEL IPHONE par FREMYCOMPANY
Je pense qu'ils ont besoin d'une piqure de rappel chez Microsoft : c'est bien gentil d'avoir une interface jolie, mais si c'est pour avoir un truc qui ne convainct pas dedans, c'est peine perdue.
---->
Système ouvert ----> Fermé ?
P...
Cliquez pour lire la suite de l'article par FREMYCOMPANY
Logiciels
Xilisoft Convertisseur Vidéo Ultimate (5.1.39.0305)XILISOFT CONVERTISSEUR VIDéO ULTIMATE (5.1.39.0305)Xilisoft Convertisseur Vidéo Ultimate est un outil puissant de conversion vidéo, facile à utilise... Cliquez pour télécharger Xilisoft Convertisseur Vidéo Ultimate Xilisoft DVD Ripper Ultimate (5.0.64.0304)XILISOFT DVD RIPPER ULTIMATE (5.0.64.0304)Xilisoft DVD Ripper Ultimate est un logiciel excellent pour copier et convertir DVD vers presque ... Cliquez pour télécharger Xilisoft DVD Ripper Ultimate Rigs of Rods (63.3)RIGS OF RODS (63.3)c'est un jeu de multi-simulation camions,autobus voitures, avions, bateaux, hélicoptère avec défo... Cliquez pour télécharger Rigs of Rods Konvertor (4.00)KONVERTOR (4.00)Le logiciel est un gestionnaire multimedia affichant, jouant et convertissant plus de 2000 format... Cliquez pour télécharger Konvertor
|