01: package comp.jls;
02:
03: import java.io.*;
04:
05: import beaver.Scanner;
06: import beaver.Parser;
07:
08: class Test {
09: public static void main(String[] args) throws Exception {
10: int count = Integer.parseInt(args[0]);
11:
12: char[][] txts = new char[args.length - 1][];
13: for (int i = 1; i < args.length; i++) {
14: String name = args[i];
15: File src = new File(name);
16: txts[i - 1] = new char[(int) src.length()];
17: Reader txt_reader = new FileReader(src);
18: try {
19: txt_reader.read(txts[i - 1]);
20: } finally {
21: txt_reader.close();
22: }
23: }
24:
25: JavaParser parser = new JavaParser();
26: for (int n = 0; n < txts.length; n++) {
27: JavaScanner input = new JavaScanner(new UnicodeEscapes(
28: new CharArrayReader(txts[n])));
29: parse(input, parser);
30: }
31: System.gc();
32:
33: long tt = 0;
34: for (int i = 0; i < count; i++) {
35: long ct = 0;
36: for (int n = 0; n < txts.length; n++) {
37: JavaScanner input = new JavaScanner(new UnicodeEscapes(
38: new CharArrayReader(txts[n])));
39: long dt = parse(input, parser);
40: ct += dt;
41: tt += dt;
42: }
43: //System.out.print((i + 1) + ": " + ct + "ms\t\t\r");
44: System.gc();
45: }
46: System.out.println(txts.length + " files parsed " + count
47: + " times in " + tt + "ms (avg="
48: + (((double) tt) / count) + "ms)");
49: }
50:
51: private static long parse(JavaScanner input, JavaParser parser) {
52: long t0 = System.currentTimeMillis();
53: try {
54: parser.parse(input);
55: } catch (IOException e) {
56: System.err
57: .println("Error reading input: " + e.getMessage());
58: } catch (Parser.Exception e) {
59: System.err.println("Bad expression: " + e.getMessage());
60: }
61: return System.currentTimeMillis() - t0;
62: }
63: }
|