Skip to content

Commit 54ac944

Browse files
author
diego Dupin
committed
[misc] benchmark stable multi columns results
1 parent 59ee090 commit 54ac944

File tree

4 files changed

+67
-30
lines changed

4 files changed

+67
-30
lines changed

pom.xml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,10 @@
2020
<osgi.version>6.0.0</osgi.version>
2121
<osgi.compendium.version>5.0.0</osgi.compendium.version>
2222
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
23-
<logback.version>1.3.0-alpha5</logback.version>
23+
<logback.version>1.3.0-alpha10</logback.version>
2424
<jacoco.version>0.8.5</jacoco.version>
2525
<waffle-jna.version>3.0.0</waffle-jna.version>
26-
<mysql-connector-java.version>8.0.26</mysql-connector-java.version>
26+
<mysql-connector-java.version>8.0.27</mysql-connector-java.version><!--5.1.49-->
2727
</properties>
2828

2929
<licenses>
@@ -302,14 +302,14 @@
302302
<dependency>
303303
<groupId>org.slf4j</groupId>
304304
<artifactId>slf4j-api</artifactId>
305-
<version>2.0.0-alpha4</version>
305+
<version>2.0.0-alpha5</version>
306306
<optional>true</optional>
307307
</dependency>
308308

309309
<dependency>
310310
<groupId>ch.qos.logback</groupId>
311311
<artifactId>logback-classic</artifactId>
312-
<version>1.3.0-alpha10</version>
312+
<version>${logback.version}</version>
313313
<scope>test</scope>
314314
</dependency>
315315

src/benchmark/README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,13 @@
88

99
How to run :
1010
```script
11-
mvn clean package -P bench -Dmaven.test.skip
11+
mvn clean package -P bench -DskipTests
1212
1313
# run all benchmarks
1414
java -Duser.country=US -Duser.language=en -jar target/benchmarks.jar
1515
1616
# run a specific benchmark
17-
java -Duser.country=US -Duser.language=en -jar target/benchmarks.jar "Select_1_user"
17+
java -Duser.country=US -Duser.language=en -jar target/benchmarks.jar "Select_100_cols"
1818
```
1919

2020
Configuration by system properties :

src/benchmark/java/org/mariadb/jdbc/Common.java

Lines changed: 47 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,9 @@
77
import org.openjdk.jmh.annotations.*;
88

99
import java.sql.Connection;
10+
import java.sql.DriverManager;
1011
import java.sql.SQLException;
12+
import java.sql.Statement;
1113
import java.util.Properties;
1214
import java.util.concurrent.TimeUnit;
1315

