2009-05-29 10 views
5

Duplicar posible:
Why does C++ compilation take so long?¿Qué características de Java le permiten construir mucho más rápido que un programa comparable de C++?

estoy trabajando con dos proyectos diferentes de aproximadamente el mismo tamaño (loc). El proceso de compilación de Java usando Ant se mide en minutos. El procesamiento de compilación C++ utilizando las herramientas CMAKE se mide en horas.

¿Qué características de Java le permiten construir mucho más rápido que un programa comparable de C++?

+0

C++ combina la potencia de ensamblaje con la facilidad de uso y el uso del ensamblaje – Jherico

Respuesta

3

Puede que encuentre this question útil. La respuesta aceptada no enfatiza una comparación con Java, pero es posible que puedas inferir bastante sobre lo que hace C++ que lleva tanto tiempo.

+0

El enlace apunta a una respuesta muy bien pensada. ¡Gracias! – Jon

4

Tengo que sospechar que la ausencia de kilolines de archivos de encabezado tiene mucho que ver con eso.

+1

y el preprocesador en general. – luiscubal

+0

encabezados precompilados ayuda aquí, ¿verdad? – dfa

+0

@dfa: Sí, racimos. – chaos

4

Diferentes estrategias de optimización

código Java normalmente no está optimizado tanto como/C código C++ en tiempo de compilación. Esto significa que el código de bytes Java está "menos optimizado" que el código nativo "similar" emitido por los compiladores C/C++. El compilador Just In Time (JIT) de JVM realiza optimizaciones en tiempo de ejecución para aumentar el rendimiento del código de bytes.

-2

Wow, tiene tiene que pasa algo más en ese archivo CMAKE que no está pasando con el proyecto de Java. ¿Se están ejecutando casos de prueba automatizados? No hay nada fundamental acerca de Java que lo haga compilar órdenes de magnitud (o cualquier) más rápido que el código C++.

+0

Compilación no, pero a veces es el enlace lo que toma horas. – mkb

+0

Usted señor, está equivocado. – Malfist

+0

Pwned! Me sirve para tomar una conjetura inculta – AgileJon

2

El simple hecho de tener el mismo código LOC no significa que la construcción llevará el mismo tiempo. Por ejemplo, si agrega grandes archivos de encabezado como windows.h en C++, tendrá que generar mucho más para esta línea.

4

Las plantillas son especialmente lentas de compilar.

Cuestiones relacionadas