equal
deleted
inserted
replaced
72 |
72 |
73 |
73 |
74 // Test Cases |
74 // Test Cases |
75 |
75 |
76 //evil regular expressions |
76 //evil regular expressions |
77 def EVIL1(n: Int) = SEQ(NTIMES(OPT(CHAR('a')), n), NTIMES(CHAR('a'), n)) |
77 def EVIL1(n: Int) = SEQ(NTIMEemacs re3S(OPT(CHAR('a')), n), NTIMES(CHAR('a'), n)) |
78 val EVIL2 = SEQ(STAR(STAR(CHAR('a'))), CHAR('b')) |
78 val EVIL2 = SEQ(STAR(STAR(CHAR('a'))), CHAR('b')) |
79 |
79 |
80 |
80 |
81 def time_needed[T](i: Int, code: => T) = { |
81 def time_needed[T](i: Int, code: => T) = { |
82 val start = System.nanoTime() |
82 val start = System.nanoTime() |
85 (end - start)/(i * 1.0e9) |
85 (end - start)/(i * 1.0e9) |
86 } |
86 } |
87 |
87 |
88 |
88 |
89 //test: (a?{n}) (a{n}) |
89 //test: (a?{n}) (a{n}) |
90 for (i <- 1 to 11001 by 1000) { |
90 for (i <- 1 to 8001 by 1000) { |
91 println(i + " " + "%.5f".format(time_needed(2, matcher(EVIL1(i), "a" * i)))) |
91 println(i + " " + "%.5f".format(time_needed(2, matcher(EVIL1(i), "a" * i)))) |
92 } |
92 } |
93 |
93 |
94 for (i <- 1 to 11001 by 1000) { |
94 for (i <- 1 to 8001 by 1000) { |
95 println(i + " " + "%.5f".format(time_needed(2, matcher(EVIL1(i), "a" * i)))) |
95 println(i + " " + "%.5f".format(time_needed(2, matcher(EVIL1(i), "a" * i)))) |
96 } |
96 } |
97 |
97 |
98 //test: (a*)* b |
98 //test: (a*)* b |
99 for (i <- 1 to 6000001 by 500000) { |
99 for (i <- 1 to 6000001 by 500000) { |