From ee1425a2505508a94ae7955a1151ef53e6db3e91 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Sebastian=20Ho=C3=9F?= Date: Sun, 28 Mar 2021 03:58:01 +0200 Subject: [PATCH] improve benchmarks --- .../yosql-benchmarks-common-scenarios/pom.xml | 199 +- .../yosql/benchmarks/common/AbstractBenchmark.java | 71 - .../src/main/yosql/company/insertCompany.sql | 15 - yosql-benchmarks/yosql-benchmarks-jdbc/pom.xml | 110 +- .../yosql/benchmark/jdbc/AbstractBenchmark.java | 20 +- .../yosql/benchmark/jdbc/JdbcReadBenchmarks.java | 19 - .../yosql/benchmark/jdbc/JdbcSchemaBenchmarks.java | 24 - .../yosql/benchmark/jdbc/JdbcWriteBenchmarks.java | 19 - .../benchmark/jdbc/jul/AbstractJulBenchmark.java | 58 + .../yosql/benchmark/jdbc/jul/JdbcJulRead.java} | 13 +- .../yosql/benchmark/jdbc/jul/JdbcJulWrite.java} | 15 +- .../jdbc/log4j/AbstractLog4jBenchmark.java | 45 + .../yosql/benchmark/jdbc/log4j/JdbcLog4jRead.java} | 13 +- .../benchmark/jdbc/log4j/JdbcLog4jWrite.java} | 8 +- .../benchmark/jdbc/noop/AbstractNoOpBenchmark.java | 45 + .../metio/yosql/benchmark/jdbc/noop}/JdbcRead.java | 13 +- .../yosql/benchmark/jdbc/noop}/JdbcWrite.java | 8 +- .../jdbc/slf4j/AbstractSlf4jBenchmark.java | 45 + .../yosql/benchmark/jdbc/slf4j/JdbcSlf4jRead.java} | 13 +- .../benchmark/jdbc/slf4j/JdbcSlf4jWrite.java} | 8 +- .../src/main/resources/log4j2.xml | 20 + .../src/main/resources/logging.properties | 9 + .../src/main/yosql/company/deleteAllCompanies.sql | 0 .../src/main/yosql/company/findCompanies.sql | 13 +- .../src/main/yosql/company/findCompany.sql | 0 .../main/yosql/company/findCompanyByDepartment.sql | 6 +- .../src/main/yosql/company/findCompanyByName.sql | 16 - .../src/main/yosql/company/insertCompany.sql | 6 +- .../src/main/yosql/company/queryAllCompanies.sql | 12 - .../main/yosql/department/deleteAllDepartments.sql | 0 .../src/main/yosql/department/deleteDepartment.sql | 0 .../yosql/department/findDepartmentsByCompany.sql | 0 .../src/main/yosql/department/insertDepartment.sql | 0 .../src/main/yosql/employee/deleteAllEmployee.sql | 0 .../src/main/yosql/employee/deleteEmployee.sql | 0 .../yosql/employee/findEmployeesWithMinSalary.sql | 0 .../src/main/yosql/employee/insertEmployee.sql | 0 .../src/main/yosql/item/callItem.sql | 12 - .../src/main/yosql/item/findItem.sql | 53 - .../src/main/yosql/person/findPerson.sql | 35 - .../yosql/project/findProjectsWithMinCosts.sql} | 14 +- .../src/main/yosql/project/insertProject.sql | 0 .../projectEmployee/insertProjectEmployee.sql | 0 .../src/main/yosql/user/queryAllUsers.sql | 12 - .../main/yosql/user/queryInAnotherRepository.sql | 15 - .../src/main/yosql/user/querySingleUser.sql | 19 - .../src/main/yosql/user/querySpecialUser.sql | 14 - .../main/yosql/user/queryWithoutFrontMatter.sql | 13 - .../src/main/yosql/user/updateUser.sql | 16 - .../src/main/yosql/user/updateUserStatic.sql | 14 - .../yosql/logging/noop/NoOpLoggingGenerator.java | 2 +- .../2021/yosql-benchmarks-common-scenarios.json | 389 ---- .../benchmarks/2021/yosql-benchmarks-jdbc.json | 1920 +++++++++++++++++++- yosql-website/content/benchmarks/_index.md | 2 +- yosql-website/content/benchmarks/db-access.md | 175 +- yosql-website/content/tooling/maven.md | 2 + 56 files changed, 2423 insertions(+), 1127 deletions(-) rewrite yosql-benchmarks/yosql-benchmarks-common-scenarios/pom.xml (70%) delete mode 100644 yosql-benchmarks/yosql-benchmarks-common-scenarios/src/main/java/wtf/metio/yosql/benchmarks/common/AbstractBenchmark.java delete mode 100644 yosql-benchmarks/yosql-benchmarks-common-scenarios/src/main/yosql/company/insertCompany.sql delete mode 100644 yosql-benchmarks/yosql-benchmarks-jdbc/src/main/java/wtf/metio/yosql/benchmark/jdbc/JdbcReadBenchmarks.java delete mode 100644 yosql-benchmarks/yosql-benchmarks-jdbc/src/main/java/wtf/metio/yosql/benchmark/jdbc/JdbcSchemaBenchmarks.java delete mode 100644 yosql-benchmarks/yosql-benchmarks-jdbc/src/main/java/wtf/metio/yosql/benchmark/jdbc/JdbcWriteBenchmarks.java create mode 100644 yosql-benchmarks/yosql-benchmarks-jdbc/src/main/java/wtf/metio/yosql/benchmark/jdbc/jul/AbstractJulBenchmark.java copy yosql-benchmarks/{yosql-benchmarks-common-scenarios/src/main/java/wtf/metio/yosql/benchmarks/common/jdbc/JdbcRead.java => yosql-benchmarks-jdbc/src/main/java/wtf/metio/yosql/benchmark/jdbc/jul/JdbcJulRead.java} (77%) copy yosql-benchmarks/{yosql-benchmarks-common-scenarios/src/main/java/wtf/metio/yosql/benchmarks/common/jdbc/JdbcWrite.java => yosql-benchmarks-jdbc/src/main/java/wtf/metio/yosql/benchmark/jdbc/jul/JdbcJulWrite.java} (73%) create mode 100644 yosql-benchmarks/yosql-benchmarks-jdbc/src/main/java/wtf/metio/yosql/benchmark/jdbc/log4j/AbstractLog4jBenchmark.java copy yosql-benchmarks/{yosql-benchmarks-common-scenarios/src/main/java/wtf/metio/yosql/benchmarks/common/jdbc/JdbcRead.java => yosql-benchmarks-jdbc/src/main/java/wtf/metio/yosql/benchmark/jdbc/log4j/JdbcLog4jRead.java} (78%) copy yosql-benchmarks/{yosql-benchmarks-common-scenarios/src/main/java/wtf/metio/yosql/benchmarks/common/jdbc/JdbcWrite.java => yosql-benchmarks-jdbc/src/main/java/wtf/metio/yosql/benchmark/jdbc/log4j/JdbcLog4jWrite.java} (85%) create mode 100644 yosql-benchmarks/yosql-benchmarks-jdbc/src/main/java/wtf/metio/yosql/benchmark/jdbc/noop/AbstractNoOpBenchmark.java copy yosql-benchmarks/{yosql-benchmarks-common-scenarios/src/main/java/wtf/metio/yosql/benchmarks/common/jdbc => yosql-benchmarks-jdbc/src/main/java/wtf/metio/yosql/benchmark/jdbc/noop}/JdbcRead.java (77%) copy yosql-benchmarks/{yosql-benchmarks-common-scenarios/src/main/java/wtf/metio/yosql/benchmarks/common/jdbc => yosql-benchmarks-jdbc/src/main/java/wtf/metio/yosql/benchmark/jdbc/noop}/JdbcWrite.java (85%) create mode 100644 yosql-benchmarks/yosql-benchmarks-jdbc/src/main/java/wtf/metio/yosql/benchmark/jdbc/slf4j/AbstractSlf4jBenchmark.java rename yosql-benchmarks/{yosql-benchmarks-common-scenarios/src/main/java/wtf/metio/yosql/benchmarks/common/jdbc/JdbcRead.java => yosql-benchmarks-jdbc/src/main/java/wtf/metio/yosql/benchmark/jdbc/slf4j/JdbcSlf4jRead.java} (78%) rename yosql-benchmarks/{yosql-benchmarks-common-scenarios/src/main/java/wtf/metio/yosql/benchmarks/common/jdbc/JdbcWrite.java => yosql-benchmarks-jdbc/src/main/java/wtf/metio/yosql/benchmark/jdbc/slf4j/JdbcSlf4jWrite.java} (85%) create mode 100644 yosql-benchmarks/yosql-benchmarks-jdbc/src/main/resources/log4j2.xml create mode 100644 yosql-benchmarks/yosql-benchmarks-jdbc/src/main/resources/logging.properties rename yosql-benchmarks/{yosql-benchmarks-common-scenarios => yosql-benchmarks-jdbc}/src/main/yosql/company/deleteAllCompanies.sql (100%) rename yosql-benchmarks/{yosql-benchmarks-common-scenarios => yosql-benchmarks-jdbc}/src/main/yosql/company/findCompany.sql (100%) rename yosql-benchmarks/{yosql-benchmarks-common-scenarios => yosql-benchmarks-jdbc}/src/main/yosql/company/findCompanyByDepartment.sql (81%) delete mode 100644 yosql-benchmarks/yosql-benchmarks-jdbc/src/main/yosql/company/findCompanyByName.sql delete mode 100644 yosql-benchmarks/yosql-benchmarks-jdbc/src/main/yosql/company/queryAllCompanies.sql rename yosql-benchmarks/{yosql-benchmarks-common-scenarios => yosql-benchmarks-jdbc}/src/main/yosql/department/deleteAllDepartments.sql (100%) copy yosql-benchmarks/{yosql-benchmarks-common-scenarios => yosql-benchmarks-jdbc}/src/main/yosql/department/deleteDepartment.sql (100%) rename yosql-benchmarks/{yosql-benchmarks-common-scenarios => yosql-benchmarks-jdbc}/src/main/yosql/department/findDepartmentsByCompany.sql (100%) rename yosql-benchmarks/{yosql-benchmarks-common-scenarios => yosql-benchmarks-jdbc}/src/main/yosql/department/insertDepartment.sql (100%) rename yosql-benchmarks/{yosql-benchmarks-common-scenarios => yosql-benchmarks-jdbc}/src/main/yosql/employee/deleteAllEmployee.sql (100%) rename yosql-benchmarks/{yosql-benchmarks-common-scenarios => yosql-benchmarks-jdbc}/src/main/yosql/employee/deleteEmployee.sql (100%) rename yosql-benchmarks/{yosql-benchmarks-common-scenarios => yosql-benchmarks-jdbc}/src/main/yosql/employee/findEmployeesWithMinSalary.sql (100%) rename yosql-benchmarks/{yosql-benchmarks-common-scenarios => yosql-benchmarks-jdbc}/src/main/yosql/employee/insertEmployee.sql (100%) delete mode 100644 yosql-benchmarks/yosql-benchmarks-jdbc/src/main/yosql/item/callItem.sql delete mode 100644 yosql-benchmarks/yosql-benchmarks-jdbc/src/main/yosql/item/findItem.sql delete mode 100644 yosql-benchmarks/yosql-benchmarks-jdbc/src/main/yosql/person/findPerson.sql rename yosql-benchmarks/{yosql-benchmarks-common-scenarios/src/main/yosql/department/deleteDepartment.sql => yosql-benchmarks-jdbc/src/main/yosql/project/findProjectsWithMinCosts.sql} (54%) rename yosql-benchmarks/{yosql-benchmarks-common-scenarios => yosql-benchmarks-jdbc}/src/main/yosql/project/insertProject.sql (100%) rename yosql-benchmarks/{yosql-benchmarks-common-scenarios => yosql-benchmarks-jdbc}/src/main/yosql/projectEmployee/insertProjectEmployee.sql (100%) delete mode 100644 yosql-benchmarks/yosql-benchmarks-jdbc/src/main/yosql/user/queryAllUsers.sql delete mode 100644 yosql-benchmarks/yosql-benchmarks-jdbc/src/main/yosql/user/queryInAnotherRepository.sql delete mode 100644 yosql-benchmarks/yosql-benchmarks-jdbc/src/main/yosql/user/querySingleUser.sql delete mode 100644 yosql-benchmarks/yosql-benchmarks-jdbc/src/main/yosql/user/querySpecialUser.sql delete mode 100644 yosql-benchmarks/yosql-benchmarks-jdbc/src/main/yosql/user/queryWithoutFrontMatter.sql delete mode 100644 yosql-benchmarks/yosql-benchmarks-jdbc/src/main/yosql/user/updateUser.sql delete mode 100644 yosql-benchmarks/yosql-benchmarks-jdbc/src/main/yosql/user/updateUserStatic.sql delete mode 100644 yosql-website/content/benchmarks/2021/yosql-benchmarks-common-scenarios.json diff --git a/yosql-benchmarks/yosql-benchmarks-common-scenarios/pom.xml b/yosql-benchmarks/yosql-benchmarks-common-scenarios/pom.xml dissimilarity index 70% index ac085680..e4085ec6 100644 --- a/yosql-benchmarks/yosql-benchmarks-common-scenarios/pom.xml +++ b/yosql-benchmarks/yosql-benchmarks-common-scenarios/pom.xml @@ -1,161 +1,38 @@ - - - - 4.0.0 - - - - - - - - - wtf.metio.yosql.benchmarks - yosql-benchmarks - 0.0.0-SNAPSHOT - - - - - - - - yosql-benchmarks-common-scenarios - - - - - - YoSQL :: Benchmarks :: Common Scenarios - - - - - - - - wtf.metio.yosql.testing - yosql-testing-sql-files - ${project.version} - - - org.openjdk.jmh - jmh-core - - - org.openjdk.jmh - jmh-generator-annprocess - provided - - - org.slf4j - slf4j-simple - - - com.zaxxer - HikariCP - - - com.h2database - h2 - - - io.reactivex.rxjava2 - rxjava - 2.2.21 - - - - - - - wtf.metio.yosql.tooling - yosql-tooling-maven - ${project.version} - - - 6 - - - 16 - - - wtf.metio.yosql.benchmark.common.persistence - - - wtf.metio.yosql.benchmark.common.persistence.util - - - - - generate-sources - - generate - - - - - - org.codehaus.mojo - build-helper-maven-plugin - 3.2.0 - - - add-source - generate-sources - - add-source - - - - ${project.build.directory}/generated-sources/yosql - - - - - - - - - - - benchmarks - - - - com.baidu.maven - jmh-maven-plugin - 1.0.3 - - - test - - jmh - - - - - 1 - 1 - 1 - avgt - us - 1s - 1s - json - yosql-benchmarks-common-scenarios.json - - - - - - - - \ No newline at end of file + + + + 4.0.0 + + + + + + + + + wtf.metio.yosql.benchmarks + yosql-benchmarks + 0.0.0-SNAPSHOT + + + + + + + + yosql-benchmarks-common-scenarios + + + + + + YoSQL :: Benchmarks :: Common Scenarios + + \ No newline at end of file diff --git a/yosql-benchmarks/yosql-benchmarks-common-scenarios/src/main/java/wtf/metio/yosql/benchmarks/common/AbstractBenchmark.java b/yosql-benchmarks/yosql-benchmarks-common-scenarios/src/main/java/wtf/metio/yosql/benchmarks/common/AbstractBenchmark.java deleted file mode 100644 index e9bd2ba9..00000000 --- a/yosql-benchmarks/yosql-benchmarks-common-scenarios/src/main/java/wtf/metio/yosql/benchmarks/common/AbstractBenchmark.java +++ /dev/null @@ -1,71 +0,0 @@ -/* - * This file is part of yosql. It is subject to the license terms in the LICENSE file found in the top-level - * directory of this distribution and at http://creativecommons.org/publicdomain/zero/1.0/. No part of yosql, - * including this file, may be copied, modified, propagated, or distributed except according to the terms contained - * in the LICENSE file. - */ -package wtf.metio.yosql.benchmarks.common; - -import com.zaxxer.hikari.HikariDataSource; -import org.openjdk.jmh.annotations.*; -import wtf.metio.yosql.benchmark.common.persistence.*; -import wtf.metio.yosql.testing.schema.SchemaRepository; - -import java.io.IOException; -import java.time.Instant; - -/** - * Encapsulates common benchmark functionality. - */ -@State(Scope.Benchmark) -public abstract class AbstractBenchmark { - - protected HikariDataSource dataSource; - protected SchemaRepository schemaRepository; - protected CompanyRepository companyRepository; - protected DepartmentRepository departmentRepository; - protected EmployeeRepository employeeRepository; - protected ProjectRepository projectRepository; - protected ProjectEmployeeRepository projectEmployeeRepository; - - @Setup(Level.Trial) - public void setup() throws IOException { - dataSource = new HikariDataSource(); - dataSource.setJdbcUrl("jdbc:h2:mem:benchmarks-common;DB_CLOSE_DELAY=-1"); - dataSource.setUsername("sa"); - schemaRepository = new SchemaRepository(dataSource); - companyRepository = new CompanyRepository(dataSource); - departmentRepository = new DepartmentRepository(dataSource); - employeeRepository = new EmployeeRepository(dataSource); - projectRepository = new ProjectRepository(dataSource); - projectEmployeeRepository = new ProjectEmployeeRepository(dataSource); - schemaRepository.createCompaniesTable(); - schemaRepository.createProjectsTable(); - schemaRepository.createDepartmentsTable(); - schemaRepository.createEmployeesTable(); - schemaRepository.createProjectEmployeesTable(); - companyRepository.insertCompany("metio.wtf", "www"); - projectRepository.insertProject("YoSQL", Instant.now().toEpochMilli()); - departmentRepository.insertDepartment(1L, "engineering"); - employeeRepository.insertEmployee(1L, - "Sebastian", "Hoß", "seb@hoß.de", 0L); - employeeRepository.insertEmployee(1L, - "bob", "developer", "bob@example.com", 1000L); - projectEmployeeRepository.insertProjectEmployee(1L, 2L); - } - - @TearDown(Level.Trial) - public void tearDown() throws IOException { - if (dataSource != null) { - dataSource.close(); - dataSource = null; - } - schemaRepository = null; - companyRepository = null; - departmentRepository = null; - employeeRepository = null; - projectRepository = null; - projectEmployeeRepository = null; - } - -} diff --git a/yosql-benchmarks/yosql-benchmarks-common-scenarios/src/main/yosql/company/insertCompany.sql b/yosql-benchmarks/yosql-benchmarks-common-scenarios/src/main/yosql/company/insertCompany.sql deleted file mode 100644 index 28fb70d7..00000000 --- a/yosql-benchmarks/yosql-benchmarks-common-scenarios/src/main/yosql/company/insertCompany.sql +++ /dev/null @@ -1,15 +0,0 @@ -/* - * This file is part of yosql. It is subject to the license terms in the LICENSE file found in the top-level - * directory of this distribution and at http://creativecommons.org/publicdomain/zero/1.0/. No part of yosql, - * including this file, may be copied, modified, propagated, or distributed except according to the terms contained - * in the LICENSE file. - */ - --- parameters: --- - name: name --- type: java.lang.String --- - name: address --- type: java.lang.String -INSERT INTO companies (name, address) -VALUES (:name, :address) -; diff --git a/yosql-benchmarks/yosql-benchmarks-jdbc/pom.xml b/yosql-benchmarks/yosql-benchmarks-jdbc/pom.xml index 0eccbbc3..b67ab999 100644 --- a/yosql-benchmarks/yosql-benchmarks-jdbc/pom.xml +++ b/yosql-benchmarks/yosql-benchmarks-jdbc/pom.xml @@ -46,6 +46,11 @@ ${project.version} + wtf.metio.yosql.benchmarks + yosql-benchmarks-common-scenarios + ${project.version} + + org.openjdk.jmh jmh-core @@ -55,10 +60,6 @@ provided - org.slf4j - slf4j-simple - - com.zaxxer HikariCP @@ -71,6 +72,18 @@ rxjava 2.2.21 + + org.apache.logging.log4j + log4j-api + + + org.apache.logging.log4j + log4j-core + + + ch.qos.logback + logback-classic + @@ -86,19 +99,91 @@ 16 - - wtf.metio.yosql.benchmark.jdbc.persistence - - - wtf.metio.yosql.benchmark.jdbc.persistence.util - + jul + generate-sources + + generate + + + + JUL + + + target/generated-sources/jul + + + wtf.metio.yosql.benchmark.jdbc.jul.persistence + + + wtf.metio.yosql.benchmark.jdbc.jul.persistence.util + + + + + log4j generate-sources generate + + + LOG4J + + + target/generated-sources/log4j + + + wtf.metio.yosql.benchmark.jdbc.log4j.persistence + + + wtf.metio.yosql.benchmark.jdbc.log4j.persistence.util + + + + + noop + generate-sources + + generate + + + + NONE + + + target/generated-sources/noop + + + wtf.metio.yosql.benchmark.jdbc.noop.persistence + + + wtf.metio.yosql.benchmark.jdbc.noop.persistence.util + + + + + slf4j + generate-sources + + generate + + + + SLF4J + + + target/generated-sources/slf4j + + + wtf.metio.yosql.benchmark.jdbc.slf4j.persistence + + + wtf.metio.yosql.benchmark.jdbc.slf4j.persistence.util + + @@ -115,7 +200,10 @@ - ${project.build.directory}/generated-sources/yosql + ${project.build.directory}/generated-sources/jul + ${project.build.directory}/generated-sources/log4j + ${project.build.directory}/generated-sources/noop + ${project.build.directory}/generated-sources/slf4j diff --git a/yosql-benchmarks/yosql-benchmarks-jdbc/src/main/java/wtf/metio/yosql/benchmark/jdbc/AbstractBenchmark.java b/yosql-benchmarks/yosql-benchmarks-jdbc/src/main/java/wtf/metio/yosql/benchmark/jdbc/AbstractBenchmark.java index f0bb65c0..2360277b 100644 --- a/yosql-benchmarks/yosql-benchmarks-jdbc/src/main/java/wtf/metio/yosql/benchmark/jdbc/AbstractBenchmark.java +++ b/yosql-benchmarks/yosql-benchmarks-jdbc/src/main/java/wtf/metio/yosql/benchmark/jdbc/AbstractBenchmark.java @@ -8,49 +8,41 @@ package wtf.metio.yosql.benchmark.jdbc; import com.zaxxer.hikari.HikariDataSource; import org.openjdk.jmh.annotations.*; -import wtf.metio.yosql.benchmark.jdbc.persistence.CompanyRepository; -import wtf.metio.yosql.benchmark.jdbc.persistence.PersonRepository; import wtf.metio.yosql.testing.schema.SchemaRepository; -import java.io.IOException; +import java.time.Instant; /** * Encapsulates common benchmark functionality. */ @State(Scope.Benchmark) -abstract class AbstractBenchmark { +public abstract class AbstractBenchmark { + protected static final long NOW = Instant.now().toEpochMilli(); + protected HikariDataSource dataSource; protected SchemaRepository schemaRepository; - protected CompanyRepository companyRepository; - protected PersonRepository personRepository; @Setup(Level.Trial) - public void setup() throws IOException { + public void setup() { dataSource = new HikariDataSource(); dataSource.setJdbcUrl("jdbc:h2:mem:benchmarks-jdbc;DB_CLOSE_DELAY=-1"); dataSource.setUsername("sa"); schemaRepository = new SchemaRepository(dataSource); - companyRepository = new CompanyRepository(dataSource); - personRepository = new PersonRepository(dataSource); schemaRepository.createCompaniesTable(); schemaRepository.createProjectsTable(); schemaRepository.createDepartmentsTable(); schemaRepository.createEmployeesTable(); schemaRepository.createProjectEmployeesTable(); - companyRepository.insertCompany("metio.wtf"); - companyRepository.insertCompany("test"); } @TearDown(Level.Trial) - public void tearDown() throws IOException { + public void tearDown() { if (dataSource != null) { dataSource.close(); dataSource = null; } schemaRepository = null; - companyRepository = null; - personRepository = null; } } diff --git a/yosql-benchmarks/yosql-benchmarks-jdbc/src/main/java/wtf/metio/yosql/benchmark/jdbc/JdbcReadBenchmarks.java b/yosql-benchmarks/yosql-benchmarks-jdbc/src/main/java/wtf/metio/yosql/benchmark/jdbc/JdbcReadBenchmarks.java deleted file mode 100644 index 7edc91da..00000000 --- a/yosql-benchmarks/yosql-benchmarks-jdbc/src/main/java/wtf/metio/yosql/benchmark/jdbc/JdbcReadBenchmarks.java +++ /dev/null @@ -1,19 +0,0 @@ -/* - * This file is part of yosql. It is subject to the license terms in the LICENSE file found in the top-level - * directory of this distribution and at http://creativecommons.org/publicdomain/zero/1.0/. No part of yosql, - * including this file, may be copied, modified, propagated, or distributed except according to the terms contained - * in the LICENSE file. - */ - -package wtf.metio.yosql.benchmark.jdbc; - -import org.openjdk.jmh.annotations.Benchmark; - -public class JdbcReadBenchmarks extends AbstractBenchmark { - - @Benchmark - public final void benchmarkReadingData() { - companyRepository.findCompanyByName("metio.wtf"); - } - -} diff --git a/yosql-benchmarks/yosql-benchmarks-jdbc/src/main/java/wtf/metio/yosql/benchmark/jdbc/JdbcSchemaBenchmarks.java b/yosql-benchmarks/yosql-benchmarks-jdbc/src/main/java/wtf/metio/yosql/benchmark/jdbc/JdbcSchemaBenchmarks.java deleted file mode 100644 index eb84f8db..00000000 --- a/yosql-benchmarks/yosql-benchmarks-jdbc/src/main/java/wtf/metio/yosql/benchmark/jdbc/JdbcSchemaBenchmarks.java +++ /dev/null @@ -1,24 +0,0 @@ -/* - * This file is part of yosql. It is subject to the license terms in the LICENSE file found in the top-level - * directory of this distribution and at http://creativecommons.org/publicdomain/zero/1.0/. No part of yosql, - * including this file, may be copied, modified, propagated, or distributed except according to the terms contained - * in the LICENSE file. - */ - -package wtf.metio.yosql.benchmark.jdbc; - -import org.openjdk.jmh.annotations.Benchmark; - -public class JdbcSchemaBenchmarks extends AbstractBenchmark { - - @Benchmark - public final void benchmarkSchemaDrop() { - schemaRepository.dropProjectEmployeesTable(); - } - - @Benchmark - public final void benchmarkSchemaCreate() { - schemaRepository.createProjectEmployeesTable(); - } - -} diff --git a/yosql-benchmarks/yosql-benchmarks-jdbc/src/main/java/wtf/metio/yosql/benchmark/jdbc/JdbcWriteBenchmarks.java b/yosql-benchmarks/yosql-benchmarks-jdbc/src/main/java/wtf/metio/yosql/benchmark/jdbc/JdbcWriteBenchmarks.java deleted file mode 100644 index 1a5c5e1e..00000000 --- a/yosql-benchmarks/yosql-benchmarks-jdbc/src/main/java/wtf/metio/yosql/benchmark/jdbc/JdbcWriteBenchmarks.java +++ /dev/null @@ -1,19 +0,0 @@ -/* - * This file is part of yosql. It is subject to the license terms in the LICENSE file found in the top-level - * directory of this distribution and at http://creativecommons.org/publicdomain/zero/1.0/. No part of yosql, - * including this file, may be copied, modified, propagated, or distributed except according to the terms contained - * in the LICENSE file. - */ - -package wtf.metio.yosql.benchmark.jdbc; - -import org.openjdk.jmh.annotations.Benchmark; - -public class JdbcWriteBenchmarks extends AbstractBenchmark { - - @Benchmark - public final void benchmarkWritingData() { - companyRepository.insertCompany("jdbc-write"); - } - -} diff --git a/yosql-benchmarks/yosql-benchmarks-jdbc/src/main/java/wtf/metio/yosql/benchmark/jdbc/jul/AbstractJulBenchmark.java b/yosql-benchmarks/yosql-benchmarks-jdbc/src/main/java/wtf/metio/yosql/benchmark/jdbc/jul/AbstractJulBenchmark.java new file mode 100644 index 00000000..794ae598 --- /dev/null +++ b/yosql-benchmarks/yosql-benchmarks-jdbc/src/main/java/wtf/metio/yosql/benchmark/jdbc/jul/AbstractJulBenchmark.java @@ -0,0 +1,58 @@ +/* + * This file is part of yosql. It is subject to the license terms in the LICENSE file found in the top-level + * directory of this distribution and at http://creativecommons.org/publicdomain/zero/1.0/. No part of yosql, + * including this file, may be copied, modified, propagated, or distributed except according to the terms contained + * in the LICENSE file. + */ + +package wtf.metio.yosql.benchmark.jdbc.jul; + +import org.openjdk.jmh.annotations.Level; +import org.openjdk.jmh.annotations.Setup; +import org.openjdk.jmh.annotations.TearDown; +import wtf.metio.yosql.benchmark.jdbc.AbstractBenchmark; +import wtf.metio.yosql.benchmark.jdbc.jul.persistence.CompanyRepository; +import wtf.metio.yosql.benchmark.jdbc.jul.persistence.DepartmentRepository; +import wtf.metio.yosql.benchmark.jdbc.jul.persistence.EmployeeRepository; +import wtf.metio.yosql.benchmark.jdbc.jul.persistence.ProjectRepository; + +import java.io.IOException; +import java.io.InputStream; +import java.nio.file.Files; +import java.nio.file.Paths; +import java.util.logging.LogManager; + +/** + * Abstract benchmark class for all benchmarks that use the java.util.logging API. + */ +abstract class AbstractJulBenchmark extends AbstractBenchmark { + + protected CompanyRepository companyRepository; + protected DepartmentRepository departmentRepository; + protected EmployeeRepository employeeRepository; + protected ProjectRepository projectRepository; + + @Setup(Level.Trial) + public void createRepositories() { + companyRepository = new CompanyRepository(dataSource); + departmentRepository = new DepartmentRepository(dataSource); + employeeRepository = new EmployeeRepository(dataSource); + projectRepository = new ProjectRepository(dataSource); + } + + @Setup(Level.Trial) + public void setupJUL() throws IOException { + final var classloader = Thread.currentThread().getContextClassLoader(); + final var julProperties = classloader.getResourceAsStream("logging.properties"); + LogManager.getLogManager().readConfiguration(julProperties); + } + + @TearDown(Level.Trial) + public void destroyRepositories() { + companyRepository = null; + departmentRepository = null; + employeeRepository = null; + projectRepository = null; + } + +} diff --git a/yosql-benchmarks/yosql-benchmarks-common-scenarios/src/main/java/wtf/metio/yosql/benchmarks/common/jdbc/JdbcRead.java b/yosql-benchmarks/yosql-benchmarks-jdbc/src/main/java/wtf/metio/yosql/benchmark/jdbc/jul/JdbcJulRead.java similarity index 77% copy from yosql-benchmarks/yosql-benchmarks-common-scenarios/src/main/java/wtf/metio/yosql/benchmarks/common/jdbc/JdbcRead.java copy to yosql-benchmarks/yosql-benchmarks-jdbc/src/main/java/wtf/metio/yosql/benchmark/jdbc/jul/JdbcJulRead.java index 63e58f7f..a00f6a3b 100644 --- a/yosql-benchmarks/yosql-benchmarks-common-scenarios/src/main/java/wtf/metio/yosql/benchmarks/common/jdbc/JdbcRead.java +++ b/yosql-benchmarks/yosql-benchmarks-jdbc/src/main/java/wtf/metio/yosql/benchmark/jdbc/jul/JdbcJulRead.java @@ -5,16 +5,15 @@ * in the LICENSE file. */ -package wtf.metio.yosql.benchmarks.common.jdbc; +package wtf.metio.yosql.benchmark.jdbc.jul; import org.openjdk.jmh.annotations.Benchmark; -import wtf.metio.yosql.benchmarks.common.AbstractBenchmark; import wtf.metio.yosql.benchmarks.common.Read; /** - * The JDBI implementation of the {@link Read} benchmarks. + * The JDBI implementation of the {@link Read} benchmarks using java.util.logging. */ -public class JdbcRead extends AbstractBenchmark implements Read { +public class JdbcJulRead extends AbstractJulBenchmark implements Read { @Override @Benchmark @@ -35,13 +34,15 @@ public class JdbcRead extends AbstractBenchmark implements Read { } @Override + @Benchmark public void readMultipleEntities() { - // TODO: implement benchmark + companyRepository.findCompanies(); } @Override + @Benchmark public void readComplexRelationship() { - // TODO: implement benchmark + projectRepository.findProjectsWithMinCosts(250); } @Override diff --git a/yosql-benchmarks/yosql-benchmarks-common-scenarios/src/main/java/wtf/metio/yosql/benchmarks/common/jdbc/JdbcWrite.java b/yosql-benchmarks/yosql-benchmarks-jdbc/src/main/java/wtf/metio/yosql/benchmark/jdbc/jul/JdbcJulWrite.java similarity index 73% copy from yosql-benchmarks/yosql-benchmarks-common-scenarios/src/main/java/wtf/metio/yosql/benchmarks/common/jdbc/JdbcWrite.java copy to yosql-benchmarks/yosql-benchmarks-jdbc/src/main/java/wtf/metio/yosql/benchmark/jdbc/jul/JdbcJulWrite.java index 2a5ea824..5d905628 100644 --- a/yosql-benchmarks/yosql-benchmarks-common-scenarios/src/main/java/wtf/metio/yosql/benchmarks/common/jdbc/JdbcWrite.java +++ b/yosql-benchmarks/yosql-benchmarks-jdbc/src/main/java/wtf/metio/yosql/benchmark/jdbc/jul/JdbcJulWrite.java @@ -5,27 +5,26 @@ * in the LICENSE file. */ -package wtf.metio.yosql.benchmarks.common.jdbc; +package wtf.metio.yosql.benchmark.jdbc.jul; import org.openjdk.jmh.annotations.Benchmark; -import wtf.metio.yosql.benchmarks.common.AbstractBenchmark; import wtf.metio.yosql.benchmarks.common.Write; -import java.time.Instant; - -public class JdbcWrite extends AbstractBenchmark implements Write { +/** + * The JDBI implementation of the {@link Write} benchmarks using java.util.logging. + */ +public class JdbcJulWrite extends AbstractJulBenchmark implements Write { @Override @Benchmark public void writeMultipleEntities() { - final var now = Instant.now().toEpochMilli(); - projectRepository.insertProjectBatch(new String[]{"first", "second"}, new Long[]{now, now}); + projectRepository.insertProjectBatch(new String[]{"first", "second"}, new Long[]{NOW, NOW}); } @Override @Benchmark public void writeSingleEntity() { - projectRepository.insertProject("hot fuzz", Instant.now().toEpochMilli()); + projectRepository.insertProject("hot fuzz", NOW); } @Override diff --git a/yosql-benchmarks/yosql-benchmarks-jdbc/src/main/java/wtf/metio/yosql/benchmark/jdbc/log4j/AbstractLog4jBenchmark.java b/yosql-benchmarks/yosql-benchmarks-jdbc/src/main/java/wtf/metio/yosql/benchmark/jdbc/log4j/AbstractLog4jBenchmark.java new file mode 100644 index 00000000..ded1462c --- /dev/null +++ b/yosql-benchmarks/yosql-benchmarks-jdbc/src/main/java/wtf/metio/yosql/benchmark/jdbc/log4j/AbstractLog4jBenchmark.java @@ -0,0 +1,45 @@ +/* + * This file is part of yosql. It is subject to the license terms in the LICENSE file found in the top-level + * directory of this distribution and at http://creativecommons.org/publicdomain/zero/1.0/. No part of yosql, + * including this file, may be copied, modified, propagated, or distributed except according to the terms contained + * in the LICENSE file. + */ + +package wtf.metio.yosql.benchmark.jdbc.log4j; + +import org.openjdk.jmh.annotations.Level; +import org.openjdk.jmh.annotations.Setup; +import org.openjdk.jmh.annotations.TearDown; +import wtf.metio.yosql.benchmark.jdbc.AbstractBenchmark; +import wtf.metio.yosql.benchmark.jdbc.log4j.persistence.CompanyRepository; +import wtf.metio.yosql.benchmark.jdbc.log4j.persistence.DepartmentRepository; +import wtf.metio.yosql.benchmark.jdbc.log4j.persistence.EmployeeRepository; +import wtf.metio.yosql.benchmark.jdbc.log4j.persistence.ProjectRepository; + +/** + * Abstract benchmark class for all benchmarks that use the log4j API. + */ +abstract class AbstractLog4jBenchmark extends AbstractBenchmark { + + protected CompanyRepository companyRepository; + protected DepartmentRepository departmentRepository; + protected EmployeeRepository employeeRepository; + protected ProjectRepository projectRepository; + + @Setup(Level.Trial) + public void createRepositories() { + companyRepository = new CompanyRepository(dataSource); + departmentRepository = new DepartmentRepository(dataSource); + employeeRepository = new EmployeeRepository(dataSource); + projectRepository = new ProjectRepository(dataSource); + } + + @TearDown(Level.Trial) + public void destroyRepositories() { + companyRepository = null; + departmentRepository = null; + employeeRepository = null; + projectRepository = null; + } + +} diff --git a/yosql-benchmarks/yosql-benchmarks-common-scenarios/src/main/java/wtf/metio/yosql/benchmarks/common/jdbc/JdbcRead.java b/yosql-benchmarks/yosql-benchmarks-jdbc/src/main/java/wtf/metio/yosql/benchmark/jdbc/log4j/JdbcLog4jRead.java similarity index 78% copy from yosql-benchmarks/yosql-benchmarks-common-scenarios/src/main/java/wtf/metio/yosql/benchmarks/common/jdbc/JdbcRead.java copy to yosql-benchmarks/yosql-benchmarks-jdbc/src/main/java/wtf/metio/yosql/benchmark/jdbc/log4j/JdbcLog4jRead.java index 63e58f7f..a01286eb 100644 --- a/yosql-benchmarks/yosql-benchmarks-common-scenarios/src/main/java/wtf/metio/yosql/benchmarks/common/jdbc/JdbcRead.java +++ b/yosql-benchmarks/yosql-benchmarks-jdbc/src/main/java/wtf/metio/yosql/benchmark/jdbc/log4j/JdbcLog4jRead.java @@ -5,16 +5,15 @@ * in the LICENSE file. */ -package wtf.metio.yosql.benchmarks.common.jdbc; +package wtf.metio.yosql.benchmark.jdbc.log4j; import org.openjdk.jmh.annotations.Benchmark; -import wtf.metio.yosql.benchmarks.common.AbstractBenchmark; import wtf.metio.yosql.benchmarks.common.Read; /** - * The JDBI implementation of the {@link Read} benchmarks. + * The JDBI implementation of the {@link Read} benchmarks using log4j. */ -public class JdbcRead extends AbstractBenchmark implements Read { +public class JdbcLog4jRead extends AbstractLog4jBenchmark implements Read { @Override @Benchmark @@ -35,13 +34,15 @@ public class JdbcRead extends AbstractBenchmark implements Read { } @Override + @Benchmark public void readMultipleEntities() { - // TODO: implement benchmark + companyRepository.findCompanies(); } @Override + @Benchmark public void readComplexRelationship() { - // TODO: implement benchmark + projectRepository.findProjectsWithMinCosts(250); } @Override diff --git a/yosql-benchmarks/yosql-benchmarks-common-scenarios/src/main/java/wtf/metio/yosql/benchmarks/common/jdbc/JdbcWrite.java b/yosql-benchmarks/yosql-benchmarks-jdbc/src/main/java/wtf/metio/yosql/benchmark/jdbc/log4j/JdbcLog4jWrite.java similarity index 85% copy from yosql-benchmarks/yosql-benchmarks-common-scenarios/src/main/java/wtf/metio/yosql/benchmarks/common/jdbc/JdbcWrite.java copy to yosql-benchmarks/yosql-benchmarks-jdbc/src/main/java/wtf/metio/yosql/benchmark/jdbc/log4j/JdbcLog4jWrite.java index 2a5ea824..054d78c6 100644 --- a/yosql-benchmarks/yosql-benchmarks-common-scenarios/src/main/java/wtf/metio/yosql/benchmarks/common/jdbc/JdbcWrite.java +++ b/yosql-benchmarks/yosql-benchmarks-jdbc/src/main/java/wtf/metio/yosql/benchmark/jdbc/log4j/JdbcLog4jWrite.java @@ -5,15 +5,17 @@ * in the LICENSE file. */ -package wtf.metio.yosql.benchmarks.common.jdbc; +package wtf.metio.yosql.benchmark.jdbc.log4j; import org.openjdk.jmh.annotations.Benchmark; -import wtf.metio.yosql.benchmarks.common.AbstractBenchmark; import wtf.metio.yosql.benchmarks.common.Write; import java.time.Instant; -public class JdbcWrite extends AbstractBenchmark implements Write { +/** + * The JDBI implementation of the {@link Write} benchmarks using log4j. + */ +public class JdbcLog4jWrite extends AbstractLog4jBenchmark implements Write { @Override @Benchmark diff --git a/yosql-benchmarks/yosql-benchmarks-jdbc/src/main/java/wtf/metio/yosql/benchmark/jdbc/noop/AbstractNoOpBenchmark.java b/yosql-benchmarks/yosql-benchmarks-jdbc/src/main/java/wtf/metio/yosql/benchmark/jdbc/noop/AbstractNoOpBenchmark.java new file mode 100644 index 00000000..01f943b6 --- /dev/null +++ b/yosql-benchmarks/yosql-benchmarks-jdbc/src/main/java/wtf/metio/yosql/benchmark/jdbc/noop/AbstractNoOpBenchmark.java @@ -0,0 +1,45 @@ +/* + * This file is part of yosql. It is subject to the license terms in the LICENSE file found in the top-level + * directory of this distribution and at http://creativecommons.org/publicdomain/zero/1.0/. No part of yosql, + * including this file, may be copied, modified, propagated, or distributed except according to the terms contained + * in the LICENSE file. + */ + +package wtf.metio.yosql.benchmark.jdbc.noop; + +import org.openjdk.jmh.annotations.Level; +import org.openjdk.jmh.annotations.Setup; +import org.openjdk.jmh.annotations.TearDown; +import wtf.metio.yosql.benchmark.jdbc.AbstractBenchmark; +import wtf.metio.yosql.benchmark.jdbc.noop.persistence.CompanyRepository; +import wtf.metio.yosql.benchmark.jdbc.noop.persistence.DepartmentRepository; +import wtf.metio.yosql.benchmark.jdbc.noop.persistence.EmployeeRepository; +import wtf.metio.yosql.benchmark.jdbc.noop.persistence.ProjectRepository; + +/** + * Abstract benchmark class for all benchmarks that use no logging statements. + */ +abstract class AbstractNoOpBenchmark extends AbstractBenchmark { + + protected CompanyRepository companyRepository; + protected DepartmentRepository departmentRepository; + protected EmployeeRepository employeeRepository; + protected ProjectRepository projectRepository; + + @Setup(Level.Trial) + public void createRepositories() { + companyRepository = new CompanyRepository(dataSource); + departmentRepository = new DepartmentRepository(dataSource); + employeeRepository = new EmployeeRepository(dataSource); + projectRepository = new ProjectRepository(dataSource); + } + + @TearDown(Level.Trial) + public void destroyRepositories() { + companyRepository = null; + departmentRepository = null; + employeeRepository = null; + projectRepository = null; + } + +} diff --git a/yosql-benchmarks/yosql-benchmarks-common-scenarios/src/main/java/wtf/metio/yosql/benchmarks/common/jdbc/JdbcRead.java b/yosql-benchmarks/yosql-benchmarks-jdbc/src/main/java/wtf/metio/yosql/benchmark/jdbc/noop/JdbcRead.java similarity index 77% copy from yosql-benchmarks/yosql-benchmarks-common-scenarios/src/main/java/wtf/metio/yosql/benchmarks/common/jdbc/JdbcRead.java copy to yosql-benchmarks/yosql-benchmarks-jdbc/src/main/java/wtf/metio/yosql/benchmark/jdbc/noop/JdbcRead.java index 63e58f7f..03aa54a0 100644 --- a/yosql-benchmarks/yosql-benchmarks-common-scenarios/src/main/java/wtf/metio/yosql/benchmarks/common/jdbc/JdbcRead.java +++ b/yosql-benchmarks/yosql-benchmarks-jdbc/src/main/java/wtf/metio/yosql/benchmark/jdbc/noop/JdbcRead.java @@ -5,16 +5,15 @@ * in the LICENSE file. */ -package wtf.metio.yosql.benchmarks.common.jdbc; +package wtf.metio.yosql.benchmark.jdbc.noop; import org.openjdk.jmh.annotations.Benchmark; -import wtf.metio.yosql.benchmarks.common.AbstractBenchmark; import wtf.metio.yosql.benchmarks.common.Read; /** - * The JDBI implementation of the {@link Read} benchmarks. + * The JDBI implementation of the {@link Read} benchmarks using no logging statements. */ -public class JdbcRead extends AbstractBenchmark implements Read { +public class JdbcRead extends AbstractNoOpBenchmark implements Read { @Override @Benchmark @@ -35,13 +34,15 @@ public class JdbcRead extends AbstractBenchmark implements Read { } @Override + @Benchmark public void readMultipleEntities() { - // TODO: implement benchmark + companyRepository.findCompanies(); } @Override + @Benchmark public void readComplexRelationship() { - // TODO: implement benchmark + projectRepository.findProjectsWithMinCosts(250); } @Override diff --git a/yosql-benchmarks/yosql-benchmarks-common-scenarios/src/main/java/wtf/metio/yosql/benchmarks/common/jdbc/JdbcWrite.java b/yosql-benchmarks/yosql-benchmarks-jdbc/src/main/java/wtf/metio/yosql/benchmark/jdbc/noop/JdbcWrite.java similarity index 85% copy from yosql-benchmarks/yosql-benchmarks-common-scenarios/src/main/java/wtf/metio/yosql/benchmarks/common/jdbc/JdbcWrite.java copy to yosql-benchmarks/yosql-benchmarks-jdbc/src/main/java/wtf/metio/yosql/benchmark/jdbc/noop/JdbcWrite.java index 2a5ea824..948230aa 100644 --- a/yosql-benchmarks/yosql-benchmarks-common-scenarios/src/main/java/wtf/metio/yosql/benchmarks/common/jdbc/JdbcWrite.java +++ b/yosql-benchmarks/yosql-benchmarks-jdbc/src/main/java/wtf/metio/yosql/benchmark/jdbc/noop/JdbcWrite.java @@ -5,15 +5,17 @@ * in the LICENSE file. */ -package wtf.metio.yosql.benchmarks.common.jdbc; +package wtf.metio.yosql.benchmark.jdbc.noop; import org.openjdk.jmh.annotations.Benchmark; -import wtf.metio.yosql.benchmarks.common.AbstractBenchmark; import wtf.metio.yosql.benchmarks.common.Write; import java.time.Instant; -public class JdbcWrite extends AbstractBenchmark implements Write { +/** + * The JDBI implementation of the {@link Write} benchmarks using no logging statements. + */ +public class JdbcWrite extends AbstractNoOpBenchmark implements Write { @Override @Benchmark diff --git a/yosql-benchmarks/yosql-benchmarks-jdbc/src/main/java/wtf/metio/yosql/benchmark/jdbc/slf4j/AbstractSlf4jBenchmark.java b/yosql-benchmarks/yosql-benchmarks-jdbc/src/main/java/wtf/metio/yosql/benchmark/jdbc/slf4j/AbstractSlf4jBenchmark.java new file mode 100644 index 00000000..2abc5159 --- /dev/null +++ b/yosql-benchmarks/yosql-benchmarks-jdbc/src/main/java/wtf/metio/yosql/benchmark/jdbc/slf4j/AbstractSlf4jBenchmark.java @@ -0,0 +1,45 @@ +/* + * This file is part of yosql. It is subject to the license terms in the LICENSE file found in the top-level + * directory of this distribution and at http://creativecommons.org/publicdomain/zero/1.0/. No part of yosql, + * including this file, may be copied, modified, propagated, or distributed except according to the terms contained + * in the LICENSE file. + */ + +package wtf.metio.yosql.benchmark.jdbc.slf4j; + +import org.openjdk.jmh.annotations.Level; +import org.openjdk.jmh.annotations.Setup; +import org.openjdk.jmh.annotations.TearDown; +import wtf.metio.yosql.benchmark.jdbc.AbstractBenchmark; +import wtf.metio.yosql.benchmark.jdbc.slf4j.persistence.CompanyRepository; +import wtf.metio.yosql.benchmark.jdbc.slf4j.persistence.DepartmentRepository; +import wtf.metio.yosql.benchmark.jdbc.slf4j.persistence.EmployeeRepository; +import wtf.metio.yosql.benchmark.jdbc.slf4j.persistence.ProjectRepository; + +/** + * Abstract benchmark class for all benchmarks that use the slf4j API. + */ +abstract class AbstractSlf4jBenchmark extends AbstractBenchmark { + + protected CompanyRepository companyRepository; + protected DepartmentRepository departmentRepository; + protected EmployeeRepository employeeRepository; + protected ProjectRepository projectRepository; + + @Setup(Level.Trial) + public void createRepositories() { + companyRepository = new CompanyRepository(dataSource); + departmentRepository = new DepartmentRepository(dataSource); + employeeRepository = new EmployeeRepository(dataSource); + projectRepository = new ProjectRepository(dataSource); + } + + @TearDown(Level.Trial) + public void destroyRepositories() { + companyRepository = null; + departmentRepository = null; + employeeRepository = null; + projectRepository = null; + } + +} diff --git a/yosql-benchmarks/yosql-benchmarks-common-scenarios/src/main/java/wtf/metio/yosql/benchmarks/common/jdbc/JdbcRead.java b/yosql-benchmarks/yosql-benchmarks-jdbc/src/main/java/wtf/metio/yosql/benchmark/jdbc/slf4j/JdbcSlf4jRead.java similarity index 78% rename from yosql-benchmarks/yosql-benchmarks-common-scenarios/src/main/java/wtf/metio/yosql/benchmarks/common/jdbc/JdbcRead.java rename to yosql-benchmarks/yosql-benchmarks-jdbc/src/main/java/wtf/metio/yosql/benchmark/jdbc/slf4j/JdbcSlf4jRead.java index 63e58f7f..6b5c310a 100644 --- a/yosql-benchmarks/yosql-benchmarks-common-scenarios/src/main/java/wtf/metio/yosql/benchmarks/common/jdbc/JdbcRead.java +++ b/yosql-benchmarks/yosql-benchmarks-jdbc/src/main/java/wtf/metio/yosql/benchmark/jdbc/slf4j/JdbcSlf4jRead.java @@ -5,16 +5,15 @@ * in the LICENSE file. */ -package wtf.metio.yosql.benchmarks.common.jdbc; +package wtf.metio.yosql.benchmark.jdbc.slf4j; import org.openjdk.jmh.annotations.Benchmark; -import wtf.metio.yosql.benchmarks.common.AbstractBenchmark; import wtf.metio.yosql.benchmarks.common.Read; /** - * The JDBI implementation of the {@link Read} benchmarks. + * The JDBI implementation of the {@link Read} benchmarks using slf4j. */ -public class JdbcRead extends AbstractBenchmark implements Read { +public class JdbcSlf4jRead extends AbstractSlf4jBenchmark implements Read { @Override @Benchmark @@ -35,13 +34,15 @@ public class JdbcRead extends AbstractBenchmark implements Read { } @Override + @Benchmark public void readMultipleEntities() { - // TODO: implement benchmark + companyRepository.findCompanies(); } @Override + @Benchmark public void readComplexRelationship() { - // TODO: implement benchmark + projectRepository.findProjectsWithMinCosts(250); } @Override diff --git a/yosql-benchmarks/yosql-benchmarks-common-scenarios/src/main/java/wtf/metio/yosql/benchmarks/common/jdbc/JdbcWrite.java b/yosql-benchmarks/yosql-benchmarks-jdbc/src/main/java/wtf/metio/yosql/benchmark/jdbc/slf4j/JdbcSlf4jWrite.java similarity index 85% rename from yosql-benchmarks/yosql-benchmarks-common-scenarios/src/main/java/wtf/metio/yosql/benchmarks/common/jdbc/JdbcWrite.java rename to yosql-benchmarks/yosql-benchmarks-jdbc/src/main/java/wtf/metio/yosql/benchmark/jdbc/slf4j/JdbcSlf4jWrite.java index 2a5ea824..52c0c66d 100644 --- a/yosql-benchmarks/yosql-benchmarks-common-scenarios/src/main/java/wtf/metio/yosql/benchmarks/common/jdbc/JdbcWrite.java +++ b/yosql-benchmarks/yosql-benchmarks-jdbc/src/main/java/wtf/metio/yosql/benchmark/jdbc/slf4j/JdbcSlf4jWrite.java @@ -5,15 +5,17 @@ * in the LICENSE file. */ -package wtf.metio.yosql.benchmarks.common.jdbc; +package wtf.metio.yosql.benchmark.jdbc.slf4j; import org.openjdk.jmh.annotations.Benchmark; -import wtf.metio.yosql.benchmarks.common.AbstractBenchmark; import wtf.metio.yosql.benchmarks.common.Write; import java.time.Instant; -public class JdbcWrite extends AbstractBenchmark implements Write { +/** + * The JDBI implementation of the {@link Write} benchmarks using slf4j. + */ +public class JdbcSlf4jWrite extends AbstractSlf4jBenchmark implements Write { @Override @Benchmark diff --git a/yosql-benchmarks/yosql-benchmarks-jdbc/src/main/resources/log4j2.xml b/yosql-benchmarks/yosql-benchmarks-jdbc/src/main/resources/log4j2.xml new file mode 100644 index 00000000..d51db3b5 --- /dev/null +++ b/yosql-benchmarks/yosql-benchmarks-jdbc/src/main/resources/log4j2.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/yosql-benchmarks/yosql-benchmarks-jdbc/src/main/resources/logging.properties b/yosql-benchmarks/yosql-benchmarks-jdbc/src/main/resources/logging.properties new file mode 100644 index 00000000..5d997fe5 --- /dev/null +++ b/yosql-benchmarks/yosql-benchmarks-jdbc/src/main/resources/logging.properties @@ -0,0 +1,9 @@ +# +# This file is part of yosql. It is subject to the license terms in the LICENSE file found in the top-level +# directory of this distribution and at http://creativecommons.org/publicdomain/zero/1.0/. No part of yosql, +# including this file, may be copied, modified, propagated, or distributed except according to the terms contained +# in the LICENSE file. +# +handlers=java.util.logging.ConsoleHandler +.level=ALL +java.util.logging.ConsoleHandler.level=ALL diff --git a/yosql-benchmarks/yosql-benchmarks-common-scenarios/src/main/yosql/company/deleteAllCompanies.sql b/yosql-benchmarks/yosql-benchmarks-jdbc/src/main/yosql/company/deleteAllCompanies.sql similarity index 100% rename from yosql-benchmarks/yosql-benchmarks-common-scenarios/src/main/yosql/company/deleteAllCompanies.sql rename to yosql-benchmarks/yosql-benchmarks-jdbc/src/main/yosql/company/deleteAllCompanies.sql diff --git a/yosql-benchmarks/yosql-benchmarks-jdbc/src/main/yosql/company/findCompanies.sql b/yosql-benchmarks/yosql-benchmarks-jdbc/src/main/yosql/company/findCompanies.sql index f7a405b9..67dde174 100644 --- a/yosql-benchmarks/yosql-benchmarks-jdbc/src/main/yosql/company/findCompanies.sql +++ b/yosql-benchmarks/yosql-benchmarks-jdbc/src/main/yosql/company/findCompanies.sql @@ -5,15 +5,6 @@ * in the LICENSE file. */ --- --- parameters: --- - name: min --- type: int --- - name: max --- type: int --- -select * -from companies -where id < :max - and id > :min +SELECT * +FROM companies ; diff --git a/yosql-benchmarks/yosql-benchmarks-common-scenarios/src/main/yosql/company/findCompany.sql b/yosql-benchmarks/yosql-benchmarks-jdbc/src/main/yosql/company/findCompany.sql similarity index 100% rename from yosql-benchmarks/yosql-benchmarks-common-scenarios/src/main/yosql/company/findCompany.sql rename to yosql-benchmarks/yosql-benchmarks-jdbc/src/main/yosql/company/findCompany.sql diff --git a/yosql-benchmarks/yosql-benchmarks-common-scenarios/src/main/yosql/company/findCompanyByDepartment.sql b/yosql-benchmarks/yosql-benchmarks-jdbc/src/main/yosql/company/findCompanyByDepartment.sql similarity index 81% rename from yosql-benchmarks/yosql-benchmarks-common-scenarios/src/main/yosql/company/findCompanyByDepartment.sql rename to yosql-benchmarks/yosql-benchmarks-jdbc/src/main/yosql/company/findCompanyByDepartment.sql index bbfc4a0b..d8b09a70 100644 --- a/yosql-benchmarks/yosql-benchmarks-common-scenarios/src/main/yosql/company/findCompanyByDepartment.sql +++ b/yosql-benchmarks/yosql-benchmarks-jdbc/src/main/yosql/company/findCompanyByDepartment.sql @@ -10,7 +10,7 @@ -- type: long SELECT c.* FROM companies c - INNER JOIN departments d - WHERE c.pid = d.company_pid - AND d.pid = :department + INNER JOIN departments d + ON c.pid = d.company_pid + AND d.pid = :department ; diff --git a/yosql-benchmarks/yosql-benchmarks-jdbc/src/main/yosql/company/findCompanyByName.sql b/yosql-benchmarks/yosql-benchmarks-jdbc/src/main/yosql/company/findCompanyByName.sql deleted file mode 100644 index ae2c0f79..00000000 --- a/yosql-benchmarks/yosql-benchmarks-jdbc/src/main/yosql/company/findCompanyByName.sql +++ /dev/null @@ -1,16 +0,0 @@ -/* - * This file is part of yosql. It is subject to the license terms in the LICENSE file found in the top-level - * directory of this distribution and at http://creativecommons.org/publicdomain/zero/1.0/. No part of yosql, - * including this file, may be copied, modified, propagated, or distributed except according to the terms contained - * in the LICENSE file. - */ - --- --- parameters: --- - name: name --- type: java.lang.String --- -select * -from companies -where name = :name -; diff --git a/yosql-benchmarks/yosql-benchmarks-jdbc/src/main/yosql/company/insertCompany.sql b/yosql-benchmarks/yosql-benchmarks-jdbc/src/main/yosql/company/insertCompany.sql index bbe9e643..28fb70d7 100644 --- a/yosql-benchmarks/yosql-benchmarks-jdbc/src/main/yosql/company/insertCompany.sql +++ b/yosql-benchmarks/yosql-benchmarks-jdbc/src/main/yosql/company/insertCompany.sql @@ -8,6 +8,8 @@ -- parameters: -- - name: name -- type: java.lang.String -INSERT INTO companies (name) -VALUES (:name) +-- - name: address +-- type: java.lang.String +INSERT INTO companies (name, address) +VALUES (:name, :address) ; diff --git a/yosql-benchmarks/yosql-benchmarks-jdbc/src/main/yosql/company/queryAllCompanies.sql b/yosql-benchmarks/yosql-benchmarks-jdbc/src/main/yosql/company/queryAllCompanies.sql deleted file mode 100644 index 31c3c5ef..00000000 --- a/yosql-benchmarks/yosql-benchmarks-jdbc/src/main/yosql/company/queryAllCompanies.sql +++ /dev/null @@ -1,12 +0,0 @@ -/* - * This file is part of yosql. It is subject to the license terms in the LICENSE file found in the top-level - * directory of this distribution and at http://creativecommons.org/publicdomain/zero/1.0/. No part of yosql, - * including this file, may be copied, modified, propagated, or distributed except according to the terms contained - * in the LICENSE file. - */ - --- --- -select * -from companies -; diff --git a/yosql-benchmarks/yosql-benchmarks-common-scenarios/src/main/yosql/department/deleteAllDepartments.sql b/yosql-benchmarks/yosql-benchmarks-jdbc/src/main/yosql/department/deleteAllDepartments.sql similarity index 100% rename from yosql-benchmarks/yosql-benchmarks-common-scenarios/src/main/yosql/department/deleteAllDepartments.sql rename to yosql-benchmarks/yosql-benchmarks-jdbc/src/main/yosql/department/deleteAllDepartments.sql diff --git a/yosql-benchmarks/yosql-benchmarks-common-scenarios/src/main/yosql/department/deleteDepartment.sql b/yosql-benchmarks/yosql-benchmarks-jdbc/src/main/yosql/department/deleteDepartment.sql similarity index 100% copy from yosql-benchmarks/yosql-benchmarks-common-scenarios/src/main/yosql/department/deleteDepartment.sql copy to yosql-benchmarks/yosql-benchmarks-jdbc/src/main/yosql/department/deleteDepartment.sql diff --git a/yosql-benchmarks/yosql-benchmarks-common-scenarios/src/main/yosql/department/findDepartmentsByCompany.sql b/yosql-benchmarks/yosql-benchmarks-jdbc/src/main/yosql/department/findDepartmentsByCompany.sql similarity index 100% rename from yosql-benchmarks/yosql-benchmarks-common-scenarios/src/main/yosql/department/findDepartmentsByCompany.sql rename to yosql-benchmarks/yosql-benchmarks-jdbc/src/main/yosql/department/findDepartmentsByCompany.sql diff --git a/yosql-benchmarks/yosql-benchmarks-common-scenarios/src/main/yosql/department/insertDepartment.sql b/yosql-benchmarks/yosql-benchmarks-jdbc/src/main/yosql/department/insertDepartment.sql similarity index 100% rename from yosql-benchmarks/yosql-benchmarks-common-scenarios/src/main/yosql/department/insertDepartment.sql rename to yosql-benchmarks/yosql-benchmarks-jdbc/src/main/yosql/department/insertDepartment.sql diff --git a/yosql-benchmarks/yosql-benchmarks-common-scenarios/src/main/yosql/employee/deleteAllEmployee.sql b/yosql-benchmarks/yosql-benchmarks-jdbc/src/main/yosql/employee/deleteAllEmployee.sql similarity index 100% rename from yosql-benchmarks/yosql-benchmarks-common-scenarios/src/main/yosql/employee/deleteAllEmployee.sql rename to yosql-benchmarks/yosql-benchmarks-jdbc/src/main/yosql/employee/deleteAllEmployee.sql diff --git a/yosql-benchmarks/yosql-benchmarks-common-scenarios/src/main/yosql/employee/deleteEmployee.sql b/yosql-benchmarks/yosql-benchmarks-jdbc/src/main/yosql/employee/deleteEmployee.sql similarity index 100% rename from yosql-benchmarks/yosql-benchmarks-common-scenarios/src/main/yosql/employee/deleteEmployee.sql rename to yosql-benchmarks/yosql-benchmarks-jdbc/src/main/yosql/employee/deleteEmployee.sql diff --git a/yosql-benchmarks/yosql-benchmarks-common-scenarios/src/main/yosql/employee/findEmployeesWithMinSalary.sql b/yosql-benchmarks/yosql-benchmarks-jdbc/src/main/yosql/employee/findEmployeesWithMinSalary.sql similarity index 100% rename from yosql-benchmarks/yosql-benchmarks-common-scenarios/src/main/yosql/employee/findEmployeesWithMinSalary.sql rename to yosql-benchmarks/yosql-benchmarks-jdbc/src/main/yosql/employee/findEmployeesWithMinSalary.sql diff --git a/yosql-benchmarks/yosql-benchmarks-common-scenarios/src/main/yosql/employee/insertEmployee.sql b/yosql-benchmarks/yosql-benchmarks-jdbc/src/main/yosql/employee/insertEmployee.sql similarity index 100% rename from yosql-benchmarks/yosql-benchmarks-common-scenarios/src/main/yosql/employee/insertEmployee.sql rename to yosql-benchmarks/yosql-benchmarks-jdbc/src/main/yosql/employee/insertEmployee.sql diff --git a/yosql-benchmarks/yosql-benchmarks-jdbc/src/main/yosql/item/callItem.sql b/yosql-benchmarks/yosql-benchmarks-jdbc/src/main/yosql/item/callItem.sql deleted file mode 100644 index e7aa7580..00000000 --- a/yosql-benchmarks/yosql-benchmarks-jdbc/src/main/yosql/item/callItem.sql +++ /dev/null @@ -1,12 +0,0 @@ -/* - * This file is part of yosql. It is subject to the license terms in the LICENSE file found in the top-level - * directory of this distribution and at http://creativecommons.org/publicdomain/zero/1.0/. No part of yosql, - * including this file, may be copied, modified, propagated, or distributed except according to the terms contained - * in the LICENSE file. - */ - -select * -from items -where name = :name -; - diff --git a/yosql-benchmarks/yosql-benchmarks-jdbc/src/main/yosql/item/findItem.sql b/yosql-benchmarks/yosql-benchmarks-jdbc/src/main/yosql/item/findItem.sql deleted file mode 100644 index b75b9cca..00000000 --- a/yosql-benchmarks/yosql-benchmarks-jdbc/src/main/yosql/item/findItem.sql +++ /dev/null @@ -1,53 +0,0 @@ -/* - * This file is part of yosql. It is subject to the license terms in the LICENSE file found in the top-level - * directory of this distribution and at http://creativecommons.org/publicdomain/zero/1.0/. No part of yosql, - * including this file, may be copied, modified, propagated, or distributed except according to the terms contained - * in the LICENSE file. - */ - --- --- name: findItemByName --- parameters: --- - name: name --- type: java.lang.String --- -select * -from items -where name = :name -; - --- --- name: findItemByName --- vendor: H2 --- parameters: --- - name: name --- type: java.lang.String --- -select * -from items -where other_name = :name -; - --- --- name: findItemByAllNames --- parameters: --- - name: name --- type: java.lang.String --- -select * -from items -where name = :name - or other_name = :name - or last_name = :name -; - --- --- name: findItemBySnakeCaseName --- parameters: --- - name: name_of_item --- type: java.lang.String --- -select * -from items -where name = :name_of_item -; diff --git a/yosql-benchmarks/yosql-benchmarks-jdbc/src/main/yosql/person/findPerson.sql b/yosql-benchmarks/yosql-benchmarks-jdbc/src/main/yosql/person/findPerson.sql deleted file mode 100644 index af756ebd..00000000 --- a/yosql-benchmarks/yosql-benchmarks-jdbc/src/main/yosql/person/findPerson.sql +++ /dev/null @@ -1,35 +0,0 @@ -/* - * This file is part of yosql. It is subject to the license terms in the LICENSE file found in the top-level - * directory of this distribution and at http://creativecommons.org/publicdomain/zero/1.0/. No part of yosql, - * including this file, may be copied, modified, propagated, or distributed except according to the terms contained - * in the LICENSE file. - */ - --- --- name: findPerson --- vendor: Microsoft SQL Server --- parameters: --- - name: name --- type: java.lang.String --- -select * -from persons -where name = :name -; - --- --- name: findPerson --- vendor: H2 --- -select * -from persons -where name = :name -; - --- --- name: findPerson --- -select * -from persons -where name = :name -; diff --git a/yosql-benchmarks/yosql-benchmarks-common-scenarios/src/main/yosql/department/deleteDepartment.sql b/yosql-benchmarks/yosql-benchmarks-jdbc/src/main/yosql/project/findProjectsWithMinCosts.sql similarity index 54% rename from yosql-benchmarks/yosql-benchmarks-common-scenarios/src/main/yosql/department/deleteDepartment.sql rename to yosql-benchmarks/yosql-benchmarks-jdbc/src/main/yosql/project/findProjectsWithMinCosts.sql index d1bc3ec8..bf17e394 100644 --- a/yosql-benchmarks/yosql-benchmarks-common-scenarios/src/main/yosql/department/deleteDepartment.sql +++ b/yosql-benchmarks/yosql-benchmarks-jdbc/src/main/yosql/project/findProjectsWithMinCosts.sql @@ -6,8 +6,16 @@ */ -- parameters: --- - name: department +-- - name: cost -- type: long -DELETE FROM departments -WHERE pid = :department +SELECT p.* +FROM projects p + INNER JOIN ( + SELECT pe.project_pid, sum(e.salary) as cost + FROM projectEmployees pe + INNER JOIN employees e + ON pe.employee_pid = e.pid + GROUP BY pe.project_pid + ) data ON p.pid = data.project_pid +WHERE data.cost >= :cost ; diff --git a/yosql-benchmarks/yosql-benchmarks-common-scenarios/src/main/yosql/project/insertProject.sql b/yosql-benchmarks/yosql-benchmarks-jdbc/src/main/yosql/project/insertProject.sql similarity index 100% rename from yosql-benchmarks/yosql-benchmarks-common-scenarios/src/main/yosql/project/insertProject.sql rename to yosql-benchmarks/yosql-benchmarks-jdbc/src/main/yosql/project/insertProject.sql diff --git a/yosql-benchmarks/yosql-benchmarks-common-scenarios/src/main/yosql/projectEmployee/insertProjectEmployee.sql b/yosql-benchmarks/yosql-benchmarks-jdbc/src/main/yosql/projectEmployee/insertProjectEmployee.sql similarity index 100% rename from yosql-benchmarks/yosql-benchmarks-common-scenarios/src/main/yosql/projectEmployee/insertProjectEmployee.sql rename to yosql-benchmarks/yosql-benchmarks-jdbc/src/main/yosql/projectEmployee/insertProjectEmployee.sql diff --git a/yosql-benchmarks/yosql-benchmarks-jdbc/src/main/yosql/user/queryAllUsers.sql b/yosql-benchmarks/yosql-benchmarks-jdbc/src/main/yosql/user/queryAllUsers.sql deleted file mode 100644 index 06efd445..00000000 --- a/yosql-benchmarks/yosql-benchmarks-jdbc/src/main/yosql/user/queryAllUsers.sql +++ /dev/null @@ -1,12 +0,0 @@ -/* - * This file is part of yosql. It is subject to the license terms in the LICENSE file found in the top-level - * directory of this distribution and at http://creativecommons.org/publicdomain/zero/1.0/. No part of yosql, - * including this file, may be copied, modified, propagated, or distributed except according to the terms contained - * in the LICENSE file. - */ - --- --- -select * -from users -; diff --git a/yosql-benchmarks/yosql-benchmarks-jdbc/src/main/yosql/user/queryInAnotherRepository.sql b/yosql-benchmarks/yosql-benchmarks-jdbc/src/main/yosql/user/queryInAnotherRepository.sql deleted file mode 100644 index 3e1992e6..00000000 --- a/yosql-benchmarks/yosql-benchmarks-jdbc/src/main/yosql/user/queryInAnotherRepository.sql +++ /dev/null @@ -1,15 +0,0 @@ -/* - * This file is part of yosql. It is subject to the license terms in the LICENSE file found in the top-level - * directory of this distribution and at http://creativecommons.org/publicdomain/zero/1.0/. No part of yosql, - * including this file, may be copied, modified, propagated, or distributed except according to the terms contained - * in the LICENSE file. - */ - --- --- name: queryAdminUser --- repository: Admin --- -select * -from users -where id = -1 -; diff --git a/yosql-benchmarks/yosql-benchmarks-jdbc/src/main/yosql/user/querySingleUser.sql b/yosql-benchmarks/yosql-benchmarks-jdbc/src/main/yosql/user/querySingleUser.sql deleted file mode 100644 index e92d196e..00000000 --- a/yosql-benchmarks/yosql-benchmarks-jdbc/src/main/yosql/user/querySingleUser.sql +++ /dev/null @@ -1,19 +0,0 @@ -/* - * This file is part of yosql. It is subject to the license terms in the LICENSE file found in the top-level - * directory of this distribution and at http://creativecommons.org/publicdomain/zero/1.0/. No part of yosql, - * including this file, may be copied, modified, propagated, or distributed except according to the terms contained - * in the LICENSE file. - */ - --- --- parameters: --- - name: userId --- type: int --- - name: name --- type: java.lang.String --- -select * -from users -where id = :userId - and name = :name -; diff --git a/yosql-benchmarks/yosql-benchmarks-jdbc/src/main/yosql/user/querySpecialUser.sql b/yosql-benchmarks/yosql-benchmarks-jdbc/src/main/yosql/user/querySpecialUser.sql deleted file mode 100644 index f3425faa..00000000 --- a/yosql-benchmarks/yosql-benchmarks-jdbc/src/main/yosql/user/querySpecialUser.sql +++ /dev/null @@ -1,14 +0,0 @@ -/* - * This file is part of yosql. It is subject to the license terms in the LICENSE file found in the top-level - * directory of this distribution and at http://creativecommons.org/publicdomain/zero/1.0/. No part of yosql, - * including this file, may be copied, modified, propagated, or distributed except according to the terms contained - * in the LICENSE file. - */ - --- --- name: queryAdminUser --- -select * -from users -where id = -1 -; diff --git a/yosql-benchmarks/yosql-benchmarks-jdbc/src/main/yosql/user/queryWithoutFrontMatter.sql b/yosql-benchmarks/yosql-benchmarks-jdbc/src/main/yosql/user/queryWithoutFrontMatter.sql deleted file mode 100644 index fcb7bc86..00000000 --- a/yosql-benchmarks/yosql-benchmarks-jdbc/src/main/yosql/user/queryWithoutFrontMatter.sql +++ /dev/null @@ -1,13 +0,0 @@ -/* - * This file is part of yosql. It is subject to the license terms in the LICENSE file found in the top-level - * directory of this distribution and at http://creativecommons.org/publicdomain/zero/1.0/. No part of yosql, - * including this file, may be copied, modified, propagated, or distributed except according to the terms contained - * in the LICENSE file. - */ - -select * -from users -where id = :id - and name = :name - and other = :id -; diff --git a/yosql-benchmarks/yosql-benchmarks-jdbc/src/main/yosql/user/updateUser.sql b/yosql-benchmarks/yosql-benchmarks-jdbc/src/main/yosql/user/updateUser.sql deleted file mode 100644 index f47a0a57..00000000 --- a/yosql-benchmarks/yosql-benchmarks-jdbc/src/main/yosql/user/updateUser.sql +++ /dev/null @@ -1,16 +0,0 @@ -/* - * This file is part of yosql. It is subject to the license terms in the LICENSE file found in the top-level - * directory of this distribution and at http://creativecommons.org/publicdomain/zero/1.0/. No part of yosql, - * including this file, may be copied, modified, propagated, or distributed except according to the terms contained - * in the LICENSE file. - */ - --- --- name: updateUser --- repository: wtf.metio.yosql.benchmark.jdbc.persistence.AdminRepository --- -update users -set id = 1 -where id = :id - and name = :name -; diff --git a/yosql-benchmarks/yosql-benchmarks-jdbc/src/main/yosql/user/updateUserStatic.sql b/yosql-benchmarks/yosql-benchmarks-jdbc/src/main/yosql/user/updateUserStatic.sql deleted file mode 100644 index f9cd819e..00000000 --- a/yosql-benchmarks/yosql-benchmarks-jdbc/src/main/yosql/user/updateUserStatic.sql +++ /dev/null @@ -1,14 +0,0 @@ -/* - * This file is part of yosql. It is subject to the license terms in the LICENSE file found in the top-level - * directory of this distribution and at http://creativecommons.org/publicdomain/zero/1.0/. No part of yosql, - * including this file, may be copied, modified, propagated, or distributed except according to the terms contained - * in the LICENSE file. - */ - --- --- repository: wtf.metio.yosql.benchmark.jdbc.persistence.AdminRepository --- -update users -set id = 1 -where id = 2 -; diff --git a/yosql-logging/yosql-logging-noop/src/main/java/wtf/metio/yosql/logging/noop/NoOpLoggingGenerator.java b/yosql-logging/yosql-logging-noop/src/main/java/wtf/metio/yosql/logging/noop/NoOpLoggingGenerator.java index b7acdfb7..94747c01 100644 --- a/yosql-logging/yosql-logging-noop/src/main/java/wtf/metio/yosql/logging/noop/NoOpLoggingGenerator.java +++ b/yosql-logging/yosql-logging-noop/src/main/java/wtf/metio/yosql/logging/noop/NoOpLoggingGenerator.java @@ -26,7 +26,7 @@ public final class NoOpLoggingGenerator implements LoggingGenerator { @Override public boolean supports(final LoggingApis api) { - return true; + return LoggingApis.NONE.equals(api); } @Override diff --git a/yosql-website/content/benchmarks/2021/yosql-benchmarks-common-scenarios.json b/yosql-website/content/benchmarks/2021/yosql-benchmarks-common-scenarios.json deleted file mode 100644 index 69e28eb2..00000000 --- a/yosql-website/content/benchmarks/2021/yosql-benchmarks-common-scenarios.json +++ /dev/null @@ -1,389 +0,0 @@ -[ - { - "jmhVersion" : "1.22", - "benchmark" : "wtf.metio.yosql.benchmarks.common.jdbc.JdbcRead.readManyToOneRelation", - "mode" : "avgt", - "threads" : 1, - "forks" : 1, - "jvm" : "/usr/java/openjdk-15/bin/java", - "jvmArgs" : [ - "-Dclassworlds.conf=/usr/share/maven/bin/m2.conf", - "-Dmaven.home=/usr/share/maven", - "-Dlibrary.jansi.path=/usr/share/maven/lib/jansi-native", - "-Dmaven.multiModuleProjectDirectory=/var/home/seb/git/metio/yosql" - ], - "jdkVersion" : "15.0.2", - "vmName" : "OpenJDK 64-Bit Server VM", - "vmVersion" : "15.0.2+7-27", - "warmupIterations" : 3, - "warmupTime" : "1 s", - "warmupBatchSize" : 1, - "measurementIterations" : 5, - "measurementTime" : "1 s", - "measurementBatchSize" : 1, - "primaryMetric" : { - "score" : 1.5271973509428391, - "scoreError" : 0.02306159097028207, - "scoreConfidence" : [ - 1.504135759972557, - 1.5502589419131212 - ], - "scorePercentiles" : { - "0.0" : 1.519855113515485, - "50.0" : 1.5279587007761553, - "90.0" : 1.5358385687478309, - "95.0" : 1.5358385687478309, - "99.0" : 1.5358385687478309, - "99.9" : 1.5358385687478309, - "99.99" : 1.5358385687478309, - "99.999" : 1.5358385687478309, - "99.9999" : 1.5358385687478309, - "100.0" : 1.5358385687478309 - }, - "scoreUnit" : "us/op", - "rawData" : [ - [ - 1.5286362246917617, - 1.519855113515485, - 1.523698146982963, - 1.5279587007761553, - 1.5358385687478309 - ] - ] - }, - "secondaryMetrics" : { - } - }, - { - "jmhVersion" : "1.22", - "benchmark" : "wtf.metio.yosql.benchmarks.common.jdbc.JdbcRead.readMultipleEntitiesBasedOnCondition", - "mode" : "avgt", - "threads" : 1, - "forks" : 1, - "jvm" : "/usr/java/openjdk-15/bin/java", - "jvmArgs" : [ - "-Dclassworlds.conf=/usr/share/maven/bin/m2.conf", - "-Dmaven.home=/usr/share/maven", - "-Dlibrary.jansi.path=/usr/share/maven/lib/jansi-native", - "-Dmaven.multiModuleProjectDirectory=/var/home/seb/git/metio/yosql" - ], - "jdkVersion" : "15.0.2", - "vmName" : "OpenJDK 64-Bit Server VM", - "vmVersion" : "15.0.2+7-27", - "warmupIterations" : 3, - "warmupTime" : "1 s", - "warmupBatchSize" : 1, - "measurementIterations" : 5, - "measurementTime" : "1 s", - "measurementBatchSize" : 1, - "primaryMetric" : { - "score" : 1.607713647753754, - "scoreError" : 0.027377462007753435, - "scoreConfidence" : [ - 1.5803361857460005, - 1.6350911097615073 - ], - "scorePercentiles" : { - "0.0" : 1.5978163226507334, - "50.0" : 1.6099506987840095, - "90.0" : 1.6160294305842813, - "95.0" : 1.6160294305842813, - "99.0" : 1.6160294305842813, - "99.9" : 1.6160294305842813, - "99.99" : 1.6160294305842813, - "99.999" : 1.6160294305842813, - "99.9999" : 1.6160294305842813, - "100.0" : 1.6160294305842813 - }, - "scoreUnit" : "us/op", - "rawData" : [ - [ - 1.6160294305842813, - 1.611250525606925, - 1.6099506987840095, - 1.5978163226507334, - 1.6035212611428205 - ] - ] - }, - "secondaryMetrics" : { - } - }, - { - "jmhVersion" : "1.22", - "benchmark" : "wtf.metio.yosql.benchmarks.common.jdbc.JdbcRead.readOneToManyRelation", - "mode" : "avgt", - "threads" : 1, - "forks" : 1, - "jvm" : "/usr/java/openjdk-15/bin/java", - "jvmArgs" : [ - "-Dclassworlds.conf=/usr/share/maven/bin/m2.conf", - "-Dmaven.home=/usr/share/maven", - "-Dlibrary.jansi.path=/usr/share/maven/lib/jansi-native", - "-Dmaven.multiModuleProjectDirectory=/var/home/seb/git/metio/yosql" - ], - "jdkVersion" : "15.0.2", - "vmName" : "OpenJDK 64-Bit Server VM", - "vmVersion" : "15.0.2+7-27", - "warmupIterations" : 3, - "warmupTime" : "1 s", - "warmupBatchSize" : 1, - "measurementIterations" : 5, - "measurementTime" : "1 s", - "measurementBatchSize" : 1, - "primaryMetric" : { - "score" : 1.344042698974569, - "scoreError" : 0.0765495507689275, - "scoreConfidence" : [ - 1.2674931482056415, - 1.4205922497434966 - ], - "scorePercentiles" : { - "0.0" : 1.3224043367886609, - "50.0" : 1.3413085866097327, - "90.0" : 1.3649811337749647, - "95.0" : 1.3649811337749647, - "99.0" : 1.3649811337749647, - "99.9" : 1.3649811337749647, - "99.99" : 1.3649811337749647, - "99.999" : 1.3649811337749647, - "99.9999" : 1.3649811337749647, - "100.0" : 1.3649811337749647 - }, - "scoreUnit" : "us/op", - "rawData" : [ - [ - 1.3639365928366571, - 1.3649811337749647, - 1.3413085866097327, - 1.3224043367886609, - 1.32758284486283 - ] - ] - }, - "secondaryMetrics" : { - } - }, - { - "jmhVersion" : "1.22", - "benchmark" : "wtf.metio.yosql.benchmarks.common.jdbc.JdbcRead.readSingleEntityByPrimaryKey", - "mode" : "avgt", - "threads" : 1, - "forks" : 1, - "jvm" : "/usr/java/openjdk-15/bin/java", - "jvmArgs" : [ - "-Dclassworlds.conf=/usr/share/maven/bin/m2.conf", - "-Dmaven.home=/usr/share/maven", - "-Dlibrary.jansi.path=/usr/share/maven/lib/jansi-native", - "-Dmaven.multiModuleProjectDirectory=/var/home/seb/git/metio/yosql" - ], - "jdkVersion" : "15.0.2", - "vmName" : "OpenJDK 64-Bit Server VM", - "vmVersion" : "15.0.2+7-27", - "warmupIterations" : 3, - "warmupTime" : "1 s", - "warmupBatchSize" : 1, - "measurementIterations" : 5, - "measurementTime" : "1 s", - "measurementBatchSize" : 1, - "primaryMetric" : { - "score" : 1.2601212759294238, - "scoreError" : 0.01530821137736568, - "scoreConfidence" : [ - 1.244813064552058, - 1.2754294873067895 - ], - "scorePercentiles" : { - "0.0" : 1.2533010887027045, - "50.0" : 1.2614414487591505, - "90.0" : 1.263342618546257, - "95.0" : 1.263342618546257, - "99.0" : 1.263342618546257, - "99.9" : 1.263342618546257, - "99.99" : 1.263342618546257, - "99.999" : 1.263342618546257, - "99.9999" : 1.263342618546257, - "100.0" : 1.263342618546257 - }, - "scoreUnit" : "us/op", - "rawData" : [ - [ - 1.2602638231006034, - 1.263342618546257, - 1.2614414487591505, - 1.2622574005384046, - 1.2533010887027045 - ] - ] - }, - "secondaryMetrics" : { - } - }, - { - "jmhVersion" : "1.22", - "benchmark" : "wtf.metio.yosql.benchmarks.common.jdbc.JdbcWrite.deleteSingleEntityByPrimaryKey", - "mode" : "avgt", - "threads" : 1, - "forks" : 1, - "jvm" : "/usr/java/openjdk-15/bin/java", - "jvmArgs" : [ - "-Dclassworlds.conf=/usr/share/maven/bin/m2.conf", - "-Dmaven.home=/usr/share/maven", - "-Dlibrary.jansi.path=/usr/share/maven/lib/jansi-native", - "-Dmaven.multiModuleProjectDirectory=/var/home/seb/git/metio/yosql" - ], - "jdkVersion" : "15.0.2", - "vmName" : "OpenJDK 64-Bit Server VM", - "vmVersion" : "15.0.2+7-27", - "warmupIterations" : 3, - "warmupTime" : "1 s", - "warmupBatchSize" : 1, - "measurementIterations" : 5, - "measurementTime" : "1 s", - "measurementBatchSize" : 1, - "primaryMetric" : { - "score" : 1.3096491241828958, - "scoreError" : 0.014737912737331728, - "scoreConfidence" : [ - 1.294911211445564, - 1.3243870369202275 - ], - "scorePercentiles" : { - "0.0" : 1.3034188937179496, - "50.0" : 1.310813791033587, - "90.0" : 1.3137283016042527, - "95.0" : 1.3137283016042527, - "99.0" : 1.3137283016042527, - "99.9" : 1.3137283016042527, - "99.99" : 1.3137283016042527, - "99.999" : 1.3137283016042527, - "99.9999" : 1.3137283016042527, - "100.0" : 1.3137283016042527 - }, - "scoreUnit" : "us/op", - "rawData" : [ - [ - 1.309336947001999, - 1.3109476875566903, - 1.3034188937179496, - 1.310813791033587, - 1.3137283016042527 - ] - ] - }, - "secondaryMetrics" : { - } - }, - { - "jmhVersion" : "1.22", - "benchmark" : "wtf.metio.yosql.benchmarks.common.jdbc.JdbcWrite.writeMultipleEntities", - "mode" : "avgt", - "threads" : 1, - "forks" : 1, - "jvm" : "/usr/java/openjdk-15/bin/java", - "jvmArgs" : [ - "-Dclassworlds.conf=/usr/share/maven/bin/m2.conf", - "-Dmaven.home=/usr/share/maven", - "-Dlibrary.jansi.path=/usr/share/maven/lib/jansi-native", - "-Dmaven.multiModuleProjectDirectory=/var/home/seb/git/metio/yosql" - ], - "jdkVersion" : "15.0.2", - "vmName" : "OpenJDK 64-Bit Server VM", - "vmVersion" : "15.0.2+7-27", - "warmupIterations" : 3, - "warmupTime" : "1 s", - "warmupBatchSize" : 1, - "measurementIterations" : 5, - "measurementTime" : "1 s", - "measurementBatchSize" : 1, - "primaryMetric" : { - "score" : 8.085801813872092, - "scoreError" : 4.152424224498591, - "scoreConfidence" : [ - 3.9333775893735003, - 12.238226038370684 - ], - "scorePercentiles" : { - "0.0" : 6.9496252432041805, - "50.0" : 7.882800228571429, - "90.0" : 9.504258571537175, - "95.0" : 9.504258571537175, - "99.0" : 9.504258571537175, - "99.9" : 9.504258571537175, - "99.99" : 9.504258571537175, - "99.999" : 9.504258571537175, - "99.9999" : 9.504258571537175, - "100.0" : 9.504258571537175 - }, - "scoreUnit" : "us/op", - "rawData" : [ - [ - 8.853711399060035, - 7.238613626987631, - 9.504258571537175, - 7.882800228571429, - 6.9496252432041805 - ] - ] - }, - "secondaryMetrics" : { - } - }, - { - "jmhVersion" : "1.22", - "benchmark" : "wtf.metio.yosql.benchmarks.common.jdbc.JdbcWrite.writeSingleEntity", - "mode" : "avgt", - "threads" : 1, - "forks" : 1, - "jvm" : "/usr/java/openjdk-15/bin/java", - "jvmArgs" : [ - "-Dclassworlds.conf=/usr/share/maven/bin/m2.conf", - "-Dmaven.home=/usr/share/maven", - "-Dlibrary.jansi.path=/usr/share/maven/lib/jansi-native", - "-Dmaven.multiModuleProjectDirectory=/var/home/seb/git/metio/yosql" - ], - "jdkVersion" : "15.0.2", - "vmName" : "OpenJDK 64-Bit Server VM", - "vmVersion" : "15.0.2+7-27", - "warmupIterations" : 3, - "warmupTime" : "1 s", - "warmupBatchSize" : 1, - "measurementIterations" : 5, - "measurementTime" : "1 s", - "measurementBatchSize" : 1, - "primaryMetric" : { - "score" : 4.053864360993833, - "scoreError" : 2.071637112026179, - "scoreConfidence" : [ - 1.982227248967654, - 6.125501473020012 - ], - "scorePercentiles" : { - "0.0" : 3.4762497436663873, - "50.0" : 4.192837316642701, - "90.0" : 4.589929748311059, - "95.0" : 4.589929748311059, - "99.0" : 4.589929748311059, - "99.9" : 4.589929748311059, - "99.99" : 4.589929748311059, - "99.999" : 4.589929748311059, - "99.9999" : 4.589929748311059, - "100.0" : 4.589929748311059 - }, - "scoreUnit" : "us/op", - "rawData" : [ - [ - 4.589929748311059, - 3.4988414960084517, - 4.192837316642701, - 4.51146350034057, - 3.4762497436663873 - ] - ] - }, - "secondaryMetrics" : { - } - } -] - - diff --git a/yosql-website/content/benchmarks/2021/yosql-benchmarks-jdbc.json b/yosql-website/content/benchmarks/2021/yosql-benchmarks-jdbc.json index fe5d11b2..eea1ff68 100644 --- a/yosql-website/content/benchmarks/2021/yosql-benchmarks-jdbc.json +++ b/yosql-website/content/benchmarks/2021/yosql-benchmarks-jdbc.json @@ -1,7 +1,7 @@ [ { "jmhVersion" : "1.22", - "benchmark" : "wtf.metio.yosql.benchmark.jdbc.JdbcReadBenchmarks.benchmarkReadingData", + "benchmark" : "wtf.metio.yosql.benchmark.jdbc.jul.JdbcJulRead.readComplexRelationship", "mode" : "avgt", "threads" : 1, "forks" : 1, @@ -22,32 +22,32 @@ "measurementTime" : "1 s", "measurementBatchSize" : 1, "primaryMetric" : { - "score" : 1.2990868025887812, - "scoreError" : 0.03300113220953418, + "score" : 119.37616571562003, + "scoreError" : 51.78209991395376, "scoreConfidence" : [ - 1.266085670379247, - 1.3320879347983154 + 67.59406580166628, + 171.1582656295738 ], "scorePercentiles" : { - "0.0" : 1.2910694551660216, - "50.0" : 1.2981999260143817, - "90.0" : 1.313140747451274, - "95.0" : 1.313140747451274, - "99.0" : 1.313140747451274, - "99.9" : 1.313140747451274, - "99.99" : 1.313140747451274, - "99.999" : 1.313140747451274, - "99.9999" : 1.313140747451274, - "100.0" : 1.313140747451274 + "0.0" : 111.93370039171796, + "50.0" : 114.41848467169984, + "90.0" : 143.31999799398196, + "95.0" : 143.31999799398196, + "99.0" : 143.31999799398196, + "99.9" : 143.31999799398196, + "99.99" : 143.31999799398196, + "99.999" : 143.31999799398196, + "99.9999" : 143.31999799398196, + "100.0" : 143.31999799398196 }, "scoreUnit" : "us/op", "rawData" : [ [ - 1.2910694551660216, - 1.2935151236887135, - 1.2995087606235147, - 1.2981999260143817, - 1.313140747451274 + 143.31999799398196, + 112.29045604580666, + 111.93370039171796, + 114.91818947489371, + 114.41848467169984 ] ] }, @@ -56,7 +56,7 @@ }, { "jmhVersion" : "1.22", - "benchmark" : "wtf.metio.yosql.benchmark.jdbc.JdbcSchemaBenchmarks.benchmarkSchemaCreate", + "benchmark" : "wtf.metio.yosql.benchmark.jdbc.jul.JdbcJulRead.readManyToOneRelation", "mode" : "avgt", "threads" : 1, "forks" : 1, @@ -77,32 +77,32 @@ "measurementTime" : "1 s", "measurementBatchSize" : 1, "primaryMetric" : { - "score" : 3.2752928151166785, - "scoreError" : 0.05699513191287578, + "score" : 116.12320470843649, + "scoreError" : 28.395275117153396, "scoreConfidence" : [ - 3.2182976832038026, - 3.3322879470295543 + 87.7279295912831, + 144.51847982558988 ], "scorePercentiles" : { - "0.0" : 3.2551627463424953, - "50.0" : 3.27535090172551, - "90.0" : 3.2958451675196154, - "95.0" : 3.2958451675196154, - "99.0" : 3.2958451675196154, - "99.9" : 3.2958451675196154, - "99.99" : 3.2958451675196154, - "99.999" : 3.2958451675196154, - "99.9999" : 3.2958451675196154, - "100.0" : 3.2958451675196154 + "0.0" : 105.28004463157895, + "50.0" : 116.28511266131845, + "90.0" : 124.69490686946764, + "95.0" : 124.69490686946764, + "99.0" : 124.69490686946764, + "99.9" : 124.69490686946764, + "99.99" : 124.69490686946764, + "99.999" : 124.69490686946764, + "99.9999" : 124.69490686946764, + "100.0" : 124.69490686946764 }, "scoreUnit" : "us/op", "rawData" : [ [ - 3.2958451675196154, - 3.279981861291846, - 3.270123398703923, - 3.2551627463424953, - 3.27535090172551 + 124.69490686946764, + 116.28511266131845, + 105.28004463157895, + 120.65746193750753, + 113.69849744230987 ] ] }, @@ -111,7 +111,7 @@ }, { "jmhVersion" : "1.22", - "benchmark" : "wtf.metio.yosql.benchmark.jdbc.JdbcSchemaBenchmarks.benchmarkSchemaDrop", + "benchmark" : "wtf.metio.yosql.benchmark.jdbc.jul.JdbcJulRead.readMultipleEntities", "mode" : "avgt", "threads" : 1, "forks" : 1, @@ -132,32 +132,32 @@ "measurementTime" : "1 s", "measurementBatchSize" : 1, "primaryMetric" : { - "score" : 1.0324673468653933, - "scoreError" : 0.01323340468134778, + "score" : 98.23269082826587, + "scoreError" : 28.027968782503883, "scoreConfidence" : [ - 1.0192339421840455, - 1.0457007515467411 + 70.204722045762, + 126.26065961076975 ], "scorePercentiles" : { - "0.0" : 1.0286256363423198, - "50.0" : 1.032719963116358, - "90.0" : 1.0375497010199763, - "95.0" : 1.0375497010199763, - "99.0" : 1.0375497010199763, - "99.9" : 1.0375497010199763, - "99.99" : 1.0375497010199763, - "99.999" : 1.0375497010199763, - "99.9999" : 1.0375497010199763, - "100.0" : 1.0375497010199763 + "0.0" : 93.49469187622698, + "50.0" : 95.48876837884285, + "90.0" : 111.15099766614803, + "95.0" : 111.15099766614803, + "99.0" : 111.15099766614803, + "99.9" : 111.15099766614803, + "99.99" : 111.15099766614803, + "99.999" : 111.15099766614803, + "99.9999" : 111.15099766614803, + "100.0" : 111.15099766614803 }, "scoreUnit" : "us/op", "rawData" : [ [ - 1.0286256363423198, - 1.0375497010199763, - 1.0333752710846797, - 1.0300661627636325, - 1.032719963116358 + 111.15099766614803, + 95.89178628954937, + 95.13720993056216, + 93.49469187622698, + 95.48876837884285 ] ] }, @@ -166,7 +166,7 @@ }, { "jmhVersion" : "1.22", - "benchmark" : "wtf.metio.yosql.benchmark.jdbc.JdbcWriteBenchmarks.benchmarkWritingData", + "benchmark" : "wtf.metio.yosql.benchmark.jdbc.jul.JdbcJulRead.readMultipleEntitiesBasedOnCondition", "mode" : "avgt", "threads" : 1, "forks" : 1, @@ -187,32 +187,1792 @@ "measurementTime" : "1 s", "measurementBatchSize" : 1, "primaryMetric" : { - "score" : 3.9452789548955858, - "scoreError" : 1.74912485817852, + "score" : 135.74645857106174, + "scoreError" : 74.98709067460815, "scoreConfidence" : [ - 2.196154096717066, - 5.694403813074105 + 60.75936789645358, + 210.7335492456699 ], "scorePercentiles" : { - "0.0" : 3.444511838792667, - "50.0" : 3.990520324619362, - "90.0" : 4.427773616424602, - "95.0" : 4.427773616424602, - "99.0" : 4.427773616424602, - "99.9" : 4.427773616424602, - "99.99" : 4.427773616424602, - "99.999" : 4.427773616424602, - "99.9999" : 4.427773616424602, - "100.0" : 4.427773616424602 + "0.0" : 123.2248043612172, + "50.0" : 128.32530895560689, + "90.0" : 170.3086809126511, + "95.0" : 170.3086809126511, + "99.0" : 170.3086809126511, + "99.9" : 170.3086809126511, + "99.99" : 170.3086809126511, + "99.999" : 170.3086809126511, + "99.9999" : 170.3086809126511, + "100.0" : 170.3086809126511 }, "scoreUnit" : "us/op", "rawData" : [ [ - 4.427773616424602, - 3.5198694105226114, - 4.343719584118684, - 3.990520324619362, - 3.444511838792667 + 170.3086809126511, + 127.08464383735705, + 129.7888547884765, + 128.32530895560689, + 123.2248043612172 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.22", + "benchmark" : "wtf.metio.yosql.benchmark.jdbc.jul.JdbcJulRead.readOneToManyRelation", + "mode" : "avgt", + "threads" : 1, + "forks" : 1, + "jvm" : "/usr/java/openjdk-15/bin/java", + "jvmArgs" : [ + "-Dclassworlds.conf=/usr/share/maven/bin/m2.conf", + "-Dmaven.home=/usr/share/maven", + "-Dlibrary.jansi.path=/usr/share/maven/lib/jansi-native", + "-Dmaven.multiModuleProjectDirectory=/var/home/seb/git/metio/yosql" + ], + "jdkVersion" : "15.0.2", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "15.0.2+7-27", + "warmupIterations" : 3, + "warmupTime" : "1 s", + "warmupBatchSize" : 1, + "measurementIterations" : 5, + "measurementTime" : "1 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 126.47960440261545, + "scoreError" : 11.220242423025942, + "scoreConfidence" : [ + 115.25936197958951, + 137.6998468256414 + ], + "scorePercentiles" : { + "0.0" : 123.54963624011857, + "50.0" : 126.80681399771777, + "90.0" : 130.79398378449065, + "95.0" : 130.79398378449065, + "99.0" : 130.79398378449065, + "99.9" : 130.79398378449065, + "99.99" : 130.79398378449065, + "99.999" : 130.79398378449065, + "99.9999" : 130.79398378449065, + "100.0" : 130.79398378449065 + }, + "scoreUnit" : "us/op", + "rawData" : [ + [ + 123.54963624011857, + 126.80681399771777, + 130.79398378449065, + 127.23498600686935, + 124.01260198388097 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.22", + "benchmark" : "wtf.metio.yosql.benchmark.jdbc.jul.JdbcJulRead.readSingleEntityByPrimaryKey", + "mode" : "avgt", + "threads" : 1, + "forks" : 1, + "jvm" : "/usr/java/openjdk-15/bin/java", + "jvmArgs" : [ + "-Dclassworlds.conf=/usr/share/maven/bin/m2.conf", + "-Dmaven.home=/usr/share/maven", + "-Dlibrary.jansi.path=/usr/share/maven/lib/jansi-native", + "-Dmaven.multiModuleProjectDirectory=/var/home/seb/git/metio/yosql" + ], + "jdkVersion" : "15.0.2", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "15.0.2+7-27", + "warmupIterations" : 3, + "warmupTime" : "1 s", + "warmupBatchSize" : 1, + "measurementIterations" : 5, + "measurementTime" : "1 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 135.41541515546768, + "scoreError" : 17.053752389653997, + "scoreConfidence" : [ + 118.36166276581369, + 152.46916754512168 + ], + "scorePercentiles" : { + "0.0" : 131.90774073585652, + "50.0" : 132.9454654439128, + "90.0" : 142.32030108138872, + "95.0" : 142.32030108138872, + "99.0" : 142.32030108138872, + "99.9" : 142.32030108138872, + "99.99" : 142.32030108138872, + "99.999" : 142.32030108138872, + "99.9999" : 142.32030108138872, + "100.0" : 142.32030108138872 + }, + "scoreUnit" : "us/op", + "rawData" : [ + [ + 142.32030108138872, + 131.90774073585652, + 132.9454654439128, + 132.50786541263744, + 137.39570310354298 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.22", + "benchmark" : "wtf.metio.yosql.benchmark.jdbc.jul.JdbcJulWrite.deleteSingleEntityByPrimaryKey", + "mode" : "avgt", + "threads" : 1, + "forks" : 1, + "jvm" : "/usr/java/openjdk-15/bin/java", + "jvmArgs" : [ + "-Dclassworlds.conf=/usr/share/maven/bin/m2.conf", + "-Dmaven.home=/usr/share/maven", + "-Dlibrary.jansi.path=/usr/share/maven/lib/jansi-native", + "-Dmaven.multiModuleProjectDirectory=/var/home/seb/git/metio/yosql" + ], + "jdkVersion" : "15.0.2", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "15.0.2+7-27", + "warmupIterations" : 3, + "warmupTime" : "1 s", + "warmupBatchSize" : 1, + "measurementIterations" : 5, + "measurementTime" : "1 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 132.35324433311592, + "scoreError" : 6.377575051414973, + "scoreConfidence" : [ + 125.97566928170095, + 138.7308193845309 + ], + "scorePercentiles" : { + "0.0" : 131.03967024760905, + "50.0" : 132.00982011350138, + "90.0" : 135.20432900783996, + "95.0" : 135.20432900783996, + "99.0" : 135.20432900783996, + "99.9" : 135.20432900783996, + "99.99" : 135.20432900783996, + "99.999" : 135.20432900783996, + "99.9999" : 135.20432900783996, + "100.0" : 135.20432900783996 + }, + "scoreUnit" : "us/op", + "rawData" : [ + [ + 132.00982011350138, + 131.03967024760905, + 135.20432900783996, + 131.3770912912124, + 132.13531100541684 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.22", + "benchmark" : "wtf.metio.yosql.benchmark.jdbc.jul.JdbcJulWrite.writeMultipleEntities", + "mode" : "avgt", + "threads" : 1, + "forks" : 1, + "jvm" : "/usr/java/openjdk-15/bin/java", + "jvmArgs" : [ + "-Dclassworlds.conf=/usr/share/maven/bin/m2.conf", + "-Dmaven.home=/usr/share/maven", + "-Dlibrary.jansi.path=/usr/share/maven/lib/jansi-native", + "-Dmaven.multiModuleProjectDirectory=/var/home/seb/git/metio/yosql" + ], + "jdkVersion" : "15.0.2", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "15.0.2+7-27", + "warmupIterations" : 3, + "warmupTime" : "1 s", + "warmupBatchSize" : 1, + "measurementIterations" : 5, + "measurementTime" : "1 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 157.76068933780158, + "scoreError" : 7.457448195417127, + "scoreConfidence" : [ + 150.30324114238445, + 165.2181375332187 + ], + "scorePercentiles" : { + "0.0" : 155.32848128591397, + "50.0" : 158.04890440827936, + "90.0" : 160.08301808578744, + "95.0" : 160.08301808578744, + "99.0" : 160.08301808578744, + "99.9" : 160.08301808578744, + "99.99" : 160.08301808578744, + "99.999" : 160.08301808578744, + "99.9999" : 160.08301808578744, + "100.0" : 160.08301808578744 + }, + "scoreUnit" : "us/op", + "rawData" : [ + [ + 160.08301808578744, + 159.01223640699524, + 156.3308065020319, + 155.32848128591397, + 158.04890440827936 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.22", + "benchmark" : "wtf.metio.yosql.benchmark.jdbc.jul.JdbcJulWrite.writeSingleEntity", + "mode" : "avgt", + "threads" : 1, + "forks" : 1, + "jvm" : "/usr/java/openjdk-15/bin/java", + "jvmArgs" : [ + "-Dclassworlds.conf=/usr/share/maven/bin/m2.conf", + "-Dmaven.home=/usr/share/maven", + "-Dlibrary.jansi.path=/usr/share/maven/lib/jansi-native", + "-Dmaven.multiModuleProjectDirectory=/var/home/seb/git/metio/yosql" + ], + "jdkVersion" : "15.0.2", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "15.0.2+7-27", + "warmupIterations" : 3, + "warmupTime" : "1 s", + "warmupBatchSize" : 1, + "measurementIterations" : 5, + "measurementTime" : "1 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 148.4807636180427, + "scoreError" : 9.850866216766516, + "scoreConfidence" : [ + 138.62989740127617, + 158.3316298348092 + ], + "scorePercentiles" : { + "0.0" : 144.5711102919919, + "50.0" : 149.41177024200778, + "90.0" : 151.14217558174676, + "95.0" : 151.14217558174676, + "99.0" : 151.14217558174676, + "99.9" : 151.14217558174676, + "99.99" : 151.14217558174676, + "99.999" : 151.14217558174676, + "99.9999" : 151.14217558174676, + "100.0" : 151.14217558174676 + }, + "scoreUnit" : "us/op", + "rawData" : [ + [ + 151.14217558174676, + 147.43672862617925, + 149.8420333482877, + 144.5711102919919, + 149.41177024200778 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.22", + "benchmark" : "wtf.metio.yosql.benchmark.jdbc.log4j.JdbcLog4jRead.readComplexRelationship", + "mode" : "avgt", + "threads" : 1, + "forks" : 1, + "jvm" : "/usr/java/openjdk-15/bin/java", + "jvmArgs" : [ + "-Dclassworlds.conf=/usr/share/maven/bin/m2.conf", + "-Dmaven.home=/usr/share/maven", + "-Dlibrary.jansi.path=/usr/share/maven/lib/jansi-native", + "-Dmaven.multiModuleProjectDirectory=/var/home/seb/git/metio/yosql" + ], + "jdkVersion" : "15.0.2", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "15.0.2+7-27", + "warmupIterations" : 3, + "warmupTime" : "1 s", + "warmupBatchSize" : 1, + "measurementIterations" : 5, + "measurementTime" : "1 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 112.37073236765598, + "scoreError" : 25.249921597149296, + "scoreConfidence" : [ + 87.12081077050668, + 137.62065396480529 + ], + "scorePercentiles" : { + "0.0" : 104.68932710183846, + "50.0" : 110.32533502482075, + "90.0" : 122.237694892168, + "95.0" : 122.237694892168, + "99.0" : 122.237694892168, + "99.9" : 122.237694892168, + "99.99" : 122.237694892168, + "99.999" : 122.237694892168, + "99.9999" : 122.237694892168, + "100.0" : 122.237694892168 + }, + "scoreUnit" : "us/op", + "rawData" : [ + [ + 122.237694892168, + 109.90904134366924, + 110.32533502482075, + 114.69226347578348, + 104.68932710183846 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.22", + "benchmark" : "wtf.metio.yosql.benchmark.jdbc.log4j.JdbcLog4jRead.readManyToOneRelation", + "mode" : "avgt", + "threads" : 1, + "forks" : 1, + "jvm" : "/usr/java/openjdk-15/bin/java", + "jvmArgs" : [ + "-Dclassworlds.conf=/usr/share/maven/bin/m2.conf", + "-Dmaven.home=/usr/share/maven", + "-Dlibrary.jansi.path=/usr/share/maven/lib/jansi-native", + "-Dmaven.multiModuleProjectDirectory=/var/home/seb/git/metio/yosql" + ], + "jdkVersion" : "15.0.2", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "15.0.2+7-27", + "warmupIterations" : 3, + "warmupTime" : "1 s", + "warmupBatchSize" : 1, + "measurementIterations" : 5, + "measurementTime" : "1 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 92.50187163091996, + "scoreError" : 42.302120953823604, + "scoreConfidence" : [ + 50.19975067709636, + 134.80399258474358 + ], + "scorePercentiles" : { + "0.0" : 84.66006229896733, + "50.0" : 89.53063023630504, + "90.0" : 111.34804085949678, + "95.0" : 111.34804085949678, + "99.0" : 111.34804085949678, + "99.9" : 111.34804085949678, + "99.99" : 111.34804085949678, + "99.999" : 111.34804085949678, + "99.9999" : 111.34804085949678, + "100.0" : 111.34804085949678 + }, + "scoreUnit" : "us/op", + "rawData" : [ + [ + 89.53063023630504, + 111.34804085949678, + 84.95127044933322, + 84.66006229896733, + 92.01935431049743 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.22", + "benchmark" : "wtf.metio.yosql.benchmark.jdbc.log4j.JdbcLog4jRead.readMultipleEntities", + "mode" : "avgt", + "threads" : 1, + "forks" : 1, + "jvm" : "/usr/java/openjdk-15/bin/java", + "jvmArgs" : [ + "-Dclassworlds.conf=/usr/share/maven/bin/m2.conf", + "-Dmaven.home=/usr/share/maven", + "-Dlibrary.jansi.path=/usr/share/maven/lib/jansi-native", + "-Dmaven.multiModuleProjectDirectory=/var/home/seb/git/metio/yosql" + ], + "jdkVersion" : "15.0.2", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "15.0.2+7-27", + "warmupIterations" : 3, + "warmupTime" : "1 s", + "warmupBatchSize" : 1, + "measurementIterations" : 5, + "measurementTime" : "1 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 57.62461455099873, + "scoreError" : 8.48068330493667, + "scoreConfidence" : [ + 49.14393124606206, + 66.1052978559354 + ], + "scorePercentiles" : { + "0.0" : 54.703566646611606, + "50.0" : 57.184014122355634, + "90.0" : 59.953911701234865, + "95.0" : 59.953911701234865, + "99.0" : 59.953911701234865, + "99.9" : 59.953911701234865, + "99.99" : 59.953911701234865, + "99.999" : 59.953911701234865, + "99.9999" : 59.953911701234865, + "100.0" : 59.953911701234865 + }, + "scoreUnit" : "us/op", + "rawData" : [ + [ + 56.60501205432937, + 59.676568230462195, + 54.703566646611606, + 59.953911701234865, + 57.184014122355634 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.22", + "benchmark" : "wtf.metio.yosql.benchmark.jdbc.log4j.JdbcLog4jRead.readMultipleEntitiesBasedOnCondition", + "mode" : "avgt", + "threads" : 1, + "forks" : 1, + "jvm" : "/usr/java/openjdk-15/bin/java", + "jvmArgs" : [ + "-Dclassworlds.conf=/usr/share/maven/bin/m2.conf", + "-Dmaven.home=/usr/share/maven", + "-Dlibrary.jansi.path=/usr/share/maven/lib/jansi-native", + "-Dmaven.multiModuleProjectDirectory=/var/home/seb/git/metio/yosql" + ], + "jdkVersion" : "15.0.2", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "15.0.2+7-27", + "warmupIterations" : 3, + "warmupTime" : "1 s", + "warmupBatchSize" : 1, + "measurementIterations" : 5, + "measurementTime" : "1 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 90.72817852360279, + "scoreError" : 14.976818082470626, + "scoreConfidence" : [ + 75.75136044113216, + 105.70499660607342 + ], + "scorePercentiles" : { + "0.0" : 86.3253148100506, + "50.0" : 89.19628601997147, + "90.0" : 95.59446558704454, + "95.0" : 95.59446558704454, + "99.0" : 95.59446558704454, + "99.9" : 95.59446558704454, + "99.99" : 95.59446558704454, + "99.999" : 95.59446558704454, + "99.9999" : 95.59446558704454, + "100.0" : 95.59446558704454 + }, + "scoreUnit" : "us/op", + "rawData" : [ + [ + 93.95752549298277, + 86.3253148100506, + 88.5673007079646, + 89.19628601997147, + 95.59446558704454 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.22", + "benchmark" : "wtf.metio.yosql.benchmark.jdbc.log4j.JdbcLog4jRead.readOneToManyRelation", + "mode" : "avgt", + "threads" : 1, + "forks" : 1, + "jvm" : "/usr/java/openjdk-15/bin/java", + "jvmArgs" : [ + "-Dclassworlds.conf=/usr/share/maven/bin/m2.conf", + "-Dmaven.home=/usr/share/maven", + "-Dlibrary.jansi.path=/usr/share/maven/lib/jansi-native", + "-Dmaven.multiModuleProjectDirectory=/var/home/seb/git/metio/yosql" + ], + "jdkVersion" : "15.0.2", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "15.0.2+7-27", + "warmupIterations" : 3, + "warmupTime" : "1 s", + "warmupBatchSize" : 1, + "measurementIterations" : 5, + "measurementTime" : "1 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 85.69951786945339, + "scoreError" : 15.87482912473031, + "scoreConfidence" : [ + 69.82468874472308, + 101.5743469941837 + ], + "scorePercentiles" : { + "0.0" : 80.23279438427598, + "50.0" : 87.82514191139026, + "90.0" : 89.9094847740237, + "95.0" : 89.9094847740237, + "99.0" : 89.9094847740237, + "99.9" : 89.9094847740237, + "99.99" : 89.9094847740237, + "99.999" : 89.9094847740237, + "99.9999" : 89.9094847740237, + "100.0" : 89.9094847740237 + }, + "scoreUnit" : "us/op", + "rawData" : [ + [ + 80.23279438427598, + 87.82514191139026, + 89.9094847740237, + 88.04717883427799, + 82.48298944329898 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.22", + "benchmark" : "wtf.metio.yosql.benchmark.jdbc.log4j.JdbcLog4jRead.readSingleEntityByPrimaryKey", + "mode" : "avgt", + "threads" : 1, + "forks" : 1, + "jvm" : "/usr/java/openjdk-15/bin/java", + "jvmArgs" : [ + "-Dclassworlds.conf=/usr/share/maven/bin/m2.conf", + "-Dmaven.home=/usr/share/maven", + "-Dlibrary.jansi.path=/usr/share/maven/lib/jansi-native", + "-Dmaven.multiModuleProjectDirectory=/var/home/seb/git/metio/yosql" + ], + "jdkVersion" : "15.0.2", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "15.0.2+7-27", + "warmupIterations" : 3, + "warmupTime" : "1 s", + "warmupBatchSize" : 1, + "measurementIterations" : 5, + "measurementTime" : "1 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 85.1079865409582, + "scoreError" : 22.054467624298702, + "scoreConfidence" : [ + 63.05351891665949, + 107.16245416525689 + ], + "scorePercentiles" : { + "0.0" : 79.19365638494756, + "50.0" : 84.20712126957956, + "90.0" : 93.44409688872278, + "95.0" : 93.44409688872278, + "99.0" : 93.44409688872278, + "99.9" : 93.44409688872278, + "99.99" : 93.44409688872278, + "99.999" : 93.44409688872278, + "99.9999" : 93.44409688872278, + "100.0" : 93.44409688872278 + }, + "scoreUnit" : "us/op", + "rawData" : [ + [ + 93.44409688872278, + 87.86730909090909, + 84.20712126957956, + 79.19365638494756, + 80.82774907063197 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.22", + "benchmark" : "wtf.metio.yosql.benchmark.jdbc.log4j.JdbcLog4jWrite.deleteSingleEntityByPrimaryKey", + "mode" : "avgt", + "threads" : 1, + "forks" : 1, + "jvm" : "/usr/java/openjdk-15/bin/java", + "jvmArgs" : [ + "-Dclassworlds.conf=/usr/share/maven/bin/m2.conf", + "-Dmaven.home=/usr/share/maven", + "-Dlibrary.jansi.path=/usr/share/maven/lib/jansi-native", + "-Dmaven.multiModuleProjectDirectory=/var/home/seb/git/metio/yosql" + ], + "jdkVersion" : "15.0.2", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "15.0.2+7-27", + "warmupIterations" : 3, + "warmupTime" : "1 s", + "warmupBatchSize" : 1, + "measurementIterations" : 5, + "measurementTime" : "1 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 85.76848616609814, + "scoreError" : 55.57915910646582, + "scoreConfidence" : [ + 30.18932705963232, + 141.34764527256397 + ], + "scorePercentiles" : { + "0.0" : 75.07613179225457, + "50.0" : 79.90447431493169, + "90.0" : 109.93661006546645, + "95.0" : 109.93661006546645, + "99.0" : 109.93661006546645, + "99.9" : 109.93661006546645, + "99.99" : 109.93661006546645, + "99.999" : 109.93661006546645, + "99.9999" : 109.93661006546645, + "100.0" : 109.93661006546645 + }, + "scoreUnit" : "us/op", + "rawData" : [ + [ + 109.93661006546645, + 75.07613179225457, + 87.94381368541531, + 79.90447431493169, + 75.9814009724227 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.22", + "benchmark" : "wtf.metio.yosql.benchmark.jdbc.log4j.JdbcLog4jWrite.writeMultipleEntities", + "mode" : "avgt", + "threads" : 1, + "forks" : 1, + "jvm" : "/usr/java/openjdk-15/bin/java", + "jvmArgs" : [ + "-Dclassworlds.conf=/usr/share/maven/bin/m2.conf", + "-Dmaven.home=/usr/share/maven", + "-Dlibrary.jansi.path=/usr/share/maven/lib/jansi-native", + "-Dmaven.multiModuleProjectDirectory=/var/home/seb/git/metio/yosql" + ], + "jdkVersion" : "15.0.2", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "15.0.2+7-27", + "warmupIterations" : 3, + "warmupTime" : "1 s", + "warmupBatchSize" : 1, + "measurementIterations" : 5, + "measurementTime" : "1 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 80.33152962804783, + "scoreError" : 34.603672366822586, + "scoreConfidence" : [ + 45.727857261225246, + 114.93520199487043 + ], + "scorePercentiles" : { + "0.0" : 66.68433051073477, + "50.0" : 79.84828615900383, + "90.0" : 90.89136033469823, + "95.0" : 90.89136033469823, + "99.0" : 90.89136033469823, + "99.9" : 90.89136033469823, + "99.99" : 90.89136033469823, + "99.999" : 90.89136033469823, + "99.9999" : 90.89136033469823, + "100.0" : 90.89136033469823 + }, + "scoreUnit" : "us/op", + "rawData" : [ + [ + 66.68433051073477, + 79.06217509881422, + 79.84828615900383, + 90.89136033469823, + 85.17149603698812 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.22", + "benchmark" : "wtf.metio.yosql.benchmark.jdbc.log4j.JdbcLog4jWrite.writeSingleEntity", + "mode" : "avgt", + "threads" : 1, + "forks" : 1, + "jvm" : "/usr/java/openjdk-15/bin/java", + "jvmArgs" : [ + "-Dclassworlds.conf=/usr/share/maven/bin/m2.conf", + "-Dmaven.home=/usr/share/maven", + "-Dlibrary.jansi.path=/usr/share/maven/lib/jansi-native", + "-Dmaven.multiModuleProjectDirectory=/var/home/seb/git/metio/yosql" + ], + "jdkVersion" : "15.0.2", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "15.0.2+7-27", + "warmupIterations" : 3, + "warmupTime" : "1 s", + "warmupBatchSize" : 1, + "measurementIterations" : 5, + "measurementTime" : "1 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 80.25214195740946, + "scoreError" : 27.672781259771817, + "scoreConfidence" : [ + 52.57936069763765, + 107.92492321718129 + ], + "scorePercentiles" : { + "0.0" : 69.86401421107628, + "50.0" : 80.10060699983983, + "90.0" : 87.14374105508404, + "95.0" : 87.14374105508404, + "99.0" : 87.14374105508404, + "99.9" : 87.14374105508404, + "99.99" : 87.14374105508404, + "99.999" : 87.14374105508404, + "99.9999" : 87.14374105508404, + "100.0" : 87.14374105508404 + }, + "scoreUnit" : "us/op", + "rawData" : [ + [ + 69.86401421107628, + 87.14374105508404, + 80.10060699983983, + 77.35915314409468, + 86.79319437695244 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.22", + "benchmark" : "wtf.metio.yosql.benchmark.jdbc.noop.JdbcRead.readComplexRelationship", + "mode" : "avgt", + "threads" : 1, + "forks" : 1, + "jvm" : "/usr/java/openjdk-15/bin/java", + "jvmArgs" : [ + "-Dclassworlds.conf=/usr/share/maven/bin/m2.conf", + "-Dmaven.home=/usr/share/maven", + "-Dlibrary.jansi.path=/usr/share/maven/lib/jansi-native", + "-Dmaven.multiModuleProjectDirectory=/var/home/seb/git/metio/yosql" + ], + "jdkVersion" : "15.0.2", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "15.0.2+7-27", + "warmupIterations" : 3, + "warmupTime" : "1 s", + "warmupBatchSize" : 1, + "measurementIterations" : 5, + "measurementTime" : "1 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.1295852919882794, + "scoreError" : 0.19379056516661464, + "scoreConfidence" : [ + 1.9357947268216646, + 2.323375857154894 + ], + "scorePercentiles" : { + "0.0" : 2.0968490820389074, + "50.0" : 2.1087420370280565, + "90.0" : 2.2182857092161616, + "95.0" : 2.2182857092161616, + "99.0" : 2.2182857092161616, + "99.9" : 2.2182857092161616, + "99.99" : 2.2182857092161616, + "99.999" : 2.2182857092161616, + "99.9999" : 2.2182857092161616, + "100.0" : 2.2182857092161616 + }, + "scoreUnit" : "us/op", + "rawData" : [ + [ + 2.120407522520708, + 2.2182857092161616, + 2.1036421091375628, + 2.0968490820389074, + 2.1087420370280565 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.22", + "benchmark" : "wtf.metio.yosql.benchmark.jdbc.noop.JdbcRead.readManyToOneRelation", + "mode" : "avgt", + "threads" : 1, + "forks" : 1, + "jvm" : "/usr/java/openjdk-15/bin/java", + "jvmArgs" : [ + "-Dclassworlds.conf=/usr/share/maven/bin/m2.conf", + "-Dmaven.home=/usr/share/maven", + "-Dlibrary.jansi.path=/usr/share/maven/lib/jansi-native", + "-Dmaven.multiModuleProjectDirectory=/var/home/seb/git/metio/yosql" + ], + "jdkVersion" : "15.0.2", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "15.0.2+7-27", + "warmupIterations" : 3, + "warmupTime" : "1 s", + "warmupBatchSize" : 1, + "measurementIterations" : 5, + "measurementTime" : "1 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 1.4951328157773927, + "scoreError" : 0.012714344437583012, + "scoreConfidence" : [ + 1.4824184713398096, + 1.5078471602149757 + ], + "scorePercentiles" : { + "0.0" : 1.4907054756237341, + "50.0" : 1.4941384813038736, + "90.0" : 1.4990756254028208, + "95.0" : 1.4990756254028208, + "99.0" : 1.4990756254028208, + "99.9" : 1.4990756254028208, + "99.99" : 1.4990756254028208, + "99.999" : 1.4990756254028208, + "99.9999" : 1.4990756254028208, + "100.0" : 1.4990756254028208 + }, + "scoreUnit" : "us/op", + "rawData" : [ + [ + 1.4907054756237341, + 1.4990756254028208, + 1.4976583334206788, + 1.494086163135856, + 1.4941384813038736 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.22", + "benchmark" : "wtf.metio.yosql.benchmark.jdbc.noop.JdbcRead.readMultipleEntities", + "mode" : "avgt", + "threads" : 1, + "forks" : 1, + "jvm" : "/usr/java/openjdk-15/bin/java", + "jvmArgs" : [ + "-Dclassworlds.conf=/usr/share/maven/bin/m2.conf", + "-Dmaven.home=/usr/share/maven", + "-Dlibrary.jansi.path=/usr/share/maven/lib/jansi-native", + "-Dmaven.multiModuleProjectDirectory=/var/home/seb/git/metio/yosql" + ], + "jdkVersion" : "15.0.2", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "15.0.2+7-27", + "warmupIterations" : 3, + "warmupTime" : "1 s", + "warmupBatchSize" : 1, + "measurementIterations" : 5, + "measurementTime" : "1 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 1.0244754602476966, + "scoreError" : 0.014735151652949013, + "scoreConfidence" : [ + 1.0097403085947476, + 1.0392106119006457 + ], + "scorePercentiles" : { + "0.0" : 1.0196828439238939, + "50.0" : 1.023830633133484, + "90.0" : 1.0299539863306975, + "95.0" : 1.0299539863306975, + "99.0" : 1.0299539863306975, + "99.9" : 1.0299539863306975, + "99.99" : 1.0299539863306975, + "99.999" : 1.0299539863306975, + "99.9999" : 1.0299539863306975, + "100.0" : 1.0299539863306975 + }, + "scoreUnit" : "us/op", + "rawData" : [ + [ + 1.0196828439238939, + 1.0228465638659294, + 1.026063273984478, + 1.0299539863306975, + 1.023830633133484 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.22", + "benchmark" : "wtf.metio.yosql.benchmark.jdbc.noop.JdbcRead.readMultipleEntitiesBasedOnCondition", + "mode" : "avgt", + "threads" : 1, + "forks" : 1, + "jvm" : "/usr/java/openjdk-15/bin/java", + "jvmArgs" : [ + "-Dclassworlds.conf=/usr/share/maven/bin/m2.conf", + "-Dmaven.home=/usr/share/maven", + "-Dlibrary.jansi.path=/usr/share/maven/lib/jansi-native", + "-Dmaven.multiModuleProjectDirectory=/var/home/seb/git/metio/yosql" + ], + "jdkVersion" : "15.0.2", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "15.0.2+7-27", + "warmupIterations" : 3, + "warmupTime" : "1 s", + "warmupBatchSize" : 1, + "measurementIterations" : 5, + "measurementTime" : "1 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 1.3882065264929615, + "scoreError" : 0.040076269119577485, + "scoreConfidence" : [ + 1.348130257373384, + 1.428282795612539 + ], + "scorePercentiles" : { + "0.0" : 1.3803863371920493, + "50.0" : 1.3844237399107733, + "90.0" : 1.4064899028820381, + "95.0" : 1.4064899028820381, + "99.0" : 1.4064899028820381, + "99.9" : 1.4064899028820381, + "99.99" : 1.4064899028820381, + "99.999" : 1.4064899028820381, + "99.9999" : 1.4064899028820381, + "100.0" : 1.4064899028820381 + }, + "scoreUnit" : "us/op", + "rawData" : [ + [ + 1.3844237399107733, + 1.3803863371920493, + 1.4064899028820381, + 1.3856469139976086, + 1.384085738482338 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.22", + "benchmark" : "wtf.metio.yosql.benchmark.jdbc.noop.JdbcRead.readOneToManyRelation", + "mode" : "avgt", + "threads" : 1, + "forks" : 1, + "jvm" : "/usr/java/openjdk-15/bin/java", + "jvmArgs" : [ + "-Dclassworlds.conf=/usr/share/maven/bin/m2.conf", + "-Dmaven.home=/usr/share/maven", + "-Dlibrary.jansi.path=/usr/share/maven/lib/jansi-native", + "-Dmaven.multiModuleProjectDirectory=/var/home/seb/git/metio/yosql" + ], + "jdkVersion" : "15.0.2", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "15.0.2+7-27", + "warmupIterations" : 3, + "warmupTime" : "1 s", + "warmupBatchSize" : 1, + "measurementIterations" : 5, + "measurementTime" : "1 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 1.2455234071607364, + "scoreError" : 0.030463679984974863, + "scoreConfidence" : [ + 1.2150597271757615, + 1.2759870871457113 + ], + "scorePercentiles" : { + "0.0" : 1.235265808964743, + "50.0" : 1.2435444257109607, + "90.0" : 1.2564713817657376, + "95.0" : 1.2564713817657376, + "99.0" : 1.2564713817657376, + "99.9" : 1.2564713817657376, + "99.99" : 1.2564713817657376, + "99.999" : 1.2564713817657376, + "99.9999" : 1.2564713817657376, + "100.0" : 1.2564713817657376 + }, + "scoreUnit" : "us/op", + "rawData" : [ + [ + 1.2435444257109607, + 1.2493718405284242, + 1.235265808964743, + 1.2564713817657376, + 1.2429635788338167 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.22", + "benchmark" : "wtf.metio.yosql.benchmark.jdbc.noop.JdbcRead.readSingleEntityByPrimaryKey", + "mode" : "avgt", + "threads" : 1, + "forks" : 1, + "jvm" : "/usr/java/openjdk-15/bin/java", + "jvmArgs" : [ + "-Dclassworlds.conf=/usr/share/maven/bin/m2.conf", + "-Dmaven.home=/usr/share/maven", + "-Dlibrary.jansi.path=/usr/share/maven/lib/jansi-native", + "-Dmaven.multiModuleProjectDirectory=/var/home/seb/git/metio/yosql" + ], + "jdkVersion" : "15.0.2", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "15.0.2+7-27", + "warmupIterations" : 3, + "warmupTime" : "1 s", + "warmupBatchSize" : 1, + "measurementIterations" : 5, + "measurementTime" : "1 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 1.115555834804588, + "scoreError" : 0.044421551059778255, + "scoreConfidence" : [ + 1.0711342837448097, + 1.1599773858643663 + ], + "scorePercentiles" : { + "0.0" : 1.1022156339162816, + "50.0" : 1.110913763917645, + "90.0" : 1.1297160112416664, + "95.0" : 1.1297160112416664, + "99.0" : 1.1297160112416664, + "99.9" : 1.1297160112416664, + "99.99" : 1.1297160112416664, + "99.999" : 1.1297160112416664, + "99.9999" : 1.1297160112416664, + "100.0" : 1.1297160112416664 + }, + "scoreUnit" : "us/op", + "rawData" : [ + [ + 1.1022156339162816, + 1.1297160112416664, + 1.1095610262076556, + 1.110913763917645, + 1.1253727387396917 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.22", + "benchmark" : "wtf.metio.yosql.benchmark.jdbc.noop.JdbcWrite.deleteSingleEntityByPrimaryKey", + "mode" : "avgt", + "threads" : 1, + "forks" : 1, + "jvm" : "/usr/java/openjdk-15/bin/java", + "jvmArgs" : [ + "-Dclassworlds.conf=/usr/share/maven/bin/m2.conf", + "-Dmaven.home=/usr/share/maven", + "-Dlibrary.jansi.path=/usr/share/maven/lib/jansi-native", + "-Dmaven.multiModuleProjectDirectory=/var/home/seb/git/metio/yosql" + ], + "jdkVersion" : "15.0.2", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "15.0.2+7-27", + "warmupIterations" : 3, + "warmupTime" : "1 s", + "warmupBatchSize" : 1, + "measurementIterations" : 5, + "measurementTime" : "1 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 1.3214101739080335, + "scoreError" : 0.051293058677059335, + "scoreConfidence" : [ + 1.2701171152309743, + 1.3727032325850927 + ], + "scorePercentiles" : { + "0.0" : 1.3077637770574089, + "50.0" : 1.3255790889089174, + "90.0" : 1.338939045826411, + "95.0" : 1.338939045826411, + "99.0" : 1.338939045826411, + "99.9" : 1.338939045826411, + "99.99" : 1.338939045826411, + "99.999" : 1.338939045826411, + "99.9999" : 1.338939045826411, + "100.0" : 1.338939045826411 + }, + "scoreUnit" : "us/op", + "rawData" : [ + [ + 1.3077637770574089, + 1.338939045826411, + 1.3265080878978628, + 1.3082608698495664, + 1.3255790889089174 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.22", + "benchmark" : "wtf.metio.yosql.benchmark.jdbc.noop.JdbcWrite.writeMultipleEntities", + "mode" : "avgt", + "threads" : 1, + "forks" : 1, + "jvm" : "/usr/java/openjdk-15/bin/java", + "jvmArgs" : [ + "-Dclassworlds.conf=/usr/share/maven/bin/m2.conf", + "-Dmaven.home=/usr/share/maven", + "-Dlibrary.jansi.path=/usr/share/maven/lib/jansi-native", + "-Dmaven.multiModuleProjectDirectory=/var/home/seb/git/metio/yosql" + ], + "jdkVersion" : "15.0.2", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "15.0.2+7-27", + "warmupIterations" : 3, + "warmupTime" : "1 s", + "warmupBatchSize" : 1, + "measurementIterations" : 5, + "measurementTime" : "1 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 8.025554114732268, + "scoreError" : 3.700807540300339, + "scoreConfidence" : [ + 4.324746574431929, + 11.726361655032607 + ], + "scorePercentiles" : { + "0.0" : 7.012007248916869, + "50.0" : 7.742063786963926, + "90.0" : 9.530750009529617, + "95.0" : 9.530750009529617, + "99.0" : 9.530750009529617, + "99.9" : 9.530750009529617, + "99.99" : 9.530750009529617, + "99.999" : 9.530750009529617, + "99.9999" : 9.530750009529617, + "100.0" : 9.530750009529617 + }, + "scoreUnit" : "us/op", + "rawData" : [ + [ + 8.308667605423189, + 7.534281922827741, + 7.742063786963926, + 9.530750009529617, + 7.012007248916869 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.22", + "benchmark" : "wtf.metio.yosql.benchmark.jdbc.noop.JdbcWrite.writeSingleEntity", + "mode" : "avgt", + "threads" : 1, + "forks" : 1, + "jvm" : "/usr/java/openjdk-15/bin/java", + "jvmArgs" : [ + "-Dclassworlds.conf=/usr/share/maven/bin/m2.conf", + "-Dmaven.home=/usr/share/maven", + "-Dlibrary.jansi.path=/usr/share/maven/lib/jansi-native", + "-Dmaven.multiModuleProjectDirectory=/var/home/seb/git/metio/yosql" + ], + "jdkVersion" : "15.0.2", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "15.0.2+7-27", + "warmupIterations" : 3, + "warmupTime" : "1 s", + "warmupBatchSize" : 1, + "measurementIterations" : 5, + "measurementTime" : "1 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 4.156912710523668, + "scoreError" : 2.012396153837727, + "scoreConfidence" : [ + 2.1445165566859408, + 6.169308864361394 + ], + "scorePercentiles" : { + "0.0" : 3.581917311301159, + "50.0" : 4.250578513661109, + "90.0" : 4.675539357673788, + "95.0" : 4.675539357673788, + "99.0" : 4.675539357673788, + "99.9" : 4.675539357673788, + "99.99" : 4.675539357673788, + "99.999" : 4.675539357673788, + "99.9999" : 4.675539357673788, + "100.0" : 4.675539357673788 + }, + "scoreUnit" : "us/op", + "rawData" : [ + [ + 4.675539357673788, + 3.6466165431900714, + 4.250578513661109, + 4.6299118267922115, + 3.581917311301159 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.22", + "benchmark" : "wtf.metio.yosql.benchmark.jdbc.slf4j.JdbcSlf4jRead.readComplexRelationship", + "mode" : "avgt", + "threads" : 1, + "forks" : 1, + "jvm" : "/usr/java/openjdk-15/bin/java", + "jvmArgs" : [ + "-Dclassworlds.conf=/usr/share/maven/bin/m2.conf", + "-Dmaven.home=/usr/share/maven", + "-Dlibrary.jansi.path=/usr/share/maven/lib/jansi-native", + "-Dmaven.multiModuleProjectDirectory=/var/home/seb/git/metio/yosql" + ], + "jdkVersion" : "15.0.2", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "15.0.2+7-27", + "warmupIterations" : 3, + "warmupTime" : "1 s", + "warmupBatchSize" : 1, + "measurementIterations" : 5, + "measurementTime" : "1 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 108.75565133934683, + "scoreError" : 13.704175480497518, + "scoreConfidence" : [ + 95.0514758588493, + 122.45982681984435 + ], + "scorePercentiles" : { + "0.0" : 104.28942554744526, + "50.0" : 108.96633376595284, + "90.0" : 112.54539836304518, + "95.0" : 112.54539836304518, + "99.0" : 112.54539836304518, + "99.9" : 112.54539836304518, + "99.99" : 112.54539836304518, + "99.999" : 112.54539836304518, + "99.9999" : 112.54539836304518, + "100.0" : 112.54539836304518 + }, + "scoreUnit" : "us/op", + "rawData" : [ + [ + 104.28942554744526, + 111.83475134168157, + 106.14234767860928, + 112.54539836304518, + 108.96633376595284 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.22", + "benchmark" : "wtf.metio.yosql.benchmark.jdbc.slf4j.JdbcSlf4jRead.readManyToOneRelation", + "mode" : "avgt", + "threads" : 1, + "forks" : 1, + "jvm" : "/usr/java/openjdk-15/bin/java", + "jvmArgs" : [ + "-Dclassworlds.conf=/usr/share/maven/bin/m2.conf", + "-Dmaven.home=/usr/share/maven", + "-Dlibrary.jansi.path=/usr/share/maven/lib/jansi-native", + "-Dmaven.multiModuleProjectDirectory=/var/home/seb/git/metio/yosql" + ], + "jdkVersion" : "15.0.2", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "15.0.2+7-27", + "warmupIterations" : 3, + "warmupTime" : "1 s", + "warmupBatchSize" : 1, + "measurementIterations" : 5, + "measurementTime" : "1 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 92.72351571138476, + "scoreError" : 22.164035290658404, + "scoreConfidence" : [ + 70.55948042072636, + 114.88755100204317 + ], + "scorePercentiles" : { + "0.0" : 84.34810069151628, + "50.0" : 93.27012656264257, + "90.0" : 100.294936388033, + "95.0" : 100.294936388033, + "99.0" : 100.294936388033, + "99.9" : 100.294936388033, + "99.99" : 100.294936388033, + "99.999" : 100.294936388033, + "99.9999" : 100.294936388033, + "100.0" : 100.294936388033 + }, + "scoreUnit" : "us/op", + "rawData" : [ + [ + 91.3164654621772, + 94.38794945255475, + 93.27012656264257, + 84.34810069151628, + 100.294936388033 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.22", + "benchmark" : "wtf.metio.yosql.benchmark.jdbc.slf4j.JdbcSlf4jRead.readMultipleEntities", + "mode" : "avgt", + "threads" : 1, + "forks" : 1, + "jvm" : "/usr/java/openjdk-15/bin/java", + "jvmArgs" : [ + "-Dclassworlds.conf=/usr/share/maven/bin/m2.conf", + "-Dmaven.home=/usr/share/maven", + "-Dlibrary.jansi.path=/usr/share/maven/lib/jansi-native", + "-Dmaven.multiModuleProjectDirectory=/var/home/seb/git/metio/yosql" + ], + "jdkVersion" : "15.0.2", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "15.0.2+7-27", + "warmupIterations" : 3, + "warmupTime" : "1 s", + "warmupBatchSize" : 1, + "measurementIterations" : 5, + "measurementTime" : "1 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 66.4307578800464, + "scoreError" : 28.50823755156089, + "scoreConfidence" : [ + 37.92252032848551, + 94.93899543160728 + ], + "scorePercentiles" : { + "0.0" : 60.1824818640955, + "50.0" : 64.23725314922481, + "90.0" : 79.25918175155735, + "95.0" : 79.25918175155735, + "99.0" : 79.25918175155735, + "99.9" : 79.25918175155735, + "99.99" : 79.25918175155735, + "99.999" : 79.25918175155735, + "99.9999" : 79.25918175155735, + "100.0" : 79.25918175155735 + }, + "scoreUnit" : "us/op", + "rawData" : [ + [ + 65.01363906936452, + 63.46123356598985, + 64.23725314922481, + 79.25918175155735, + 60.1824818640955 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.22", + "benchmark" : "wtf.metio.yosql.benchmark.jdbc.slf4j.JdbcSlf4jRead.readMultipleEntitiesBasedOnCondition", + "mode" : "avgt", + "threads" : 1, + "forks" : 1, + "jvm" : "/usr/java/openjdk-15/bin/java", + "jvmArgs" : [ + "-Dclassworlds.conf=/usr/share/maven/bin/m2.conf", + "-Dmaven.home=/usr/share/maven", + "-Dlibrary.jansi.path=/usr/share/maven/lib/jansi-native", + "-Dmaven.multiModuleProjectDirectory=/var/home/seb/git/metio/yosql" + ], + "jdkVersion" : "15.0.2", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "15.0.2+7-27", + "warmupIterations" : 3, + "warmupTime" : "1 s", + "warmupBatchSize" : 1, + "measurementIterations" : 5, + "measurementTime" : "1 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 88.46742566429664, + "scoreError" : 9.898343164530592, + "scoreConfidence" : [ + 78.56908249976605, + 98.36576882882723 + ], + "scorePercentiles" : { + "0.0" : 84.83812871858261, + "50.0" : 88.90640772789583, + "90.0" : 91.35036407206887, + "95.0" : 91.35036407206887, + "99.0" : 91.35036407206887, + "99.9" : 91.35036407206887, + "99.99" : 91.35036407206887, + "99.999" : 91.35036407206887, + "99.9999" : 91.35036407206887, + "100.0" : 91.35036407206887 + }, + "scoreUnit" : "us/op", + "rawData" : [ + [ + 84.83812871858261, + 91.35036407206887, + 88.90640772789583, + 90.15542313922755, + 87.08680466370835 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.22", + "benchmark" : "wtf.metio.yosql.benchmark.jdbc.slf4j.JdbcSlf4jRead.readOneToManyRelation", + "mode" : "avgt", + "threads" : 1, + "forks" : 1, + "jvm" : "/usr/java/openjdk-15/bin/java", + "jvmArgs" : [ + "-Dclassworlds.conf=/usr/share/maven/bin/m2.conf", + "-Dmaven.home=/usr/share/maven", + "-Dlibrary.jansi.path=/usr/share/maven/lib/jansi-native", + "-Dmaven.multiModuleProjectDirectory=/var/home/seb/git/metio/yosql" + ], + "jdkVersion" : "15.0.2", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "15.0.2+7-27", + "warmupIterations" : 3, + "warmupTime" : "1 s", + "warmupBatchSize" : 1, + "measurementIterations" : 5, + "measurementTime" : "1 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 80.52616677403637, + "scoreError" : 15.60845609613655, + "scoreConfidence" : [ + 64.91771067789982, + 96.13462287017292 + ], + "scorePercentiles" : { + "0.0" : 75.58525898483485, + "50.0" : 81.05968789808917, + "90.0" : 86.19136287099244, + "95.0" : 86.19136287099244, + "99.0" : 86.19136287099244, + "99.9" : 86.19136287099244, + "99.99" : 86.19136287099244, + "99.999" : 86.19136287099244, + "99.9999" : 86.19136287099244, + "100.0" : 86.19136287099244 + }, + "scoreUnit" : "us/op", + "rawData" : [ + [ + 86.19136287099244, + 81.05968789808917, + 81.91464382560689, + 77.87988029065848, + 75.58525898483485 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.22", + "benchmark" : "wtf.metio.yosql.benchmark.jdbc.slf4j.JdbcSlf4jRead.readSingleEntityByPrimaryKey", + "mode" : "avgt", + "threads" : 1, + "forks" : 1, + "jvm" : "/usr/java/openjdk-15/bin/java", + "jvmArgs" : [ + "-Dclassworlds.conf=/usr/share/maven/bin/m2.conf", + "-Dmaven.home=/usr/share/maven", + "-Dlibrary.jansi.path=/usr/share/maven/lib/jansi-native", + "-Dmaven.multiModuleProjectDirectory=/var/home/seb/git/metio/yosql" + ], + "jdkVersion" : "15.0.2", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "15.0.2+7-27", + "warmupIterations" : 3, + "warmupTime" : "1 s", + "warmupBatchSize" : 1, + "measurementIterations" : 5, + "measurementTime" : "1 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 84.70686018313341, + "scoreError" : 16.404691850427156, + "scoreConfidence" : [ + 68.30216833270626, + 101.11155203356057 + ], + "scorePercentiles" : { + "0.0" : 79.14959116809116, + "50.0" : 84.72060965692503, + "90.0" : 89.70499569506727, + "95.0" : 89.70499569506727, + "99.0" : 89.70499569506727, + "99.9" : 89.70499569506727, + "99.99" : 89.70499569506727, + "99.999" : 89.70499569506727, + "99.9999" : 89.70499569506727, + "100.0" : 89.70499569506727 + }, + "scoreUnit" : "us/op", + "rawData" : [ + [ + 87.8592473547268, + 79.14959116809116, + 89.70499569506727, + 84.72060965692503, + 82.0998570408568 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.22", + "benchmark" : "wtf.metio.yosql.benchmark.jdbc.slf4j.JdbcSlf4jWrite.deleteSingleEntityByPrimaryKey", + "mode" : "avgt", + "threads" : 1, + "forks" : 1, + "jvm" : "/usr/java/openjdk-15/bin/java", + "jvmArgs" : [ + "-Dclassworlds.conf=/usr/share/maven/bin/m2.conf", + "-Dmaven.home=/usr/share/maven", + "-Dlibrary.jansi.path=/usr/share/maven/lib/jansi-native", + "-Dmaven.multiModuleProjectDirectory=/var/home/seb/git/metio/yosql" + ], + "jdkVersion" : "15.0.2", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "15.0.2+7-27", + "warmupIterations" : 3, + "warmupTime" : "1 s", + "warmupBatchSize" : 1, + "measurementIterations" : 5, + "measurementTime" : "1 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 81.30451181286499, + "scoreError" : 9.436531973170586, + "scoreConfidence" : [ + 71.8679798396944, + 90.74104378603558 + ], + "scorePercentiles" : { + "0.0" : 78.46881573791049, + "50.0" : 80.72596682540964, + "90.0" : 85.20274707354484, + "95.0" : 85.20274707354484, + "99.0" : 85.20274707354484, + "99.9" : 85.20274707354484, + "99.99" : 85.20274707354484, + "99.999" : 85.20274707354484, + "99.9999" : 85.20274707354484, + "100.0" : 85.20274707354484 + }, + "scoreUnit" : "us/op", + "rawData" : [ + [ + 80.72596682540964, + 80.65432080902373, + 85.20274707354484, + 81.47070861843622, + 78.46881573791049 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.22", + "benchmark" : "wtf.metio.yosql.benchmark.jdbc.slf4j.JdbcSlf4jWrite.writeMultipleEntities", + "mode" : "avgt", + "threads" : 1, + "forks" : 1, + "jvm" : "/usr/java/openjdk-15/bin/java", + "jvmArgs" : [ + "-Dclassworlds.conf=/usr/share/maven/bin/m2.conf", + "-Dmaven.home=/usr/share/maven", + "-Dlibrary.jansi.path=/usr/share/maven/lib/jansi-native", + "-Dmaven.multiModuleProjectDirectory=/var/home/seb/git/metio/yosql" + ], + "jdkVersion" : "15.0.2", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "15.0.2+7-27", + "warmupIterations" : 3, + "warmupTime" : "1 s", + "warmupBatchSize" : 1, + "measurementIterations" : 5, + "measurementTime" : "1 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 84.97778919123297, + "scoreError" : 40.73718086755945, + "scoreConfidence" : [ + 44.24060832367352, + 125.71497005879243 + ], + "scorePercentiles" : { + "0.0" : 73.46957070447367, + "50.0" : 81.92605235312698, + "90.0" : 102.03540512212905, + "95.0" : 102.03540512212905, + "99.0" : 102.03540512212905, + "99.9" : 102.03540512212905, + "99.99" : 102.03540512212905, + "99.999" : 102.03540512212905, + "99.9999" : 102.03540512212905, + "100.0" : 102.03540512212905 + }, + "scoreUnit" : "us/op", + "rawData" : [ + [ + 73.46957070447367, + 86.16351684328423, + 81.294400933151, + 81.92605235312698, + 102.03540512212905 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.22", + "benchmark" : "wtf.metio.yosql.benchmark.jdbc.slf4j.JdbcSlf4jWrite.writeSingleEntity", + "mode" : "avgt", + "threads" : 1, + "forks" : 1, + "jvm" : "/usr/java/openjdk-15/bin/java", + "jvmArgs" : [ + "-Dclassworlds.conf=/usr/share/maven/bin/m2.conf", + "-Dmaven.home=/usr/share/maven", + "-Dlibrary.jansi.path=/usr/share/maven/lib/jansi-native", + "-Dmaven.multiModuleProjectDirectory=/var/home/seb/git/metio/yosql" + ], + "jdkVersion" : "15.0.2", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "15.0.2+7-27", + "warmupIterations" : 3, + "warmupTime" : "1 s", + "warmupBatchSize" : 1, + "measurementIterations" : 5, + "measurementTime" : "1 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 80.78668960081187, + "scoreError" : 23.687305524527293, + "scoreConfidence" : [ + 57.09938407628458, + 104.47399512533916 + ], + "scorePercentiles" : { + "0.0" : 71.51927018888584, + "50.0" : 81.69570755634831, + "90.0" : 87.31206707420614, + "95.0" : 87.31206707420614, + "99.0" : 87.31206707420614, + "99.9" : 87.31206707420614, + "99.99" : 87.31206707420614, + "99.999" : 87.31206707420614, + "99.9999" : 87.31206707420614, + "100.0" : 87.31206707420614 + }, + "scoreUnit" : "us/op", + "rawData" : [ + [ + 87.31206707420614, + 84.89638026653422, + 81.69570755634831, + 78.51002291808487, + 71.51927018888584 ] ] }, diff --git a/yosql-website/content/benchmarks/_index.md b/yosql-website/content/benchmarks/_index.md index fd7b16e9..f9ed3ce6 100644 --- a/yosql-website/content/benchmarks/_index.md +++ b/yosql-website/content/benchmarks/_index.md @@ -6,7 +6,7 @@ menu: weight: 130 --- -This part of the documentation is intended for **developers** looking for information `YoSQL?` itself or its generated code perform in various scenarios. +This part of the documentation is intended for **developers** looking for information `YoSQL` itself or its generated code perform in various scenarios. All benchmark results are computed on a free GitHub Actions account - thanks GitHub! The numbers may vary greatly between runs, depending on how much hardware is available to the runner. The numbers within one run are usually consistent and can be used to roughly measure performance. All available benchmarks can be seen at the bottom of this page. Each benchmark page explains how to run the benchmarks yourself. In case you want to make decision based on the performance of the generated code or the code generation itself, run these benchmarks on your own machine in order to see how well `YoSQL` performs against your actual hardware with actual SQL statements. The [initial setup](/tooling/) is simple enough, so that short 1 day/week/sprint spikes should be possible. diff --git a/yosql-website/content/benchmarks/db-access.md b/yosql-website/content/benchmarks/db-access.md index 76c6fe48..e9d95b78 100644 --- a/yosql-website/content/benchmarks/db-access.md +++ b/yosql-website/content/benchmarks/db-access.md @@ -11,7 +11,38 @@ tags: - access --- -Each supported [persistence](/persistence/) API has their own performance characteristics. The following benchmark try to use the fastest code paths available to execute SQL statements. +Each supported [persistence](/persistence/) API has their own performance characteristics. The following benchmarks try to use the fastest code paths available to execute SQL statements. + +### Common Scenarios + +The common scenarios define what each persistence solution must solve in order to pass the TCK. + +```shell +# run common scenario benchmarks with the best performing YoSQL implementation +$ mvn --projects yosql-benchmarks/yosql-benchmarks-common-scenarios --also-make --activate-profiles benchmarks test +``` +The benchmark results for the best performing implementation of `YoSQL` can be found [here](https://jmh.morethan.io/?sources=https://yosql.projects.metio.wtf/benchmarks/2021/yosql-benchmarks-common-scenarios.json,https://yosql.projects.metio.wtf/benchmarks/current/yosql-benchmarks-common-scenarios.json). Those results can be seen as a baseline for other implementations. All benchmarks run through the following benchmarks: + +#### Reading Data + +- `readManyToOneRelation`: Reads the one part of a many-to-one relation. +- `readMultipleEntitiesBasedOnCondition`: Read multiple entities and filter them inside the database. +- `readOneToManyRelation`: Reads the many part of a one-to-many relation. +- `readSingleEntityByPrimaryKey`: Read a single entity using its primary key. +- `readMultipleEntities`: Read multiple entities in one go. +- `readComplexRelationship`: Read a complex data relationship. + +#### Writing Data + +- `writeMultipleEntities`: Writes multiple entities into the database. +- `writeSingleEntity`: Writes a new entity into the database. +- `updateOneToManyRelation`: Update the one-to-many relationship part of an entity. +- `updateManyToOneRelation`: Update the many-to-one relationship part of an entity. +- `deleteSingleEntityByPrimaryKey`: Delete a single entity using its primary key. + +#### Calling Stored Procedures + +- `callStoredProcedure`: Call a single stored procedure. ## YoSQL Implementations @@ -19,85 +50,167 @@ In order to select the best matching persistence API for your project, performan ### EBean +In order to run benchmarks for the [EBean](/persistence/ebean/) implementation of `YoSQL` run: ```shell # run EBean benchmarks $ mvn --projects yosql-benchmarks/yosql-benchmarks-ebean --also-make --activate-profiles benchmarks test ``` -### JDBC +### Fluent JDBC -- [JDBC](https://jmh.morethan.io/?sources=https://yosql.projects.metio.wtf/benchmarks/2021/yosql-benchmarks-jdbc.json,https://yosql.projects.metio.wtf/benchmarks/current/yosql-benchmarks-jdbc.json): Measures performance timings for the JDBC API. - - Read data from a database. - - Write data into a database. - - Perform schema manipulation. +In order to run benchmarks for the [Fluent JDBC](/persistence/fluent-jdbc/) implementation of `YoSQL` run: ```shell # run EBean benchmarks -$ mvn --projects yosql-benchmarks/yosql-benchmarks-ebean --also-make --activate-profiles benchmarks test +$ mvn --projects yosql-benchmarks/yosql-benchmarks-fluent-jdbc --also-make --activate-profiles benchmarks test +``` + +### JDBC +In order to run benchmarks for the [JDBC](/persistence/jdbc/) implementation of `YoSQL` run: + +```shell # run JDBC benchmarks $ mvn --projects yosql-benchmarks/yosql-benchmarks-jdbc --also-make --activate-profiles benchmarks test +``` +The [results](https://jmh.morethan.io/?sources=https://yosql.projects.metio.wtf/benchmarks/2021/yosql-benchmarks-jdbc.json,https://yosql.projects.metio.wtf/benchmarks/current/yosql-benchmarks-jdbc.json) are measured in **microseconds**. +### JDBI + +In order to run benchmarks for the [JDBI](/persistence/jdbi/) implementation of `YoSQL` run: + +```shell # run JDBI benchmarks $ mvn --projects yosql-benchmarks/yosql-benchmarks-jdbi --also-make --activate-profiles benchmarks test +``` + +### jOOQ +In order to run benchmarks for the [jOOQ](/persistence/jooq/) implementation of `YoSQL` run: + +```shell # run jOOQ benchmarks $ mvn --projects yosql-benchmarks/yosql-benchmarks-jooq --also-make --activate-profiles benchmarks test +``` + +### JPA + +In order to run benchmarks for the [JPA](/persistence/jpa/) implementation of `YoSQL` run: +```shell # run JPA benchmarks $ mvn --projects yosql-benchmarks/yosql-benchmarks-jpa --also-make --activate-profiles benchmarks test +``` + +### MyBatis + +In order to run benchmarks for the [MyBatis](/persistence/mybatis/) implementation of `YoSQL` run: -# run R2DBC benchmarks +```shell +# run JPA benchmarks +$ mvn --projects yosql-benchmarks/yosql-benchmarks-mybatis --also-make --activate-profiles benchmarks test +``` + +### Pyranid + +In order to run benchmarks for the [Pyranid](/persistence/pyranid/) implementation of `YoSQL` run: + +```shell +# run JPA benchmarks +$ mvn --projects yosql-benchmarks/yosql-benchmarks-pyranid --also-make --activate-profiles benchmarks test +``` + +### R2DBC + +In order to run benchmarks for the [R2DBC](/persistence/r2dbc/) implementation of `YoSQL` run: + +```shell +# run JPA benchmarks $ mvn --projects yosql-benchmarks/yosql-benchmarks-r2dbc --also-make --activate-profiles benchmarks test +``` -# run Spring-Data JDBC benchmarks -$ mvn --projects yosql-benchmarks/yosql-benchmarks-spring-data-jdbc --also-make --activate-profiles benchmarks test +### SansOrm -# run Spring JDBC benchmarks -$ mvn --projects yosql-benchmarks/yosql-benchmarks-spring-jdbc --also-make --activate-profiles benchmarks test +In order to run benchmarks for the [SansOrm](/persistence/sansorm/) implementation of `YoSQL` run: + +```shell +# run JPA benchmarks +$ mvn --projects yosql-benchmarks/yosql-benchmarks-sansorm --also-make --activate-profiles benchmarks test ``` -## Shootout +### Spring-Data JDBC -In order to compare a solution entirely based on `YoSQL` against other persistence solutions, the following set of benchmarks was created. +In order to run benchmarks for the [Spring-Data JDBC](/persistence/spring-data-jdbc/) implementation of `YoSQL` run: -### Common Scenarios +```shell +# run Spring-Data JDBC benchmarks +$ mvn --projects yosql-benchmarks/yosql-benchmarks-spring-data-jdbc --also-make --activate-profiles benchmarks test +``` + +### Spring-Data JPA + +In order to run benchmarks for the [Spring-Data JPA](/persistence/spring-data-jpa/) implementation of `YoSQL` run: ```shell -# run common scenario benchmarks with the best performing YoSQL implementation -$ mvn --projects yosql-benchmarks/yosql-benchmarks-common-scenarios --also-make --activate-profiles benchmarks test +# run Spring-Data JDBC benchmarks +$ mvn --projects yosql-benchmarks/yosql-benchmarks-spring-data-jpa --also-make --activate-profiles benchmarks test ``` -The common scenarios define what each persistence solution must solve in order to pass our TCK. The benchmark results for the reference implementation using `YoSQL` can be found [here](https://jmh.morethan.io/?sources=https://yosql.projects.metio.wtf/benchmarks/2021/yosql-benchmarks-common-scenarios.json,https://yosql.projects.metio.wtf/benchmarks/current/yosql-benchmarks-common-scenarios.json). Those results can be seen as a baseline for other implementations. The common scenarios are: +### Spring-Data R2DBC -#### Reading Data +In order to run benchmarks for the [Spring-Data R2DBC](/persistence/spring-data-r2dbc/) implementation of `YoSQL` run: +```shell +# run Spring-Data JDBC benchmarks +$ mvn --projects yosql-benchmarks/yosql-benchmarks-spring-data-r2dbc --also-make --activate-profiles benchmarks test +``` -#### Writing Data +### Spring JDBC -- writeMultipleEntities -- writeSingleEntity -- updateOneToManyRelation -- updateManyToOneRelation -- deleteSingleEntityByPrimaryKey +In order to run benchmarks for the [Spring JDBC](/persistence/spring-jdbc/) implementation of `YoSQL` run: -#### Calling Stored Procedures +```shell +# run Spring JDBC benchmarks +$ mvn --projects yosql-benchmarks/yosql-benchmarks-spring-jdbc --also-make --activate-profiles benchmarks test +``` -- `callStoredProcedure`: Call a single stored procedure. +## Other Solutions + +In order to compare a solution entirely based on `YoSQL` against other persistence solutions, the following set of benchmarks was created. None of them use `Yosql` and solely use own native persistence API itself. ### EBean -TODO/TBD +In order to run benchmarks for the [EBean](/persistence/ebean/) *only* implementation run: + +```shell +# run EBean benchmarks +$ mvn --projects yosql-benchmarks/yosql-benchmarks-vs-ebean --also-make --activate-profiles benchmarks test +``` ### JDBI -TODO/TBD +In order to run benchmarks for the [JDBI](/persistence/jdbi/) *only* implementation run: + +```shell +# run EBean benchmarks +$ mvn --projects yosql-benchmarks/yosql-benchmarks-vs-jdbi --also-make --activate-profiles benchmarks test +``` ### jOOQ -TODO/TBD +In order to run benchmarks for the [jOOQ](/persistence/jooq/) *only* implementation run: + +```shell +# run EBean benchmarks +$ mvn --projects yosql-benchmarks/yosql-benchmarks-vs-jooq --also-make --activate-profiles benchmarks test +``` ### JPA -TODO/TBD +In order to run benchmarks for the [JPA](/persistence/jpa/) *only* implementation run: + +```shell +# run EBean benchmarks +$ mvn --projects yosql-benchmarks/yosql-benchmarks-vs-jpa --also-make --activate-profiles benchmarks test +``` diff --git a/yosql-website/content/tooling/maven.md b/yosql-website/content/tooling/maven.md index c6c65765..1d3b7d70 100644 --- a/yosql-website/content/tooling/maven.md +++ b/yosql-website/content/tooling/maven.md @@ -174,3 +174,5 @@ the generated code of each other. The last execution will win. Share configurati ``` + +TODO: split dev/prod builds? dev build contains log outputs, prod build contains none -- 2.11.4.GIT