A development system providing methodology for improving system performance
by decreasing recompilation of dependent source modules is described.
During operation, the system keeps track of several pieces of information.
From the outset, the system has kept track of the timestamps of sources
(e.g., A.java file in a Java system) and compiled files thereof (e.g.,
A.class class file in a Java system). Examination of the timestamps leads
to detection of those files which have been modified. The system will
recompile A.java in the following circumstances: (1) A.class is not found,
(2) A.java has a different timestamp, or (3) A.class has a different
timestamp. Otherwise, the system does not invoke a recompile. If a
recompilation in not required, the system then looks to the imports for
determining whether the imports are consistent. Here, the system checks
the timestamps of imports, possibly recompiling one or more of the modules
providing the imports. If the imports have been recompiled, then the
system must check the root module for determining whether it remains
consistent with the imports--that is, whether A is still consistent with
its imports. If not, the system recompiles the source file (e.g., A.java).
Um sistema de desenvolvimento que fornece a metodologia para melhorar o desempenho do sistema diminuindo a recompilação dos módulos de fonte dependentes é descrito. Durante a operação, o sistema mantem-se a par de diversas partes de informação. Do outset, o sistema manteve-se a par dos timestamps das fontes (por exemplo, lima de A.java em um sistema de Java) e de limas compiladas disso (por exemplo, lima da classe de A.class em um sistema de Java). A examinação dos timestamps conduz à deteção daquelas limas que foram modificadas. A vontade A.java recompile do sistema nas seguintes circunstâncias: (1) A.class não é encontrado, (2) A.java tem um timestamp diferente, ou (3) A.class tem um timestamp diferente. Se não, o sistema não invoca um recompile. Se uma recompilação no não requerido, o sistema olhar então às importações determinando se as importações são consistentes. Aqui, o sistema verifica os timestamps das importações, de possivelmente recompiling ou de mais dos módulos que fornecem as importações. Se as importações forem recompiled, a seguir o sistema deve verificar o módulo da raiz para ver se há determinar se remanesce consistente com as importações -- isto é, se A é ainda consistente com suas importações. If.not, os recompiles do sistema a lima de fonte (por exemplo, A.java).