Java Runtime Performance im Vergleich zu nativem C / C ++ - Code?

Ich habe mich mit der Programmierung in Java immer mehr angefreundet als mit C ++ oder C. Ich hoffe, mit einem JVM-Interpreter ein Gefühl für den Leistungsverlust zu bekommen, anstatt dasselbe "Projekt" nativ auszuführen. Mir ist klar, dass es hier ein gewisses Maß an Subjektivität gibt. Die Qualität des Programms hängt in hohem Maße von einer guten Umsetzung ab. Ich interessiere mich allgemein für folgende Aspekte:

Bei der Verwendung eines Dolmetschers muss eine Grundlinie für den Overhead vorhanden sein. Gibt es eine allgemeine Faustregel, an die Sie sich erinnern sollten? 10% 15%? (Ich habe diese Zahlen aus dem Nichts gezogen) Ich habe gelegentlich in einem Blog gelesen, dass Java-Code fast so schnell ist wie nativer Code, aber ich denke, dass dies voreingenommen war.

Fügt der JVM-Garbage Collector der Laufzeitleistung einen erheblichen Overhead hinzu? Ich weiß, dass Cocoa-Anwendungen begonnen haben, ein Garbage Collection-Modell zu verwenden, und ich stimme zu, dass es die Programmierung viel einfacher macht, aber zu welchen Kosten?

Was kostet es, Systemaufrufe von Java aus zu tätigen? Beispiel: Erstellen eines Socket-Objekts im Gegensatz zur C-Socket-API.

Schließlich erinnere ich mich, dass ich irgendwo gelesen habe, dass die JVM-Implementierung Single-Threaded ist. Wenn dies wahr ist (was ich skeptisch sehe), bedeutet das, dass Java-Threads wirklich keine wahren Threads sind? Entspricht ein Java-Thread im Allgemeinen einem zugrunde liegenden, vom Kernel bereitgestellten Thread? Profitiert eine Java-Anwendung in gleicher Weise wie eine native Anwendung von mehreren Kernen / mehreren CPUs?

Für Ratschläge von Entwicklern, die die Feinheiten von JVM und der Leistung von Java-Programmen verstehen, wären wir sehr dankbar. Vielen Dank.

Antworten auf die Frage(10)

Ihre Antwort auf die Frage