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 :

Problème de vitesse d'exécution entre Debug et Relase


Sujet :

Dotnet

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 46
    Points : 25
    Points
    25
    Par défaut Problème de vitesse d'exécution entre Debug et Relase
    Suite à différents tests, j'ai remarqué une énorme dégradation des performances en mode Relase 32bit par rapport au mode Debug 32 bit sous VS 2010, Windows 7 64

    Voici le bout de code que j'ai utilisé

    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Diagnostics;
    namespace TestNullBool
    {
        class Program
        {
            static Stopwatch sw = new Stopwatch();
            static void Main(string[] args)
            {
                Console.ReadKey();
                sw.Start();
                TestNull();
                sw.Stop();
                Console.WriteLine(sw.Elapsed);
     
                sw.Reset();
                sw.Start();
             TestBool();
                sw.Stop();
                Console.WriteLine(sw.Elapsed);
                Console.ReadKey();
            }
     
            static void TestBool()
            {
                bool b = false;
     
                for(int i = 0 ; i < 2000000000 ; i++)
                {
                    if(b==true)
                    {
                        b = false; 
                    }
                    else
                    {
                        b = true;
                    }
                }
            }
            static void TestNull ()
            {
                int[] eb = new int[3] ;
                int[] e = eb;
     
                for(int i = 0 ; i < 2000000000 ; i++)
                {
                    if(e==null)
                    {
                        e= eb; 
                    }
                    else
                    {
                        e= null;
                    }
                }
            }
        }
    }
    Faites le test avec différentes options de compilation pour voir si vous aussi vous avez la même dégradation de performance en mode Relase 32bit

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 46
    Points : 25
    Points
    25
    Par défaut
    Pour être plus clair voici un tableau des performances que j'obtiens

    Mode, temps d'exécution
    debug 32 10sec
    relase 32 18sec <------------ Ici il y a comme un problème ;-)
    debug 64 10sec
    relase 64 8sec

    MS Aurait-il un intérêt a brider les performances du .net en 32 bit ?

  3. #3
    Expert confirmé Avatar de DonQuiche
    Inscrit en
    Septembre 2010
    Messages
    2 741
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 2 741
    Points : 5 485
    Points
    5 485
    Par défaut
    Bonjour.

    Pour ma part je parviens pas à reproduire ces résultats, j'obtiens 10s en debug-32 et 8s en release-32, ce qui est cohérent en soi mais contraire aux chiffres que tu rapportes. Les chiffres en x64 sont similaires.

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 46
    Points : 25
    Points
    25
    Par défaut
    Les résultats varient suivant le Framework que l'on utilise
    Avec le 4.0 client J'ai ce résultats

    Il faudrait qu'il y ait d'autres personnes qui testent pour voir

  5. #5
    Inactif  

    Homme Profil pro
    Ingénieur test de performance
    Inscrit en
    Décembre 2003
    Messages
    1 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur test de performance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 986
    Points : 2 605
    Points
    2 605
    Par défaut
    Bonjour.

    Avec 4.0 Client, j'ai 8/9 secondes en debug et 4/5 secondes en release (sur un OS 32 bits). Je testerai plus tard sur du 64.

  6. #6
    Membre averti Avatar de _PascalC_
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2008
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2008
    Messages : 220
    Points : 428
    Points
    428
    Par défaut
    Essaie d’exécuter ton programme sans passer par Visual Studio. La différence peut être assez importante...

  7. #7
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Debug (compilé avec csc /o- /d:DEBUG /debug+ /platform:x86 test_perf.cs) :
    00:00:05.1850707
    00:00:05.0050579

    Release (compilé avec csc /o+ /debug- /platform:x86 test_perf.cs) :
    00:00:01.5669078
    00:00:01.3946975

    (.NET 4.5 sous Windows 8 ; tout est exécuté à partir de la console, donc pas d'interférences dues au debugger)

    Donc pas de surprise de mon côté... Tu as fait le test plusieurs fois pour voir si ce n'était pas une anomalie statistique ?

    EDIT: en x64 la différence est encore plus impressionnante :

    Debug (compilé avec csc /o- /d:DEBUG /debug+ /platform:x64 test_perf.cs) :
    00:00:05.2561199
    00:00:05.3038858

    Release (compilé avec csc /o+ /debug- /platform:x64 test_perf.cs) :
    00:00:00.1957871
    00:00:00.1389896

    (le JIT x64 optimise de façon assez agressive, donc je ne serais pas étonné qu'il détecte que la variable modifiée dans la boucle n'est pas utilisée après et qu'il dégage donc les affectations, et peut-être même la boucle puisqu'elle ne sert plus à rien...)

  8. #8
    Membre averti Avatar de _PascalC_
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2008
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2008
    Messages : 220
    Points : 428
    Points
    428
    Par défaut
    J'avais obtenus les mêmes résultats que toi Tomlev (mais framework 4 + win 7).
    Par contre si j’exécutais le projet depuis VS2012, la version Release X64 passait de 0.1s à 3s environ.

  9. #9
    Inactif  

    Homme Profil pro
    Ingénieur test de performance
    Inscrit en
    Décembre 2003
    Messages
    1 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur test de performance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 986
    Points : 2 605
    Points
    2 605
    Par défaut
    Bonjour.

    Ce programme ne faisant rien, peut-être qu'il met en déroute l'optimisateur de VS. Il faudrait aussi comparer avec un programme qui calcule et stocke réellement des valeurs.

    Si l'optimisation était puissante, on devrait avoir 0 millisecondes pour le programme ci-dessus...

  10. #10
    Membre éprouvé Avatar de sisqo60
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2006
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 754
    Points : 1 188
    Points
    1 188
    Par défaut
    Bonjour,

    J'ai fait moi-même le test et j'obtiens les mêmes résultats que vous. 10 en debug x86 et 5 en Release x86. Mon pc ne prend pas en charge le x64.
    En modifiant le paramètre "Optimiser le code", j'obtiens le même temps en Debug qu'en Release...

    Je te conseille de bien vérifier tes options de projet. Néanmoins le test que Tomlev a fait reste impressionnant en plateforme x64 (il optimise bien ). Il serait intéressant que tu fasses le test croisé en debug/release + Optimisé/nonOptimisé + x86/x64.

    Bon dév.
    Un âne se croit savant parce qu'on le charge de livres (proverbe américain)

    N'oubliez pas de avant de
    Pas de question techniques par MP, c'est contre la philosophie du forum

  11. #11
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Citation Envoyé par sisqo60 Voir le message
    Il serait intéressant que tu fasses le test croisé en debug/release + Optimisé/nonOptimisé + x86/x64
    Debug/release et optimisé/non optimisé, c'est un peu redondant, vu que la principale différence entre relase et debug est le fait d'activer ou non les optimisations
    (et le fait qu'en debug on génère les infos de debug (fichiers PDB), mais ça n'influe pas sur les performances tant qu'il n'y a pas d'exceptions)

  12. #12
    Membre éprouvé Avatar de sisqo60
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2006
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 754
    Points : 1 188
    Points
    1 188
    Par défaut
    Question idiote...

    Merci pour ta réponse...
    Un âne se croit savant parce qu'on le charge de livres (proverbe américain)

    N'oubliez pas de avant de
    Pas de question techniques par MP, c'est contre la philosophie du forum

Discussions similaires

  1. [AC-2007] Problème d'exécution entre requète et module pour une fonction quartile
    Par Fcnaatao dans le forum Requêtes et SQL.
    Réponses: 11
    Dernier message: 28/02/2012, 09h50
  2. Exécution différente entre debug mode et GAE?
    Par fantomasmusic dans le forum GWT et Vaadin
    Réponses: 6
    Dernier message: 18/05/2010, 19h12
  3. Réponses: 4
    Dernier message: 15/07/2008, 16h22
  4. Différences de comportement (vitesse d'exécution ?) entre IE (6, 7) ....
    Par mikmik53 dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 02/07/2008, 16h10
  5. Problème d'exécution entre MATLAB 6.5 et 7
    Par ENSAM-ALAMI dans le forum MATLAB
    Réponses: 9
    Dernier message: 10/04/2008, 17h44

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