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 :

Optimiser l'utilisation des pointeurs [Trucs & Astuces]


Sujet :

C

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par progman
    Merci !
    Avec un ET ça tourne.
    Ouf ! J'espère que ce secouage de neurones en règle t'aura été profitable... (ainsi qu'à ceux qui ont suivi l'affaire discrètement...)

    Il y a des améliorations possibles, mais à ce stade, il serait intéressant de comparer les perfs avec le vrai malloc() sur des milliers d'alloc/free, notamment avec 100 blocs, 1000, 10000 etc.

    Interessant programme de benchmark à écrire...

    Qui s'y colle ?

  2. #62
    Membre éclairé

    Inscrit en
    Juin 2004
    Messages
    1 397
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 1 397
    Points : 763
    Points
    763
    Par défaut
    Merci Emmanuel.
    Ce secouage de neurones en règles m'a été très profitable !
    J'apprends des choses, normal, je suis encore jeune, et je ne demande que ça. En relisant le post, je me rends compte qu'il y a eu pas mal de quiproquo et que, finalement, j'aurais pu faire ce programme environ 2 pages plus tôt .
    Je suppose que cette question :
    Citation Envoyé par Emmanuel Delahaye
    Interessant programme de benchmark à écrire...

    Qui s'y colle ?
    attend pour réponse:
    Citation Envoyé par progman
    C'est moi !
    Mais je veux bien un coup de main (et de pied ?? )

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par progman
    Merci Emmanuel.
    Ce secouage de neurones en règles m'a été très profitable !
    J'apprends des choses, normal, je suis encore jeune, et je ne demande que ça. En relisant le post, je me rends compte qu'il y a eu pas mal de quiproquo et que, finalement, j'aurais pu faire ce programme environ 2 pages plus tôt .
    Je suppose que cette question :
    Citation Envoyé par Emmanuel Delahaye
    Interessant programme de benchmark à écrire...

    Qui s'y colle ?
    attend pour réponse:
    Citation Envoyé par progman
    C'est moi !
    Mais je veux bien un coup de main (et de pied ?? )
    Il faut des notions un peu 'avancées', mais il faut bien commencer un jour...

    Le principe, c'est ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    ...
    int main (void)
    {
    ...
       test (malloc, free);
       test (mem_malloc, mem_free);
    ...
     
       return 0;
    }
    reste plus qu'à écrire test()... Le prototype de test() utilise des pointeurs de fonctions :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    typedef void *malloc_f (size_t size);
    typedef void free_f (void);
     
    int test (malloc_f* pf_malloc, free_f* pf_free);
    (on peut faire sans les typedefs, mais c'est gore. Je ne le fais pas...)

    La fonction test() détient les paramètres de test, les effectue et affiche le résultat. Pour mesurer le temps d'exécution, on utilise clock() et CLOCKS_PER_SECOND (je crois que c'est une FAQ 'comment chronométrer...')

  4. #64
    Membre éclairé

    Inscrit en
    Juin 2004
    Messages
    1 397
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 1 397
    Points : 763
    Points
    763
    Par défaut
    Pourquoi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    int test (malloc_f* pf_malloc, free_f* pf_free);
    pf-malloc ?
    Tu as fais un type f_malloc juste au-dessus, c'est un autre chose que je ne connais pas ?

    Au fait, tu utilises windows/code blocks, c'est ça ?
    J'étais sous linux, mais je me l'installe sur un poste windows, les options de compilation ont l'air de se passer par un menu avec des cases à cocher...
    C'est tout ou c'est possible de le faire autrement ?
    Autre question, peut-il générer le configure/makefile pour un portage du code ?

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par progman
    Pourquoi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    int test (malloc_f* pf_malloc, free_f* pf_free);
    pf-malloc ?
    LUNETTES : c'est pf_malloc. C'est un nom de paramètre. Je suis mes conventions de nommage

    http://emmanuel-delahaye.developpez.com/codage.htm

    donc je préfixe avec pf_ (pointer to function)
    Tu as fais un type f_malloc juste au-dessus, c'est un autre chose que je ne connais pas ?
    Que désigne le 'c' dans "c'est" ?
    Au fait, tu utilises windows/code blocks, c'est ça ?
    Oui.
    J'étais sous linux, mais je me l'installe sur un poste windows, les options de compilation ont l'air de se passer par un menu avec des cases à cocher...
    C'est tout ou c'est possible de le faire autrement ?
    J'utilise l'onglet suivant et je met ce que je veux.
    Autre question, peut-il générer le configure/makefile pour un portage du code ?
    configure, connais pas. Makefile, peut être. Jamais fait...

  6. #66
    Membre éclairé

    Inscrit en
    Juin 2004
    Messages
    1 397
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 1 397
    Points : 763
    Points
    763
    Par défaut
    Pfff, pas réveillé, moi.
    J'ai mal lu, lunettes posées sur le nez .

Discussions similaires

  1. Optimisation et utilisation des clés étrangères
    Par CinePhil dans le forum Optimisations
    Réponses: 22
    Dernier message: 07/05/2008, 21h24
  2. utilisation des pointeurs de type "far"
    Par Flow_75 dans le forum C++
    Réponses: 0
    Dernier message: 25/03/2008, 07h35
  3. utilisation des pointeurs
    Par OutOfRange dans le forum Delphi
    Réponses: 5
    Dernier message: 27/12/2006, 11h27
  4. utilisation des pointeur
    Par nixonne dans le forum Langage
    Réponses: 2
    Dernier message: 25/08/2006, 09h19
  5. Réponses: 6
    Dernier message: 21/02/2006, 16h47

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