D es uno de los lenguajes de programación más rápidos para compilar, si no el más rápido, pero este no es siempre el caso. Las cosas se vuelven extremadamente lentas cuando unittest
está encendido. Mi proyecto actual tiene 6-7 módulos (~ 2000 LOC), con cada uno de ellos con pruebas unitarias que también contienen puntos de referencia. Aquí están algunos números de mi proyecto actual:¿Por qué tarda tanto la compilación D?
dmd -O -noboundscheck
toma 0m1.287s
dmd -O -release -noboundscheck
toma 0m1.382s
dmd -O -inline -noboundscheck
toma 0m1.499s
dmd -O -inline -release -noboundscheck
toma 0m3.477s
añadiendo -unittest
a cualquiera de la voluntad por encima aumentar drásticamente compi tiempo mento:
dmd -O -inline -release -noboundscheck -unittest
toma 0m21.918s
ya veces se bloquea DMD:
time dmd -O t1.d -inline -noboundscheck -version=Double -unittest
toma 0m2.297s
Internal error: ../ztc/gdag.c 776
evidentemente, unittest está libre de errores, pero al mismo tiempo se ha convertido en una parte importante de mi proyecto. Me gustaría saber si la desaceleración es normal o ¿se está trabajando en algo? Mi proyecto está creciendo y con cada nueva prueba unitaria, la compilación tarda más y más. La única solución que conozco es desactivar -release
y -inline
, pero eso no siempre es deseable.
¿Tiene muchas instancias de plantilla en las pruebas de su unidad? –
@CyberShadow Sí, se trata principalmente de instancias de plantillas porque hay mucha programación genérica. – Arlen
Esa es probablemente la razón. Intente mover las partes no genéricas de su código fuera de las plantillas. –