gpt4 book ai didi

java - 为什么 javac 1.5 与 Eclipse 编译器相比运行速度如此之慢?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:30:52 25 4
gpt4 key购买 nike

我有一个 Java Maven 项目,其中包含大约 800 个源文件(一些由 javacc/JTB 生成),用 javac 编译需要 25 分钟。

当我将 pom.xml 更改为使用 Eclipse 编译器时,编译大约需要 30 秒。

关于为什么 javac (1.5) 运行如此缓慢有什么建议吗? (我不想永久切换到 Eclipse 编译器,因为 Maven 的插件似乎有很多问题。)

我有一个很容易重现问题的测试用例。以下代码在默认包中生成了一些源文件。如果您尝试使用 javac 编译 ImplementingClass.java,它似乎会暂停很长时间。

import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintStream;

public class CodeGenerator
{
private final static String PATH = System.getProperty("java.io.tmpdir");
private final static int NUM_TYPES = 1000;

public static void main(String[] args) throws FileNotFoundException
{
PrintStream interfacePs = new PrintStream(PATH + File.separator + "Interface.java");
PrintStream abstractClassPs = new PrintStream(PATH + File.separator + "AbstractClass.java");
PrintStream implementingClassPs = new PrintStream(PATH + File.separator + "ImplementingClass.java");
interfacePs.println("public interface Interface<T> {");
abstractClassPs.println("public abstract class AbstractClass<T> implements Interface<T> {");
implementingClassPs.println("public class ImplementingClass extends AbstractClass<Object> {");

for (int i=0; i<NUM_TYPES; i++)
{
String nodeName = "Node" + i;
PrintStream nodePs = new PrintStream(PATH + File.separator + nodeName + ".java");
nodePs.printf("public class %s { }\n", nodeName);
nodePs.close();
interfacePs.printf("void visit(%s node, T obj);%n", nodeName);
abstractClassPs.printf("public void visit(%s node, T obj) { System.out.println(obj.toString()); }%n", nodeName);
}
interfacePs.println("}");
abstractClassPs.println("}");
implementingClassPs.println("}");
interfacePs.close();
abstractClassPs.close();
implementingClassPs.close();
}
}

最佳答案

Sun 已通过电子邮件向我确认这是一个新错误(在他们的错误数据库中为 6827648)。

关于java - 为什么 javac 1.5 与 Eclipse 编译器相比运行速度如此之慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/686545/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com