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

EDI Delphi Discussion :

compilation en DELPHI 2009


Sujet :

EDI Delphi

  1. #1
    Membre éclairé
    Inscrit en
    Juillet 2006
    Messages
    298
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 298
    Par défaut compilation en DELPHI 2009
    C'est juste un éclaircissement que je voudrais avoir sur le natif obtenu (exe) après compilation en 2009.
    Comme on a ajouté beaucoup de "fioritures" (sans être péjoratif) surement nécessaires (génériques, ce qui m'enchante, du reste... et autres), qu'en est-il de l'exe obtenu, est-il aussi performant qu'avec les versions précédentes?, n'a-t'il pas changé ou amélioré.
    Que le temps de compilation soit plus grand qu'en D2007, pourquoi pas, mais il ne faudrait pas qu'il produise un natif dégradé.

    De plus, pour un même calcul scientifique, quel est le + rapide en tps d'exécution entre delphi 2009 et C++ builder?

    Merci d'avance,

    Fred

  2. #2
    Membre émérite Avatar de chaplin
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 215
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 215
    Par défaut
    Deux fonctions faisant la même opération en asm et pascal:
    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
    19
    20
    21
    22
    23
    24
    function SumAsm(N: integer):integer;
     asm
        Mov ecx,eax
        mov eax,0 
        mov ebx,0 
       @loop :
        add eax,1
        cmp eax,ecx
        jl @loop
        mov Result,eax
    
     end;
    
    ...
    function SumFor(N : integer): integer;
    var i : integer;
    begin 
       result := 0;
       for i:= 1 to N do
         begin
           result := result + 1;
         end;
     end;

  3. #3
    Membre éclairé
    Inscrit en
    Juillet 2006
    Messages
    298
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 298
    Par défaut
    Merci pour ta réponse mais mon problème était autre.
    Je voulais savoir si on ne perdait pas en execution en passant en D2009.
    Y a-t'il eu une amélioration dans l'objet obtenu.
    De plus, C++ builder est-il plus rapide que Delphi en général ? ou les 2 produisent-ils le même objet compilé ?

    Merci pour réponse,

    Fred

  4. #4
    Membre émérite Avatar de chaplin
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 215
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 215
    Par défaut
    L'exemple est trivial, je l'accorde, mais quand je fais le comparatif de ces deux méthodes sur plusieurs millions d'itérations en comparant Delphi 2009 et le code assembleur, il y a un pouième de différence.

    Suggestion : Delphi et C++ builder peuvent executer du code assembleur, il suffit de comparer ... pour vérifier par soi-même.

    Autre point intéressant, la façon dont la fonction est écrite peut conduire à des temps très différents, qui n'a rien à voir avec le langage mais simplement la façon dont on fait usage des possibilités du langage.

    L'exemple le plus interessant, c'est de comparer les boucles "for in"(foreach en C#) et "for". Dans le cas de boucles imbriquées, mieux vaut être sûr de ses choix.

  5. #5
    Membre éclairé
    Inscrit en
    Juillet 2006
    Messages
    298
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 298
    Par défaut
    Je vous remercie pour votre réponse Chaplin mais mon problème est ailleurs (peut-être et sûrement me suis-je mal exprimé).
    Je prends l'exemple de VS C# où on a essayé de faciliter la vie du développeur en introduisant le GC, le JIT et en compilant en MSIL et non en natif ce qui a provoqué une dégradation du temps de calcul des programmes scientifiques.
    Je voulais juste savoir Delphi 2009 tout en compilant en natif et en se concentrant sur les nouvelles approches (provenant du .Net) ne produisait pas un natif moins puissant que celui de DELPHI 2007 ou antérieur.
    Et mon 2ème point: si 2 procédures identiques (produit matriciel utilisant des boucles "for" normales et des pointeurs de tableaux) donnaient des tps de calcul identiques en DELPHI et en C++ builder.

    J'espère que j'étais plus clair maintenant,

    Fred

  6. #6
    Membre Expert

    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    1 519
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 519
    Billets dans le blog
    1
    Par défaut
    Delphi (2009 comme le 2010 qui sort dans quelques jours ) n'a pas changé son mode de compilation, on passe toujours du "pascal objet" vers du code machine (ASM) directement exécutable par le processeur.

    Pas de MSIL, pas de .class ou autre nouveau langage intermédiaire, c'est toujours du bon vieux Win32 natif. Avec toujours l'arithmétique des pointeurs, la gestion personnalisée de la mémoire (pas de GC), la possibilité de faire de l'asm, etc..

    Pour les apports comme les génériques, là non plus ça ne change rien car c'est le compilateur qui se charge de tout traduire comme il faut de sorte qu'au final il n'y a plus de notion de générique au niveau des binaires de l'exécutable. D'un point de vue global je ne vois pas pourquoi les temps d'exécution seraient plus long qu'avant, voire même peut-être mieux le compilo étant de plus en plus efficace en optimisation entre les versions. Et il ne se traine pas non plus pour autant, loin de là.

    Mais à ce niveau rien ne vaut le test par soit-même, les versions d'essai sont là pour ça

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

Discussions similaires

  1. Problème de Compilation avec Delphi 2009
    Par Alberic81 dans le forum EDI
    Réponses: 9
    Dernier message: 30/03/2012, 11h36
  2. Réponses: 8
    Dernier message: 25/10/2009, 11h03
  3. [Delphi 2009] Directive de compilation
    Par steph1969 dans le forum EDI
    Réponses: 4
    Dernier message: 19/06/2009, 13h34
  4. Fmod sur delphi 2009 compile mais pas de son
    Par jamal91 dans le forum API, COM et SDKs
    Réponses: 4
    Dernier message: 09/05/2009, 23h14
  5. Réponses: 7
    Dernier message: 23/04/2009, 19h35

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