2010-12-12 20 views
3

Ich versuche, eine Consumer-Anwendung zu erstellen, die Daten von verschiedenen Webdiensten erhält. Die Anwendung muss in Echtzeit große Datenmengen verarbeiten. Ich muss die Wahl zwischen Java und C++ nur aufgrund der Leistung treffen. Bitte schlagen Sie vor.Java vs C++: Leistung in der Anwendung mit Web-Services

Danke.

+0

Fragen Sie nach [programmers.stackexchange.com] (http://programmers.stackexchange.com/) – casablanca

+1

In Bezug auf die Leistung sind beide Sprachen gleich. Eine gut geschriebene C++ App wird die gleiche Geschwindigkeit wie eine gut geschriebene Java App haben. Leistung ist ** NICHT ** die Kriterien, die Sie verwenden sollten, um die Entscheidung zu treffen. –

Antwort

6

Der Leistungsunterschied für eine Website ist nicht so wichtig wie die verfügbaren Fähigkeiten. Eine gut geschriebene Anwendung in einer Sprache wird schneller sein als eine nicht so gut geschriebene Anwendung in der anderen.

IMHO, Sie müssen wirklich wissen, was Sie in C++ tun, um eine gut geschriebene Anwendung zu schreiben, in Java ist es einfacher, ein gut geschriebenes Programm zu schreiben, da es nicht die gleiche Fähigkeitsstufe erfordert.

Ich würde @ Jasons Argument zustimmen, dass Sie dies nicht die eine oder andere Lösung betrachten sollten. In einer klassischen Anwendung werden 90% der Zeit in 10% des Codes verbracht. Selbst wenn Sie feststellen, dass C++ viel schneller ist, müssen Sie dies nur für 10% des Codes tun.

Ich vermute jedoch, dass Sie besser Zeit mit dem Blick auf die Hardware und Netzwerkinfrastruktur verbringen, da diese mehr unterscheiden können und von Entwicklern zu leicht übersehen werden.

+1

Dies ist in der Theorie wahr. In der Praxis gibt es [Audacity] (http://audacity.sourceforge.net/) gegenüber kommerziellen/teuren/auffälligen/zuckerbeschichteten Java-basierten Entsprechungen. Das gleiche gilt für .NET Studio vs. das alte VC++ 6. Theoretisch gibt es keine Rechtfertigung für solche Trägheit und Ineffizienz. In der Praxis und in der realen Welt existiert es jedoch. – Withheld

+1

Es gibt etwas Müll-Technologie draußen. ;) –

+1

In Java entwickelte ich einen Austausch, der die Persistenz aller in gebundenen und ausgehenden Nachrichten mit einem kontinuierlichen Durchsatz von einer Million Anfragen/Ereignissen pro Sekunde und einer typischen Umlaufzeit von weniger als einer Mikrosekunde zwischen Prozessen auf der gleiche Maschine. In C++ hätte ich es vielleicht schneller machen können, aber musste ich das wirklich? ;) –

1

Es ist normalerweise möglich, Software in C++ zu schreiben, die Daten effizienter verarbeitet als gleichwertige in Java geschriebene Software. Der Unterschied ist oft marginal.

Da C++ komplex ist, ist es ziemlich üblich, dass Anfänger Programmierer C++ schreiben, die sehr schwach funktioniert. Java ist einfacher, daher ist es schwer, in Java so große Fehler zu machen.

2

Wenn in Ihrem Szenario aufgrund der Netzwerkbandbreite ein Engpass auftritt, spielt es wahrscheinlich keine Rolle, welche Sprache Sie verwenden, solange E/A effizient verarbeitet wird. Sowohl Java als auch C++ machen das gut.

Wenn Ihr Szenario aufgrund der Rechenbandbreite einen Engpass verursacht, ist C++ möglicherweise effizienter. Java ist in den letzten Jahren durch JIT-Kompilierung und andere Techniken ziemlich effizient geworden.

Wenn ich das selbst mache, bevorzuge ich Java zu C++, weil es eine höhere Sprache mit besseren Werkzeugen und weniger Möglichkeiten für Fehler über die Speicherverwaltung ist. Ich würde den rechnerischen Teil des Systems in Java prototypieren und sehen, wie es funktioniert. Wenn angemessen, würde ich in Java bleiben. Ansonsten würde ich mit C++ vergleichen, möglicherweise unter Verwendung von JNI oder JNA, um die Hochleistungsberechnung in C++ auszuführen, wenn es Leistungsvorteile gäbe.