mirror of
https://github.com/alibaba/druid.git
synced 2023-03-04 19:17:16 +00:00
improved sql parser performance.
This commit is contained in:
@@ -2,6 +2,10 @@ package com.alibaba.druid.benckmark.sql;
|
||||
|
||||
import com.alibaba.druid.sql.SQLUtils;
|
||||
import com.alibaba.druid.sql.ast.SQLStatement;
|
||||
import com.alibaba.druid.sql.parser.SQLParserFeature;
|
||||
import com.alibaba.druid.sql.parser.SQLParserUtils;
|
||||
import com.alibaba.druid.sql.parser.SQLStatementParser;
|
||||
import com.alibaba.druid.sql.visitor.VisitorFeature;
|
||||
import com.alibaba.druid.util.JdbcConstants;
|
||||
import junit.framework.TestCase;
|
||||
|
||||
@@ -16,15 +20,17 @@ public class MySqlInsertBenchmark_2 extends TestCase {
|
||||
List<SQLStatement> stmtList;
|
||||
|
||||
protected void setUp() throws Exception {
|
||||
stmtList = SQLUtils.parseStatements(sql, JdbcConstants.MYSQL);
|
||||
|
||||
SQLStatementParser parser = SQLParserUtils.createSQLStatementParser(sql, JdbcConstants.MYSQL);
|
||||
parser.config(SQLParserFeature.KeepInsertValueClauseOriginalString, true);
|
||||
stmtList = parser.parseStatementList();
|
||||
}
|
||||
|
||||
public void test_perf() throws Exception {
|
||||
System.out.println(sql);
|
||||
for (int i = 0; i < 5; ++i) {
|
||||
perf(); // 5043
|
||||
// perf(); // 5043
|
||||
// perf_toString(); // 2101
|
||||
perf_toString_featured();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -32,6 +38,7 @@ public class MySqlInsertBenchmark_2 extends TestCase {
|
||||
long startMillis = System.currentTimeMillis();
|
||||
for (int i = 0; i < 1000 * 1000; ++i) {
|
||||
|
||||
|
||||
List<SQLStatement> stmt = SQLUtils.parseStatements(sql, JdbcConstants.MYSQL);
|
||||
// stmt.toString();
|
||||
}
|
||||
@@ -39,6 +46,19 @@ public class MySqlInsertBenchmark_2 extends TestCase {
|
||||
System.out.println("millis : " + millis);
|
||||
}
|
||||
|
||||
public void perf_keepInsertValueClauseStrinng() {
|
||||
long startMillis = System.currentTimeMillis();
|
||||
for (int i = 0; i < 1000 * 1000; ++i) {
|
||||
|
||||
SQLStatementParser parser = SQLParserUtils.createSQLStatementParser(sql, JdbcConstants.MYSQL);
|
||||
parser.config(SQLParserFeature.KeepInsertValueClauseOriginalString, true);
|
||||
List<SQLStatement> stmtList = parser.parseStatementList();
|
||||
// stmt.toString();
|
||||
}
|
||||
long millis = System.currentTimeMillis() - startMillis;
|
||||
System.out.println("millis : " + millis);
|
||||
}
|
||||
|
||||
public void perf_toString() {
|
||||
long startMillis = System.currentTimeMillis();
|
||||
for (int i = 0; i < 1000 * 1000; ++i) {
|
||||
@@ -47,4 +67,13 @@ public class MySqlInsertBenchmark_2 extends TestCase {
|
||||
long millis = System.currentTimeMillis() - startMillis;
|
||||
System.out.println("millis : " + millis);
|
||||
}
|
||||
|
||||
public void perf_toString_featured() {
|
||||
long startMillis = System.currentTimeMillis();
|
||||
for (int i = 0; i < 1000 * 1000; ++i) {
|
||||
SQLUtils.toMySqlString(stmtList.get(0), VisitorFeature.OutputUseInsertValueClauseOriginalString);
|
||||
}
|
||||
long millis = System.currentTimeMillis() - startMillis;
|
||||
System.out.println("millis : " + millis);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user