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 :

Vitesse d'exécution en C# trop longue comparée à C++ [Débutant]


Sujet :

C#

  1. #1
    Membre régulier
    Homme Profil pro
    Hobby
    Inscrit en
    Août 2002
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Hobby

    Informations forums :
    Inscription : Août 2002
    Messages : 128
    Points : 83
    Points
    83
    Par défaut Vitesse d'exécution en C# trop longue comparée à C++
    Environnement Visual Studio Community 2015


    Bonjour à tous,

    J'ai, pour projet, le développement d'une application, dans laquelle environ 1 million de calculs matriciels (image de coordonnées trigonométriques à convertir en nombres complexes) doivent être effectués.

    J'ai donc réalisé un test assez bidon sur 2 vulgaires boucles imbriquées.

    En C# (voir ci-dessous), la version release met 48 secondes pour afficher le "OK" final.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    static void Main(string[] args)
            {
                int c = 0;
                for (int a = 0; a < 10000000; a++)
                {
                    for (int b = 0; b < 10000; b++)
                   {
                        c = b;
                    }   
                }
            Console.WriteLine("OK...");
            }


    En C++ (voir ci-dessous), la version release ne met qu'une seconde pour le même travail,
    soit un rapport de 48 !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    int main()
    {
    	int c = 0;
    	for (int a = 0; a < 10000000; a++)
    	{
    		for (int b = 0; b < 10000; b++)
    		{
    			c = b;
    		}
    	}
    	cout << "OK...\n";
    	return 0;
    }
    Ai-je fait une erreur dans la version release en C# ?

    Je préfèrerai réaliser l'application en C#, mais si un tel écart subsiste, il faudra passer sous C++.

    Il est évident que ce test n'est pas représentatif des calculs futurs, mais le résultat m'amène des craintes relatives à la durée du traitement qui sera beaucoup plus compliqué.

    Merci par avance pour vos commentaires.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    En fait en C++, en faisant les optimisations, le compilateur a déterminé que les boucles ne servaient à rien alors il a ignoré toute la partie des boucles.
    La preuve : si tu rajoute dans ton cout juste "<<c" pour afficher ce qu'il y a dans la variable c à la fin comme cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    int main()
    {
    	int c = 0;
    	for (int a = 0; a < 10000000; a++)
    	{
    		for (int b = 0; b < 10000; b++)
    		{
    			c = b;
    		}
    	}
    	std::cout << "OK...\n" << c;
    	return 0;
    }
    ça va tout de suite mettre beaucoup plus de temps!
    Dernière modification par Invité ; 28/10/2015 à 11h36.

  3. #3
    Membre régulier
    Homme Profil pro
    Hobby
    Inscrit en
    Août 2002
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Hobby

    Informations forums :
    Inscription : Août 2002
    Messages : 128
    Points : 83
    Points
    83
    Par défaut
    Merci Ph_Gr pour la réponse.

    J'ai refait les tests sous C# et C++ avec l'ajout de l'affichage de la variable "c" en fin de chaque programme ; les temps sont désormais identiques.

    Ouf...

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

Discussions similaires

  1. Temps d'exécution requête SQL trop Longue
    Par farouk1301 dans le forum JDBC
    Réponses: 7
    Dernier message: 09/08/2012, 20h25
  2. Exécution trop longue d'une requête
    Par lodan dans le forum Requêtes
    Réponses: 5
    Dernier message: 13/10/2006, 15h34
  3. CGI exécution trop longue
    Par crochepatte dans le forum Web
    Réponses: 6
    Dernier message: 23/08/2006, 15h11
  4. CGI exécution trop longue
    Par crochepatte dans le forum Apache
    Réponses: 3
    Dernier message: 18/08/2006, 15h02
  5. Requete trop longue à exécuter
    Par fguilbert dans le forum Requêtes
    Réponses: 2
    Dernier message: 29/06/2006, 10h33

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