排查编译缓慢问题
2022-09-02 04:32:35
如何调查和解决编译缓慢的问题?
我的项目有大约100个类,编译时间超过45秒,这对我来说似乎很慢。作为参考,我有另一个项目,其中包含50个类,可在3秒内编译。
ps:
- 我使用maven作为构建工具。编译需要大约50秒(),其中45秒用于运行javac(通过运行该选项进行确认)。
mvn clean compile
-X
- 增加内存量没有帮助(
-Xms500m
) - 我可以提供有关我的项目的更多信息,但它相当标准,所以我不确定哪些信息是相关的。
更新
多亏了塔吉尔的想法,我设法找到了罪魁祸首之一。此类将编译时间增加 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