| // 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(); |
| } |
| } |
| } |