Le moment précis de fonctions en python

Je suis à la programmation en python sur windows et souhaitez mesurer avec précision le temps qu'il faut pour une fonction à exécuter. J'ai écrit une fonction "time_it" qui prend une autre fonction, l'exécute et renvoie le temps qu'il a fallu pour exécuter.

def time_it(f, *args):
    start = time.clock()
    f(*args)
    return (time.clock() - start)*1000

j'appelle ça 1000 fois et la moyenne du résultat. (les 1000 constante à la fin est de donner la réponse en millisecondes.)

Cette fonction semble fonctionner mais j'ai ce sentiment tenace que je suis en train de faire quelque chose de mal, et qu'en le faisant de cette façon, je suis en utilisant plus de temps que la fonction utilise lors de son exécution.

Est-il une norme plus ou accepté pour ce faire?

Quand j'ai changé mon test de la fonction à appeler un imprimer de sorte qu'il dure plus longtemps, mon time_it fonction retourne une moyenne de 2,5 ms tandis que le cProfile.run('f()') retourne et la moyenne de 7.0 ms. J'ai pensé que ma fonction serait surestimer le temps si quoi que ce soit, ce qui se passe ici?

Une remarque supplémentaire, c'est le temps relatif de fonctions par rapport à l'autre que je me soucie, pas le temps absolu comme ce sera évidemment varier selon le matériel et d'autres facteurs.