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 :

Optimisation en C


Sujet :

C

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    isty
    Inscrit en
    Juin 2014
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : isty
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2014
    Messages : 29
    Points : 31
    Points
    31
    Par défaut Optimisation en C
    Bonjour,

    J'ai un petit souci, je ne sais pas comment optimiser cette fonction en C :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    void baseline ( int n , double a [ n ] , double b [ n ] , double c [ n ])
    {
        int i , j ;
        for ( j = 0; j < n ; j ++)
        {
            for ( i = 0; i < n ; i ++)
            {
                c [ i ] += b [ n - 1 - i ];
                if ( i < j )
                {
                    c [ i ] += a [ j ];
                }
            }
        }
    }
    En fait, je me suis renseigné, en gros il faut remonter le "if" parce qu'il coûte cher, voir pour une optimisation idéale l'éliminer (le code doit toujours rester équivalent à celui de début).


    Merci pour votre aide.

    Bonne journée.

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 670
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 670
    Points : 10 677
    Points
    10 677
    Par défaut


    Sinon je pense à une boucle "éclatée" (<- peut-être pas le bon terme)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    void baseline(int n, double a[n], double b[n], double c[n]) {
        int i, j;
     
        for (j = 0; j < n ; ++j) {
            for (i = 0; i < j; ++i) {
                c[i] += (b[n - 1 - i] + a[j]);
            }
     
            for (/*i = j*/; i < n; ++i) {
                c[i] += b[n - 1 - i];
            }
        }
    }

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    isty
    Inscrit en
    Juin 2014
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : isty
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2014
    Messages : 29
    Points : 31
    Points
    31
    Par défaut Optimisation en C
    Bonjour,

    J'ai pas bien compris comment vous avez fait pour arriver à ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    void baseline(int n, double a[n], double b[n], double c[n]) {
        int i, j;
     
        for (j = 0; j < n ; ++j) {
            for (i = 0; i < j; ++i) {
                c[i] += (b[n - 1 - i] + a [j]);
            }
     
            for (/*i = j*/; i < n; ++i) {
                c[i] += b[n - 1 - i];
            }
        }
    }
    Est ce que vous pouvez m'expliquer un peu ? Merci d'avance.

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 670
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 670
    Points : 10 677
    Points
    10 677
    Par défaut
    Réfléchis un peu

    Si pour i de 0 à n, tu calcules "c[i] += b[n - 1 - i]"
    Si pour i de 0 à j, tu calcules "c[i] += a[j]"

    En sachant que j varie de 0 à n, alors

    0 <- Tu fais les 2 calculs -> j <- tu fais seulement le premier calcul -> n

    Non tu ne vois pas comme cela?

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    isty
    Inscrit en
    Juin 2014
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : isty
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2014
    Messages : 29
    Points : 31
    Points
    31
    Par défaut Optimisation en C
    Je vois comment.

    Merci de votre réponse.

  6. #6
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2009
    Messages
    4 483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 483
    Points : 13 681
    Points
    13 681
    Billets dans le blog
    1
    Par défaut
    Si le problème est résolu, merci de cliquer sur le bouton en bas de cette page.

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

Discussions similaires

  1. Optimisation de votre SGBDR et de vos requêtes...
    Par SQLpro dans le forum Langage SQL
    Réponses: 35
    Dernier message: 11/01/2013, 11h49
  2. [langage] Optimiser la lecture d'un fichier
    Par And_the_problem_is dans le forum Langage
    Réponses: 4
    Dernier message: 05/02/2003, 08h54
  3. [VB6] [BDD] Optimisation de l'accès aux données
    Par LadyArwen dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 30/01/2003, 13h27
  4. [langage]Problème de temps de lecture, optimisation
    Par And_the_problem_is dans le forum Langage
    Réponses: 2
    Dernier message: 08/01/2003, 08h47
  5. [langage] Optimiser la lecture d'un fichier
    Par And_the_problem_is dans le forum Langage
    Réponses: 2
    Dernier message: 11/06/2002, 10h24

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