• [^] # Re: promouvoir Java plutot que C#

    Posté par . En réponse à la dépêche Mono 0.24. Évalué à 3.

    <blockquote>Java ne pourra jamais etre aussi rapide que C++, il y a plein d'elements dans Java qui font que ca sera logiquement plus lent (classe Object, tout en virtual, garbage collector...)</blockquote> En fait ce n'est pas si vrai que ça. Java peut être plus rapide que C++ et inversement. Le tout dépendant d'une part de la situation et du programmeur. Effectivment Java déclare par défaut les méthodes en virtual mais rien n'interdit de déclarer une méthode final et la JVM pourra alors faire un branchement direct à l'adresse de la méthode plutôt que de passer par une table d'indirection (c'est finalement assez proche des const en C++ qui sont très importants pour permettre au compilo de prendre les meilleurs décision d'optimisation). Le garbage collector est probablement plus lent qu'un système de déallocation explicite comme en C++. Cependant il faut savoir que le GC peut se déclencher lorsque le programme n'a rien à faire alors qu'un delete en C++ consomme de la CPU immédiatement. On peut bien sûr imaginer en C++ un système qui permettrait de faire des delete différés. Ceci-dit le temps CPU utilisé par le GC est fonction du nombre d'objet en mémoire. Un programmeur expérimenté essayera de minimiser le nombre de création d'objets. Sinon le gros avantage de Java sur C++ en terme de perfs est la possibilité pour la JVM d'optimiser le code à l'exécution donc dans un contexte beaucoup plus complet que lors de la compilation. Dans le cas des méthodes et des attributs en final, la JVM pourra décider de les inliner en fonction de leur usage réel et non de supposition à la compilation.