私は約800のソースファイル(javacc/JTBによって生成されたもの)を持つJava Mavenプロジェクトを持っています。これはjavacでコンパイルするのに25分ほどかかるものです。javac 1.5の実行速度がEclipseコンパイラと比べて遅いのはなぜですか?
Eclipseコンパイラを使用するようにpom.xmlを変更したとき、コンパイルに約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();
}
}
SSCCE(http://sscce.org/)の作成を試み、Sun(http://bugs.sun.com/)にバグレポートを提出してください。特に、あなたはすでに問題をかなり特殊なケースに減らしているからです。 –
あなたはどのOSを使用していますか?それは私にとって高速です... OS Xで – TofuBeer
これはWindows XPとWindows Server 2003にあります –