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 fonction d'interpolation bilinéaire


Sujet :

C++

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    421
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 421
    Par défaut Optimisation fonction d'interpolation bilinéaire
    Bonjour à tous,

    J'ai développé un code pour faire de l'interpolation bilinéaire à partir de https://fr.wikipedia.org/wiki/Interp...ilin%C3%A9aire
    Pourriez-vous m'indiquer un moyen pour optimiser mon code s'il vous plaît ?
    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
    16
    17
    18
     
     
    float bilinearInterpolation(float dx, float dy, float deltaX, float deltaY, float deltaFx, float deltaFy, float deltaFxy, float fX1Y1)
    {
      //Precondition
      assert(deltaX > 0);
      assert(deltaY > 0);
     
      assert(dx >= 0.);
      assert(dy >= 0.);
     
      float res;
     
      res = deltaFx*(dx/deltaX) + deltaFy*(dy/deltaY) 
        + deltaFxy*(dx*dy/(deltaX*deltaY)) + fX1Y1;
     
      return res;
    }

  2. #2
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    a part supprimer la variable temporaire, il n'y a pratiquement rien à faire sous cette forme.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    deltaFx*(dx/deltaX) + deltaFy*(dy/deltaY) + deltaFxy*(dx*dy/(deltaX*deltaY)) + fX1Y1;
    Avec un peu de renommage, on a:
    • rx = dx/deltaX
    • ry = dy/deltaY
    • res = deltaFx*rx + deltaFy * ry + deltaFxy * rx * ry + fX1Y1


    Tu peux reformuler ta fonction sur ce principe, mais je ne pense pas que tu y gagnes quoique ce soit, le compilateur étant capable (normalement) de le faire lui-même.

    Par contre, il se peut qu'en travaillant avec des doubles, tu sois plus précis.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    421
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 421
    Par défaut
    Je t'en remercie !

    Existe t-il une forme de l'interpolation bilinéaire qui soit plus rapide ?

  4. #4
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 489
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 489
    Par défaut
    Existe t-il une forme de l'interpolation bilinéaire qui soit plus rapide ?
    Oui, comme l'utilisation de jeu d'instruction dédis, vectorisation/parallélisassions, utilisation du GPU, etc...

    Il y a toujours moyen de faire plus rapide, mais faut prendre beaucoup de temps pour monter en compétences et pour mettre la solution au point.

  5. #5
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2010
    Messages
    517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2010
    Messages : 517
    Par défaut
    Salut,

    Tu peux peut-être supprimer les deux assert suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    assert(dx >= 0.);
    assert(dy >= 0.);
    Et tester le résultat final pour voir s'il est positif ou non (tu auras donc un test en moins).

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 147
    Billets dans le blog
    4
    Par défaut
    Un assert sert normalement uniquement à du debug et est une instruction vide en Release. Donc les virer pour ajouter un test euh
    Globalement à part pouvoir faire le calcul avec des int, tu pourras difficilement avoir des optimisations énormes sur un simple calcul.
    Avec des float, évite les additions/soustractions, favorise les multiplications, tu pourras pas aller bien plus loin, tu dois fatalement faire le calcul à un moment.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    301
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 301
    Par défaut
    Y'avait eu à l'époque déjà une discussion sur l'interpolation et son optimisation (c'était le cas tri-linéaire mais c'est identique): http://www.developpez.net/forums/d12...e/#post6858415 peut être que ça peut t'intéresser.

Discussions similaires

  1. [OPTIMISATION]fonction de concaténation
    Par m-mas dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 14/06/2007, 14h35
  2. Optimisation fonction MAX
    Par AurelGTS dans le forum Langage SQL
    Réponses: 7
    Dernier message: 14/05/2007, 19h26
  3. Optimisation : fonction vide ou test
    Par bolhrak dans le forum C++
    Réponses: 2
    Dernier message: 15/07/2006, 19h31
  4. [TSQL] Optimisation fonction levenshtein
    Par Adi81 dans le forum MS SQL Server
    Réponses: 8
    Dernier message: 17/03/2006, 15h22
  5. [Optimisation][Fonction]calcul du nombre de jours ...
    Par m-mas dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 26/10/2005, 14h39

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