From 2eb6cb3a86eb31082c7ebb8e2ca62b065e71af10 Mon Sep 17 00:00:00 2001 From: wenshao Date: Sat, 21 May 2011 14:47:41 +0000 Subject: [PATCH] git-svn-id: http://code.alibabatech.com/svn/druid/trunk@188 b9813039-fb51-4c41-a8b9-e21c2acb5095 --- .../alibaba/druid/sql/parser/PerfTest.java | 37 ++++++++++++++++--- 1 file changed, 31 insertions(+), 6 deletions(-) diff --git a/src/test/java/com/alibaba/druid/sql/parser/PerfTest.java b/src/test/java/com/alibaba/druid/sql/parser/PerfTest.java index 9c7736b1d7..73a4c16604 100644 --- a/src/test/java/com/alibaba/druid/sql/parser/PerfTest.java +++ b/src/test/java/com/alibaba/druid/sql/parser/PerfTest.java @@ -8,6 +8,8 @@ import java.util.List; import junit.framework.TestCase; import com.alibaba.druid.sql.ast.SQLStatement; +import com.alibaba.druid.sql.dialect.mysql.parser.MySqlStatementParser; +import com.alibaba.druid.sql.dialect.mysql.visitor.MySqlOutputVisitor; import com.alibaba.druid.sql.dialect.oracle.ast.visitor.OracleOutputVisitor; import com.alibaba.druid.sql.dialect.oracle.parser.OracleStatementParser; import com.alibaba.druid.util.JdbcUtils; @@ -17,8 +19,9 @@ public class PerfTest extends TestCase { public void test_perf() throws Exception { for (int i = 0; i < 10; ++i) { // perf("SELECT * FROM my_table WHERE TRUNC(SYSDATE) = DATE '2002-10-03';"); - //perf("SELECT * FROM T"); - perf(loadSql("bvt/parser/oracle-23.txt")); + perfOracle("SELECT * FROM T"); + perfMySql("SELECT * FROM T"); + //perf(loadSql("bvt/parser/oracle-23.txt")); } } @@ -33,16 +36,25 @@ public class PerfTest extends TestCase { return sql; } - void perf(String sql) { + void perfOracle(String sql) { long startMillis = System.currentTimeMillis(); for (int i = 0; i < 1000 * 1000; ++i) { - exec(sql); + execOracle(sql); } long millis = System.currentTimeMillis() - startMillis; - System.out.println(millis); + System.out.println("Oracle\t" + millis); + } + + void perfMySql(String sql) { + long startMillis = System.currentTimeMillis(); + for (int i = 0; i < 1000 * 1000; ++i) { + execMySql(sql); + } + long millis = System.currentTimeMillis() - startMillis; + System.out.println("MySql\t" + millis); } - private String exec(String sql) { + private String execOracle(String sql) { StringBuilder out = new StringBuilder(); OracleOutputVisitor visitor = new OracleOutputVisitor(out); @@ -56,4 +68,17 @@ public class PerfTest extends TestCase { return out.toString(); } + private String execMySql(String sql) { + StringBuilder out = new StringBuilder(); + MySqlOutputVisitor visitor = new MySqlOutputVisitor(out); + + MySqlStatementParser parser = new MySqlStatementParser(sql); + List statementList = parser.parseStatementList(); + for (SQLStatement statement : statementList) { + statement.accept(visitor); + visitor.println(); + } + + return out.toString(); + } }