在编写EJB-QL的解析器的时候偶然发现的。
假设要解析的EJB-QL的值为:
SELECT OBJECT(al) FROM AppLibraryConfig al WHERE al.id=?1 AND al.status=true
下面看看不同的表达式Pattern所需要的执行时间,解析的伪代码为:
long start=System.currentTimeMillis();
Pattern pattern = Pattern.compile(getPatternText(), Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(query);
if (matcher.matches()) {
int groupCount = matcher.groupCount();
for (int i = 0; i <= groupCount; i++)
{
System.out.println("Group " + i + " :[" + matcher.group(i) + "]");
}
}
System.out.println(System.currentTimeMillis()-start);
现在看看不同的getPatternText()的值得到的不同结果。
阅读全文