attendez, attendez, STOP.
On s'engage sur le terrain de l'optimisation des performances qui est le seul avantage du c++. Il est possible de faire tourner ton programme de calcul de surface plus rapidement que l'original en
-arretant de penser qu'on peut faire de l'allocation statique sur la pile en java : il n'y a pas de pile. D'ou l'utilité d'un cache. Donc gregy tu as raison, même si je ne vois pas pourquoi tu gardes les valeurs initiales...
++gib, en quoi utiliser un pool (ou cache) est bas-niveau? ou même une bidouille. Au contraire c'est une gestion de mémoire haut-niveau car utilisant un conteneur d'objets pré-instanciés (et pas uniquement des références). Pas étonnant que programmer en haut niveau releve de la bidouille dans ton cas Donc je le redis :
A partir du moment ou le java ne dispose pas d'allocation statique sur la pile comme le C++, la gestion de mémoire par cache accroit de 300%
la vitesse générale de l'appli. ET CE N'EST PAS DU BAS-NIVEAU
-en utilisant ArrayList et les méthodes get (gain de 100% pour le parcours par rapport à vector). Donc gregy, pas besoin de transformer en tableau car l'accès par get est optimisé par la jvm et est remplacé inline (comme toute les méthodes get qui ne font que retourner...) comme en C++.
hmmm, c'est bon ++gib on passe souvent par StreamTokenizer voire StringTokenizer. C'est lourd certes, mais on peut faire plus de chose qu'un fscanf() du C...Pas d'autre moyen de lire des données dans un fichier texte de structure simple ?
Le but du débat n'est plus de prouver que c++ est plus performant que java pour le calcul, ca c'est certain (c'est ce que j'ai toujours dit, et je l'ai prouvé avec mes résultats à Scimark2), mais que NON, JAVA N'EST PAS 10 FOIS PLUS LENT QUE C++. En utilisant les bibliothèques java, on peut très bien se contenter d'une vitesse de calcul au pire 50% de celle du c++ pour des petits problèmes et COMPARABLES pour une taille des données importante (voir le test scimark). Ce sont des expert en calcul numérique qui ont fait les tests, et excuses-moi ++gib, ils font un peu plus que du calcul de surface. (FFT, decomposition LU, ...)
Si le langage JAVA est managé, ce n'est pas pour embêter les programmeurs, mais cela s'inscrit dans la logique d'application sécurisée. vous ne croyez quand même pas qu'avec tout ca, ca va être plus rapide que le c++?
Pour une application web distribuée, la plateforme java n'a aucun égal en performance. Vous croyez sérieusement pouvoir faire du distribué avec CORBA en c++ et être aussi performant que J2EE???, ou du c++ avec .NET ? ha ha ha. Des composants COM en c++? pfoua!
même les applis windows, il ne vaut mieux plus les faire en c++ ni avec MFC, ni avec la bibli de borland, mais plutot en DELPHI ou JAVA. (non pas VB quand mêmeuuuu...)
Nous sommes dans l'ere du service, du RAD, où les performances sont
importantes bien sur , mais sont SECONDAIRES.
Et puis les DirectBuffer sont un peu plus haut-niveau que les pointeurs avec leur arithmétique. Quant à la sécurité, il faudrait attendre les retour d'expérience.
Algo :
SI vous connaissez le C++ à 100%, la STL à 100%, que vous rêvez de performances toute la journée ET que votre appli n'est pas une appli de gestion, une appli distribuée d'entreprise, ALORS choisir C++ (si possible avec un compilo spécialisé intel C++ pour le SIMD)
SINON
SI vous programmez pour windows uniquement et que le java ca vous dit pas ALORS choisir DELPHI
SINON choisir JAVA
Partager