@@ -20,15 +22,20 @@
2022
@OutputTimeUnit(TimeUnit.SECONDS)
2123
public class Common {
2224

25+
// conf
26+
public final static String host = System.getProperty("TEST_HOST", "localhost");
27+
public final static int port = Integer.parseInt(System.getProperty("TEST_PORT", "3306"));
28+
public final static String username = System.getProperty("TEST_USERNAME", "root");
29+
public final static String password = System.getProperty("TEST_PASSWORD", "");
30+
public final static String database = System.getProperty("TEST_DATABASE", "testj");
31+
public final static String other = System.getProperty("TEST_OTHER", "");
32+
static {
33+
new SetupData();
34+
}
35+
2336
@State(Scope.Thread)
2437
public static class MyState {
2538

26-
// conf
27-
public final String host = System.getProperty("TEST_HOST", "localhost");
28-
public final int port = Integer.parseInt(System.getProperty("TEST_PORT", "3306"));
29-
public final String username = System.getProperty("TEST_USERNAME", "root");
30-
public final String password = System.getProperty("TEST_PASSWORD", "");
31-
public final String database = System.getProperty("TEST_DATABASE", "testj");
3239
// connections
3340
protected Connection connectionText;
3441
protected Connection connectionBinary;
@@ -37,7 +44,7 @@ public static class MyState {
3744
String driver;
3845

3946
@Setup(Level.Trial)
40-
public void doSetup() throws Exception {
47+
public void createConnections() throws Exception {
4148

4249
String className;
4350
switch (driver) {
@@ -51,21 +58,21 @@ public void doSetup() throws Exception {
5158
throw new RuntimeException("wrong param");
5259
}
5360
try {
54-
String jdbcBase = "%s:%s/%s?user=%s&password=%s&sslMode=DISABLED&useServerPrepStmts=%s&cachePrepStmts=%s&serverTimezone=UTC";
61+
String jdbcBase = "jdbc:%s://%s:%s/%s?user=%s&password=%s&sslMode=DISABLED&useServerPrepStmts=%s&cachePrepStmts=%s&serverTimezone=UTC&%s";
5562
String jdbcUrlText =
5663
String.format(
5764
jdbcBase,
58-
host, port, database, username, password, false, false);
65+
driver, host, port, database, username, password, false, false, other);
5966
String jdbcUrlBinary =
6067
String.format(
6168
jdbcBase,
62-
host, port, database, username, password, true, true);
69+
driver, host, port, database, username, password, true, true, other);
6370
connectionText =
6471
((java.sql.Driver) Class.forName(className).getDeclaredConstructor().newInstance())
65-
.connect("jdbc:" + driver + "://" + jdbcUrlText, new Properties());
72+
.connect(jdbcUrlText, new Properties());
6673
connectionBinary =
6774
((java.sql.Driver) Class.forName(className).getDeclaredConstructor().newInstance())
68-
.connect("jdbc:" + driver + "://" + jdbcUrlBinary, new Properties());
75+
.connect(jdbcUrlBinary, new Properties());
6976
} catch (SQLException e) {
7077
e.printStackTrace();
7178
throw new RuntimeException(e);
@@ -78,4 +85,32 @@ public void doTearDown() throws SQLException {
7885
connectionBinary.close();
7986
}
8087
}
88+
89+
public static class SetupData {
90+
static {
91+
try {
92+
try (Connection conn =
93+
DriverManager.getConnection(
94+
String.format(
95+
"jdbc:mariadb://%s:%s/%s?user=%s&password=%s",
96+
host, port, database, username, password))) {
97+
Statement stmt = conn.createStatement();
98+
stmt.executeUpdate("DROP TABLE IF EXISTS test100");
99+
StringBuilder sb = new StringBuilder("CREATE TABLE test100 (i1 int");
100+
StringBuilder sb2 = new StringBuilder("INSERT INTO test100 value (1");
101+
for (int i = 2; i <= 100; i++) {
102+
sb.append(",i").append(i).append(" int");
103+
sb2.append(",").append(i);
104+
}
105+
sb.append(")");
106+
sb2.append(")");
107+
stmt.executeUpdate(sb.toString());
108+
stmt.executeUpdate(sb2.toString());
109+
}
110+
} catch (SQLException e) {
111+
e.printStackTrace();
112+
}
113+
}
114+
}
115+
81116
}

src/benchmark/java/org/mariadb/jdbc/Select_1_user.java renamed to src/benchmark/java/org/mariadb/jdbc/Select_100_cols.java

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -5,34 +5,36 @@
55
package org.mariadb.jdbc;
66

77
import org.openjdk.jmh.annotations.Benchmark;
8+
import org.openjdk.jmh.annotations.Scope;
9+
import org.openjdk.jmh.annotations.State;
810

11+
import java.sql.*;
912
import java.sql.Connection;
10-
import java.sql.PreparedStatement;
11-
import java.sql.ResultSet;
13+
import java.sql.Statement;
1214

13-
public class Select_1_user extends Common {
15+
public class Select_100_cols extends Common {
1416

1517
@Benchmark
16-
public Object[] text(MyState state) throws Throwable {
18+
public int[] text(MyState state) throws Throwable {
1719
return run(state.connectionText);
1820
}
1921

20-
2122
@Benchmark
22-
public Object[] binary(MyState state) throws Throwable {
23+
public int[] binary(MyState state) throws Throwable {
2324
return run(state.connectionBinary);
2425
}
2526

26-
private Object[] run(Connection con) throws Throwable {
27-
final int numberOfUserCol = 46;
28-
try (PreparedStatement prep = con.prepareStatement("select * FROM mysql.user LIMIT 1")) {
27+
private int[] run(Connection con) throws Throwable {
28+
29+
try (PreparedStatement prep = con.prepareStatement("select * FROM test100")) {
2930
ResultSet rs = prep.executeQuery();
3031
rs.next();
31-
Object[] objs = new Object[numberOfUserCol];
32-
for (int i = 0; i < numberOfUserCol; i++) {
33-
objs[i] = rs.getObject(i + 1);
32+
int[] objs = new int[100];
33+
for (int i = 0; i < 100; i++) {
34+
objs[i] = rs.getInt(i + 1);
3435
}
3536
return objs;
3637
}
3738
}
39+
3840
}

0 commit comments

Comments
 (0)