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

Langages de programmation Discussion :

C# est il aussi performant que C++ ? C# est il plus performant que Visual Basic 6 ?


Sujet :

Langages de programmation

  1. #1
    Membre du Club
    Inscrit en
    Février 2004
    Messages
    197
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 197
    Points : 58
    Points
    58
    Par défaut C# est il aussi performant que C++ ? C# est il plus performant que Visual Basic 6 ?
    Bonjour,

    J'aurais aimé avoir des indications sur la performance du langage C# :
    ce langage donne-t-il des résultats comparables au langage de programmation C++ en terme de rapidité ?

    En particulier : le langage de programmation C# permet-il de réaliser des applications plus plus performantes que feu Visual Basic 6 ?

    Merci d'avance pour votre aide

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    154
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 154
    Points : 160
    Points
    160
    Par défaut
    Il me semble que C# n'est ni plus rapide ni plus lent que VB.net (d'après quelques tests que j'ai fait). Et C++ est plus rapide...

  3. #3
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2002
    Messages
    299
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Santé

    Informations forums :
    Inscription : Mai 2002
    Messages : 299
    Points : 373
    Points
    373
    Par défaut
    Globalement le C# est logiquement un poil plus lent qu'un langage compilé natif vu qu'il passe par un pseudo code, une librairie enorme.
    Maintenant la perf d'un programme est surtout liée à tes algoritmes, et seulement un peu à la performance pure du compilo. En dehors de besoins tres particuliers, tu t'en fous.
    Mais tu n'as pas donnés tes besoins? On ne peut pas vraiment te répondre.

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Août 2003
    Messages
    247
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 247
    Points : 276
    Points
    276
    Par défaut
    Malgré leur noms semblable (habile tactique commerciale), C# et C++ n'ont strictement rien à voir. Il n'ont pas été créer dans le même but, n'ont pas la même utilité, pas les mêmes possibilité et pas les même performances.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 13
    Points : 14
    Points
    14
    Par défaut
    J'ai répondu à un post similaire sur ce forum il y a quelques jours en donnant de détails sur les écueils à éviter pour obtenir de bonnes performances.

  6. #6
    Invité
    Invité(e)
    Par défaut speedy
    si tu dois aller vraiment vite. C++ permet de "descendre" au plus près du processeur.
    C# non !

    C# n'a pas été développé pour permettre d'aller vite : pas de préprocesseur, pas de structures de données contigües. pas d'allocation globale de memoire.

    Ca ne veut pas dire qu'il est tres lent mais pour un rendu graphique en temps réel ou un traitement de signal par exemple, il est définitivement hors course par rapport au C ( ++ ou non) qui lui , a gardé l'esprit de ses créateurs des années 60 et permet à peu près tout ce que le hardware autorise. Au prix d'un développement beaucoup plus long et pointu cependant
    Je n'ai pas de conseil génial à donner, simplement , si tu fais vraiment du temps réel, C# ne suffira pas - et il est certain que ça ne change pas à l'avenir.

  7. #7
    Membre régulier Avatar de Midou45
    Homme Profil pro
    Ingénieur
    Inscrit en
    Novembre 2007
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur

    Informations forums :
    Inscription : Novembre 2007
    Messages : 156
    Points : 110
    Points
    110
    Par défaut
    Dans cette logique, Java est aussi moins rapide que C++ ?? puisque Java et C# utilise presque le même principe, ou bien le faite que .net supporte bcp de langages influe sur la vitesse ? et pourquoi le java est utiliser pour des systèmes embarqués.
    " La nature nous a donné deux oreilles et seulement une langue afin de pouvoir écouter d'avantage et parler moins." Zénon d'Elée

  8. #8
    alex_pi
    Invité(e)
    Par défaut
    Citation Envoyé par Midou45 Voir le message
    Dans cette logique, Java est aussi moins rapide que C++ ??
    Bah en même temps...

    Citation Envoyé par Midou45 Voir le message
    et pourquoi le java est utiliser pour des systèmes embarqués.
    Java, sous sa forme javacard est utilisé dans les carte à puce pour des raisons de sécurité et de cloisonnement des données, clairement pas pour ses performances...
    De même sur les téléphones portables, c'est une question de portabilité (quand une personne télécharge les binaires d'un jeu, pas besoin de se demander sur quel téléphone ça va être exécuté, juste qu'il y a une machine virtuelle) et de "sécurité" grace à la machine virtuelle qui sert de bac à sable. Là encore, rien à voir avec les perfs.

    Mais ceci n'a rien à voir avec la question..

  9. #9
    Membre régulier Avatar de Midou45
    Homme Profil pro
    Ingénieur
    Inscrit en
    Novembre 2007
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur

    Informations forums :
    Inscription : Novembre 2007
    Messages : 156
    Points : 110
    Points
    110
    Par défaut
    Citation Envoyé par alex_pi Voir le message
    Mais ceci n'a rien à voir avec la question..

    Sa dépend de votre façon de voir les choses !
    " La nature nous a donné deux oreilles et seulement une langue afin de pouvoir écouter d'avantage et parler moins." Zénon d'Elée

  10. #10
    Expert éminent sénior

    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Avril 2002
    Messages
    2 789
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Directeur des systèmes d'information
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 789
    Points : 18 930
    Points
    18 930
    Par défaut
    - C# est généralement aussi performant que VB.NET puisque c'est la même chose quasiment : dans les deux cas c'est basé sur le framework .NET et cela utilise la même technologie pour l'exécution.

    - Sur une machine récente avec assez de mémoire vive disponible, une application C# ou VB.NET peut être plus performante qu'une application faites avec Feu l'ancien Visual Basic 6, car VB6 n'a pas de compilation native et la technologie d'exécution de DotNET est plus moderne et performante que l'exécution du code pseudo compilé du feu VB6.

    - Généralement une applications compilée avec C++ pourra être plus rapide d'exécution qu'une application exécutée avec le framework .NET, cependant cela n'est pas toujours vrai car la technologie d'exécution des applications DotNET s'adapte dynamiquement à la machine cible alors que si tu diffuse un exécutable fait à partir de C++ il n'est nullement optimisé pour une machine cible en particulier. Bref avec les machines moderne dans plus de 90% des cas la performance des applications n'est pas un critère pour un choix technologique de cette importance.
    Ne prenez pas la vie au sérieux, vous n'en sortirez pas vivant ...

  11. #11
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2008
    Messages : 4
    Points : 6
    Points
    6
    Par défaut
    C# et C++ peuvent sont comparables dans de nombreux domaines (Application bureau, UI etc.) mais il sera surement plus lent que me c++ si du fait du calcul lourd (3d, HPC etc.). Enfin il vaut mieux optimiser ses algorithmes d'abord, et l'augmentation de la productivité peut être plus important que la vitesse d'éxecution.

  12. #12
    Membre éclairé Avatar de zeavan
    Architect
    Inscrit en
    Avril 2003
    Messages
    590
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : Autre

    Informations professionnelles :
    Activité : Architect

    Informations forums :
    Inscription : Avril 2003
    Messages : 590
    Points : 774
    Points
    774
    Par défaut
    Dans 99% des cas ce n'est pas le language qui joue sur la performance mais le developpeur lui-meme, je pense pouvoir te rassurer en te disant que je pense que tu ne fais pas parti des 1% en tout cas pas encore.

    Donc la question que tu dois te poser n'est pas une question de performance mais plutot de besoin, quel est de ces 2 languages m'est-il plus approprie pour un projet type donne.

  13. #13
    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 Tellmarch Voir le message
    Il me semble que C# n'est ni plus rapide ni plus lent que VB.net (d'après quelques tests que j'ai fait).
    Citation Envoyé par Pierre Louis Chevalier Voir le message
    - C# est généralement aussi performant que VB.NET puisque c'est la même chose quasiment : dans les deux cas c'est basé sur le framework .NET et cela utilise la même technologie pour l'exécution.
    Juste une petite réserve par rapport à ces affirmations... C'est vrai, à condition en VB.NET de ne pas utiliser le late binding (Option Strict Off). Sinon, les appels de méthodes sont résolus à l'exécution par réflexion, ce qui est très pénalisant pour les performances... C# ne permet pas le late binding, donc la question ne se pose pas (mais C# 4 introduit le type dynamic qui permet le late binding).

    Citation Envoyé par zeavan Voir le message
    Dans 99% des cas ce n'est pas le language qui joue sur la performance mais le developpeur lui-meme
    Le langage non, mais la plate-forme d'exécution oui... C++ est compilé en code natif directement exécutable par le processeur, donc ça évite la phase de précompilation qu'on a sur la plate-forme .NET. Par contre, cette précompilation ne se fait que lors de la première exécution d'un assembly .NET : le code natif généré est mis en cache et réutilisé pour les exécutions suivantes, qui sont donc plus rapides

  14. #14
    Membre expert
    Avatar de aityahia
    Homme Profil pro
    CIEPTAL CARS SPA
    Inscrit en
    Mars 2006
    Messages
    1 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Algérie

    Informations professionnelles :
    Activité : CIEPTAL CARS SPA
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 938
    Points : 3 329
    Points
    3 329
    Par défaut
    salut.

    a mon avis avec la puissance des machines actuelle la rapidité n'est pas un atout majeur, par contre un bon langage est celui avec lequel on peut offrir a l'utilisateur plus de fonctionnalités en un laps de temps plus court, c'est le cas de C# avec le Framework .NET.


    a+

  15. #15
    Expert éminent sénior

    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Avril 2002
    Messages
    2 789
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Directeur des systèmes d'information
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 789
    Points : 18 930
    Points
    18 930
    Par défaut
    Citation Envoyé par aityahia Voir le message
    a mon avis avec la puissance des machines actuelle la rapidité n'est pas un atout majeur, par contre un bon langage est celui avec lequel on peut offrir a l'utilisateur plus de fonctionnalités en un laps de temps plus court, c'est le cas de C# avec le Framework .NET.
    Tout à fait
    Ne prenez pas la vie au sérieux, vous n'en sortirez pas vivant ...

  16. #16
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Points : 8 734
    Points
    8 734
    Par défaut
    Citation Envoyé par Pierre Louis Chevalier Voir le message
    - C# est généralement aussi performant que VB.NET puisque c'est la même chose quasiment : dans les deux cas c'est basé sur le framework .NET et cela utilise la même technologie pour l'exécution.
    D'après ce que j'ai pu lire, il semble que le compilateur C# soit plus performant dans certains cas.
    Du coup, pour un "même" code C# et VB.NET, il y a moins de code MSIL avec le compilateur C#.

  17. #17
    Membre éprouvé Avatar de Jidefix
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    742
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Septembre 2006
    Messages : 742
    Points : 1 154
    Points
    1 154
    Par défaut
    Citation Envoyé par aityahia Voir le message
    salut.

    a mon avis avec la puissance des machines actuelle la rapidité n'est pas un atout majeur, par contre un bon langage est celui avec lequel on peut offrir a l'utilisateur plus de fonctionnalités en un laps de temps plus court, c'est le cas de C# avec le Framework .NET.


    a+
    Je ne suis pas tout à fait d'accord, surtout dans le cadre d'une grosse application, les machines ne compensent pas à l'heure actuelle des programmes lourds et non optimisés.
    En revanche effectivement le langage n'est pas le critère qui va compter dans la rapidité d'un programme. Beaucoup moins que la conception et la simplification du code source.
    Veuillez agréer nos sentiments les plus distingués. Soyez assurés de notre entière collaboration, bien à vous pour toujours et à jamais dans l'unique but de servir l'espérance de votre satisfaction, dis bonjour à ton père et à ta mère, bonne pétanque, mets ton écharpe fais froid dehors.

  18. #18
    Membre régulier
    Développeur informatique
    Inscrit en
    Mai 2004
    Messages
    49
    Détails du profil
    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2004
    Messages : 49
    Points : 87
    Points
    87
    Par défaut
    En gros, C# est
    - un peu moins performant que C++ car nécessite plus de mémoire au lancement d'une application, effectue une compilation préalable à chaque exécution, isole complètement l'application de l'OS (en principe) et du matériel.
    - un peu plus performant que VB6 dont la machine virtuelle était de moins bonne qualité que le CLR.

    Et puisqu'il faut également en parler, C#, VB.NET, J# et C++/CLI ont globalement des performances similaires car générant pratiquement les mêmes codes IL. Pour des programmes équivalents écrits dans ces différents langages, les différences de performances viendraient essentiellement de l'habileté des programmeurs ou de la qualité d'implémentation des compilateurs (à supposer que vous utilisiez des compilateurs de différents éditeurs; ceci est surtout vrai pour C# et VB.NET dont il existe des compilateurs tiers)

    Maintenant la question est: "lequel dois-je utiliser?". Et la réponse est toute simple: ça dépend de ce que vous faites. C# est comme beaucoup de langages de sa génération optimisé pour le développement d'applications d'entreprise, le développement Web et le développement d'applications pour équipement mobile (qu'il ne faut pas confondre avec le développement d'applications embarquées; je doute que quelqu'un songe à utiliser du C# pour guider un missile tomahawk; mais bon, sait-on jamais...). De son côté, C++ est essentiellement adapté à la programmation système, au développement de progiciels et à l'écriture de programmes hautement exigeants en performances (jeux vidéos, applications scientifiques, etc...). Il faut dire que cette donne varie en fonction des époques. Autrefois, l'on considérait que seul FORTRAN était réellement adapté à ce type de développement, que C était à peine tolérable et que C++ était résolument dédié au développement d'applications rapide. Aujourd'hui, beaucoup de gens considèrent C++ comme une référence en matière de performances. Ceci est en partie dû au fait qu'on le confonde très souvent avec le C son ancêtre. En vérité, même si les deux langages sont globalement compatibles, il est toujours bon de rappeler que CE N'EST PAS DU TOUT LE MÊME LANGAGE! Mais bon puisqu'il faut retenir l'essentiel, voici le classement des langages évoqués dans l'ordre décroissant des performances:
    C, C++, {C#, VB.NET et les autres ...}, VB6.
    Remarquez que s'il fallait les classer en fonction de la productivité, il suffirait d'inverser la liste.

  19. #19
    Membre régulier Avatar de Neolander
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 88
    Points : 87
    Points
    87
    Par défaut
    Pour la performance, je voudrais relativiser ce qui a été dit plus haut. C'est actuellement à la mode de penser que la performance du langage est moins importante que la rapidité de développement qu'il permet, mais ce n'est pas toujours vrai.
    Il faut vraiment effectuer son choix en fonction de ce qu'on veut faire.

    Pour des tâches répétitives et relativement simples, les langages compilés sont BEAUCOUP plus adaptés.

    A titre d'exemple, pour modéliser un ballon avec un algorithme simple basé sur la loi des gaz parfaits, on a besoin de
    -Décomposer le ballon en une série de segments
    -Faire une série d'opérations faisant évoluer la simulation à répétition, le plus vite possible parce que sinon d'une part le résultat à l'écran n'est pas fluide et d'autre part il perd en exactitude (ce qui est vraiment problématique dans certains cas).

    En python, avec suffisamment de segments pour que la forme obtenue semble ronde, je pouvais obtenir une douzaine d'images par seconde sur une machine un peu datée. En C, on approchait plutôt de la cinquantaine avec le même algorithme

    Les langages interprétés sont souvent plus pratiques, mais il ne faut pas leur confier des tâches onéreuses en ressources. Sinon, il faudra un PC de guerre pour faire tourner tes programmes... Je pense qu'il vaut mieux connaître les deux.

    Exemples de cas où les langages interprétés sont plus adaptés :
    -Applications graphiques qui affichent des fenêtres et des jolis boutons et stockent des réglages dans des fichiers (ex : panneau de configuration windows)
    -Logiciels de bureautique
    -Logiciels de lecture multimédia, widgets, et autres petites applications de bureau
    -Applications destinées à tourner sur un grand nombre de machines différentes, avec des matériels et systèmes d'exploitation variés

    Exemples de cas où ils sont à bannir, à part quand on a la chance de trouver une fonction toute faite (programmée en C :p) pour le faire :
    -Simulation physique
    -Édition multimédia
    -Manipulation de fichiers nombreux ou lourds (ex : bases de données)
    -Programmes qui doivent tourner très souvent (plusieurs fois par secondes)

  20. #20
    Membre expert
    Avatar de aityahia
    Homme Profil pro
    CIEPTAL CARS SPA
    Inscrit en
    Mars 2006
    Messages
    1 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Algérie

    Informations professionnelles :
    Activité : CIEPTAL CARS SPA
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 938
    Points : 3 329
    Points
    3 329
    Par défaut
    Citation Envoyé par Jidefix Voir le message
    Je ne suis pas tout à fait d'accord, surtout dans le cadre d'une grosse application, les machines ne compensent pas à l'heure actuelle des programmes lourds et non optimisés.
    En revanche effectivement le langage n'est pas le critère qui va compter dans la rapidité d'un programme. Beaucoup moins que la conception et la simplification du code source.
    certainement le choix d'un langage ce fait a base de l'orientation de l'application , si mon projet se rapporte une application qui nécessite de gros calculs tel que les application de modélisation 3D j'opterai certainement pour C++, mais dans un cadre d'entreprise ou les dirigeants exigent des solutions fonctionnelles ASAP ou le gains de quelque ms sur une action n'est pas salutaire.
    par contre l'optimisation est crucial quelque soir le langage.

Discussions similaires

  1. Réponses: 23
    Dernier message: 15/12/2011, 22h48
  2. Réponses: 11
    Dernier message: 03/09/2010, 11h22
  3. "Les Beatles sont plus populaires que Jesus" : c'est Google qui le dit !
    Par Katleen Erna dans le forum Humour Informatique
    Réponses: 3
    Dernier message: 24/09/2009, 13h12
  4. Réponses: 0
    Dernier message: 23/09/2009, 03h59
  5. Document imprimé - plus général que cela c'est pas possible
    Par pjmorce dans le forum Langages de programmation
    Réponses: 2
    Dernier message: 11/01/2009, 00h29

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