Niveau performance, sur de gros programmes, un programmeur Java avec les bons outils de profiling réussira rapidement à avoir un logiciel plus rapide que son équivalent C/C++.
Sur les micro-benchmarks, C et C++ resterons à mon avis toujours meilleurs car les performances découlent d'optimisations liées aux instructions processeurs utilisée.
En revanche, sur un logiciel de plusieurs milliers de lignes (genre au hasard OpenConcerto :) ), en quelques minutes, avec jProfiler par exemple, le coder Java voit exactement:
- où sont les hotspots à optimiser,
- quand les threads sont en attentes,
- ce qui est parallélisable
et tout cela en ayant la hiérarchie des appels, les temps moyens, les nombres d'appels et j'en passe! Beauté de la chose: cela se fait sans recompiler ou modifier quoi que soit à l'application.
Bref, l'outil étonne souvent, les pertes de performances sont rarement là où on les cherche. Ayant passé des heures à optimiser des codes assembleur, C, C++ et Java, je vois en java une excellente plateforme pour atteindre rapidement d'excellentes performance sur des logiciels de taille importante.
Pour tout ceux qui n'aurait pas encore testé un outil comme jProfiler, faites un tour sur jOpenDocument section benchmark. Après quelques heures de profiling, nous avons optimisé la génération de documents OpenDocument: 17 ms pour créer un document (dont 12ms passées dans l'accès disque) quand une autre librairie (ODFDOM) à besoin de 126ms, ça parle tout de suite!
[^] # Re: Les développeurs Java
Posté par Guillaume Maillard (site web personnel) . En réponse à la dépêche Naissance d'un géant : Java. Évalué à 7.
Niveau performance, sur de gros programmes, un programmeur Java avec les bons outils de profiling réussira rapidement à avoir un logiciel plus rapide que son équivalent C/C++.
Sur les micro-benchmarks, C et C++ resterons à mon avis toujours meilleurs car les performances découlent d'optimisations liées aux instructions processeurs utilisée.
En revanche, sur un logiciel de plusieurs milliers de lignes (genre au hasard OpenConcerto :) ), en quelques minutes, avec jProfiler par exemple, le coder Java voit exactement:
- où sont les hotspots à optimiser,
- quand les threads sont en attentes,
- ce qui est parallélisable
et tout cela en ayant la hiérarchie des appels, les temps moyens, les nombres d'appels et j'en passe! Beauté de la chose: cela se fait sans recompiler ou modifier quoi que soit à l'application.
Bref, l'outil étonne souvent, les pertes de performances sont rarement là où on les cherche. Ayant passé des heures à optimiser des codes assembleur, C, C++ et Java, je vois en java une excellente plateforme pour atteindre rapidement d'excellentes performance sur des logiciels de taille importante.
Pour tout ceux qui n'aurait pas encore testé un outil comme jProfiler, faites un tour sur jOpenDocument section benchmark. Après quelques heures de profiling, nous avons optimisé la génération de documents OpenDocument: 17 ms pour créer un document (dont 12ms passées dans l'accès disque) quand une autre librairie (ODFDOM) à besoin de 126ms, ça parle tout de suite!