git-svn-id: http://code.alibabatech.com/svn/druid/trunk@188 b9813039-fb51-4c41-a8b9-e21c2acb5095

This commit is contained in:
wenshao
2011-05-21 14:47:41 +00:00
parent 99bc05e243
commit 2eb6cb3a86
@@ -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<SQLStatement> statementList = parser.parseStatementList();
for (SQLStatement statement : statementList) {
statement.accept(visitor);
visitor.println();
}
return out.toString();
}
}