2012-08-27 14 views
16

Escribí mi primer proyecto de tamaño medio en Scala, y ahora estoy un poco preocupado de que el lento tiempo de compilación incremental dentro de Eclipse pueda tener algo que ver con mi tendencia a poner mis clases en relativamente pocos archivos grandes .scala.¿La velocidad de compilación incremental en Scala depende de la cantidad de clases por archivo?

Mi lógica detrás de esto es la siguiente: si modifico una clase pequeña dentro de un gran archivo .scala y presiono Guardar, el compilador podría ver que el archivo completo se modificó de alguna manera y se ve obligado a recompilar todo lo que está en el archivo junto con las clases dependientes, en lugar de solo la clase modificada y sus clases dependientes.

Así que aquí está la pregunta: ¿La cantidad promedio de clases de Scala que coloca en un solo archivo afecta de alguna manera la velocidad de recompilación? O para decirlo de otra manera: en términos de velocidad de recompilación, ¿se prefieren los pequeños archivos .scala a los grandes, o realmente no hay diferencia?

Respuesta

14

Tiene razón: la unidad de seguimiento de la dependencia es un archivo. Si realiza cambios en una sola clase, pero su unidad de compilación tiene varias clases, esto desencadenará la recompilación de todos los archivos que dependen de las otras clases en el mismo archivo.

Editar:

Desde 0.13.6 SBT utiliza una nueva estructura de nombres-hash por defecto. Esto permite recompilar solo los archivos que tienen al menos alguna dependencia en un nombre modificado.

Esta es la forma en que Sbt trabaja en la línea de comandos, y Eclipse usa el compilador incremental en Sbt.

+0

¡Esto debería colocarse en algún banner grande en alguna parte! –

+0

Espero que esto se solucione más temprano que tarde. Pero estoy de acuerdo, debe ser especificado. –

Cuestiones relacionadas