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

C Discussion :

Temps d'exécution algorithme


Sujet :

C

  1. #21
    Membre très actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2009
    Messages
    172
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2009
    Messages : 172
    Par défaut
    Citation Envoyé par anacharsis Voir le message
    salut !
    comment trouver le WCET d'un tri rapide dont on ne dispose pas du code ?
    J'ai encore un peu de mal avec l'algorithmique (je suis en plein dedans!). Mais sans l'algo exacte et en particulier la sélection du pivot, je dirai que c'est impossible. D'ailleurs même pour le temps moyen tu ne peux que supposer.


    Concernant la question initiale, un bon moyen de connaitre le temps serait aussi de lire les statistiques (maintenues par le système), du pid. Les fichiers se trouvent dans /proc/<pid>/stats. C'est le principe d'utilitaires comme top. Tu peux éviter les getpid() en lisant directement /proc/self/stat.

    Cordialement

  2. #22
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par baccali Voir le message
    J'ai encore un peu de mal avec l'algorithmique (je suis en plein dedans!). Mais sans l'algo exacte et en particulier la sélection du pivot, je dirai que c'est impossible. D'ailleurs même pour le temps moyen tu ne peux que supposer.
    Non, la complexité n'en dépend pas...

    La complexité algorithmique dépend du comportement de l'algo par rapport à la taille de l'entrée.. (ce qu'on note avec O() : regarde le chapitre Computational_complexity et Big_O_notation)


    Citation Envoyé par baccali Voir le message
    Concernant la question initiale, un bon moyen de connaitre le temps serait aussi de lire les statistiques (maintenues par le système), du pid. Les fichiers se trouvent dans /proc/<pid>/stats. C'est le principe d'utilitaires comme top. Tu peux éviter les getpid() en lisant directement /proc/self/stat.
    Pourquoi faire simple (et portable) quand on peut faire compliqué (et non portable)

  3. #23
    Membre très actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2009
    Messages
    172
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2009
    Messages : 172
    Par défaut
    Citation Envoyé par souviron34 Voir le message
    Non, la complexité n'en dépend pas...

    La complexité algorithmique dépend du comportement de l'algo par rapport à la taille de l'entrée.. (ce qu'on note avec O() : regarde le chapitre Computational_complexity et Big_O_notation)
    Et tu fais comment pour connaitre la complexité de l'algo si tu ne l'as pas?

    Citation Envoyé par souviron34 Voir le message
    Pourquoi faire simple (et portable) quand on peut faire compliqué (et non portable)
    Tout simplement parce qu'on exploite les ressources mises à disposition par le système (ressources qui sont rarement portables). Si tu veux le temps de ton algo sans le temps que le système à mis à exécuter d'autres threads pendant que tu faisais tes appels systèmes, une solution non portable c'est la seule solution à ma connaissance, n'en déplaise à souviron34!

  4. #24
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par baccali Voir le message
    Et tu fais comment pour connaitre la complexité de l'algo si tu ne l'as pas?
    En l'occurence le PO les avait puisqu'il voulait comparer différents algos de tris


    Citation Envoyé par baccali Voir le message
    Tout simplement parce qu'on exploite les ressources mises à disposition par le système (ressources qui sont rarement portables). Si tu veux le temps de ton algo sans le temps que le système à mis à exécuter d'autres threads pendant que tu faisais tes appels systèmes, une solution non portable c'est la seule solution à ma connaissance, n'en déplaise à souviron34!


    Euh..

    • clock() est portable et donne le temps utilisateur (c'est à dire le temps que ce process a utilisé) (ce qui était pourquoi j'avais fait la fonction GetClock, j'avais besoin d'un temps absolu et non pas relatif)

    • la fonction de la Glib je n'ai pas testé

  5. #25
    Membre très actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2009
    Messages
    172
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2009
    Messages : 172
    Par défaut
    Citation Envoyé par souviron34 Voir le message
    En l'occurence le PO les avait puisqu'il voulait comparer différents algos de tris
    Citation Envoyé par anacharsis Voir le message
    salut !
    comment trouver le WCET d'un tri rapide dont on ne dispose pas du code ?


    Citation Envoyé par souviron34 Voir le message
    Euh..

    • clock() est portable et donne le temps utilisateur (c'est à dire le temps que ce process a utilisé) (ce qui était pourquoi j'avais fait la fonction GetClock, j'avais besoin d'un temps absolu et non pas relatif)

    • la fonction de la Glib je n'ai pas testé
    Effectivement clock() est donne par processus (jamais utilisé). Seulement il me semble que clock() te donne le temps utilisateur d'un programme mais que ce temps inclue aussi le kernel mode donc le problème est le même! Il me semble que si le kernel mode attend la réponse du disque dur 2 secondes, ces 2 secondes sont inclues dans l'algo. Ou je me trompe?

  6. #26
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par baccali Voir le message
    Ce n'est pas le PO ni son problème.. :

    Citation Envoyé par chneu87 Voir le message
    Je doit effectuer un projet qui permet de comparer le temps d'exécution de différent algorithme de tri.




    Citation Envoyé par baccali Voir le message

    Effectivement clock() est donne par processus (jamais utilisé). Seulement il me semble que clock() te donne le temps utilisateur d'un programme mais que ce temps inclue aussi le kernel mode donc le problème est le même! Il me semble que si le kernel mode attend la réponse du disque dur 2 secondes, ces 2 secondes sont inclues dans l'algo. Ou je me trompe?
    cela dépend des implémentations :

    man clock

    Sur plusieurs autres implémentations, la valeur renvoyée par clock() inclue aussi le temps écoulé pour l'exécution des processus fils dont les statistiques ont été collectées lors d'un appel de la famille wait(2). Linux n'inclut pas le temps des enfants attendus dans la valeur renvoyée par clock().
    Et, tant quà avoir quelque chose de dépendant de l'OS, autant se servir des outils fournis sans réinventer le fil à couper le beurre :

    man time

  7. #27
    Membre très actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2009
    Messages
    172
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2009
    Messages : 172
    Par défaut
    Citation Envoyé par souviron34 Voir le message
    cela dépend des implémentations :
    Donc plus tellement portable! Tu le vis bien?

    Citation Envoyé par souviron34 Voir le message
    Et, tant quà avoir quelque chose de dépendant de l'OS, autant se servir des outils fournis sans réinventer le fil à couper le beurre :
    Effectivement j'y avais pas pensé mais c'est plus simple!

    P.S :
    Citation Envoyé par souviron34
    Tu te crois sur msn?

  8. #28
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par baccali Voir le message
    Tu te crois sur msn?
    tu préfères que je te dise "tu nous gonfles, ça fait 15 messages que la discussion est close et qu'on a répondu au PO" ????

  9. #29
    Membre très actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2009
    Messages
    172
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2009
    Messages : 172
    Par défaut
    Citation Envoyé par souviron34 Voir le message
    "tu nous gonfles, ça fait 15 messages que la discussion est close et qu'on a répondu au PO" ????
    Qui t'as obligé à lire et répondre?!!
    Citation Envoyé par souviron34

  10. #30
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 026
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 026
    Par défaut
    Citation Envoyé par souviron34 Voir le message
    tu préfères que je te dise "tu nous gonfles, ça fait 15 messages que la discussion est close et qu'on a répondu au PO" ????

    Le but d'un sujet de forum n'est pas seulement de répondre à la question du PO, mais de permettre à tous les futurs lecteurs ayant la même question que le PO de trouver la solution.

    En continuant la discutions et en approfondissant le sujet, ceci permet non pas de flooder, mais d'apporter aux autres lecteurs voir même au PO un approfondissement bénéfique qui peut anticiper des questions futures.

  11. #31
    Membre chevronné
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2012
    Messages
    190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2012
    Messages : 190
    Par défaut
    restons calmes ...

    A+

  12. #32
    Membre actif
    Homme Profil pro
    etudiant ingénieur
    Inscrit en
    Novembre 2010
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : etudiant ingénieur
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Novembre 2010
    Messages : 40
    Par défaut rep
    la fonction clock() , define dans la bibliothèque time.h, ne retourne pas un float mais un clock_t . Alors je me propose pour chronometrer votre trie de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
    #include <time.h>
    ...
     
    double temps;
    clock_t start;
       start = clock();	//le compteur
       //fct à chronometrer 
       temps = (double)(clock()-start)/(double)CLOCKS_PER_SEC;
       printf("\n en %.2f seconde(s)!\n", temps);
     
    }
    merci

  13. #33
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par youssef_the_king Voir le message
    la fonction clock() , define dans la bibliothèque time.h, ne retourne pas un float mais un clock_t .


    Qui a dit le contraire ???

    Et toutes les réponses ont été données...

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. algorithme de tri et temps d'exécution
    Par khadi8 dans le forum Débuter
    Réponses: 5
    Dernier message: 04/01/2013, 18h41
  2. Réponses: 2
    Dernier message: 24/04/2011, 08h43
  3. Temps d'exécution d'un algorithme génétique
    Par debalgo dans le forum Intelligence artificielle
    Réponses: 1
    Dernier message: 24/03/2011, 00h53
  4. Réponses: 1
    Dernier message: 24/02/2009, 21h31
  5. [TP] Mesure du temps d'exécution d'un algorithme
    Par williamdunord dans le forum Turbo Pascal
    Réponses: 19
    Dernier message: 18/05/2007, 06h47

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