2010-12-12 7 views
3

J'essaye de créer une application de consommateur qui obtient des données de différents services de Web. L'application doit traiter les données de gros volume en temps réel. Je dois faire un choix entre Java et C++ uniquement sur la base des performances. Veuillez suggérer.Java vs C++: Performance dans l'application utilisant les services Web

Merci.

+0

Essayez sur [programmers.stackexchange.com] (http://programmers.stackexchange.com/) – casablanca

+1

En termes de performances, les deux langues sont les mêmes. Une application C++ bien écrite aura la même vitesse qu'une application Java bien écrite. La performance est ** PAS ** le critère que vous devriez utiliser pour prendre la décision. –

Répondre

6

La différence de performance pour un site Web n'est pas aussi importante que l'ensemble de compétences dont vous disposez. Une application bien écrite dans une langue sera plus rapide qu'une application moins bien écrite dans l'autre. À mon humble avis, vous avez vraiment besoin de savoir ce que vous faites en C++ pour écrire une application bien écrite, en Java il est plus facile d'écrire un programme bien écrit car il ne nécessite pas le même niveau de compétence. Je suis d'accord avec le point de @ Jason que vous ne devriez pas considérer cela comme une solution ou l'autre. Dans une application classique, 90% du temps est passé dans 10% du code. Même si vous trouvez que C++ est beaucoup plus rapide, vous n'avez besoin de le faire que pour 10% du code. Cependant, je soupçonne que vous feriez mieux de passer du temps à regarder le matériel et l'infrastructure réseau, car ceux-ci peuvent faire plus de différence et sont trop facilement négligés par les développeurs.

+1

C'est vrai en théorie. En pratique, il y a [Audacity] (http://audacity.sourceforge.net/) par rapport aux équivalents Java commerciaux/chers/flashy/sugar-coated. La même chose à propos de .NET studio par rapport à l'héritage VC++ 6. En théorie, il n'y a aucune justification pour une telle lenteur et inefficacité. Pourtant, dans la pratique et le monde réel, il existe. – Withheld

+1

Il existe une technologie commerciale de déchets là-bas. ;) –

+1

En Java, j'ai développé un échange qui supportait la persistance de tous les messages liés et sortants avec un débit soutenu d'un million de requêtes/événements par seconde et une latence aller-retour typique de moins d'une micro-seconde entre les processus même machine. En C++, j'aurais pu le faire plus vite, mais en avais-je vraiment besoin? ;) –

1

Il est généralement possible d'écrire un logiciel en C++ qui traite les données plus efficacement qu'un logiciel équivalent écrit en Java. La différence est souvent marginale.

Étant donné que C++ est complexe, il est assez courant que les programmeurs novices écrivent C++ qui fonctionne très faiblement. Java est plus simple, il est donc difficile de faire de si grosses erreurs en Java.

2

Si votre scénario implique un goulot d'étranglement dû à la bande passante réseau, la langue que vous utilisez n'a probablement pas d'importance tant qu'elle gère efficacement les E/S. Java et C++ le font bien.

Si votre scénario implique un goulot d'étranglement dû à la bande passante computationnelle, C++ peut être plus efficace. Java est devenu assez efficace ces dernières années grâce à la compilation JIT et d'autres techniques. Si je faisais cela moi-même, je préfère Java au C++ car c'est un langage de plus haut niveau avec de meilleurs outils et moins d'opportunités d'erreurs via la gestion de la mémoire. Je prototyperais la partie computationnelle du système en Java, et je verrais comment elle fonctionne. Si adéquat, je resterais à Java. Sinon, je comparerais avec C++, en utilisant éventuellement JNI ou JNA pour exécuter le calcul haute performance en C++ s'il y avait des avantages de performance.