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'acces aux variables


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    117
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2006
    Messages : 117
    Par défaut temps d'acces aux variables
    bonjour,

    je voulais savoir si le temps d'acces diffère selon les variables, à savoir :
    - les variables simples (int, double ...)
    - les variables indicées : tableau
    - les structures

    j'ai entendu dire que le temps d'acces aux variables d'un tableau était plus long que pour une variable simple, mais quelqu'un pourrait-il me le confirmer

    merci

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 115
    Par défaut
    Oui il est vrai que les variables simples sont plus rapide d'accés que des tableaux -> liste chainée.
    Par contre, le temps d'accés aux variables est tellement infime qu'il importe peu dans le développement.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    117
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2006
    Messages : 117
    Par défaut
    en fait, ce week end j'ai voulu faire une nouvelle version d'un programme que j'ai développé en C, qui n'utilise que des variables simples et des tableaux. il y a beaucoup de calculs et cela prend environ 5 secondes

    avec la nouvelle version qui emploie les structures (et le même alogrithme), je suis arrivé à doubler le temps d'exécution. bel exploit n'est-ce pas?
    d'où je précise un peu ma question : est-ce notamment l'emploi des structures dégrade le temps d'acces?

  4. #4
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par john stedd Voir le message
    est-ce notamment l'emploi des structures dégrade le temps d'acces?
    Tout ce qui fait des copies, oui. C'est pour ça que dans l'industrie, on utilise massivement les pointeurs... Mais ça, c'est le B.A BA du codage en C...

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    117
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2006
    Messages : 117
    Par défaut
    Si tu veux optimiser l'exécution, il faut commencer par travailler sur l'algorithme. Le gain de être de 1 à 10000 voir plus...
    j'ai travaillé sur l'algorithme, je suis passé de plusieurs centaines de secondes à 5 secondes (beaucoup de calculs dans une boucle, et cette boucle est répétée un peu plus de 500000 fois)

    Tout ce qui fait des copies, oui. C'est pour ça que dans l'industrie, on utilise massivement les pointeurs... Mais ça, c'est le B.A BA du codage en C...
    c'est pour ça que je pose la question : pour ne pas faire des codes qui bouffent inutilement (et exagérément) du temps
    Aucun rapport avec le langage C.
    exact, mais je code exclusivement en C, donc inconsciemment je suis venu ici...

    merci pour toutes ces précisions

  6. #6
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 835
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 835
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par john stedd Voir le message
    en fait, ce week end j'ai voulu faire une nouvelle version d'un programme que j'ai développé en C, qui n'utilise que des variables simples et des tableaux. il y a beaucoup de calculs et cela prend environ 5 secondes

    avec la nouvelle version qui emploie les structures (et le même alogrithme), je suis arrivé à doubler le temps d'exécution. bel exploit n'est-ce pas?
    d'où je précise un peu ma question : est-ce notamment l'emploi des structures dégrade le temps d'acces?
    On peut pas le savoir. T'as d'un coté les phénomènes liés à la manière dont tu compiles et de l'autre coté ton algo qu'on ne voit pas => est-ce que tu passes tes structures par valeur ou par adresse ? est-ce que tu utilises des pointeurs pour accéder à des éléments de ton tableau ? Est-ce que t'as testé ton code dans les mêmes conditions (machine chargée) ?
    Tout ça est trop flou. On peut pas savoir d'où vient le ralentissement

    Sinon t'as une option de compilation qui rajoute automatiquement des fonctions de profiling qui te permet ensuite d'appeler gprof pour analyser ton exécutable (ça te dit quelle fonction prend le plus de temps, etc...) => man gprof pour plus d'infos
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    117
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2006
    Messages : 117
    Par défaut
    On peut pas le savoir. T'as d'un coté les phénomènes liés à la manière dont tu compiles et de l'autre coté ton algo qu'on ne voit pas => est-ce que tu passes tes structures par valeur ou par adresse ? est-ce que tu utilises des pointeurs pour accéder à des éléments de ton tableau ? Est-ce que t'as testé ton code dans les mêmes conditions (machine chargée) ?
    Tout ça est trop flou. On peut pas savoir d'où vient le ralentissement
    la nouvelle version de ce programme utilise rigoureusement le même algo, si ce n'est le regroupement de certaines variables dans des structures. et je compile toujours avec les mêmes options de compilation et j'exécute dans les mêmes conditions plusieurs fois de suite chaque version pour avoir une idée moyenne du temps d'exécution

    par ailleurs j'ai fait des tests sur les passages par valeur et par référence, et évidemment le passage par référence est plus rapide.

    merci pour vos réponses

  8. #8
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par john stedd Voir le message
    par ailleurs j'ai fait des tests sur les passages par valeur et par référence,
    N'existe pas en C. On ne passe que des valeurs. Par contre, la valeur passée peut être une adresse via un pointeur explicite...

    Effectivement, passer les données par adresses (même en lecture) est beaucoup plus efficace, puis que la copie est limitée à cette adresse (quelques bytes, quelque soient les données pointées). L'accès par déréférencement étant rapide si il n'y a qu'un niveau d'indirection.
    Si il devaient en y avoir plusieurs :
    il est alors recommandé d'utiliser un pointeur intermédiaire (si il y a plus d'un accès à effectuer) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    q = p->q
     
    q->a

  9. #9
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par john stedd Voir le message
    je voulais savoir si le temps d'acces diffère selon les variables, à savoir :
    - les variables simples (int, double ...)
    - les variables indicées : tableau
    - les structures

    j'ai entendu dire que le temps d'acces aux variables d'un tableau était plus long que pour une variable simple, mais quelqu'un pourrait-il me le confirmer
    Seules des mesures objectives faites dans des conditions définies et reproductibles peuvent donner une réponse valable. Le reste n'est que bla bla et perte de temps (tout comme ta question, d'ailleurs).

    Si tu veux optimiser l'exécution, il faut commencer par travailler sur l'algorithme. Le gain de être de 1 à 10000 voir plus...

    Aucun rapport avec le langage C.

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

Discussions similaires

  1. Acces aux variables d'une DLL
    Par abignon dans le forum MFC
    Réponses: 1
    Dernier message: 08/09/2005, 14h29
  2. [C#] Accès aux variables Session
    Par kalan dans le forum ASP.NET
    Réponses: 9
    Dernier message: 31/08/2005, 16h40
  3. [FLASH MX2004] [AS2] Accès aux variables d'une classe
    Par stailer dans le forum ActionScript 1 & ActionScript 2
    Réponses: 2
    Dernier message: 17/07/2005, 12h58
  4. [Language]Accès aux variables
    Par Adaemon dans le forum Langage
    Réponses: 12
    Dernier message: 27/04/2005, 14h17
  5. [SGBD]Optimiser le temps d'accès aux données (schéma BD)
    Par vsavoir dans le forum Décisions SGBD
    Réponses: 5
    Dernier message: 08/10/2004, 18h33

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