blob: 400c2b9028c009a4c1ee82a01029dc08efbe714d [file] [log] [blame]
// SPDX-License-Identifier: LGPL-2.1-or-later
// Copyright (c) 2012-2014 Monty Program Ab
// Copyright (c) 2015-2021 MariaDB Corporation Ab
package org.mariadb.jdbc;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import org.openjdk.jmh.annotations.Benchmark;
public class Insert_batch extends Common {
static final List<String> chars = new ArrayList<>();
static {
chars.addAll(Arrays.asList("123456789abcdefghijklmnop\\Z".split("")));
chars.add("😎");
chars.add("🌶");
chars.add("🎤");
chars.add("🥂");
}
public static String randomString(int length) {
StringBuilder result = new StringBuilder();
for (int i = length; i > 0; --i)
result.append(chars.get(Math.round((int) Math.random() * (chars.size() - 1))));
return result.toString();
}
@Benchmark
public int[] binary(MyState state) throws Throwable {
return run(state.connectionBinary);
}
@Benchmark
public int[] rewrite(MyState state) throws Throwable {
return run(state.connectionTextRewrite);
}
private int[] run(Connection con) throws Throwable {
String s = randomString(100);
try (PreparedStatement prep =
con.prepareStatement("INSERT INTO perfTestTextBatch(t0) VALUES (?)")) {
for (int i = 0; i < 100; i++) {
prep.setString(1, s);
prep.addBatch();
}
return prep.executeBatch();
}
}
}