mirror of
https://github.com/alibaba/druid.git
synced 2023-03-04 19:17:16 +00:00
add benchmark test
This commit is contained in:
@@ -0,0 +1,70 @@
|
||||
/*
|
||||
* Copyright 1999-2011 Alibaba Group Holding Ltd.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.alibaba.druid.benckmark.sql;
|
||||
|
||||
import java.lang.management.ManagementFactory;
|
||||
import java.util.List;
|
||||
|
||||
import com.alibaba.druid.sql.ast.SQLStatement;
|
||||
import com.alibaba.druid.sql.dialect.mysql.parser.MySqlStatementParser;
|
||||
import com.alibaba.druid.sql.dialect.mysql.visitor.MySqlASTVisitor;
|
||||
import com.alibaba.druid.sql.dialect.mysql.visitor.MySqlSchemaStatVisitor;
|
||||
import com.alibaba.druid.sql.test.TestUtils;
|
||||
|
||||
public class MySqlPerfMain_visitor {
|
||||
|
||||
public static void main(String[] args) throws Exception {
|
||||
System.out.println(System.getProperty("java.vm.name") + " " + System.getProperty("java.runtime.version"));
|
||||
List<String> arguments = ManagementFactory.getRuntimeMXBean().getInputArguments();
|
||||
System.out.println(arguments);
|
||||
|
||||
String sql = "SELECT ID, NAME, AGE FROM USER WHERE ID = ?";
|
||||
|
||||
for (int i = 0; i < 10; ++i) {
|
||||
perfMySql(sql);
|
||||
}
|
||||
}
|
||||
|
||||
static long perfMySql(String sql) {
|
||||
long startYGC = TestUtils.getYoungGC();
|
||||
long startYGCTime = TestUtils.getYoungGCTime();
|
||||
long startFGC = TestUtils.getFullGC();
|
||||
|
||||
MySqlStatementParser parser = new MySqlStatementParser(sql);
|
||||
List<SQLStatement> statementList = parser.parseStatementList();
|
||||
|
||||
long startMillis = System.currentTimeMillis();
|
||||
for (int i = 0; i < 1000 * 100 * 1; ++i) {
|
||||
execMySql(statementList);
|
||||
}
|
||||
long millis = System.currentTimeMillis() - startMillis;
|
||||
|
||||
long ygc = TestUtils.getYoungGC() - startYGC;
|
||||
long ygct = TestUtils.getYoungGCTime() - startYGCTime;
|
||||
long fgc = TestUtils.getFullGC() - startFGC;
|
||||
|
||||
System.out.println("MySql\t" + millis + ", ygc " + ygc + ", ygct " + ygct + ", fgc " + fgc);
|
||||
return millis;
|
||||
}
|
||||
|
||||
static void execMySql(List<SQLStatement> statementList) {
|
||||
MySqlASTVisitor visitor = new MySqlSchemaStatVisitor();
|
||||
|
||||
for (SQLStatement statement : statementList) {
|
||||
statement.accept(visitor);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user