IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Caml Discussion :

[Caml] Calculer le temps d'exécution d'une fonction


Sujet :

Caml

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 9
    Points : 5
    Points
    5
    Par défaut [Caml] Calculer le temps d'exécution d'une fonction
    Bonjour,

    Je cherche à comparer les performances de plusieurs algos écrit en caml, et j'aimerais bien avoir un temps d'exécution comme "indice" de performance.

    J'ai essayé de faire quelque chose avec la fonction time() dans sys.ml en faisant passer la fonction dont je veux le temps en paramètre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    let go1 = let t1=time() in (f2 t1 Tri_Bulle tableau);;
    let f2 t=let t2=time() in f3 t t2;;
    etc etc... en espérant pouvoir faire un print_float à la fin pour avoir le temps... mais malheureusement ça ne marche pas

    Donc si quelqu'un avait une idée ça serait avec plaisir

    PS: j'ai cherché sur internet mais sans succès.

  2. #2
    Membre actif Avatar de Steki-kun
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    222
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 222
    Points : 281
    Points
    281
    Par défaut
    Pourquoi tu n'implémentes pas tes différents algos séparément puis tu les exécute avec "time" ? tu auras une comparaison... et tu peux utiliser ocamlprof pour voir là où ton programme passe le plus clair de son temps (typiquement, dans le GC si tu manipules pas mal de structures dans tous les sens, ou bien dans des tables de hachage, ou que sais-je...)

    Sinon, pour le faire dans le code, ben déjà je sais pas ce que t'essayes de programmer dans le snippet que tu as mis là, mais je ne pense pas que ca fasse ce que tu souhaites !! dans ton exemple là, t1 et t2 vont être égaux (modulo le temps de rentrer dans la fonction). Si tu veux appeler une fonction f et mesurer son temps d'exécution, tu peux faire ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     ...
     let compteur = time() in
     (f ...; print_float (time() - compteur))) ...
    oui je sais y'a de l'impératif, mais c'est pas une ineptie d'utiliser des traits impératifs pour faire des trucs comme ça :-)

    Et surtout, time est en seconde, alors il y a beaucoup de chance pour que tu ne voies rien du tout ! Suivant le temps que prends f, exécute là une centaine ou un millier de fois, si besoin, entre deux checkpoints. Ouala...
    I'm the kind of guy that until it happens, I won't worry about it. - R.H. RoY05, MVP06

  3. #3
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 679
    Points
    18 679
    Par défaut
    Déjà tu es sous camllight (ça me rappelle ma taupe ) ou sous Objective Caml ... ?

    dans le premier cas, t'es dans la *****
    (en tout cas, à mon époque je n'avais pas trouvé... et je m'étais mis à O-Caml)

    dans le second, compiles-tu ton code ?

    si oui, tu es certainement sous unix... et la commande time servira
    si non, dans la librairie système tu peux récupérer le temps passé depuis le depuis de l'exécution...


    Bonne chance
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    dsl pour ma réponse tardive

    J'étais à présent sous windows avec l'interprêteur ocaml de base, un ptit tour sur linux et effectivement la commande time donne bien le temps... 0 secondes

    Donc je fais essayer de faire une ptite boucle for pour avoir un temps d'exécution utilisable.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. calculer le temps d'exécution d'une fonction
    Par info_sara dans le forum C++/CLI
    Réponses: 4
    Dernier message: 08/06/2015, 16h02
  2. Comment calculer le temps d'exécution d'une fonction
    Par gege2061 dans le forum Télécharger
    Réponses: 0
    Dernier message: 30/11/2010, 16h19
  3. Calculer le temps d'exécution d'une fonction
    Par ZAYDOUN dans le forum MATLAB
    Réponses: 3
    Dernier message: 11/07/2008, 14h45
  4. Calculer le temps d'exécution d'une procédure
    Par fring dans le forum Contribuez
    Réponses: 0
    Dernier message: 23/05/2008, 18h53
  5. Calculer le temps d'exécution d'une requête
    Par BRAUKRIS dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 16/03/2007, 12h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo