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

Dotnet Discussion :

Optimisation du compilateur .net


Sujet :

Dotnet

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2007
    Messages : 95
    Par défaut Optimisation du compilateur .net
    Bonjour

    Hier j'ai fait quelques test avec deux machines. L'un un portable fonctionnant sous XP Pro, un Dell D810 monocore. De l'autre côté j'ai un pc de bureau fonctionnant avec Vista 64 bits dual core Dell aussi. Même fréquence d'horloge.

    J'ai écrit un programme exécutant 100 millions de calcul en flottant sur des doubles sur .net framework 2.0...monothreadé.

    Voila ma surprise, mon portable a été plus rapide... avec un écart proche de 30%...

    Donc voila mes questions : A des fins d'optimisation ...

    • Comment optimiser les options de compilation ?

    • N'est il pas préférable pour les parties nécessitant beaucoup de calcul de développer une DLL en C++ compiler spécifiquement pour le CPU avec un compilo genre Watcom ou GCC et d'utiliser .net uniquement pour les parties moins gourmande en FPU ?

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Août 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2003
    Messages : 835
    Par défaut
    Salut,

    Ton XP pro est 32 bits ?

    Sinon je ne suis pas du tout un expert performance, mais pour vraiment comparer tes deux résultats il faut tout prendre en compte, par exemple la RAM, les OS (peut-être vista induit-il une perte de performance par rapport à XP ?). Un autre question est : fallait-il s'attendre à un gain de performance ? (là encore je ne suis pas un spécialiste de la différence 32/64 bits, mais je sais qu'il se passe des choses bizarres parfois). Tout ça pour dire que les options de compilation du compilateur C# ne sont peut-être pas à mettre en cause.

    Pour ta dernière question, il faudrait d'abord comparer les résultats en C# et en C++ du même calcul qui t'intéresse, il n'est pas dit du tout que C# soit tant que ça a la traine.

    PS: peux-tu partager ton code s'il n'est pas trop gros, ça permettrait peut être d'avoir des pistes ?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2007
    Messages : 95
    Par défaut
    La RAM n'a pas d'impact dans ce cas, j'en consomme presque pas, je ne consomme pas non plus du disque dur ...

    J'ai pas le code avec moi, mais c'est une boucle de 100 000 000 qui effectue une division d'un double par un autre avec ajout du compteur de boucle.

    Fallait il s'attendre à un gain ? Je sais qu'en 1991 quand je suis passé de Borland C++ 16 bits à Watcom 9 32 bits + DOS4GL j'ai eu sur des rotations d'image un gain énorme... Mais certainement plus lié au dos4gl et le compilo watcom qui était le meilleur (il avait été utilisé pour écrire Doom). Reste que l'adressage 64 bits prend son utilité quand on exploite pleinement la taille qu'il autorise ... ce qui n'est pas le cas de mon code...

    Non ce qui m'ennuie est que c'est moins performant.... sur Vista 64 que sur XP Pro 32...

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Août 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2003
    Messages : 835
    Par défaut
    C'est bien ça que j'entendais en écrivant "il se passe parfois des choses bizarres" .

    [SelfCensure]

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2007
    Messages : 95
    Par défaut
    Niet pour aller sur un autre forum. Par principe et courtoisie pour les animateurs de site j'évite tout lien vers un autre forum même celui d'un éditeur, en tout cas sur les sites francophones.

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Août 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2003
    Messages : 835
    Par défaut
    Effectivement c'est pas trés courtois, j'aurais plutôt du t'envoyer ça par mp , j'édite donc mon post précédent.

  7. #7
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Par défaut
    Citation Envoyé par jeromechezgdf
    La RAM n'a pas d'impact dans ce cas, j'en consomme presque pas, je ne consomme pas non plus du disque dur ...
    Tu exécutes plus de 100 Millions de calculs et tu ne consommes ni RAM ni disque dur ? Il est magique ton programme


    Plus sérieusement, si tu veux de la performance, il est clair que faire du C++/CLI sera toujours mieux que de passer par du C#: le C++ te permet d'être au plus "pret" de la machine

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2007
    Messages : 95
    Par défaut
    Non il n'est pas magique. J'utilise que 3 variables. Et les résultats ne sont pas gardés. Ce qui m'intéresse et de mesurer la performance de la partie mathématique du framework .net ...

    Je suis du même avis que toi, mais pour avoir fait des essaies avec Java, j'ai été étonné de niveau de performance de cette dernière plateforme et ce en faisant la comparaison avec un code compilé en C (meme pas C++).

    Ayant une préférence pour C# j'évalue ce terrain, et surtout j'ai besoin d'avoir une évalution objective et non basé soit sur des préjugés soit sur des impressions... On a parfois des surprises.

    N'y a -til pas un moyen d'optimiser la plateforme .net et les exécutables pour .net ?

  9. #9
    Membre émérite
    Profil pro
    Inscrit en
    Août 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2003
    Messages : 835
    Par défaut
    N'y a -til pas un moyen d'optimiser la plateforme .net et les exécutables pour .net ?
    Du côté des options de compil C# tu n'as rien trouvé ? (voir ici)

    Sinon si tu as bien compilé ton code en release .net doit déja faire pas mal d'optimisations. Encore une fois la différence de perf vient peut être de l'OS ou d'une particuliarité des cpu 64 bits (même si a priori des double 64 bits devraient être traités plus vite sur un cpu 64bits).

    Autre chose, sur les platforme 64bits existe un truc qui s'appelle WOW64 (windows on windows 64) qui permet de lancer les exécutables 32bits sur un OS 64bits, une espèce d'émulation qui fait perdre des performances évidemment. Il faudrait que tu t'assures que ton exe ne tourne pas dans ce mode là, mais qu'il tourne directement sous windows 64 bits.

    EDIT : D'aprés ce lien la valeur par défaut "any CPU" est la bonne pour tourner directement en win64, donc ça ne viendrait pas de là

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

Discussions similaires

  1. Librairie d'optimisation pour VB.net
    Par Faladin dans le forum Débuter
    Réponses: 6
    Dernier message: 12/05/2008, 20h23
  2. Optimisation du compilateur ?
    Par atha2 dans le forum Langage
    Réponses: 3
    Dernier message: 18/03/2008, 11h36
  3. Optimiser des programmes .net
    Par TSalm dans le forum Général Dotnet
    Réponses: 4
    Dernier message: 06/03/2008, 12h19
  4. Compilateur .NET ?
    Par AsmBoy dans le forum Windows
    Réponses: 12
    Dernier message: 26/01/2006, 23h32
  5. Débogage corrompu par les optimisations du compilateur
    Par petitcoucou31 dans le forum EDI
    Réponses: 6
    Dernier message: 17/12/2003, 00h30

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