Différence de vitesse entre Matlab et C++
Répondre à la discussion
Affichage des résultats 1 à 8 sur 8

Différence de vitesse entre Matlab et C++



  1. #1
    invite4aaa7617

    Différence de vitesse entre Matlab et C++


    ------

    Bonjour à tous: tout est dans l'objet:
    J'ai écrit un programme en matlab. Je suis quasiment a court d'idée pour l'optimiser du point de vue algorithme, donc je me demandais combien j'y gagnerais si je réecrit tout, ligne par ligne, en C++. ( En gardant le même algorithme evidement)
    Si vous avez par exéperience ( ou que vous connaissez des rapports de travaux sur le sujet ) un ordre de grandeur (5% 50% 200% ..... 10^9 %.... ) du gain de rapidité que j'aurai, ca m'intéresse.

    Merci d'avance

    -----

  2. #2
    Philou67

    Re : Différence de vitesse entre Matlab et C++

    Il me semble qu'il serait bon de préciser quel type de programme et d'algorithme tu as réalisé.
    :'( Plus j'apprends, et plus je mesure mon ignorance

  3. #3
    invite4aaa7617

    Re : Différence de vitesse entre Matlab et C++

    il s'agit principalemen d'un programme dérivé d'un concept d'apprentissage par renforcement. Le programme doit essentiellemnt faire des additions et multiplications de nombres (via le principe de la programmation dynamique) issues de tableaux de tailles très importantes ( plusieurs tableaux de près de 6 600 000 nombre) dans le but de faire converger un champ de probabilité.
    Pour l'instant ce programme est entièrement réalisé a l'aide du language de script de Matlab (version R2010). Sur certains posts anglophone j'ai lu des personnes avancés ces chiffres là: C++ 1,5 fois plus vite que le VB, lui meme 5 fois plus vite que le Matlab. Ils ne citent pas leur sources ni dans quelles mesures cela pourrait être applicable. Sur ce lienshttp://www.google.de/url?sa=t&source...b_6HtA&cad=rja il est dit (partie résumé page 2 ) que la vitesse de calcul aurait été multiplié par mille, mais je ne trouve pas cela très claire..

  4. #4
    lou_ibmix_xi

    Re : Différence de vitesse entre Matlab et C++

    Je suis quasiment a court d'idée pour l'optimiser du point de vue algorithme
    Je n'ai pas de chiffre à te donner, mais ce que je peux te dire c'est que MATLAB est très efficace sur le traitement de matrice: pour optimiser efficacement du code MATLAB il faut que tu remplaces toutes tes boucles par des opérations matricielles (ou un appel de fonction s'appliquant sur une matrice). Et alors les résultats peuvent être bluffant: un code MATLAB peut tourner plus vite qu'un code en C écrit naïvement...

    Transformer les boucles en opérations matricielles est très souvent faisable, même si très souvent c'est tout sauf évident, et pire encore, illisible: je te conseille de laisser la boucle en commentaire au-dessus de l'opération matricielle qui la remplace.

  5. A voir en vidéo sur Futura
  6. #5
    invite4aaa7617

    Re : Différence de vitesse entre Matlab et C++

    Qu'entend tu exactement par opération matricielle? Inversion de matrice, multiplication de matrice etc? Dans mon cas il s'agit plus d'extraire les données de tableaux pour les ajouter avec d'autre, je vais donc refléchir, mais dans mon cas particulier, je vois mal comment m'en sortir autrement que d'utiliser des boucles for imbriquer les unes dans les autres.

  7. #6
    Philou67

    Re : Différence de vitesse entre Matlab et C++

    Et avec des produits matriciels, en construisant subtilement les matrices ?
    :'( Plus j'apprends, et plus je mesure mon ignorance

  8. #7
    lou_ibmix_xi

    Re : Différence de vitesse entre Matlab et C++

    Qu'entend tu exactement par opération matricielle? Inversion de matrice, multiplication de matrice etc? Dans mon cas il s'agit plus d'extraire les données de tableaux pour les ajouter avec d'autre, je vais donc refléchir, mais dans mon cas particulier, je vois mal comment m'en sortir autrement que d'utiliser des boucles for imbriquer les unes dans les autres.
    Difficile de répondre sans voir ton code. Un exemple bidon pour te donner une idée, si M et N sont tes matrices de même tailles:
    Code:
    [Mr, Mc] = size (M);
    %creation de la matrice des incices: on prend un element sur deux de la diagonale
    k = (1:2:Mr)';
    l = (1:2:Mc)';
    S = M([k, l]) + N([k, l]);
    Cette méthode est nettement (infiniment) plus rapide de faire une boucle.
    Mais il faut aussi ne pas oublier que la plupart des fonctions peuvent s'appliquer sur toute une matrice, ou bien sur une seule dimension d'une matrice... Enfin il est parfois intéressant de construire des matrices qui ne servent qu'à permettre des opérations matricielles (reshape et autre repmat sont tes amies)
    Dernière modification par lou_ibmix_xi ; 30/11/2010 à 23h19. Motif: précisions

  9. #8
    invite4aaa7617

    Re : Différence de vitesse entre Matlab et C++

    Très bien je vais essayer de chercher dans ce sens la, je vous remercie

Discussions similaires

  1. Différence entre vitesse et puissance
    Par invite312acdb3 dans le forum Physique
    Réponses: 7
    Dernier message: 06/03/2010, 15h23
  2. Réponses: 2
    Dernier message: 11/04/2009, 16h20
  3. différence entre la puissance en kwh entre tuli et nunna?
    Par invite6894a857 dans le forum Habitat bioclimatique, isolation et chauffage
    Réponses: 4
    Dernier message: 04/09/2008, 16h16
  4. Réponses: 21
    Dernier message: 18/08/2008, 14h16
  5. Différence entre célérité et vitesse
    Par invite0dbe784b dans le forum Physique
    Réponses: 13
    Dernier message: 09/06/2007, 13h01