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

  1. #1
    Membre du Club
    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é
    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
    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
    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
    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)
    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
    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)
    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
    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
    - 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
    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é
    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

    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
    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
    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

    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é
    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
    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
    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
    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.

###raw>template_hook.ano_emploi###