Что делать, чтобы исследовать и устранять проблему с медленной компиляцией?
Мой проект имеет около 100 классов и занимает более 45 секунд для компиляции, что кажется мне очень медленным. В качестве ссылки у меня есть другой проект с 50 классами, который скомпилируется за 3 секунды.
пс:
- Я использую maven как инструмент построения. Требуется maven ~ 50 секунд для компиляции (
mvn clean compile
), из которых 45 секунд потрачены на запуск javac (подтвержденный запуском с опцией-X
). - увеличение объема памяти не помогло (
-Xms500m
) - Я могу дать больше информации о моем проекте, но он довольно стандартный, поэтому я не уверен, какая информация релевантна.
UPDATE
Благодаря идее Тагира мне удалось найти одного из виновников. Этот класс добавляет 20 секунд к времени компиляции:
import org.jooq.DSLContext;
import org.jooq.Field;
import static org.jooq.impl.DSL.field;
import static org.jooq.impl.DSL.round;
import static org.jooq.impl.DSL.sum;
class Test {
static Object fast(DSLContext sql) {
Field<Double> a = field("a").cast(Double.class);
return sql.select()
.having(round(sum(a).cast(Double.class), 2).ne(0d));
}
static Object slow(DSLContext sql) {
return sql.select()
.having(round(sum(field("a").cast(Double.class)).cast(Double.class), 2).ne(0d));
}
}
Если метод slow
закомментирован, время компиляции возвращается к нормальному.