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 :

performance c# c++


Sujet :

C++

  1. #1
    Membre très actif
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    688
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 688
    Par défaut performance c# c++
    Salut,

    j'ai un choix de langage à faire pour un projet, la performance en terme de vitesse d'éxécution est une contrainte du projet.

    Quand est-il aujourd'hui de la différence de vitesse c# et ++ ?

    merci

  2. #2
    Membre Expert Avatar de Astraya
    Homme Profil pro
    Consommateur de café
    Inscrit en
    Mai 2007
    Messages
    1 048
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Consommateur de café
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 1 048
    Par défaut
    Bonjour,
    Tu pourras trouver un benchmarks sur cette page de plusieurs langages (C#, C++, Java) les tests sont réalisés sur plusieurs aspects de la programmation, int32, int64, exceptions, etc...

    http://www.tommti-systems.de/go.html...enchmarks.html

  3. #3
    Membre très actif
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    688
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 688
    Par défaut
    merci, ça sera donc c++

  4. #4
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 247
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 247
    Par défaut
    La question a se poser est plutôt quelles sont les contraintes de vitesses qui te sont imposées.

    Car si en comparant de façon brute les 2 langages, C# et C++, l'avantage va à C++, quelques soient leur performances respectives, un programme C++ mal écrit sera toujours plus lent qu'un programme C# optimisé.

    De plus, il est possible que certaines choses ne soient faisable que d'un langage. A titre d'exemple je citerais la programmation "temps réels" sur laquelle j'ai travaillé, il y a quelques années et qui ne pouvais être faite qu'en langage natif, excluant de fait tout ce qui était managé (.Net, Java, ...)



    Attention au lien donné, les tests datent de 2004 sur le framework 1.1, soit VS .Net 2003 et C#1. Depuis le framework a été considérablement amélioré, il est possible que ces tests ne soient plus pertinents.

    D'ailleurs, si C++ arrive en tête les différences sont tout de même minimes avec C# (à part certains points, mais à noter que C# est plus rapide sur les I/O, donc s'il y a beaucoup de fichiers à écrire ou lire .....)

  5. #5
    Membre très actif
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    688
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 688
    Par défaut
    temps réel c'est quoi , c'est qui aille vite?

  6. #6
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 247
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 247
    Par défaut
    Oupss j'ai édité pendant que tu répondais.

    Non, "Temps réels" n'a rien à voir avec une question de vitesse. C'est une notion de temps strict à respecter.

    Par ma part, à l'époque, j'avais des calculs à effectuer toutes les 0.1ms +/-1%. Sachant que je tournais sous Windows NT 4.0 qui ne pouvais pas garantir sur le papier un temps de cycle inférieur à 50ms. Dans la réalité j'oscillais entre 25 et 34ms, à charge normale du système.

    Pour mes devs j'avais été obligé de passer sur des librairies spéciales (RTX) qui venaient s'intercaler entre windows et le processeur/horloge et travaillaient directement sur celui-ci sans passer par Windows.
    Ces librairies-là ne pouvaient être faite qu'en C natif (même pas du C++), l'interface quant à elle était faite en VB

  7. #7
    Membre très actif
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    688
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 688
    Par défaut
    ok mais donc si la contrainte de temps réel est de l'odre de la minute qu'est ce qui empêche de le faire en c#?

  8. #8
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 247
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 247
    Par défaut
    Tout dépend ce que tu as à faire, mais un cycle de l'ordre de la minute est un processus lent. Tous les langages (y compris C#) devraient arriver à tenir le coups sans trop de mal

  9. #9
    Membre Expert Avatar de Astraya
    Homme Profil pro
    Consommateur de café
    Inscrit en
    Mai 2007
    Messages
    1 048
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Consommateur de café
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 1 048
    Par défaut
    @sevyc64:
    Effectivement , mes excuses je n'avais pas fait attention à la date de parution du benchmark. Sinon pour les fichiers je suis sceptique, tout dépend de la façon de coder c'est évident. Un test serais pas mal à faire d'ailleurs ^^. Il est possible de faire une copie brute sans aucun traitement en C++ donc vitesse optimum.

    @guillaume07:
    De l'ordre de la minute, je pense pas qu'on puisse dire que c'est temps réel ^^. Dans la notion de temps réel, c'est un façon de faire croire à l'utilisateur que ce qui se passe s'exécute dans un temps que l'on ne peut pas percevoir avec notre cerveau donc qui ce passe "instantanément". La minute on peut la percevoir

    Edit: Un test peut être réalisé avec une formule qui est:
    la somme du coût des tâches divisée par leurs temps d'échéance.
    Si c'est inférieur à 1 c'est bon.

  10. #10
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 247
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 247
    Par défaut
    Dans la notion de temps réel, c'est un façon de faire croire à l'utilisateur que ce qui se passe s'exécute dans un temps que l'on ne peut pas percevoir avec notre cerveau donc qui ce passe "instantanément"
    Non justement !!!

    Cette notion là, que l'on pourrait dire "en temps réel", à laquelle tout le monde pense lorsqu'on parle de "Temps Réel", ne correspond en rien au véritable terme "Temps réel" utilisé en informatique et industrie.
    Cette notion là, très à la mode, et pas uniquement en informatique a été propagé par des personnes qui ont cru en comprendre le sens sans même se poser la question de qu'elle était la réelle définition.


    La véritable notion de temps réel est une contrainte de respect du temps. Elle n'a rien à voir avec une quelconque vitesse d'exécution.
    On peut, très bien, être sur du temps réel avec des échelles de plusieurs heures.

    Lire la définition de Wikipédia : http://fr.wikipedia.org/wiki/Syst%C3...emps_r%C3%A9el

  11. #11
    Membre Expert Avatar de Astraya
    Homme Profil pro
    Consommateur de café
    Inscrit en
    Mai 2007
    Messages
    1 048
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Consommateur de café
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 1 048
    Par défaut
    Ok, voila une notion que je n'avais pas compris entièrement.
    Je te remercie.

  12. #12
    Membre Expert

    Inscrit en
    Mai 2008
    Messages
    1 014
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 1 014
    Par défaut
    Citation Envoyé par Astraya Voir le message
    @sevyc64:
    Effectivement , mes excuses je n'avais pas fait attention à la date de parution du benchmark. Sinon pour les fichiers je suis sceptique, tout dépend de la façon de coder c'est évident. Un test serais pas mal à faire d'ailleurs ^^.
    Je te conseille de lire cette série d'article extrêmement instructive. Ou deux pointures de chez microsoft (Raymond Chen et Rico Mariani) s'amusent à coder un dictionnaire anglais-chinois, l'un en C++, l'autre en C#. L'appli est principalement limité par l'IO, car il faut charger le dictionnaire en mémoire depuis au fichier sur disque au démarrage. Résultat, les perfs de la version en C# défonce complètement celles de la version en C++, alors que ce sont quasiment des copies ligne à ligne.

    Après de nombreuse passes d'optimisation, l'appli C++ fini par rattraper, puis légèrement dépasser l'appli C# en terme de performance, mais bon sang il en aura fallu des efforts (6 passes d'optimisation + du code de plus en plus long et de plus en plus illisible)

  13. #13
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

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

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Par défaut
    C'est amusant, parce que j'avais fait un comparatif d'IO moi même il y a 3 ans environ entre C# et C++. La version de base en C# éclatait celle en C++, mais en faisant des changements mineurs j'avais réussi à retourner la tendance, sans pour autant faire du code trop illisible. J'ai aussi souvent entendu Matt Austern ,qui s'y connait un peu en IO dire que la lenteur des IO en C++ était principalement due à de mauvaises implémentations, et non pas à un problème intrinsèque. Mais il n'a pas développé assez pour que je puisse comprendre.
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

Discussions similaires

  1. [maintenance][performance] Que faire comme maintenance ?
    Par woodwai dans le forum PostgreSQL
    Réponses: 5
    Dernier message: 06/11/2003, 15h39
  2. Performance xml
    Par MicKCanE dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 07/07/2003, 06h41
  3. [ POSTGRESQL ] Problème de performance
    Par Djouls64 dans le forum PostgreSQL
    Réponses: 6
    Dernier message: 26/05/2003, 16h18
  4. [JDBC][connexion persistante] performances avec JDBC
    Par nawac dans le forum Connexion aux bases de données
    Réponses: 6
    Dernier message: 06/05/2003, 10h37
  5. performance entre 3DS, ase, asc ...
    Par amaury pouly dans le forum OpenGL
    Réponses: 3
    Dernier message: 24/03/2003, 11h41

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