Java Runtime Performance Vs Native C / C ++ Code?

Me he vuelto más y más cómodo programando en Java que con C ++ o C. Espero tener una idea del impacto en el rendimiento incurrido utilizando un intérprete JVM, en lugar de ejecutar el mismo "proyecto" de forma nativa. Me doy cuenta de que hay cierto nivel de subjetividad aquí; La calidad del programa dependerá altamente de una buena implementación. Me interesan los siguientes aspectos en sentido general:

Debe haber alguna línea de base para los gastos generales cuando se utiliza un intérprete. ¿Hay alguna regla general para recordar? 10% 15%? (Saqué estos números de la nada) He leído el blog ocasional que indica que el código Java es casi tan rápido como el código nativo, pero creo que puede haber sido parcial.

¿El recolector de basura JVM agrega una sobrecarga significativa al rendimiento en tiempo de ejecución? Sé que las aplicaciones Cocoa han comenzado a usar un modelo de recolección de basura, y estoy de acuerdo en que hace que la programación sea mucho más sencilla, pero ¿a qué costo?

¿Cuál es la sobrecarga de hacer llamadas al sistema desde Java? Por ejemplo, creando un objeto Socket en oposición a la API de C socket.

Finalmente, recuerdo haber leído en alguna parte que la implementación de JVM es un solo hilo. Si esto es cierto (por lo que soy escéptico), ¿significa eso que los hilos de Java realmente no son hilos de verdad? ¿Un hilo java, en general, corresponde a un hilo subyacente provisto por el kernel? ¿Se beneficia una aplicación Java de la misma manera que una aplicación nativa de múltiples núcleos / múltiples CPU?

Cualquier consejo de un desarrollador que comprenda las complejidades de JVM y el rendimiento del programa Java sería muy apreciado. Gracias.

Respuestas a la pregunta(10)

Su respuesta a la pregunta