Esempio n. 1
0
 private static List<File> recursiveGetAllJavaSources(File file, ArrayList<File> list) {
   if (file.isDirectory()) {
     for (File f : file.listFiles(fileFilter)) {
       recursiveGetAllJavaSources(f, list);
     }
   } else {
     list.add(file);
   }
   return list;
 }
Esempio n. 2
0
  @SuppressWarnings({"ConstantConditions"})
  protected void run(String[] args) {
    System.out.println("parboiled Java parser, performance test");
    System.out.println("---------------------------------------");

    System.out.print("Creating parser... :");
    long start = System.currentTimeMillis();
    Parboiled.createParser(JavaParser.class);
    time(start);

    System.out.print("Creating 100 more parser instances... :");
    JavaParser parser = null;
    start = System.currentTimeMillis();
    for (int i = 0; i < 100; i++) {
      parser = Parboiled.createParser(JavaParser.class);
    }
    time(start);

    System.out.print("Creating 100 more parser instances using BaseParser.newInstance() ... :");
    start = System.currentTimeMillis();
    for (int i = 0; i < 100; i++) {
      parser = parser.newInstance();
    }
    time(start);

    start = System.currentTimeMillis();
    File baseDir = args.length == 1 ? new File(args[0]) : null;
    if (baseDir == null || !baseDir.exists()) baseDir = new File(".");
    System.out.printf("Retrieving file list from '%s'", baseDir);
    List<File> sources = recursiveGetAllJavaSources(baseDir, new ArrayList<File>());
    time(start);

    System.out.printf("Parsing all %s given java sources", sources.size());
    Rule rootRule =
        parser.CompilationUnit().suppressNode(); // we want to see the parse-tree-less performance
    start = System.currentTimeMillis();
    long lines = 0, characters = 0;
    for (File sourceFile : sources) {
      long dontCountStart = System.currentTimeMillis();
      String sourceText = readAllText(sourceFile);
      start +=
          System.currentTimeMillis()
              - dontCountStart; // do not count the time for reading the text file

      ParsingResult<?> result = null;
      try {
        result = run(rootRule, sourceText);
      } catch (Exception e) {
        System.out.printf("\nException while parsing file '%s':\n%s", sourceFile, e);
        System.exit(1);
      }
      if (!result.matched) {
        System.out.printf(
            "\nParse error(s) in file '%s':\n%s", sourceFile, printParseErrors(result));
        System.exit(1);
      } else {
        System.out.print('.');
      }
      lines += result.inputBuffer.getLineCount();
      characters += sourceText.length();
    }
    long time = time(start);

    System.out.println("Parsing performance:");
    System.out.printf(
        "    %6d Files -> %6.2f Files/sec\n", sources.size(), sources.size() * 1000.0 / time);
    System.out.printf("    %6d Lines -> %6d Lines/sec\n", lines, lines * 1000 / time);
    System.out.printf("    %6d Chars -> %6d Chars/sec\n", characters, characters * 1000 / time);
  }
Esempio n. 3
0
 public boolean accept(File file) {
   return file.isDirectory() || file.getName().endsWith(".java");
 }