diff --git a/.github/workflows/commit_performance_result.yml b/.github/workflows/commit_performance_result.yml new file mode 100644 index 0000000000..86715d9d8a --- /dev/null +++ b/.github/workflows/commit_performance_result.yml @@ -0,0 +1,39 @@ +name: Commit performance results into repo +on: + workflow_dispatch: + inputs: + sha: + description: 'the commit sha which was performance tested' + required: true + branch: + description: 'the branch which the results should be commited in' + required: false + default: 'master' + +permissions: + id-token: write # This is required for requesting the JWT + contents: write # This is required for pushing changes back to the repo +jobs: + commitPerformanceResults: + runs-on: ubuntu-latest + steps: + - uses: aws-actions/configure-aws-credentials@v4 + with: + role-to-assume: arn:aws:iam::637423498965:role/GitHubActionGrahQLJava + aws-region: "ap-southeast-2" + - uses: actions/checkout@v4 + with: + ref: ${{ github.event.inputs.branch }} + - run: | + aws s3 cp s3://graphql-java-jmh-output/ ./performance-results --recursive --exclude "*" --include "*-${{ github.event.inputs.sha }}-jdk17.json" + git config user.name "github-actions[bot]" + git config user.email "41898282+github-actions[bot]@users.noreply.github.com" + git add performance-results/*-${{ github.event.inputs.sha }}-jdk17.json + if [ -z "$(git status --porcelain)" ]; then + echo "Performance results already present" + exit 0 + fi + git pull + git commit -m "Add performance results for commit ${{ github.event.inputs.sha }}" + git push + diff --git a/.github/workflows/create_job.js b/.github/workflows/create_job.js deleted file mode 100644 index e14f39f828..0000000000 --- a/.github/workflows/create_job.js +++ /dev/null @@ -1,77 +0,0 @@ -const { CloudTasksClient } = require('@google-cloud/tasks'); -const { v4: uuidv4 } = require('uuid'); - -const client = new CloudTasksClient(); - -const constructPayload = () => { - const jobId = String(uuidv4()); - const commitHash = process.env.COMMIT_HASH; - const branch = process.env.BRANCH; - const classes = process.env.CLASSES; - const pullRequestNumber = process.env.PULL_REQUEST_NUMBER; - - const payloadStructure = { - "jobId": jobId, - "commitHash": commitHash.trim(), - "branch": branch.trim(), - "classes": convertClassesStringToArray(classes), - "pullRequest": pullRequestNumber.trim(), - } - return payloadStructure; -} - -const convertClassesStringToArray = (classes) => { - const classesArray = classes.split(','); - const trimmedClassesArray = classesArray.map(currentClass => currentClass.trim()); - return trimmedClassesArray; -} - -const formatPayload = (payloadStructure) => { - const parsedPayload = JSON.stringify(JSON.stringify(payloadStructure)); - const payload = `{"argument": ${parsedPayload}}`; - console.log(`Payload: ${payload}`); - return payload; -} - -const constructTask = (serviceAccountEmail, payload, url) => { - const task = { - httpRequest: { - httpMethod: 'POST', - url, - oauthToken: { - serviceAccountEmail, - }, - body: Buffer.from(payload).toString('base64'), - }, - }; - return task; -} - -const createRequestBody = (payload) => { - const project = process.env.PROJECT_ID; - const queue = process.env.QUEUE_ID; - const location = process.env.LOCATION; - const url = process.env.WORKFLOW_URL - const serviceAccountEmail = process.env.SERVICE_ACCOUNT_EMAIL; - const requestBody = { - "fullyQualifiedQueueName": client.queuePath(project, location, queue), - "task": constructTask(serviceAccountEmail, payload, url) - } - return requestBody; -} - -const constructRequest = () => { - const payloadStructure = constructPayload(); - const payload = formatPayload(payloadStructure); - const requestBody = createRequestBody(payload); - const request = { parent: requestBody.fullyQualifiedQueueName, task: requestBody.task }; - return request; -} - -async function createHttpTaskWithToken() { - const request = constructRequest(); - const [response] = await client.createTask(request); - const name = response.name; - console.log(`Created task ${name}`); -} -createHttpTaskWithToken(); diff --git a/.github/workflows/invoke_test_runner.yml b/.github/workflows/invoke_test_runner.yml deleted file mode 100644 index 16b6e15c61..0000000000 --- a/.github/workflows/invoke_test_runner.yml +++ /dev/null @@ -1,58 +0,0 @@ -name: invoke_test_runner -on: - push: - branches: - - master - workflow_dispatch: - inputs: - BRANCH_INPUT: - description: 'Branch' - required: true - COMMIT_HASH_INPUT: - description: 'Commit hash' - required: true - CLASSES_TO_EXECUTE_INPUT: - description: 'Classes to test' - required: false - PULL_REQUEST_NUMBER_INPUT: - description: 'Pull request number' - required: false -env: - PROJECT_ID: ${{ secrets.PROJECT_ID }} - QUEUE_ID: ${{ secrets.QUEUE_ID }} - LOCATION: ${{ secrets.LOCATION }} - SERVICE_ACCOUNT_EMAIL: ${{ secrets.SERVICE_ACCOUNT_EMAIL }} - WORKFLOW_URL: ${{ secrets.WORKFLOW_URL }} - #Payload variables - COMMIT_HASH: ${{ (github.sha) }} - BRANCH: ${{ (github.ref_name) }} - CLASSES: ${{ (github.event.inputs.CLASSES_TO_EXECUTE_INPUT) }} - PULL_REQUEST_NUMBER: ${{ (github.event.inputs.PULL_REQUEST_NUMBER_INPUT) }} - -jobs: - execute_workflow: - if: github.repository == 'graphql-java/graphql-java' - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-node@v4 - with: - node-version: '14' - - run: npm install --prefix .github/workflows - - - name: Update COMMIT_HASH - if: ${{ github.event_name == 'workflow_dispatch' }} - run: echo "COMMIT_HASH=${{ (github.event.inputs.COMMIT_HASH_INPUT) }} " >> $GITHUB_ENV - - - name: Update BRANCH - if: ${{ github.event_name == 'workflow_dispatch' }} - run: echo "BRANCH=${{ (github.event.inputs.BRANCH_INPUT) }} " >> $GITHUB_ENV - - - id: 'auth' - name: 'Authenticate to Google Cloud' - uses: google-github-actions/auth@v2.1.2 - with: - credentials_json: ${{ secrets.GOOGLE_APPLICATION_CREDENTIALS }} - - - name: Execute JS script - run: node .github/workflows/create_job.js diff --git a/.github/workflows/master.yml b/.github/workflows/master.yml index e0a2801043..ffcf661974 100644 --- a/.github/workflows/master.yml +++ b/.github/workflows/master.yml @@ -4,6 +4,8 @@ on: push: branches: - master +permissions: # For test summary bot + checks: write jobs: buildAndPublish: runs-on: ubuntu-latest @@ -14,7 +16,7 @@ jobs: steps: - uses: actions/checkout@v4 - - uses: gradle/wrapper-validation-action@v3 + - uses: gradle/actions/wrapper-validation@v4 - name: Set up JDK 11 uses: actions/setup-java@v4 with: @@ -22,3 +24,8 @@ jobs: distribution: 'corretto' - name: build test and publish run: ./gradlew assemble && ./gradlew check --info && ./gradlew publishToSonatype closeAndReleaseSonatypeStagingRepository -x check --info --stacktrace + - name: Publish Test Results + uses: EnricoMi/publish-unit-test-result-action@v2.18.0 + if: always() + with: + files: '**/build/test-results/test/TEST-*.xml' diff --git a/.github/workflows/publish_commit.yml b/.github/workflows/publish_commit.yml new file mode 100644 index 0000000000..f55a6a580f --- /dev/null +++ b/.github/workflows/publish_commit.yml @@ -0,0 +1,21 @@ +name: Publish Commit SHA for performance testing +on: + pull_request: + types: + - closed + branches: + - master + paths-ignore: + - 'performance-results/**' +permissions: + id-token: write # This is required for requesting the JWT + contents: read # This is required for actions/checkout +jobs: + publishCommit: + runs-on: ubuntu-latest + steps: + - uses: aws-actions/configure-aws-credentials@v4 + with: + role-to-assume: arn:aws:iam::637423498965:role/GitHubActionGrahQLJava + aws-region: "ap-southeast-2" + - run: aws sns publish --topic-arn "arn:aws:sns:ap-southeast-2:637423498965:graphql-java-commits.fifo" --message $GITHUB_SHA --message-group-id "graphql-java-commits" \ No newline at end of file diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml index 5e90decd21..61f24f3d28 100644 --- a/.github/workflows/pull_request.yml +++ b/.github/workflows/pull_request.yml @@ -7,16 +7,21 @@ on: pull_request: branches: - master + - 24.x + - 23.x + - 22.x + - 21.x - 20.x - 19.x - - 18.x - - 17.x +permissions: # For test comment bot + checks: write + pull-requests: write jobs: buildAndTest: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - - uses: gradle/wrapper-validation-action@v3 + - uses: gradle/actions/wrapper-validation@v4 - name: Set up JDK 11 uses: actions/setup-java@v4 with: @@ -24,3 +29,9 @@ jobs: distribution: 'corretto' - name: build and test run: ./gradlew assemble && ./gradlew check --info --stacktrace + - name: Publish Test Results + uses: EnricoMi/publish-unit-test-result-action@v2.18.0 + if: always() + with: + files: '**/build/test-results/test/TEST-*.xml' + diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 21b31d32ee..2d630314c0 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -18,7 +18,7 @@ jobs: steps: - uses: actions/checkout@v4 - - uses: gradle/wrapper-validation-action@v3 + - uses: gradle/actions/wrapper-validation@v4 - name: Set up JDK 11 uses: actions/setup-java@v4 with: diff --git a/.github/workflows/stale-pr-issue.yml b/.github/workflows/stale-pr-issue.yml index f36da60e2a..540f31aa80 100644 --- a/.github/workflows/stale-pr-issue.yml +++ b/.github/workflows/stale-pr-issue.yml @@ -8,6 +8,7 @@ on: - cron: '0 0 * * *' permissions: + actions: write issues: write pull-requests: write diff --git a/README.md b/README.md index e065da305d..64f61df038 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ This is a [GraphQL](https://github.com/graphql/graphql-spec) Java implementation Latest build in Maven central: https://repo1.maven.org/maven2/com/graphql-java/graphql-java/ [![Build](https://github.com/graphql-java/graphql-java/actions/workflows/master.yml/badge.svg)](https://github.com/graphql-java/graphql-java/actions/workflows/master.yml) -[![Latest Release](https://img.shields.io/maven-central/v/com.graphql-java/graphql-java?versionPrefix=21.)](https://maven-badges.herokuapp.com/maven-central/com.graphql-java/graphql-java/) +[![Latest Release](https://img.shields.io/maven-central/v/com.graphql-java/graphql-java?versionPrefix=23.)](https://maven-badges.herokuapp.com/maven-central/com.graphql-java/graphql-java/) [![Latest Snapshot](https://img.shields.io/maven-central/v/com.graphql-java/graphql-java?label=maven-central%20snapshot&versionPrefix=0)](https://maven-badges.herokuapp.com/maven-central/com.graphql-java/graphql-java/) [![MIT licensed](https://img.shields.io/badge/license-MIT-green)](https://github.com/graphql-java/graphql-java/blob/master/LICENSE.md) @@ -33,8 +33,5 @@ take the time to read it. Copyright (c) 2015, Andreas Marek and [Contributors](https://github.com/graphql-java/graphql-java/graphs/contributors) -### Supported by - -![YourKit](https://www.yourkit.com/images/yklogo.png) - -[YourKit](https://www.yourkit.com/) supports this project by providing the YourKit Java Profiler. +### Powered by +[![IntelliJ IDEA logo](https://resources.jetbrains.com/storage/products/company/brand/logos/IntelliJ_IDEA.svg)](https://jb.gg/OpenSourceSupport) diff --git a/README.zh_cn.md b/README.zh_cn.md index 8c519b188b..057e89df07 100644 --- a/README.zh_cn.md +++ b/README.zh_cn.md @@ -5,7 +5,7 @@ 该组件是 [GraphQL 规范](https://github.com/graphql/graphql-spec) 的 Java 实现。 [![Build](https://github.com/graphql-java/graphql-java/actions/workflows/master.yml/badge.svg)](https://github.com/graphql-java/graphql-java/actions/workflows/master.yml) -[![Latest Release](https://img.shields.io/maven-central/v/com.graphql-java/graphql-java?versionPrefix=20.)](https://maven-badges.herokuapp.com/maven-central/com.graphql-java/graphql-java/) +[![Latest Release](https://img.shields.io/maven-central/v/com.graphql-java/graphql-java?versionPrefix=23.)](https://maven-badges.herokuapp.com/maven-central/com.graphql-java/graphql-java/) [![Latest Snapshot](https://img.shields.io/maven-central/v/com.graphql-java/graphql-java?label=maven-central%20snapshot&versionPrefix=0)](https://maven-badges.herokuapp.com/maven-central/com.graphql-java/graphql-java/) [![MIT licensed](https://img.shields.io/badge/license-MIT-green)](https://github.com/graphql-java/graphql-java/blob/master/LICENSE.md) @@ -24,9 +24,3 @@ ### License Copyright (c) 2015, Andreas Marek and [贡献者们](https://github.com/graphql-java/graphql-java/graphs/contributors) - -### 帮助支持 - -![YourKit](https://www.yourkit.com/images/yklogo.png) - -[YourKit](https://www.yourkit.com/) 通过 YourKit Java Profiler 能力对该项目提供了支持。 diff --git a/SECURITY.md b/SECURITY.md index 2b7a57f5d6..455934a134 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -1,5 +1,7 @@ # Security Policy +[GraphQL Java is the CVE Numbering Authority (CNA)](https://www.cve.org/PartnerInformation/ListofPartners/partner/graphql-java) for GraphQL Java, Java DataLoader, GraphQL Java Extended Scalars, and GraphQL Java Extended Validation. + ## Supported Versions As stated in our [Release Policy](https://www.graphql-java.com/blog/release-policy/), we will backport critical bugfixes and security fixes for versions dating back 18 months. These fixes will be backported depending on severity and demand. diff --git a/agent-test/build.gradle b/agent-test/build.gradle index 280aed1bac..cb64429502 100644 --- a/agent-test/build.gradle +++ b/agent-test/build.gradle @@ -4,12 +4,12 @@ plugins { dependencies { implementation(rootProject) - implementation("net.bytebuddy:byte-buddy-agent:1.14.13") + implementation("net.bytebuddy:byte-buddy-agent:1.17.5") - testImplementation 'org.junit.jupiter:junit-jupiter:5.10.2' + testImplementation 'org.junit.jupiter:junit-jupiter:5.12.1' testRuntimeOnly 'org.junit.platform:junit-platform-launcher' - testImplementation("org.assertj:assertj-core:3.25.3") + testImplementation("org.assertj:assertj-core:3.27.3") } diff --git a/agent/build.gradle b/agent/build.gradle index 1cc23ecb3c..3484d69556 100644 --- a/agent/build.gradle +++ b/agent/build.gradle @@ -2,11 +2,11 @@ plugins { id 'java' id 'java-library' id 'maven-publish' - id "com.github.johnrengelman.shadow" version "8.1.1" + id "com.gradleup.shadow" version "8.3.6" } dependencies { - implementation("net.bytebuddy:byte-buddy:1.14.13") + implementation("net.bytebuddy:byte-buddy:1.17.5") // graphql-java itself implementation(rootProject) } diff --git a/agent/src/main/java/graphql/agent/GraphQLJavaAgent.java b/agent/src/main/java/graphql/agent/GraphQLJavaAgent.java index 1dd9f1fe42..6169e2e7bd 100644 --- a/agent/src/main/java/graphql/agent/GraphQLJavaAgent.java +++ b/agent/src/main/java/graphql/agent/GraphQLJavaAgent.java @@ -71,7 +71,7 @@ public static void agentmain(String agentArgs, Instrumentation inst) { return builder .visit(Advice.to(DataLoaderHelperDispatchAdvice.class).on(nameMatches("dispatch"))) .visit(Advice.to(DataLoaderHelperInvokeBatchLoaderAdvice.class) - .on(nameMatches("invokeLoader").and(takesArguments(List.class, List.class)))); + .on(nameMatches("invokeLoader").and(takesArguments(List.class, List.class, List.class)))); }) .type(named("graphql.schema.DataFetchingEnvironmentImpl")) .transform((builder, typeDescription, classLoader, module, protectionDomain) -> { @@ -207,6 +207,7 @@ public static class DataLoaderHelperInvokeBatchLoaderAdvice { @Advice.OnMethodEnter public static void invokeLoader(@Advice.Argument(0) List keys, @Advice.Argument(1) List keysContext, + @Advice.Argument(2) List queuedFutures, @Advice.This(typing = Assigner.Typing.DYNAMIC) Object dataLoaderHelper) { DataLoader dataLoader = getDataLoaderForHelper(dataLoaderHelper); ExecutionId executionId = GraphQLJavaAgent.dataLoaderToExecutionId.get(dataLoader); diff --git a/build.gradle b/build.gradle index 3750da10cb..c8f7be2ce6 100644 --- a/build.gradle +++ b/build.gradle @@ -7,11 +7,11 @@ plugins { id 'maven-publish' id 'antlr' id 'signing' - id "com.github.johnrengelman.shadow" version "8.1.1" + id "com.gradleup.shadow" version "8.3.6" id "biz.aQute.bnd.builder" version "6.4.0" id "io.github.gradle-nexus.publish-plugin" version "2.0.0" id "groovy" - id "me.champeau.jmh" version "0.7.2" + id "me.champeau.jmh" version "0.7.3" } java { @@ -97,33 +97,43 @@ jar { attributes('Automatic-Module-Name': 'com.graphqljava') } } - +tasks.withType(GroovyCompile) { + // Options when compiling Java using the Groovy plugin. + // (Groovy itself defaults to UTF-8 for Groovy code) + options.encoding = 'UTF-8' + groovyOptions.forkOptions.memoryMaximumSize = "4g" +} dependencies { - compileOnly 'org.jetbrains:annotations:24.1.0' implementation 'org.antlr:antlr4-runtime:' + antlrVersion - api 'com.graphql-java:java-dataloader:3.3.0' + api 'com.graphql-java:java-dataloader:5.0.0' api 'org.reactivestreams:reactive-streams:' + reactiveStreamsVersion + api "org.jspecify:jspecify:1.0.0" antlr 'org.antlr:antlr4:' + antlrVersion implementation 'com.google.guava:guava:' + guavaVersion testImplementation group: 'junit', name: 'junit', version: '4.13.2' - testImplementation 'org.spockframework:spock-core:2.0-groovy-3.0' - testImplementation 'org.codehaus.groovy:groovy:3.0.21' - testImplementation 'org.codehaus.groovy:groovy-json:3.0.21' - testImplementation 'com.google.code.gson:gson:2.10.1' - testImplementation 'org.eclipse.jetty:jetty-server:11.0.20' - testImplementation 'com.fasterxml.jackson.core:jackson-databind:2.17.0' - testImplementation 'org.awaitility:awaitility-groovy:4.2.0' + testImplementation 'org.spockframework:spock-core:2.3-groovy-4.0' + testImplementation 'net.bytebuddy:byte-buddy:1.17.5' + testImplementation 'org.objenesis:objenesis:3.4' + testImplementation 'org.apache.groovy:groovy:4.0.26"' + testImplementation 'org.apache.groovy:groovy-json:4.0.26' + testImplementation 'com.google.code.gson:gson:2.12.1' + testImplementation 'org.eclipse.jetty:jetty-server:11.0.25' + testImplementation 'com.fasterxml.jackson.core:jackson-databind:2.18.3' + testImplementation 'org.awaitility:awaitility-groovy:4.3.0' testImplementation 'com.github.javafaker:javafaker:1.0.2' testImplementation 'org.reactivestreams:reactive-streams-tck:' + reactiveStreamsVersion testImplementation "io.reactivex.rxjava2:rxjava:2.2.21" + testImplementation "io.projectreactor:reactor-core:3.7.4" - testImplementation 'org.testng:testng:7.10.1' // use for reactive streams test inheritance + testImplementation 'org.testng:testng:7.11.0' // use for reactive streams test inheritance testImplementation 'org.openjdk.jmh:jmh-core:1.37' testAnnotationProcessor 'org.openjdk.jmh:jmh-generator-annprocess:1.37' jmh 'org.openjdk.jmh:jmh-core:1.37' jmh 'org.openjdk.jmh:jmh-generator-annprocess:1.37' + + testImplementation "com.tngtech.archunit:archunit-junit5:1.2.0" } shadowJar { @@ -168,7 +178,7 @@ shadowJar { bnd(''' -exportcontents: graphql.* -removeheaders: Private-Package -Import-Package: !android.os.*,!com.google.*,!org.checkerframework.*,!javax.annotation.*,!graphql.com.google.*,!org.antlr.*,!graphql.org.antlr.*,!sun.misc.*,* +Import-Package: !android.os.*,!com.google.*,!org.checkerframework.*,!javax.annotation.*,!graphql.com.google.*,!org.antlr.*,!graphql.org.antlr.*,!sun.misc.*,org.jspecify.annotations;resolution:=optional,* ''') } @@ -217,9 +227,9 @@ generateGrammarSource { outputDirectory = file("${project.buildDir}/generated-src/antlr/main/graphql/parser/antlr") } generateGrammarSource.inputs - .dir('src/main/antlr') - .withPropertyName('sourceDir') - .withPathSensitivity(PathSensitivity.RELATIVE) + .dir('src/main/antlr') + .withPropertyName('sourceDir') + .withPathSensitivity(PathSensitivity.RELATIVE) task sourcesJar(type: Jar) { diff --git a/gradle.properties b/gradle.properties index 50b2318345..4c377884b9 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ org.gradle.caching=true org.gradle.daemon=true org.gradle.parallel=true -org.gradle.jvmargs=-Dfile.encoding=UTF-8 +org.gradle.jvmargs=-Dfile.encoding=UTF-8 diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index d64cd49177..9bbc975c74 100644 Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index a80b22ce5c..37f853b1c8 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.6-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.13-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/gradlew b/gradlew index 1aa94a4269..faf93008b7 100755 --- a/gradlew +++ b/gradlew @@ -15,6 +15,8 @@ # See the License for the specific language governing permissions and # limitations under the License. # +# SPDX-License-Identifier: Apache-2.0 +# ############################################################################## # @@ -55,7 +57,7 @@ # Darwin, MinGW, and NonStop. # # (3) This script is generated from the Groovy template -# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt # within the Gradle project. # # You can find Gradle at https://github.com/gradle/gradle/. @@ -84,7 +86,7 @@ done # shellcheck disable=SC2034 APP_BASE_NAME=${0##*/} # Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) -APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit +APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s\n' "$PWD" ) || exit # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD=maximum @@ -203,7 +205,7 @@ fi DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' # Collect all arguments for the java command: -# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, # and any embedded shellness will be escaped. # * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be # treated as '${Hostname}' itself on the command line. diff --git a/gradlew.bat b/gradlew.bat index 6689b85bee..9b42019c79 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -13,6 +13,8 @@ @rem See the License for the specific language governing permissions and @rem limitations under the License. @rem +@rem SPDX-License-Identifier: Apache-2.0 +@rem @if "%DEBUG%"=="" @echo off @rem ########################################################################## @@ -43,11 +45,11 @@ set JAVA_EXE=java.exe %JAVA_EXE% -version >NUL 2>&1 if %ERRORLEVEL% equ 0 goto execute -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. +echo. 1>&2 +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 goto fail @@ -57,11 +59,11 @@ set JAVA_EXE=%JAVA_HOME%/bin/java.exe if exist "%JAVA_EXE%" goto execute -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. +echo. 1>&2 +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 goto fail diff --git a/src/main/java/graphql/execution/instrumentation/adapters/ExecuteObjectInstrumentationContextAdapter.java b/performance-results/.gitkeep similarity index 100% rename from src/main/java/graphql/execution/instrumentation/adapters/ExecuteObjectInstrumentationContextAdapter.java rename to performance-results/.gitkeep diff --git a/performance-results/2024-11-28T01:53:48Z-1d50c655aaf1a907b65f39e2eba310f3463ba5d5-jdk17.json b/performance-results/2024-11-28T01:53:48Z-1d50c655aaf1a907b65f39e2eba310f3463ba5d5-jdk17.json new file mode 100644 index 0000000000..e038ff0fed --- /dev/null +++ b/performance-results/2024-11-28T01:53:48Z-1d50c655aaf1a907b65f39e2eba310f3463ba5d5-jdk17.json @@ -0,0 +1,287 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4098507705676995, + "scoreError" : 0.0248935503366656, + "scoreConfidence" : [ + 3.384957220231034, + 3.434744320904365 + ], + "scorePercentiles" : { + "0.0" : 3.40519673991893, + "50.0" : 3.409982052692473, + "90.0" : 3.414242236966922, + "95.0" : 3.414242236966922, + "99.0" : 3.414242236966922, + "99.9" : 3.414242236966922, + "99.99" : 3.414242236966922, + "99.999" : 3.414242236966922, + "99.9999" : 3.414242236966922, + "100.0" : 3.414242236966922 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.411312710571647, + 3.414242236966922 + ], + [ + 3.40519673991893, + 3.4086513948132993 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7231380231942457, + "scoreError" : 0.01856164149472618, + "scoreConfidence" : [ + 1.7045763816995194, + 1.741699664688972 + ], + "scorePercentiles" : { + "0.0" : 1.7201780646528506, + "50.0" : 1.722962619633562, + "90.0" : 1.7264487888570081, + "95.0" : 1.7264487888570081, + "99.0" : 1.7264487888570081, + "99.9" : 1.7264487888570081, + "99.99" : 1.7264487888570081, + "99.999" : 1.7264487888570081, + "99.9999" : 1.7264487888570081, + "100.0" : 1.7264487888570081 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7213864558761982, + 1.7264487888570081 + ], + [ + 1.7201780646528506, + 1.7245387833909256 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8669447004278835, + "scoreError" : 0.0033409895220654477, + "scoreConfidence" : [ + 0.8636037109058181, + 0.8702856899499489 + ], + "scorePercentiles" : { + "0.0" : 0.8663656186685549, + "50.0" : 0.8669349875468758, + "90.0" : 0.8675432079492276, + "95.0" : 0.8675432079492276, + "99.0" : 0.8675432079492276, + "99.9" : 0.8675432079492276, + "99.99" : 0.8675432079492276, + "99.999" : 0.8675432079492276, + "99.9999" : 0.8675432079492276, + "100.0" : 0.8675432079492276 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8675432079492276, + 0.8663656186685549 + ], + [ + 0.8667023944569926, + 0.867167580636759 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 42.926276842278895, + "scoreError" : 2.4191606861477783, + "scoreConfidence" : [ + 40.50711615613112, + 45.34543752842667 + ], + "scorePercentiles" : { + "0.0" : 40.61444079049615, + "50.0" : 42.970686811193, + "90.0" : 45.1302030720952, + "95.0" : 45.1302030720952, + "99.0" : 45.1302030720952, + "99.9" : 45.1302030720952, + "99.99" : 45.1302030720952, + "99.999" : 45.1302030720952, + "99.9999" : 45.1302030720952, + "100.0" : 45.1302030720952 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 44.40817053790828, + 43.939215333141064, + 45.1302030720952 + ], + [ + 42.18269950399568, + 40.61444079049615, + 41.31916000552604 + ], + [ + 42.799976301303936, + 42.970686811193, + 42.971939224850715 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAbgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.022611135359511498, + "scoreError" : 5.924153810738151E-4, + "scoreConfidence" : [ + 0.022018719978437684, + 0.02320355074058531 + ], + "scorePercentiles" : { + "0.0" : 0.02192285936323851, + "50.0" : 0.022678289092760182, + "90.0" : 0.023260692930232557, + "95.0" : 0.023260692930232557, + "99.0" : 0.023260692930232557, + "99.9" : 0.023260692930232557, + "99.99" : 0.023260692930232557, + "99.999" : 0.023260692930232557, + "99.9999" : 0.023260692930232557, + "100.0" : 0.023260692930232557 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.022732881079545453, + 0.023260692930232557, + 0.022742364038636362 + ], + [ + 0.022468225233183856, + 0.022678289092760182, + 0.02192285936323851 + ], + [ + 0.022457287367713005, + 0.022713271950113377, + 0.02252434718018018 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2024-11-28T03:56:43Z-a3fcfcb843b2104f40e75940cea4ed03e6de12c0-jdk17.json b/performance-results/2024-11-28T03:56:43Z-a3fcfcb843b2104f40e75940cea4ed03e6de12c0-jdk17.json new file mode 100644 index 0000000000..f08161aec7 --- /dev/null +++ b/performance-results/2024-11-28T03:56:43Z-a3fcfcb843b2104f40e75940cea4ed03e6de12c0-jdk17.json @@ -0,0 +1,287 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4102578842457145, + "scoreError" : 0.02449629894447283, + "scoreConfidence" : [ + 3.3857615853012417, + 3.4347541831901873 + ], + "scorePercentiles" : { + "0.0" : 3.4062196008890453, + "50.0" : 3.40974951823215, + "90.0" : 3.4153128996295132, + "95.0" : 3.4153128996295132, + "99.0" : 3.4153128996295132, + "99.9" : 3.4153128996295132, + "99.99" : 3.4153128996295132, + "99.999" : 3.4153128996295132, + "99.9999" : 3.4153128996295132, + "100.0" : 3.4153128996295132 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4062196008890453, + 3.409143970092387 + ], + [ + 3.4103550663719124, + 3.4153128996295132 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.723628882965939, + "scoreError" : 0.01684992650921796, + "scoreConfidence" : [ + 1.706778956456721, + 1.7404788094751569 + ], + "scorePercentiles" : { + "0.0" : 1.720348242957288, + "50.0" : 1.7237243857120972, + "90.0" : 1.7267185174822728, + "95.0" : 1.7267185174822728, + "99.0" : 1.7267185174822728, + "99.9" : 1.7267185174822728, + "99.99" : 1.7267185174822728, + "99.999" : 1.7267185174822728, + "99.9999" : 1.7267185174822728, + "100.0" : 1.7267185174822728 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.720348242957288, + 1.7239130487239118 + ], + [ + 1.7235357227002823, + 1.7267185174822728 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8675344687711203, + "scoreError" : 0.007218718093431595, + "scoreConfidence" : [ + 0.8603157506776887, + 0.8747531868645518 + ], + "scorePercentiles" : { + "0.0" : 0.8659004700112273, + "50.0" : 0.8679187802361048, + "90.0" : 0.8683998446010442, + "95.0" : 0.8683998446010442, + "99.0" : 0.8683998446010442, + "99.9" : 0.8683998446010442, + "99.99" : 0.8683998446010442, + "99.999" : 0.8683998446010442, + "99.9999" : 0.8683998446010442, + "100.0" : 0.8683998446010442 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8677972271860673, + 0.8680403332861423 + ], + [ + 0.8659004700112273, + 0.8683998446010442 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 42.18911184050926, + "scoreError" : 0.9546618037946293, + "scoreConfidence" : [ + 41.234450036714634, + 43.14377364430389 + ], + "scorePercentiles" : { + "0.0" : 41.342744086435644, + "50.0" : 42.42040842447684, + "90.0" : 42.949395639087484, + "95.0" : 42.949395639087484, + "99.0" : 42.949395639087484, + "99.9" : 42.949395639087484, + "99.99" : 42.949395639087484, + "99.999" : 42.949395639087484, + "99.9999" : 42.949395639087484, + "100.0" : 42.949395639087484 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 42.949395639087484, + 42.43053158382356, + 42.77870012159051 + ], + [ + 42.10668734070957, + 42.47808802236617, + 42.42040842447684 + ], + [ + 41.342744086435644, + 41.459171410149246, + 41.736279935944374 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAbgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.022785715830115526, + "scoreError" : 7.765947574646602E-4, + "scoreConfidence" : [ + 0.022009121072650868, + 0.023562310587580185 + ], + "scorePercentiles" : { + "0.0" : 0.02206299895154185, + "50.0" : 0.022887831881006866, + "90.0" : 0.023311196390697675, + "95.0" : 0.023311196390697675, + "99.0" : 0.023311196390697675, + "99.9" : 0.023311196390697675, + "99.99" : 0.023311196390697675, + "99.999" : 0.023311196390697675, + "99.9999" : 0.023311196390697675, + "100.0" : 0.023311196390697675 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.022410095964205817, + 0.02206299895154185, + 0.022154066898230088 + ], + [ + 0.022887831881006866, + 0.022883768581235697, + 0.023030873466666667 + ], + [ + 0.02313581221939954, + 0.023311196390697675, + 0.023194798118055554 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2024-12-03T01:09:26Z-9d6e31e367f7b2929dd393a694dc05a0c5bb6e1a-jdk17.json b/performance-results/2024-12-03T01:09:26Z-9d6e31e367f7b2929dd393a694dc05a0c5bb6e1a-jdk17.json new file mode 100644 index 0000000000..cc3c0e1c6c --- /dev/null +++ b/performance-results/2024-12-03T01:09:26Z-9d6e31e367f7b2929dd393a694dc05a0c5bb6e1a-jdk17.json @@ -0,0 +1,287 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.416195951743301, + "scoreError" : 0.026850420058968587, + "scoreConfidence" : [ + 3.3893455316843326, + 3.4430463718022697 + ], + "scorePercentiles" : { + "0.0" : 3.4104756625310313, + "50.0" : 3.417284846910124, + "90.0" : 3.4197384506219257, + "95.0" : 3.4197384506219257, + "99.0" : 3.4197384506219257, + "99.9" : 3.4197384506219257, + "99.99" : 3.4197384506219257, + "99.999" : 3.4197384506219257, + "99.9999" : 3.4197384506219257, + "100.0" : 3.4197384506219257 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.415843843944456, + 3.4197384506219257 + ], + [ + 3.4104756625310313, + 3.4187258498757913 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7230485586886197, + "scoreError" : 0.020087806386833534, + "scoreConfidence" : [ + 1.7029607523017862, + 1.7431363650754532 + ], + "scorePercentiles" : { + "0.0" : 1.7187149064375862, + "50.0" : 1.7237077757716905, + "90.0" : 1.726063776773511, + "95.0" : 1.726063776773511, + "99.0" : 1.726063776773511, + "99.9" : 1.726063776773511, + "99.99" : 1.726063776773511, + "99.999" : 1.726063776773511, + "99.9999" : 1.726063776773511, + "100.0" : 1.726063776773511 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7187149064375862, + 1.7240607327472357 + ], + [ + 1.7233548187961456, + 1.726063776773511 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8672591450106986, + "scoreError" : 0.0031722136235199333, + "scoreConfidence" : [ + 0.8640869313871786, + 0.8704313586342185 + ], + "scorePercentiles" : { + "0.0" : 0.8668100501731115, + "50.0" : 0.8671493032151358, + "90.0" : 0.8679279234394113, + "95.0" : 0.8679279234394113, + "99.0" : 0.8679279234394113, + "99.9" : 0.8679279234394113, + "99.99" : 0.8679279234394113, + "99.999" : 0.8679279234394113, + "99.9999" : 0.8679279234394113, + "100.0" : 0.8679279234394113 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8673072236763956, + 0.8668100501731115 + ], + [ + 0.866991382753876, + 0.8679279234394113 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 42.98710131013886, + "scoreError" : 1.2857923706741503, + "scoreConfidence" : [ + 41.70130893946471, + 44.27289368081301 + ], + "scorePercentiles" : { + "0.0" : 41.39140519888467, + "50.0" : 43.14941248747299, + "90.0" : 44.20711145156694, + "95.0" : 44.20711145156694, + "99.0" : 44.20711145156694, + "99.9" : 44.20711145156694, + "99.99" : 44.20711145156694, + "99.999" : 44.20711145156694, + "99.9999" : 44.20711145156694, + "100.0" : 44.20711145156694 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 44.20711145156694, + 43.20559444971562, + 43.38709980039055 + ], + [ + 42.65699183021884, + 43.40605138244976, + 42.67513011200432 + ], + [ + 43.14941248747299, + 42.80511507854605, + 41.39140519888467 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAbgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.022628376233754664, + "scoreError" : 0.0010121779437417262, + "scoreConfidence" : [ + 0.021616198290012937, + 0.02364055417749639 + ], + "scorePercentiles" : { + "0.0" : 0.02194287973464912, + "50.0" : 0.02243926284753363, + "90.0" : 0.023448793035128805, + "95.0" : 0.023448793035128805, + "99.0" : 0.023448793035128805, + "99.9" : 0.023448793035128805, + "99.99" : 0.023448793035128805, + "99.999" : 0.023448793035128805, + "99.9999" : 0.023448793035128805, + "100.0" : 0.023448793035128805 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.02333720638927739, + 0.023367165808411215, + 0.023448793035128805 + ], + [ + 0.022580380595936794, + 0.022375214377232142, + 0.02243926284753363 + ], + [ + 0.022161285869469027, + 0.022003197446153845, + 0.02194287973464912 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2024-12-04T02:33:30Z-3e5c77ba3f27de559a65c42684fc7deb9dead263-jdk17.json b/performance-results/2024-12-04T02:33:30Z-3e5c77ba3f27de559a65c42684fc7deb9dead263-jdk17.json new file mode 100644 index 0000000000..2c04859665 --- /dev/null +++ b/performance-results/2024-12-04T02:33:30Z-3e5c77ba3f27de559a65c42684fc7deb9dead263-jdk17.json @@ -0,0 +1,287 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4152001755669277, + "scoreError" : 0.021628843464137723, + "scoreConfidence" : [ + 3.39357133210279, + 3.4368290190310655 + ], + "scorePercentiles" : { + "0.0" : 3.4121139027546206, + "50.0" : 3.4144609174987552, + "90.0" : 3.419764964515579, + "95.0" : 3.419764964515579, + "99.0" : 3.419764964515579, + "99.9" : 3.419764964515579, + "99.99" : 3.419764964515579, + "99.999" : 3.419764964515579, + "99.9999" : 3.419764964515579, + "100.0" : 3.419764964515579 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4134232276246173, + 3.419764964515579 + ], + [ + 3.4121139027546206, + 3.415498607372893 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7263020460260308, + "scoreError" : 0.019054912694287184, + "scoreConfidence" : [ + 1.7072471333317436, + 1.745356958720318 + ], + "scorePercentiles" : { + "0.0" : 1.7233094219683196, + "50.0" : 1.7257643130488556, + "90.0" : 1.7303701360380923, + "95.0" : 1.7303701360380923, + "99.0" : 1.7303701360380923, + "99.9" : 1.7303701360380923, + "99.99" : 1.7303701360380923, + "99.999" : 1.7303701360380923, + "99.9999" : 1.7303701360380923, + "100.0" : 1.7303701360380923 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7233094219683196, + 1.7257308147936137 + ], + [ + 1.7257978113040977, + 1.7303701360380923 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8680565422533224, + "scoreError" : 0.004144184933370064, + "scoreConfidence" : [ + 0.8639123573199523, + 0.8722007271866925 + ], + "scorePercentiles" : { + "0.0" : 0.8673780217192926, + "50.0" : 0.8680285063653239, + "90.0" : 0.8687911345633491, + "95.0" : 0.8687911345633491, + "99.0" : 0.8687911345633491, + "99.9" : 0.8687911345633491, + "99.99" : 0.8687911345633491, + "99.999" : 0.8687911345633491, + "99.9999" : 0.8687911345633491, + "100.0" : 0.8687911345633491 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8673780217192926, + 0.8687911345633491 + ], + [ + 0.8683692960924105, + 0.8676877166382374 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 43.24510151191392, + "scoreError" : 1.658507364853044, + "scoreConfidence" : [ + 41.58659414706088, + 44.90360887676697 + ], + "scorePercentiles" : { + "0.0" : 41.770911843921056, + "50.0" : 43.48692947280641, + "90.0" : 44.42339392286783, + "95.0" : 44.42339392286783, + "99.0" : 44.42339392286783, + "99.9" : 44.42339392286783, + "99.99" : 44.42339392286783, + "99.999" : 44.42339392286783, + "99.9999" : 44.42339392286783, + "100.0" : 44.42339392286783 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 44.42339392286783, + 43.72390047070996, + 44.0283409955762 + ], + [ + 41.770911843921056, + 41.938385219028056, + 42.33876278427692 + ], + [ + 43.36311706281474, + 43.48692947280641, + 44.13217183522408 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAbgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.022512762277781196, + "scoreError" : 5.112572288638061E-4, + "scoreConfidence" : [ + 0.02200150504891739, + 0.023024019506645003 + ], + "scorePercentiles" : { + "0.0" : 0.022083574353200883, + "50.0" : 0.022541668768018018, + "90.0" : 0.02301931708275862, + "95.0" : 0.02301931708275862, + "99.0" : 0.02301931708275862, + "99.9" : 0.02301931708275862, + "99.99" : 0.02301931708275862, + "99.999" : 0.02301931708275862, + "99.9999" : 0.02301931708275862, + "100.0" : 0.02301931708275862 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.02301931708275862, + 0.02268371470068027, + 0.022794350806378132 + ], + [ + 0.02236791441517857, + 0.02244032732735426, + 0.022571994894144146 + ], + [ + 0.02211199815231788, + 0.022083574353200883, + 0.022541668768018018 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2024-12-05T21:56:29Z-08cf1702ce0c96ee0ed414ee8085a75696bc6cae-jdk17.json b/performance-results/2024-12-05T21:56:29Z-08cf1702ce0c96ee0ed414ee8085a75696bc6cae-jdk17.json new file mode 100644 index 0000000000..2eb4cb00ca --- /dev/null +++ b/performance-results/2024-12-05T21:56:29Z-08cf1702ce0c96ee0ed414ee8085a75696bc6cae-jdk17.json @@ -0,0 +1,287 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.39947127955597, + "scoreError" : 0.04375139947714444, + "scoreConfidence" : [ + 3.3557198800788255, + 3.4432226790331146 + ], + "scorePercentiles" : { + "0.0" : 3.3932042357857095, + "50.0" : 3.398319202804707, + "90.0" : 3.4080424768287556, + "95.0" : 3.4080424768287556, + "99.0" : 3.4080424768287556, + "99.9" : 3.4080424768287556, + "99.99" : 3.4080424768287556, + "99.999" : 3.4080424768287556, + "99.9999" : 3.4080424768287556, + "100.0" : 3.4080424768287556 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.3932042357857095, + 3.3949930686358667 + ], + [ + 3.4016453369735475, + 3.4080424768287556 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7202643292853323, + "scoreError" : 0.010698822469557535, + "scoreConfidence" : [ + 1.709565506815775, + 1.7309631517548898 + ], + "scorePercentiles" : { + "0.0" : 1.7185075642902061, + "50.0" : 1.7200781357517012, + "90.0" : 1.722393481347721, + "95.0" : 1.722393481347721, + "99.0" : 1.722393481347721, + "99.9" : 1.722393481347721, + "99.99" : 1.722393481347721, + "99.999" : 1.722393481347721, + "99.9999" : 1.722393481347721, + "100.0" : 1.722393481347721 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7185075642902061, + 1.722393481347721 + ], + [ + 1.719561062814024, + 1.7205952086893783 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8654605738416737, + "scoreError" : 0.002206407164656894, + "scoreConfidence" : [ + 0.8632541666770168, + 0.8676669810063307 + ], + "scorePercentiles" : { + "0.0" : 0.8649842104508775, + "50.0" : 0.8655377996365867, + "90.0" : 0.8657824856426442, + "95.0" : 0.8657824856426442, + "99.0" : 0.8657824856426442, + "99.9" : 0.8657824856426442, + "99.99" : 0.8657824856426442, + "99.999" : 0.8657824856426442, + "99.9999" : 0.8657824856426442, + "100.0" : 0.8657824856426442 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8649842104508775, + 0.8654774880262567 + ], + [ + 0.8655981112469168, + 0.8657824856426442 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 41.38406101685299, + "scoreError" : 0.6843156074743918, + "scoreConfidence" : [ + 40.6997454093786, + 42.06837662432738 + ], + "scorePercentiles" : { + "0.0" : 40.78923580225026, + "50.0" : 41.44125463453928, + "90.0" : 41.95496958011177, + "95.0" : 41.95496958011177, + "99.0" : 41.95496958011177, + "99.9" : 41.95496958011177, + "99.99" : 41.95496958011177, + "99.999" : 41.95496958011177, + "99.9999" : 41.95496958011177, + "100.0" : 41.95496958011177 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 40.90606757700961, + 41.44125463453928, + 41.95496958011177 + ], + [ + 41.86591295369653, + 41.48402929587195, + 41.624082377265175 + ], + [ + 41.04673717098326, + 41.34425975994901, + 40.78923580225026 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAbgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.024747128652428545, + "scoreError" : 8.316013168757033E-4, + "scoreConfidence" : [ + 0.02391552733555284, + 0.02557872996930425 + ], + "scorePercentiles" : { + "0.0" : 0.02395063935167464, + "50.0" : 0.024757809653465346, + "90.0" : 0.025461867081424935, + "95.0" : 0.025461867081424935, + "99.0" : 0.025461867081424935, + "99.9" : 0.025461867081424935, + "99.99" : 0.025461867081424935, + "99.999" : 0.025461867081424935, + "99.9999" : 0.025461867081424935, + "100.0" : 0.025461867081424935 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.024250484956416466, + 0.02482653333995037, + 0.024802851465346536 + ], + [ + 0.025461867081424935, + 0.02452199099754902, + 0.02545728996183206 + ], + [ + 0.02469469106419753, + 0.024757809653465346, + 0.02395063935167464 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2024-12-08T08:18:55Z-3d46b3737bf4f0c617425af4c63036a1336a7423-jdk17.json b/performance-results/2024-12-08T08:18:55Z-3d46b3737bf4f0c617425af4c63036a1336a7423-jdk17.json new file mode 100644 index 0000000000..d7d4143001 --- /dev/null +++ b/performance-results/2024-12-08T08:18:55Z-3d46b3737bf4f0c617425af4c63036a1336a7423-jdk17.json @@ -0,0 +1,287 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4077902649261356, + "scoreError" : 0.011234878517476501, + "scoreConfidence" : [ + 3.396555386408659, + 3.419025143443612 + ], + "scorePercentiles" : { + "0.0" : 3.4053492910657934, + "50.0" : 3.408347201679087, + "90.0" : 3.4091173652805766, + "95.0" : 3.4091173652805766, + "99.0" : 3.4091173652805766, + "99.9" : 3.4091173652805766, + "99.99" : 3.4091173652805766, + "99.999" : 3.4091173652805766, + "99.9999" : 3.4091173652805766, + "100.0" : 3.4091173652805766 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4053492910657934, + 3.407743717137213 + ], + [ + 3.40895068622096, + 3.4091173652805766 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7203127954265476, + "scoreError" : 0.013318600773962557, + "scoreConfidence" : [ + 1.706994194652585, + 1.73363139620051 + ], + "scorePercentiles" : { + "0.0" : 1.7175975018719172, + "50.0" : 1.7205913784095175, + "90.0" : 1.722470923015238, + "95.0" : 1.722470923015238, + "99.0" : 1.722470923015238, + "99.9" : 1.722470923015238, + "99.99" : 1.722470923015238, + "99.999" : 1.722470923015238, + "99.9999" : 1.722470923015238, + "100.0" : 1.722470923015238 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7211197986006654, + 1.722470923015238 + ], + [ + 1.7175975018719172, + 1.7200629582183695 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8650705897922965, + "scoreError" : 0.009557110836336062, + "scoreConfidence" : [ + 0.8555134789559604, + 0.8746277006286325 + ], + "scorePercentiles" : { + "0.0" : 0.8631902016341529, + "50.0" : 0.8653947483238336, + "90.0" : 0.8663026608873658, + "95.0" : 0.8663026608873658, + "99.0" : 0.8663026608873658, + "99.9" : 0.8663026608873658, + "99.99" : 0.8663026608873658, + "99.999" : 0.8663026608873658, + "99.9999" : 0.8663026608873658, + "100.0" : 0.8663026608873658 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8662003758298101, + 0.8663026608873658 + ], + [ + 0.8631902016341529, + 0.864589120817857 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 41.829882344445565, + "scoreError" : 2.1834707260014885, + "scoreConfidence" : [ + 39.64641161844408, + 44.01335307044705 + ], + "scorePercentiles" : { + "0.0" : 40.522546266756436, + "50.0" : 41.16019698230881, + "90.0" : 43.998564098060946, + "95.0" : 43.998564098060946, + "99.0" : 43.998564098060946, + "99.9" : 43.998564098060946, + "99.99" : 43.998564098060946, + "99.999" : 43.998564098060946, + "99.9999" : 43.998564098060946, + "100.0" : 43.998564098060946 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 40.99599155133248, + 41.10904513591438, + 41.16019698230881 + ], + [ + 40.92612743551148, + 41.19737129049191, + 40.522546266756436 + ], + [ + 43.20615819460214, + 43.998564098060946, + 43.3529401450314 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAbgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.023323010576891567, + "scoreError" : 6.943879125023075E-4, + "scoreConfidence" : [ + 0.02262862266438926, + 0.024017398489393875 + ], + "scorePercentiles" : { + "0.0" : 0.02265938378280543, + "50.0" : 0.023499072201877934, + "90.0" : 0.02383227217142857, + "95.0" : 0.02383227217142857, + "99.0" : 0.02383227217142857, + "99.9" : 0.02383227217142857, + "99.99" : 0.02383227217142857, + "99.999" : 0.02383227217142857, + "99.9999" : 0.02383227217142857, + "100.0" : 0.02383227217142857 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.023499072201877934, + 0.023596047476415093, + 0.023534972790588235 + ], + [ + 0.022848023748858446, + 0.022876015378995435, + 0.02265938378280543 + ], + [ + 0.023485217551643192, + 0.023576090089411764, + 0.02383227217142857 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2024-12-08T22:54:25Z-46c03234896e2ffad02a5dbf704a721ea0717c67-jdk17.json b/performance-results/2024-12-08T22:54:25Z-46c03234896e2ffad02a5dbf704a721ea0717c67-jdk17.json new file mode 100644 index 0000000000..a13f68e381 --- /dev/null +++ b/performance-results/2024-12-08T22:54:25Z-46c03234896e2ffad02a5dbf704a721ea0717c67-jdk17.json @@ -0,0 +1,287 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.424378627035124, + "scoreError" : 0.0240399263203179, + "scoreConfidence" : [ + 3.4003387007148063, + 3.448418553355442 + ], + "scorePercentiles" : { + "0.0" : 3.4207630701321463, + "50.0" : 3.4236022814383293, + "90.0" : 3.429546875131693, + "95.0" : 3.429546875131693, + "99.0" : 3.429546875131693, + "99.9" : 3.429546875131693, + "99.99" : 3.429546875131693, + "99.999" : 3.429546875131693, + "99.9999" : 3.429546875131693, + "100.0" : 3.429546875131693 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4230868615582297, + 3.429546875131693 + ], + [ + 3.4207630701321463, + 3.4241177013184285 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7298687803269965, + "scoreError" : 0.010463124288060224, + "scoreConfidence" : [ + 1.7194056560389364, + 1.7403319046150567 + ], + "scorePercentiles" : { + "0.0" : 1.7280934234954237, + "50.0" : 1.7296979626163922, + "90.0" : 1.731985772579778, + "95.0" : 1.731985772579778, + "99.0" : 1.731985772579778, + "99.9" : 1.731985772579778, + "99.99" : 1.731985772579778, + "99.999" : 1.731985772579778, + "99.9999" : 1.731985772579778, + "100.0" : 1.731985772579778 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7294035761393258, + 1.731985772579778 + ], + [ + 1.7280934234954237, + 1.7299923490934583 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8701164779654085, + "scoreError" : 0.00395761298041778, + "scoreConfidence" : [ + 0.8661588649849907, + 0.8740740909458262 + ], + "scorePercentiles" : { + "0.0" : 0.869458088898, + "50.0" : 0.8701123859892204, + "90.0" : 0.8707830509851929, + "95.0" : 0.8707830509851929, + "99.0" : 0.8707830509851929, + "99.9" : 0.8707830509851929, + "99.99" : 0.8707830509851929, + "99.999" : 0.8707830509851929, + "99.9999" : 0.8707830509851929, + "100.0" : 0.8707830509851929 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8704641226465905, + 0.8707830509851929 + ], + [ + 0.869458088898, + 0.8697606493318503 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 44.78882381498855, + "scoreError" : 1.6789885454880027, + "scoreConfidence" : [ + 43.10983526950054, + 46.46781236047655 + ], + "scorePercentiles" : { + "0.0" : 43.649949104503946, + "50.0" : 44.40706804090582, + "90.0" : 46.08789493604563, + "95.0" : 46.08789493604563, + "99.0" : 46.08789493604563, + "99.9" : 46.08789493604563, + "99.99" : 46.08789493604563, + "99.999" : 46.08789493604563, + "99.9999" : 46.08789493604563, + "100.0" : 46.08789493604563 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 46.06557024270227, + 46.08789493604563, + 46.08198077042825 + ], + [ + 44.39265750328088, + 44.40706804090582, + 44.42821713852795 + ], + [ + 43.649949104503946, + 43.99180129638337, + 43.99427530211887 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAbgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.02236314997162596, + "scoreError" : 7.931364759453877E-4, + "scoreConfidence" : [ + 0.021570013495680572, + 0.023156286447571346 + ], + "scorePercentiles" : { + "0.0" : 0.022002074795604395, + "50.0" : 0.022066712607929515, + "90.0" : 0.02300942944597701, + "95.0" : 0.02300942944597701, + "99.0" : 0.02300942944597701, + "99.9" : 0.02300942944597701, + "99.99" : 0.02300942944597701, + "99.999" : 0.02300942944597701, + "99.9999" : 0.02300942944597701, + "100.0" : 0.02300942944597701 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.02299016895632184, + 0.02297587995642202, + 0.02300942944597701 + ], + [ + 0.02206858371585903, + 0.022066712607929515, + 0.022060007019823788 + ], + [ + 0.022002074795604395, + 0.022048064753303964, + 0.02204742849339207 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2024-12-09T02:45:13Z-35760dc9e50dc3ce35a046a5b272eda696c870d5-jdk17.json b/performance-results/2024-12-09T02:45:13Z-35760dc9e50dc3ce35a046a5b272eda696c870d5-jdk17.json new file mode 100644 index 0000000000..68ea673507 --- /dev/null +++ b/performance-results/2024-12-09T02:45:13Z-35760dc9e50dc3ce35a046a5b272eda696c870d5-jdk17.json @@ -0,0 +1,287 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.3995645247595654, + "scoreError" : 0.02987629044326602, + "scoreConfidence" : [ + 3.3696882343162993, + 3.4294408152028315 + ], + "scorePercentiles" : { + "0.0" : 3.393628753189234, + "50.0" : 3.400273375153123, + "90.0" : 3.404082595542781, + "95.0" : 3.404082595542781, + "99.0" : 3.404082595542781, + "99.9" : 3.404082595542781, + "99.99" : 3.404082595542781, + "99.999" : 3.404082595542781, + "99.9999" : 3.404082595542781, + "100.0" : 3.404082595542781 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.398339998248194, + 3.4022067520580523 + ], + [ + 3.393628753189234, + 3.404082595542781 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7205088090910943, + "scoreError" : 0.012083738709990733, + "scoreConfidence" : [ + 1.7084250703811035, + 1.732592547801085 + ], + "scorePercentiles" : { + "0.0" : 1.7181281468730438, + "50.0" : 1.7209360921738943, + "90.0" : 1.722034905143545, + "95.0" : 1.722034905143545, + "99.0" : 1.722034905143545, + "99.9" : 1.722034905143545, + "99.99" : 1.722034905143545, + "99.999" : 1.722034905143545, + "99.9999" : 1.722034905143545, + "100.0" : 1.722034905143545 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7181281468730438, + 1.722034905143545 + ], + [ + 1.7199044135030424, + 1.721967770844746 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.864565745832372, + "scoreError" : 0.0026425774790852547, + "scoreConfidence" : [ + 0.8619231683532868, + 0.8672083233114573 + ], + "scorePercentiles" : { + "0.0" : 0.8642812220365862, + "50.0" : 0.8644122330769803, + "90.0" : 0.8651572951389412, + "95.0" : 0.8651572951389412, + "99.0" : 0.8651572951389412, + "99.9" : 0.8651572951389412, + "99.99" : 0.8651572951389412, + "99.999" : 0.8651572951389412, + "99.9999" : 0.8651572951389412, + "100.0" : 0.8651572951389412 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8642812220365862, + 0.8643034133675414 + ], + [ + 0.8645210527864192, + 0.8651572951389412 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 38.949218227332636, + "scoreError" : 1.5418956244161082, + "scoreConfidence" : [ + 37.40732260291653, + 40.49111385174874 + ], + "scorePercentiles" : { + "0.0" : 37.33301129092536, + "50.0" : 38.9146032107846, + "90.0" : 40.30890725487399, + "95.0" : 40.30890725487399, + "99.0" : 40.30890725487399, + "99.9" : 40.30890725487399, + "99.99" : 40.30890725487399, + "99.999" : 40.30890725487399, + "99.9999" : 40.30890725487399, + "100.0" : 40.30890725487399 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 39.64330498367299, + 39.921199062124764, + 40.30890725487399 + ], + [ + 37.33301129092536, + 38.286993705317236, + 38.383005751480006 + ], + [ + 39.07198320782333, + 38.9146032107846, + 38.6799555789915 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAbgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.026043005372482237, + "scoreError" : 0.0013237341236282344, + "scoreConfidence" : [ + 0.024719271248854, + 0.027366739496110473 + ], + "scorePercentiles" : { + "0.0" : 0.024870349985111662, + "50.0" : 0.026153539485639688, + "90.0" : 0.026994492881401617, + "95.0" : 0.026994492881401617, + "99.0" : 0.026994492881401617, + "99.9" : 0.026994492881401617, + "99.99" : 0.026994492881401617, + "99.999" : 0.026994492881401617, + "99.9999" : 0.026994492881401617, + "100.0" : 0.026994492881401617 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.025874787736434108, + 0.026153539485639688, + 0.026638927933510637 + ], + [ + 0.02556267860714286, + 0.024960604900249376, + 0.024870349985111662 + ], + [ + 0.02643135141424802, + 0.026994492881401617, + 0.02690031540860215 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2024-12-17T03:02:43Z-9de9f06a7200cf98c69129730626f9a5f35f6e8d-jdk17.json b/performance-results/2024-12-17T03:02:43Z-9de9f06a7200cf98c69129730626f9a5f35f6e8d-jdk17.json new file mode 100644 index 0000000000..ccf4a784ae --- /dev/null +++ b/performance-results/2024-12-17T03:02:43Z-9de9f06a7200cf98c69129730626f9a5f35f6e8d-jdk17.json @@ -0,0 +1,287 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4254834308373514, + "scoreError" : 0.015025400543458568, + "scoreConfidence" : [ + 3.410458030293893, + 3.44050883138081 + ], + "scorePercentiles" : { + "0.0" : 3.423328219387952, + "50.0" : 3.425552177730207, + "90.0" : 3.42750114850104, + "95.0" : 3.42750114850104, + "99.0" : 3.42750114850104, + "99.9" : 3.42750114850104, + "99.99" : 3.42750114850104, + "99.999" : 3.42750114850104, + "99.9999" : 3.42750114850104, + "100.0" : 3.42750114850104 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.423328219387952, + 3.42750114850104 + ], + [ + 3.4236164536870035, + 3.4274879017734112 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7302247645519597, + "scoreError" : 0.010033955510826632, + "scoreConfidence" : [ + 1.720190809041133, + 1.7402587200627864 + ], + "scorePercentiles" : { + "0.0" : 1.7288955727752675, + "50.0" : 1.7298209211776594, + "90.0" : 1.7323616430772524, + "95.0" : 1.7323616430772524, + "99.0" : 1.7323616430772524, + "99.9" : 1.7323616430772524, + "99.99" : 1.7323616430772524, + "99.999" : 1.7323616430772524, + "99.9999" : 1.7323616430772524, + "100.0" : 1.7323616430772524 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7292851672177052, + 1.7323616430772524 + ], + [ + 1.7288955727752675, + 1.7303566751376136 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8700678921409488, + "scoreError" : 0.00713353924393665, + "scoreConfidence" : [ + 0.8629343528970121, + 0.8772014313848855 + ], + "scorePercentiles" : { + "0.0" : 0.8686670360707984, + "50.0" : 0.8701250932717297, + "90.0" : 0.8713543459495379, + "95.0" : 0.8713543459495379, + "99.0" : 0.8713543459495379, + "99.9" : 0.8713543459495379, + "99.99" : 0.8713543459495379, + "99.999" : 0.8713543459495379, + "99.9999" : 0.8713543459495379, + "100.0" : 0.8713543459495379 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8686670360707984, + 0.8702516506204957 + ], + [ + 0.8699985359229638, + 0.8713543459495379 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 45.32130915520371, + "scoreError" : 3.560055957159324, + "scoreConfidence" : [ + 41.761253198044386, + 48.88136511236303 + ], + "scorePercentiles" : { + "0.0" : 42.7537076662837, + "50.0" : 45.5422455784985, + "90.0" : 47.642633062453015, + "95.0" : 47.642633062453015, + "99.0" : 47.642633062453015, + "99.9" : 47.642633062453015, + "99.99" : 47.642633062453015, + "99.999" : 47.642633062453015, + "99.9999" : 47.642633062453015, + "100.0" : 47.642633062453015 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 42.7537076662837, + 42.76955088117818, + 42.768304606190554 + ], + [ + 47.63155598328764, + 47.64036553406184, + 47.642633062453015 + ], + [ + 45.624284346660495, + 45.519134738219414, + 45.5422455784985 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAbgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.022670557238933457, + "scoreError" : 9.94605572521605E-4, + "scoreConfidence" : [ + 0.02167595166641185, + 0.023665162811455063 + ], + "scorePercentiles" : { + "0.0" : 0.022023165004395603, + "50.0" : 0.022586484038374717, + "90.0" : 0.02347066886416862, + "95.0" : 0.02347066886416862, + "99.0" : 0.02347066886416862, + "99.9" : 0.02347066886416862, + "99.99" : 0.02347066886416862, + "99.999" : 0.02347066886416862, + "99.9999" : 0.02347066886416862, + "100.0" : 0.02347066886416862 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.02347066886416862, + 0.023345283524475523, + 0.02333887996270396 + ], + [ + 0.02202807403964758, + 0.02202869620044053, + 0.022023165004395603 + ], + [ + 0.022632988674208144, + 0.022580774841986458, + 0.022586484038374717 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2024-12-26T02:48:37Z-d4b3b07df4d1edecfdcaaec4fb5adc54728f9574-jdk17.json b/performance-results/2024-12-26T02:48:37Z-d4b3b07df4d1edecfdcaaec4fb5adc54728f9574-jdk17.json new file mode 100644 index 0000000000..b1e6221354 --- /dev/null +++ b/performance-results/2024-12-26T02:48:37Z-d4b3b07df4d1edecfdcaaec4fb5adc54728f9574-jdk17.json @@ -0,0 +1,287 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4183186208130487, + "scoreError" : 0.022246121905918532, + "scoreConfidence" : [ + 3.39607249890713, + 3.4405647427189674 + ], + "scorePercentiles" : { + "0.0" : 3.413848941434486, + "50.0" : 3.4190590718704748, + "90.0" : 3.42130739807676, + "95.0" : 3.42130739807676, + "99.0" : 3.42130739807676, + "99.9" : 3.42130739807676, + "99.99" : 3.42130739807676, + "99.999" : 3.42130739807676, + "99.9999" : 3.42130739807676, + "100.0" : 3.42130739807676 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4173936330209784, + 3.42130739807676 + ], + [ + 3.413848941434486, + 3.4207245107199706 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7291357989986291, + "scoreError" : 0.015790087869288705, + "scoreConfidence" : [ + 1.7133457111293404, + 1.7449258868679178 + ], + "scorePercentiles" : { + "0.0" : 1.726553979052951, + "50.0" : 1.7288314425743558, + "90.0" : 1.7323263317928532, + "95.0" : 1.7323263317928532, + "99.0" : 1.7323263317928532, + "99.9" : 1.7323263317928532, + "99.99" : 1.7323263317928532, + "99.999" : 1.7323263317928532, + "99.9999" : 1.7323263317928532, + "100.0" : 1.7323263317928532 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.726553979052951, + 1.729495524499686 + ], + [ + 1.728167360649026, + 1.7323263317928532 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8694925783721111, + "scoreError" : 0.0043954381149764795, + "scoreConfidence" : [ + 0.8650971402571347, + 0.8738880164870876 + ], + "scorePercentiles" : { + "0.0" : 0.868936526115034, + "50.0" : 0.8692746681495762, + "90.0" : 0.8704844510742582, + "95.0" : 0.8704844510742582, + "99.0" : 0.8704844510742582, + "99.9" : 0.8704844510742582, + "99.99" : 0.8704844510742582, + "99.999" : 0.8704844510742582, + "99.9999" : 0.8704844510742582, + "100.0" : 0.8704844510742582 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.869270402780433, + 0.8692789335187193 + ], + [ + 0.868936526115034, + 0.8704844510742582 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 44.48605468306695, + "scoreError" : 2.5689013669187672, + "scoreConfidence" : [ + 41.91715331614819, + 47.05495604998572 + ], + "scorePercentiles" : { + "0.0" : 42.465270555590564, + "50.0" : 45.23859981991722, + "90.0" : 45.75807170958764, + "95.0" : 45.75807170958764, + "99.0" : 45.75807170958764, + "99.9" : 45.75807170958764, + "99.99" : 45.75807170958764, + "99.999" : 45.75807170958764, + "99.9999" : 45.75807170958764, + "100.0" : 45.75807170958764 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 42.465270555590564, + 42.465537157018524, + 42.47251210446258 + ], + [ + 45.75807170958764, + 45.73163472741838, + 45.73404569787986 + ], + [ + 45.23859981991722, + 45.22964511515073, + 45.279175260577084 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAbgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.02247107156704055, + "scoreError" : 5.19834581792683E-4, + "scoreConfidence" : [ + 0.021951236985247865, + 0.022990906148833232 + ], + "scorePercentiles" : { + "0.0" : 0.02216260132522124, + "50.0" : 0.0223607604375, + "90.0" : 0.022881822034246574, + "95.0" : 0.022881822034246574, + "99.0" : 0.022881822034246574, + "99.9" : 0.022881822034246574, + "99.99" : 0.022881822034246574, + "99.999" : 0.022881822034246574, + "99.9999" : 0.022881822034246574, + "100.0" : 0.022881822034246574 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.022213481620842572, + 0.022176993237250555, + 0.02216260132522124 + ], + [ + 0.022881822034246574, + 0.022866326511415524, + 0.02286390547260274 + ], + [ + 0.02236220743526786, + 0.0223607604375, + 0.022351546029017857 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-01-03T23:05:41Z-74c62b6464504f3231805d928499e3faaeaddd2b-jdk17.json b/performance-results/2025-01-03T23:05:41Z-74c62b6464504f3231805d928499e3faaeaddd2b-jdk17.json new file mode 100644 index 0000000000..3e67765b46 --- /dev/null +++ b/performance-results/2025-01-03T23:05:41Z-74c62b6464504f3231805d928499e3faaeaddd2b-jdk17.json @@ -0,0 +1,287 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4086383192028586, + "scoreError" : 0.05662927719471223, + "scoreConfidence" : [ + 3.3520090420081465, + 3.4652675963975708 + ], + "scorePercentiles" : { + "0.0" : 3.3989687508416133, + "50.0" : 3.4089573516309404, + "90.0" : 3.4176698227079405, + "95.0" : 3.4176698227079405, + "99.0" : 3.4176698227079405, + "99.9" : 3.4176698227079405, + "99.99" : 3.4176698227079405, + "99.999" : 3.4176698227079405, + "99.9999" : 3.4176698227079405, + "100.0" : 3.4176698227079405 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.3989687508416133, + 3.4037075113574597 + ], + [ + 3.4176698227079405, + 3.414207191904421 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7247042514212518, + "scoreError" : 0.025577661073979848, + "scoreConfidence" : [ + 1.699126590347272, + 1.7502819124952316 + ], + "scorePercentiles" : { + "0.0" : 1.7199822553826223, + "50.0" : 1.7247603094085062, + "90.0" : 1.729314131485372, + "95.0" : 1.729314131485372, + "99.0" : 1.729314131485372, + "99.9" : 1.729314131485372, + "99.99" : 1.729314131485372, + "99.999" : 1.729314131485372, + "99.9999" : 1.729314131485372, + "100.0" : 1.729314131485372 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7199822553826223, + 1.7234475192789092 + ], + [ + 1.7260730995381033, + 1.729314131485372 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.866926795435834, + "scoreError" : 0.0024224565675789894, + "scoreConfidence" : [ + 0.864504338868255, + 0.869349252003413 + ], + "scorePercentiles" : { + "0.0" : 0.86643401727251, + "50.0" : 0.8670019062531722, + "90.0" : 0.8672693519644817, + "95.0" : 0.8672693519644817, + "99.0" : 0.8672693519644817, + "99.9" : 0.8672693519644817, + "99.99" : 0.8672693519644817, + "99.999" : 0.8672693519644817, + "99.9999" : 0.8672693519644817, + "100.0" : 0.8672693519644817 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8671602438844096, + 0.8672693519644817 + ], + [ + 0.86643401727251, + 0.8668435686219347 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 43.19235624466463, + "scoreError" : 0.8357968532166162, + "scoreConfidence" : [ + 42.356559391448016, + 44.028153097881244 + ], + "scorePercentiles" : { + "0.0" : 42.558882497479054, + "50.0" : 43.37071116457182, + "90.0" : 43.74757796416252, + "95.0" : 43.74757796416252, + "99.0" : 43.74757796416252, + "99.9" : 43.74757796416252, + "99.99" : 43.74757796416252, + "99.999" : 43.74757796416252, + "99.9999" : 43.74757796416252, + "100.0" : 43.74757796416252 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 43.74757796416252, + 43.62853498940572, + 43.704103996118626 + ], + [ + 43.1493793660059, + 43.40285809714331, + 43.37071116457182 + ], + [ + 42.60127105164282, + 42.567887075451914, + 42.558882497479054 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAbgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.02386800728298746, + "scoreError" : 0.0012277527492095812, + "scoreConfidence" : [ + 0.022640254533777878, + 0.025095760032197042 + ], + "scorePercentiles" : { + "0.0" : 0.023171930243055555, + "50.0" : 0.023588256443396228, + "90.0" : 0.024856540679900743, + "95.0" : 0.024856540679900743, + "99.0" : 0.024856540679900743, + "99.9" : 0.024856540679900743, + "99.99" : 0.024856540679900743, + "99.999" : 0.024856540679900743, + "99.9999" : 0.024856540679900743, + "100.0" : 0.024856540679900743 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.02369723180851064, + 0.023588256443396228, + 0.023394148107476635 + ], + [ + 0.024750938538271604, + 0.024856540679900743, + 0.024840508146401985 + ], + [ + 0.023294356925581395, + 0.023171930243055555, + 0.023218154654292344 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-01-06T22:51:09Z-9b4739e8f4dfc1f84a50807d8f4f511a9c84766b-jdk17.json b/performance-results/2025-01-06T22:51:09Z-9b4739e8f4dfc1f84a50807d8f4f511a9c84766b-jdk17.json new file mode 100644 index 0000000000..d5e2c28bc1 --- /dev/null +++ b/performance-results/2025-01-06T22:51:09Z-9b4739e8f4dfc1f84a50807d8f4f511a9c84766b-jdk17.json @@ -0,0 +1,287 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.3976951594270473, + "scoreError" : 0.021181351836786013, + "scoreConfidence" : [ + 3.3765138075902614, + 3.418876511263833 + ], + "scorePercentiles" : { + "0.0" : 3.394397211357331, + "50.0" : 3.3970764950011465, + "90.0" : 3.4022304363485647, + "95.0" : 3.4022304363485647, + "99.0" : 3.4022304363485647, + "99.9" : 3.4022304363485647, + "99.99" : 3.4022304363485647, + "99.999" : 3.4022304363485647, + "99.9999" : 3.4022304363485647, + "100.0" : 3.4022304363485647 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.396971687382568, + 3.4022304363485647 + ], + [ + 3.394397211357331, + 3.397181302619725 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7206873716995075, + "scoreError" : 0.012165584639558507, + "scoreConfidence" : [ + 1.708521787059949, + 1.732852956339066 + ], + "scorePercentiles" : { + "0.0" : 1.7186421998985886, + "50.0" : 1.7205165660847093, + "90.0" : 1.723074154730023, + "95.0" : 1.723074154730023, + "99.0" : 1.723074154730023, + "99.9" : 1.723074154730023, + "99.99" : 1.723074154730023, + "99.999" : 1.723074154730023, + "99.9999" : 1.723074154730023, + "100.0" : 1.723074154730023 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7186421998985886, + 1.723074154730023 + ], + [ + 1.7199270052468307, + 1.7211061269225876 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8652782291117496, + "scoreError" : 0.005814391511710975, + "scoreConfidence" : [ + 0.8594638376000386, + 0.8710926206234605 + ], + "scorePercentiles" : { + "0.0" : 0.8644150098784186, + "50.0" : 0.86521255834284, + "90.0" : 0.8662727898828995, + "95.0" : 0.8662727898828995, + "99.0" : 0.8662727898828995, + "99.9" : 0.8662727898828995, + "99.99" : 0.8662727898828995, + "99.999" : 0.8662727898828995, + "99.9999" : 0.8662727898828995, + "100.0" : 0.8662727898828995 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8644150098784186, + 0.8657981807853821 + ], + [ + 0.8646269359002979, + 0.8662727898828995 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 40.61285782239622, + "scoreError" : 0.6777927611228544, + "scoreConfidence" : [ + 39.93506506127337, + 41.290650583519074 + ], + "scorePercentiles" : { + "0.0" : 40.135983126980456, + "50.0" : 40.446192613931636, + "90.0" : 41.26053647129548, + "95.0" : 41.26053647129548, + "99.0" : 41.26053647129548, + "99.9" : 41.26053647129548, + "99.99" : 41.26053647129548, + "99.999" : 41.26053647129548, + "99.9999" : 41.26053647129548, + "100.0" : 41.26053647129548 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 40.42388748729046, + 40.135983126980456, + 40.446192613931636 + ], + [ + 41.26053647129548, + 40.93219516379605, + 41.0876293447744 + ], + [ + 40.692707622637776, + 40.36803370459829, + 40.168554866261466 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAbgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.024507084673500084, + "scoreError" : 7.918917887814012E-4, + "scoreConfidence" : [ + 0.023715192884718683, + 0.025298976462281485 + ], + "scorePercentiles" : { + "0.0" : 0.023988348623501198, + "50.0" : 0.02444568706097561, + "90.0" : 0.025114872824561405, + "95.0" : 0.025114872824561405, + "99.0" : 0.025114872824561405, + "99.9" : 0.025114872824561405, + "99.99" : 0.025114872824561405, + "99.999" : 0.025114872824561405, + "99.9999" : 0.025114872824561405, + "100.0" : 0.025114872824561405 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.025114872824561405, + 0.024194508417874395, + 0.02402947871942446 + ], + [ + 0.024717387565432097, + 0.02510975446115288, + 0.024928946002487563 + ], + [ + 0.024034778386091128, + 0.023988348623501198, + 0.02444568706097561 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-01-06T23:22:01Z-e0f6b66266fac13aeecaef1c2ef1b458828b6cc2-jdk17.json b/performance-results/2025-01-06T23:22:01Z-e0f6b66266fac13aeecaef1c2ef1b458828b6cc2-jdk17.json new file mode 100644 index 0000000000..13895b223c --- /dev/null +++ b/performance-results/2025-01-06T23:22:01Z-e0f6b66266fac13aeecaef1c2ef1b458828b6cc2-jdk17.json @@ -0,0 +1,287 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4245773136105413, + "scoreError" : 0.01868185502277945, + "scoreConfidence" : [ + 3.4058954585877617, + 3.443259168633321 + ], + "scorePercentiles" : { + "0.0" : 3.4210483921283243, + "50.0" : 3.4245663949120306, + "90.0" : 3.428128072489781, + "95.0" : 3.428128072489781, + "99.0" : 3.428128072489781, + "99.9" : 3.428128072489781, + "99.99" : 3.428128072489781, + "99.999" : 3.428128072489781, + "99.9999" : 3.428128072489781, + "100.0" : 3.428128072489781 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4210483921283243, + 3.42448613335437 + ], + [ + 3.4246466564696907, + 3.428128072489781 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7286707595661703, + "scoreError" : 0.014432774965261578, + "scoreConfidence" : [ + 1.7142379846009088, + 1.7431035345314319 + ], + "scorePercentiles" : { + "0.0" : 1.726194463728229, + "50.0" : 1.7285915896476376, + "90.0" : 1.7313053952411779, + "95.0" : 1.7313053952411779, + "99.0" : 1.7313053952411779, + "99.9" : 1.7313053952411779, + "99.99" : 1.7313053952411779, + "99.999" : 1.7313053952411779, + "99.9999" : 1.7313053952411779, + "100.0" : 1.7313053952411779 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7276221767696878, + 1.7313053952411779 + ], + [ + 1.726194463728229, + 1.7295610025255874 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8700555481313456, + "scoreError" : 0.005840168981869053, + "scoreConfidence" : [ + 0.8642153791494765, + 0.8758957171132146 + ], + "scorePercentiles" : { + "0.0" : 0.8693974925550426, + "50.0" : 0.869748144757817, + "90.0" : 0.8713284104547055, + "95.0" : 0.8713284104547055, + "99.0" : 0.8713284104547055, + "99.9" : 0.8713284104547055, + "99.99" : 0.8713284104547055, + "99.999" : 0.8713284104547055, + "99.9999" : 0.8713284104547055, + "100.0" : 0.8713284104547055 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.869425495170068, + 0.8700707943455662 + ], + [ + 0.8693974925550426, + 0.8713284104547055 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 44.80751344197212, + "scoreError" : 2.3026391744093355, + "scoreConfidence" : [ + 42.50487426756278, + 47.110152616381455 + ], + "scorePercentiles" : { + "0.0" : 43.41381117714613, + "50.0" : 44.272183388727214, + "90.0" : 46.594979535399496, + "95.0" : 46.594979535399496, + "99.0" : 46.594979535399496, + "99.9" : 46.594979535399496, + "99.99" : 46.594979535399496, + "99.999" : 46.594979535399496, + "99.9999" : 46.594979535399496, + "100.0" : 46.594979535399496 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 46.56945500132572, + 46.59220457904513, + 46.594979535399496 + ], + [ + 44.28270501315412, + 44.269073877323024, + 44.272183388727214 + ], + [ + 43.41381117714613, + 43.63753652329247, + 43.63567188233574 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAbgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.022354977816848462, + "scoreError" : 0.0014391345634307308, + "scoreConfidence" : [ + 0.02091584325341773, + 0.023794112380279193 + ], + "scorePercentiles" : { + "0.0" : 0.02147898639699571, + "50.0" : 0.02210505130905077, + "90.0" : 0.023454101953161593, + "95.0" : 0.023454101953161593, + "99.0" : 0.023454101953161593, + "99.9" : 0.023454101953161593, + "99.99" : 0.023454101953161593, + "99.999" : 0.023454101953161593, + "99.9999" : 0.023454101953161593, + "100.0" : 0.023454101953161593 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.02210505130905077, + 0.022098411260485652, + 0.02210520964679912 + ], + [ + 0.023454101953161593, + 0.023442564526932084, + 0.023437853107728338 + ], + [ + 0.0215884915625, + 0.021484130587982833, + 0.02147898639699571 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-01-21T21:47:01Z-1c9edf8ee7db8c7ba6142637799b0bb3b9d97540-jdk17.json b/performance-results/2025-01-21T21:47:01Z-1c9edf8ee7db8c7ba6142637799b0bb3b9d97540-jdk17.json new file mode 100644 index 0000000000..2eb0a8679e --- /dev/null +++ b/performance-results/2025-01-21T21:47:01Z-1c9edf8ee7db8c7ba6142637799b0bb3b9d97540-jdk17.json @@ -0,0 +1,287 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.424149683933229, + "scoreError" : 0.006012078052582705, + "scoreConfidence" : [ + 3.4181376058806463, + 3.430161761985812 + ], + "scorePercentiles" : { + "0.0" : 3.422989050483065, + "50.0" : 3.4242682261724955, + "90.0" : 3.4250732329048588, + "95.0" : 3.4250732329048588, + "99.0" : 3.4250732329048588, + "99.9" : 3.4250732329048588, + "99.99" : 3.4250732329048588, + "99.999" : 3.4250732329048588, + "99.9999" : 3.4250732329048588, + "100.0" : 3.4250732329048588 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4238388779551903, + 3.4250732329048588 + ], + [ + 3.424697574389801, + 3.422989050483065 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.72855038217974, + "scoreError" : 0.01730574953804975, + "scoreConfidence" : [ + 1.7112446326416904, + 1.7458561317177899 + ], + "scorePercentiles" : { + "0.0" : 1.7255286788866957, + "50.0" : 1.7285983884604545, + "90.0" : 1.7314760729113563, + "95.0" : 1.7314760729113563, + "99.0" : 1.7314760729113563, + "99.9" : 1.7314760729113563, + "99.99" : 1.7314760729113563, + "99.999" : 1.7314760729113563, + "99.9999" : 1.7314760729113563, + "100.0" : 1.7314760729113563 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7255286788866957, + 1.729980675302766 + ], + [ + 1.727216101618143, + 1.7314760729113563 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8693640578908688, + "scoreError" : 0.0038641087706285395, + "scoreConfidence" : [ + 0.8654999491202402, + 0.8732281666614974 + ], + "scorePercentiles" : { + "0.0" : 0.868835145795416, + "50.0" : 0.8692360046799832, + "90.0" : 0.8701490764080931, + "95.0" : 0.8701490764080931, + "99.0" : 0.8701490764080931, + "99.9" : 0.8701490764080931, + "99.99" : 0.8701490764080931, + "99.999" : 0.8701490764080931, + "99.9999" : 0.8701490764080931, + "100.0" : 0.8701490764080931 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.868835145795416, + 0.8701490764080931 + ], + [ + 0.8695042632942258, + 0.8689677460657406 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 41.223752010392595, + "scoreError" : 3.8144464636708864, + "scoreConfidence" : [ + 37.40930554672171, + 45.03819847406348 + ], + "scorePercentiles" : { + "0.0" : 38.2336896832272, + "50.0" : 40.18837813592528, + "90.0" : 44.30468594681641, + "95.0" : 44.30468594681641, + "99.0" : 44.30468594681641, + "99.9" : 44.30468594681641, + "99.99" : 44.30468594681641, + "99.999" : 44.30468594681641, + "99.9999" : 44.30468594681641, + "100.0" : 44.30468594681641 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 38.2336896832272, + 39.53191823714816, + 40.70619870358236 + ], + [ + 44.30468594681641, + 44.16707605948855, + 43.861664961843516 + ], + [ + 39.91624959318406, + 40.18837813592528, + 40.10390677231785 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAbgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.023235785904743733, + "scoreError" : 7.768693990131797E-4, + "scoreConfidence" : [ + 0.022458916505730554, + 0.024012655303756913 + ], + "scorePercentiles" : { + "0.0" : 0.022705058088435374, + "50.0" : 0.023171598224537036, + "90.0" : 0.024077781197115386, + "95.0" : 0.024077781197115386, + "99.0" : 0.024077781197115386, + "99.9" : 0.024077781197115386, + "99.99" : 0.024077781197115386, + "99.999" : 0.024077781197115386, + "99.9999" : 0.024077781197115386, + "100.0" : 0.024077781197115386 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.024077781197115386, + 0.023737192085308056, + 0.023171598224537036 + ], + [ + 0.02332228789044289, + 0.023445212770491802, + 0.02302199960229885 + ], + [ + 0.022924428318077804, + 0.022705058088435374, + 0.022716514965986395 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-01-22T03:36:34Z-e4d3a7176e2072ff6894cde18b4cf6229364bb47-jdk17.json b/performance-results/2025-01-22T03:36:34Z-e4d3a7176e2072ff6894cde18b4cf6229364bb47-jdk17.json new file mode 100644 index 0000000000..926032db22 --- /dev/null +++ b/performance-results/2025-01-22T03:36:34Z-e4d3a7176e2072ff6894cde18b4cf6229364bb47-jdk17.json @@ -0,0 +1,287 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4237503712681403, + "scoreError" : 0.029687066333119228, + "scoreConfidence" : [ + 3.3940633049350213, + 3.4534374376012593 + ], + "scorePercentiles" : { + "0.0" : 3.419633132532349, + "50.0" : 3.4229857951413147, + "90.0" : 3.4293967622575843, + "95.0" : 3.4293967622575843, + "99.0" : 3.4293967622575843, + "99.9" : 3.4293967622575843, + "99.99" : 3.4293967622575843, + "99.999" : 3.4293967622575843, + "99.9999" : 3.4293967622575843, + "100.0" : 3.4293967622575843 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.419633132532349, + 3.425565998706806 + ], + [ + 3.4204055915758236, + 3.4293967622575843 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7296696232543467, + "scoreError" : 0.01459335969739169, + "scoreConfidence" : [ + 1.715076263556955, + 1.7442629829517384 + ], + "scorePercentiles" : { + "0.0" : 1.7270073570666922, + "50.0" : 1.729745390562144, + "90.0" : 1.732180354826406, + "95.0" : 1.732180354826406, + "99.0" : 1.732180354826406, + "99.9" : 1.732180354826406, + "99.99" : 1.732180354826406, + "99.999" : 1.732180354826406, + "99.9999" : 1.732180354826406, + "100.0" : 1.732180354826406 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7287713875849016, + 1.732180354826406 + ], + [ + 1.7270073570666922, + 1.7307193935393865 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8696333686305204, + "scoreError" : 0.005541304741506886, + "scoreConfidence" : [ + 0.8640920638890135, + 0.8751746733720274 + ], + "scorePercentiles" : { + "0.0" : 0.8688071395118665, + "50.0" : 0.8696504293139969, + "90.0" : 0.8704254763822215, + "95.0" : 0.8704254763822215, + "99.0" : 0.8704254763822215, + "99.9" : 0.8704254763822215, + "99.99" : 0.8704254763822215, + "99.999" : 0.8704254763822215, + "99.9999" : 0.8704254763822215, + "100.0" : 0.8704254763822215 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8704254763822215, + 0.870319520460667 + ], + [ + 0.8688071395118665, + 0.8689813381673269 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 44.36501878810898, + "scoreError" : 1.0694255389554572, + "scoreConfidence" : [ + 43.29559324915353, + 45.43444432706444 + ], + "scorePercentiles" : { + "0.0" : 43.87862862432957, + "50.0" : 43.94274487526744, + "90.0" : 45.26941974191114, + "95.0" : 45.26941974191114, + "99.0" : 45.26941974191114, + "99.9" : 45.26941974191114, + "99.99" : 45.26941974191114, + "99.999" : 45.26941974191114, + "99.9999" : 45.26941974191114, + "100.0" : 45.26941974191114 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 43.89429547541287, + 43.94274487526744, + 43.92535377650392 + ], + [ + 45.175535730731454, + 45.175776703355886, + 45.26941974191114 + ], + [ + 44.1308230548884, + 43.87862862432957, + 43.892591110580156 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAbgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.022229747564292305, + "scoreError" : 8.487147291876869E-4, + "scoreConfidence" : [ + 0.02138103283510462, + 0.02307846229347999 + ], + "scorePercentiles" : { + "0.0" : 0.021779635182608694, + "50.0" : 0.02198335262857143, + "90.0" : 0.022899222466819222, + "95.0" : 0.022899222466819222, + "99.0" : 0.022899222466819222, + "99.9" : 0.022899222466819222, + "99.99" : 0.022899222466819222, + "99.999" : 0.022899222466819222, + "99.9999" : 0.022899222466819222, + "100.0" : 0.022899222466819222 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.022899222466819222, + 0.022884819782608697, + 0.022899069610983983 + ], + [ + 0.021779635182608694, + 0.02181247005882353, + 0.021822282640522876 + ], + [ + 0.022003539923076923, + 0.021983335784615386, + 0.02198335262857143 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-01-22T23:12:51Z-b3fa90f639e0563a19b7e3fbda0da85b68aad6e9-jdk17.json b/performance-results/2025-01-22T23:12:51Z-b3fa90f639e0563a19b7e3fbda0da85b68aad6e9-jdk17.json new file mode 100644 index 0000000000..757c5e3692 --- /dev/null +++ b/performance-results/2025-01-22T23:12:51Z-b3fa90f639e0563a19b7e3fbda0da85b68aad6e9-jdk17.json @@ -0,0 +1,287 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4105040447860073, + "scoreError" : 0.015189749299248573, + "scoreConfidence" : [ + 3.3953142954867586, + 3.425693794085256 + ], + "scorePercentiles" : { + "0.0" : 3.4073899492105153, + "50.0" : 3.4107651539923443, + "90.0" : 3.4130959219488255, + "95.0" : 3.4130959219488255, + "99.0" : 3.4130959219488255, + "99.9" : 3.4130959219488255, + "99.99" : 3.4130959219488255, + "99.999" : 3.4130959219488255, + "99.9999" : 3.4130959219488255, + "100.0" : 3.4130959219488255 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.410876097631111, + 3.4106542103535773 + ], + [ + 3.4073899492105153, + 3.4130959219488255 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.721583114673582, + "scoreError" : 0.006425157612156726, + "scoreConfidence" : [ + 1.7151579570614253, + 1.7280082722857388 + ], + "scorePercentiles" : { + "0.0" : 1.7207681098037457, + "50.0" : 1.7212982503350518, + "90.0" : 1.7229678482204793, + "95.0" : 1.7229678482204793, + "99.0" : 1.7229678482204793, + "99.9" : 1.7229678482204793, + "99.99" : 1.7229678482204793, + "99.999" : 1.7229678482204793, + "99.9999" : 1.7229678482204793, + "100.0" : 1.7229678482204793 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7216313296507169, + 1.7229678482204793 + ], + [ + 1.7207681098037457, + 1.7209651710193865 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8657441060642906, + "scoreError" : 0.002785758573795765, + "scoreConfidence" : [ + 0.8629583474904948, + 0.8685298646380865 + ], + "scorePercentiles" : { + "0.0" : 0.8653771382765126, + "50.0" : 0.8656275904190045, + "90.0" : 0.8663441051426409, + "95.0" : 0.8663441051426409, + "99.0" : 0.8663441051426409, + "99.9" : 0.8663441051426409, + "99.99" : 0.8663441051426409, + "99.999" : 0.8663441051426409, + "99.9999" : 0.8663441051426409, + "100.0" : 0.8663441051426409 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8653771382765126, + 0.8654939424156864 + ], + [ + 0.8663441051426409, + 0.8657612384223224 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 41.17225098673794, + "scoreError" : 3.22722044059398, + "scoreConfidence" : [ + 37.94503054614396, + 44.399471427331925 + ], + "scorePercentiles" : { + "0.0" : 39.366693887369976, + "50.0" : 40.2648390876238, + "90.0" : 43.70997475241803, + "95.0" : 43.70997475241803, + "99.0" : 43.70997475241803, + "99.9" : 43.70997475241803, + "99.99" : 43.70997475241803, + "99.999" : 43.70997475241803, + "99.9999" : 43.70997475241803, + "100.0" : 43.70997475241803 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 43.69435426122478, + 43.70997475241803, + 43.68716268451894 + ], + [ + 40.14696818355368, + 40.364255215826645, + 40.2648390876238 + ], + [ + 39.366693887369976, + 39.60165914823881, + 39.714351659866864 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAbgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.02469539257718066, + "scoreError" : 8.108306476004372E-4, + "scoreConfidence" : [ + 0.023884561929580224, + 0.025506223224781098 + ], + "scorePercentiles" : { + "0.0" : 0.023942090337320573, + "50.0" : 0.024977390805486284, + "90.0" : 0.02509696658897243, + "95.0" : 0.02509696658897243, + "99.0" : 0.02509696658897243, + "99.9" : 0.02509696658897243, + "99.99" : 0.02509696658897243, + "99.999" : 0.02509696658897243, + "99.9999" : 0.02509696658897243, + "100.0" : 0.02509696658897243 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.023942090337320573, + 0.024220828239709443, + 0.024023169163069544 + ], + [ + 0.024977390805486284, + 0.024933186425373136, + 0.02502382824 + ], + [ + 0.024994583122194512, + 0.0250464902725, + 0.02509696658897243 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-01-23T23:55:34Z-2551254d88f6abb0cd6b9b66b53102915ec41ec2-jdk17.json b/performance-results/2025-01-23T23:55:34Z-2551254d88f6abb0cd6b9b66b53102915ec41ec2-jdk17.json new file mode 100644 index 0000000000..0bda0220f3 --- /dev/null +++ b/performance-results/2025-01-23T23:55:34Z-2551254d88f6abb0cd6b9b66b53102915ec41ec2-jdk17.json @@ -0,0 +1,287 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4099306926639925, + "scoreError" : 0.02395335305028509, + "scoreConfidence" : [ + 3.3859773396137074, + 3.4338840457142776 + ], + "scorePercentiles" : { + "0.0" : 3.40582898025533, + "50.0" : 3.4096702375154466, + "90.0" : 3.414553315369746, + "95.0" : 3.414553315369746, + "99.0" : 3.414553315369746, + "99.9" : 3.414553315369746, + "99.99" : 3.414553315369746, + "99.999" : 3.414553315369746, + "99.9999" : 3.414553315369746, + "100.0" : 3.414553315369746 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.408467549843088, + 3.414553315369746 + ], + [ + 3.40582898025533, + 3.410872925187805 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7232751528014894, + "scoreError" : 0.009671040518753964, + "scoreConfidence" : [ + 1.7136041122827355, + 1.7329461933202432 + ], + "scorePercentiles" : { + "0.0" : 1.7211199198884921, + "50.0" : 1.723842197697369, + "90.0" : 1.724296295922727, + "95.0" : 1.724296295922727, + "99.0" : 1.724296295922727, + "99.9" : 1.724296295922727, + "99.99" : 1.724296295922727, + "99.999" : 1.724296295922727, + "99.9999" : 1.724296295922727, + "100.0" : 1.724296295922727 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7211199198884921, + 1.723401385599165 + ], + [ + 1.7242830097955733, + 1.724296295922727 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8670588236163693, + "scoreError" : 0.005759442186378244, + "scoreConfidence" : [ + 0.8612993814299911, + 0.8728182658027476 + ], + "scorePercentiles" : { + "0.0" : 0.8661195610548678, + "50.0" : 0.8670034186931103, + "90.0" : 0.868108896024389, + "95.0" : 0.868108896024389, + "99.0" : 0.868108896024389, + "99.9" : 0.868108896024389, + "99.99" : 0.868108896024389, + "99.999" : 0.868108896024389, + "99.9999" : 0.868108896024389, + "100.0" : 0.868108896024389 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8674462136623503, + 0.868108896024389 + ], + [ + 0.8661195610548678, + 0.8665606237238702 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 41.83462677585385, + "scoreError" : 1.920978041265327, + "scoreConfidence" : [ + 39.91364873458852, + 43.75560481711918 + ], + "scorePercentiles" : { + "0.0" : 40.19477434571843, + "50.0" : 42.437967904570684, + "90.0" : 42.93846254059917, + "95.0" : 42.93846254059917, + "99.0" : 42.93846254059917, + "99.9" : 42.93846254059917, + "99.99" : 42.93846254059917, + "99.999" : 42.93846254059917, + "99.9999" : 42.93846254059917, + "100.0" : 42.93846254059917 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 42.241582636916014, + 42.45421817350641, + 42.437967904570684 + ], + [ + 42.712603840570935, + 42.70835342137284, + 42.93846254059917 + ], + [ + 40.19477434571843, + 40.25337275926056, + 40.570305360169606 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAbgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.024205050051165463, + "scoreError" : 0.0013802366621486247, + "scoreConfidence" : [ + 0.02282481338901684, + 0.025585286713314087 + ], + "scorePercentiles" : { + "0.0" : 0.02336303003962704, + "50.0" : 0.023876212723150356, + "90.0" : 0.02530103744191919, + "95.0" : 0.02530103744191919, + "99.0" : 0.02530103744191919, + "99.9" : 0.02530103744191919, + "99.99" : 0.02530103744191919, + "99.999" : 0.02530103744191919, + "99.9999" : 0.02530103744191919, + "100.0" : 0.02530103744191919 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.024042493644230768, + 0.02386281233095238, + 0.023876212723150356 + ], + [ + 0.02336303003962704, + 0.02347626125117371, + 0.023449581548009368 + ], + [ + 0.02530103744191919, + 0.025278192126262627, + 0.025195829355163728 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-01-27T22:22:57Z-a66c24b4e98169967f6753bd6abebb1b15820fd5-jdk17.json b/performance-results/2025-01-27T22:22:57Z-a66c24b4e98169967f6753bd6abebb1b15820fd5-jdk17.json new file mode 100644 index 0000000000..4a8eef6b68 --- /dev/null +++ b/performance-results/2025-01-27T22:22:57Z-a66c24b4e98169967f6753bd6abebb1b15820fd5-jdk17.json @@ -0,0 +1,287 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4060502209625665, + "scoreError" : 0.021580257949835764, + "scoreConfidence" : [ + 3.3844699630127306, + 3.4276304789124024 + ], + "scorePercentiles" : { + "0.0" : 3.401427352349789, + "50.0" : 3.4070054913200853, + "90.0" : 3.408762548860305, + "95.0" : 3.408762548860305, + "99.0" : 3.408762548860305, + "99.9" : 3.408762548860305, + "99.99" : 3.408762548860305, + "99.999" : 3.408762548860305, + "99.9999" : 3.408762548860305, + "100.0" : 3.408762548860305 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.401427352349789, + 3.408762548860305 + ], + [ + 3.4058002030403016, + 3.408210779599869 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7215522864016763, + "scoreError" : 0.005696764733470336, + "scoreConfidence" : [ + 1.715855521668206, + 1.7272490511351466 + ], + "scorePercentiles" : { + "0.0" : 1.7203910519779488, + "50.0" : 1.7217467656558114, + "90.0" : 1.722324562317134, + "95.0" : 1.722324562317134, + "99.0" : 1.722324562317134, + "99.9" : 1.722324562317134, + "99.99" : 1.722324562317134, + "99.999" : 1.722324562317134, + "99.9999" : 1.722324562317134, + "100.0" : 1.722324562317134 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7203910519779488, + 1.7221411217652358 + ], + [ + 1.721352409546387, + 1.722324562317134 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8646527287713972, + "scoreError" : 0.00856950365882502, + "scoreConfidence" : [ + 0.8560832251125722, + 0.8732222324302222 + ], + "scorePercentiles" : { + "0.0" : 0.8630999525475413, + "50.0" : 0.8646080545802135, + "90.0" : 0.8662948533776209, + "95.0" : 0.8662948533776209, + "99.0" : 0.8662948533776209, + "99.9" : 0.8662948533776209, + "99.99" : 0.8662948533776209, + "99.999" : 0.8662948533776209, + "99.9999" : 0.8662948533776209, + "100.0" : 0.8662948533776209 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8662948533776209, + 0.8648946418419918 + ], + [ + 0.8630999525475413, + 0.8643214673184352 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 41.571094678999174, + "scoreError" : 0.9886983334392854, + "scoreConfidence" : [ + 40.582396345559886, + 42.55979301243846 + ], + "scorePercentiles" : { + "0.0" : 40.64766694582536, + "50.0" : 41.79030375939435, + "90.0" : 42.290871079881434, + "95.0" : 42.290871079881434, + "99.0" : 42.290871079881434, + "99.9" : 42.290871079881434, + "99.99" : 42.290871079881434, + "99.999" : 42.290871079881434, + "99.9999" : 42.290871079881434, + "100.0" : 42.290871079881434 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 42.290871079881434, + 42.118215951762124, + 42.099304911006406 + ], + [ + 41.79030375939435, + 41.81089696054987, + 40.87654670117831 + ], + [ + 40.64766694582536, + 41.13077840122415, + 41.3752674001706 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAbgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.024796778092981732, + "scoreError" : 0.0013904138007945043, + "scoreConfidence" : [ + 0.023406364292187228, + 0.026187191893776236 + ], + "scorePercentiles" : { + "0.0" : 0.023756459386255924, + "50.0" : 0.024653574322660098, + "90.0" : 0.02602229912987013, + "95.0" : 0.02602229912987013, + "99.0" : 0.02602229912987013, + "99.9" : 0.02602229912987013, + "99.99" : 0.02602229912987013, + "99.999" : 0.02602229912987013, + "99.9999" : 0.02602229912987013, + "100.0" : 0.02602229912987013 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.025637418092071613, + 0.02602229912987013, + 0.025694226674358975 + ], + [ + 0.02384663041190476, + 0.023756459386255924, + 0.02430528267961165 + ], + [ + 0.02434602874209246, + 0.024653574322660098, + 0.02490908339800995 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-01-27T22:43:23Z-b65ac4194c6302651a21ff3a1a78b0a99f4ba78e-jdk17.json b/performance-results/2025-01-27T22:43:23Z-b65ac4194c6302651a21ff3a1a78b0a99f4ba78e-jdk17.json new file mode 100644 index 0000000000..a3742d4745 --- /dev/null +++ b/performance-results/2025-01-27T22:43:23Z-b65ac4194c6302651a21ff3a1a78b0a99f4ba78e-jdk17.json @@ -0,0 +1,287 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.408427127074759, + "scoreError" : 0.01925153848185639, + "scoreConfidence" : [ + 3.3891755885929022, + 3.4276786655566154 + ], + "scorePercentiles" : { + "0.0" : 3.4053449162452507, + "50.0" : 3.408406543484691, + "90.0" : 3.4115505050844046, + "95.0" : 3.4115505050844046, + "99.0" : 3.4115505050844046, + "99.9" : 3.4115505050844046, + "99.99" : 3.4115505050844046, + "99.999" : 3.4115505050844046, + "99.9999" : 3.4115505050844046, + "100.0" : 3.4115505050844046 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.406486845438764, + 3.4115505050844046 + ], + [ + 3.4053449162452507, + 3.4103262415306177 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7257387687026013, + "scoreError" : 0.008473331075327967, + "scoreConfidence" : [ + 1.7172654376272734, + 1.7342120997779293 + ], + "scorePercentiles" : { + "0.0" : 1.72423397317898, + "50.0" : 1.7256529242770822, + "90.0" : 1.7274152530772604, + "95.0" : 1.7274152530772604, + "99.0" : 1.7274152530772604, + "99.9" : 1.7274152530772604, + "99.99" : 1.7274152530772604, + "99.999" : 1.7274152530772604, + "99.9999" : 1.7274152530772604, + "100.0" : 1.7274152530772604 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.72423397317898, + 1.7254679382487557 + ], + [ + 1.7274152530772604, + 1.725837910305409 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8665575040773247, + "scoreError" : 0.0029564407943501268, + "scoreConfidence" : [ + 0.8636010632829746, + 0.8695139448716748 + ], + "scorePercentiles" : { + "0.0" : 0.8661858451203391, + "50.0" : 0.8664480513236263, + "90.0" : 0.8671480685417073, + "95.0" : 0.8671480685417073, + "99.0" : 0.8671480685417073, + "99.9" : 0.8671480685417073, + "99.99" : 0.8671480685417073, + "99.999" : 0.8671480685417073, + "99.9999" : 0.8671480685417073, + "100.0" : 0.8671480685417073 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8666900187240116, + 0.8661858451203391 + ], + [ + 0.866206083923241, + 0.8671480685417073 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 42.677382462593584, + "scoreError" : 1.2020700735328222, + "scoreConfidence" : [ + 41.47531238906076, + 43.87945253612641 + ], + "scorePercentiles" : { + "0.0" : 41.743276822691925, + "50.0" : 42.730073405675626, + "90.0" : 43.7290083381939, + "95.0" : 43.7290083381939, + "99.0" : 43.7290083381939, + "99.9" : 43.7290083381939, + "99.99" : 43.7290083381939, + "99.999" : 43.7290083381939, + "99.9999" : 43.7290083381939, + "100.0" : 43.7290083381939 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 42.865228348309664, + 43.30915071935464, + 42.23165861844071 + ], + [ + 42.730073405675626, + 43.7290083381939, + 43.44903173965612 + ], + [ + 41.924035090602636, + 42.11497908041706, + 41.743276822691925 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAbgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.023553876284725203, + "scoreError" : 5.593054909302037E-4, + "scoreConfidence" : [ + 0.022994570793795, + 0.024113181775655405 + ], + "scorePercentiles" : { + "0.0" : 0.022851900970319635, + "50.0" : 0.02365095373995272, + "90.0" : 0.02389461776849642, + "95.0" : 0.02389461776849642, + "99.0" : 0.02389461776849642, + "99.9" : 0.02389461776849642, + "99.99" : 0.02389461776849642, + "99.999" : 0.02389461776849642, + "99.9999" : 0.02389461776849642, + "100.0" : 0.02389461776849642 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.02344361818032787, + 0.023304230553488372, + 0.022851900970319635 + ], + [ + 0.023773622921615202, + 0.02389461776849642, + 0.02389178353699284 + ], + [ + 0.023707024319905214, + 0.02365095373995272, + 0.02346713457142857 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-01-28T23:02:55Z-ece8f57e9b04eb1d14a3555192bb626d8315bc71-jdk17.json b/performance-results/2025-01-28T23:02:55Z-ece8f57e9b04eb1d14a3555192bb626d8315bc71-jdk17.json new file mode 100644 index 0000000000..5ef4290df1 --- /dev/null +++ b/performance-results/2025-01-28T23:02:55Z-ece8f57e9b04eb1d14a3555192bb626d8315bc71-jdk17.json @@ -0,0 +1,287 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.421774272094884, + "scoreError" : 0.02565110456140225, + "scoreConfidence" : [ + 3.396123167533482, + 3.447425376656286 + ], + "scorePercentiles" : { + "0.0" : 3.417929940473629, + "50.0" : 3.4209231454561904, + "90.0" : 3.427320856993527, + "95.0" : 3.427320856993527, + "99.0" : 3.427320856993527, + "99.9" : 3.427320856993527, + "99.99" : 3.427320856993527, + "99.999" : 3.427320856993527, + "99.9999" : 3.427320856993527, + "100.0" : 3.427320856993527 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.417929940473629, + 3.420549417579972 + ], + [ + 3.421296873332408, + 3.427320856993527 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.72756042853176, + "scoreError" : 0.012153093372248453, + "scoreConfidence" : [ + 1.7154073351595116, + 1.7397135219040085 + ], + "scorePercentiles" : { + "0.0" : 1.7249582673227821, + "50.0" : 1.7279662835519356, + "90.0" : 1.7293508797003863, + "95.0" : 1.7293508797003863, + "99.0" : 1.7293508797003863, + "99.9" : 1.7293508797003863, + "99.99" : 1.7293508797003863, + "99.999" : 1.7293508797003863, + "99.9999" : 1.7293508797003863, + "100.0" : 1.7293508797003863 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7249582673227821, + 1.7283566391748764 + ], + [ + 1.727575927928995, + 1.7293508797003863 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8700223920340285, + "scoreError" : 0.010218700290680633, + "scoreConfidence" : [ + 0.8598036917433479, + 0.8802410923247092 + ], + "scorePercentiles" : { + "0.0" : 0.8685012135337304, + "50.0" : 0.8698338176924882, + "90.0" : 0.8719207192174072, + "95.0" : 0.8719207192174072, + "99.0" : 0.8719207192174072, + "99.9" : 0.8719207192174072, + "99.99" : 0.8719207192174072, + "99.999" : 0.8719207192174072, + "99.9999" : 0.8719207192174072, + "100.0" : 0.8719207192174072 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8707036745599296, + 0.8719207192174072 + ], + [ + 0.8685012135337304, + 0.8689639608250469 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 45.339925200263075, + "scoreError" : 2.0723545765171996, + "scoreConfidence" : [ + 43.267570623745875, + 47.412279776780274 + ], + "scorePercentiles" : { + "0.0" : 43.81296578444052, + "50.0" : 45.38453023809995, + "90.0" : 46.800269388776904, + "95.0" : 46.800269388776904, + "99.0" : 46.800269388776904, + "99.9" : 46.800269388776904, + "99.99" : 46.800269388776904, + "99.999" : 46.800269388776904, + "99.9999" : 46.800269388776904, + "100.0" : 46.800269388776904 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 46.800269388776904, + 46.71346073074192, + 46.75431722626851 + ], + [ + 45.38453023809995, + 45.42450404274816, + 45.24527092665326 + ], + [ + 43.81296578444052, + 43.96259264756082, + 43.96141581707756 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAbgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.022398155993954644, + "scoreError" : 6.89912700021175E-4, + "scoreConfidence" : [ + 0.02170824329393347, + 0.023088068693975818 + ], + "scorePercentiles" : { + "0.0" : 0.021928783170678336, + "50.0" : 0.02232751393080357, + "90.0" : 0.022923588995423343, + "95.0" : 0.022923588995423343, + "99.0" : 0.022923588995423343, + "99.9" : 0.022923588995423343, + "99.99" : 0.022923588995423343, + "99.999" : 0.022923588995423343, + "99.9999" : 0.022923588995423343, + "100.0" : 0.022923588995423343 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.02240651148769575, + 0.02232751393080357, + 0.022318053033407573 + ], + [ + 0.022923588995423343, + 0.02292196304347826, + 0.022829846011389522 + ], + [ + 0.021928783170678336, + 0.02199617635824176, + 0.021930967914473683 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-02-02T22:32:54Z-559cbaccc777fd7e229f8071a8701412191d3867-jdk17.json b/performance-results/2025-02-02T22:32:54Z-559cbaccc777fd7e229f8071a8701412191d3867-jdk17.json new file mode 100644 index 0000000000..f13fb309be --- /dev/null +++ b/performance-results/2025-02-02T22:32:54Z-559cbaccc777fd7e229f8071a8701412191d3867-jdk17.json @@ -0,0 +1,287 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.422004543886982, + "scoreError" : 0.037274354718148585, + "scoreConfidence" : [ + 3.3847301891688333, + 3.4592788986051306 + ], + "scorePercentiles" : { + "0.0" : 3.4150603098850625, + "50.0" : 3.4222557397499918, + "90.0" : 3.428446386162883, + "95.0" : 3.428446386162883, + "99.0" : 3.428446386162883, + "99.9" : 3.428446386162883, + "99.99" : 3.428446386162883, + "99.999" : 3.428446386162883, + "99.9999" : 3.428446386162883, + "100.0" : 3.428446386162883 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.424488689195108, + 3.428446386162883 + ], + [ + 3.4150603098850625, + 3.4200227903048757 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7266312356699343, + "scoreError" : 0.01275265278475576, + "scoreConfidence" : [ + 1.7138785828851786, + 1.73938388845469 + ], + "scorePercentiles" : { + "0.0" : 1.7253973345774025, + "50.0" : 1.7257740764391891, + "90.0" : 1.7295794552239565, + "95.0" : 1.7295794552239565, + "99.0" : 1.7295794552239565, + "99.9" : 1.7295794552239565, + "99.99" : 1.7295794552239565, + "99.999" : 1.7295794552239565, + "99.9999" : 1.7295794552239565, + "100.0" : 1.7295794552239565 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.725774269697518, + 1.7295794552239565 + ], + [ + 1.7253973345774025, + 1.7257738831808604 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8685221843173088, + "scoreError" : 0.0028393507308871763, + "scoreConfidence" : [ + 0.8656828335864216, + 0.8713615350481959 + ], + "scorePercentiles" : { + "0.0" : 0.8679815361027219, + "50.0" : 0.8685252892748702, + "90.0" : 0.8690566226167731, + "95.0" : 0.8690566226167731, + "99.0" : 0.8690566226167731, + "99.9" : 0.8690566226167731, + "99.99" : 0.8690566226167731, + "99.999" : 0.8690566226167731, + "99.9999" : 0.8690566226167731, + "100.0" : 0.8690566226167731 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8685503260697689, + 0.8690566226167731 + ], + [ + 0.8679815361027219, + 0.8685002524799714 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 45.15939026975822, + "scoreError" : 3.2726275519079855, + "scoreConfidence" : [ + 41.88676271785023, + 48.43201782166621 + ], + "scorePercentiles" : { + "0.0" : 43.32162148701893, + "50.0" : 44.476019988835475, + "90.0" : 47.73912870583933, + "95.0" : 47.73912870583933, + "99.0" : 47.73912870583933, + "99.9" : 47.73912870583933, + "99.99" : 47.73912870583933, + "99.999" : 47.73912870583933, + "99.9999" : 47.73912870583933, + "100.0" : 47.73912870583933 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 47.73912870583933, + 47.64792793812885, + 47.641556164042235 + ], + [ + 44.3975721232082, + 44.48295546595411, + 44.476019988835475 + ], + [ + 43.328343957387034, + 43.32162148701893, + 43.39938659740977 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAbgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.02224196911386321, + "scoreError" : 5.718797688838376E-4, + "scoreConfidence" : [ + 0.021670089344979375, + 0.022813848882747047 + ], + "scorePercentiles" : { + "0.0" : 0.022001641415384614, + "50.0" : 0.022020313514285714, + "90.0" : 0.022701417299319727, + "95.0" : 0.022701417299319727, + "99.0" : 0.022701417299319727, + "99.9" : 0.022701417299319727, + "99.99" : 0.022701417299319727, + "99.999" : 0.022701417299319727, + "99.9999" : 0.022701417299319727, + "100.0" : 0.022701417299319727 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.022018342547252746, + 0.022017725931868133, + 0.02202387962197802 + ], + [ + 0.022001641415384614, + 0.022008949474725276, + 0.022020313514285714 + ], + [ + 0.022696075142857142, + 0.022689377077097506, + 0.022701417299319727 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-02-03T23:19:46Z-ee7382895dde50d5e203c473aaedbf2a8b1796a5-jdk17.json b/performance-results/2025-02-03T23:19:46Z-ee7382895dde50d5e203c473aaedbf2a8b1796a5-jdk17.json new file mode 100644 index 0000000000..1d6ace2390 --- /dev/null +++ b/performance-results/2025-02-03T23:19:46Z-ee7382895dde50d5e203c473aaedbf2a8b1796a5-jdk17.json @@ -0,0 +1,287 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4002502019051217, + "scoreError" : 0.03940721118245434, + "scoreConfidence" : [ + 3.3608429907226673, + 3.439657413087576 + ], + "scorePercentiles" : { + "0.0" : 3.393090154110096, + "50.0" : 3.4002891548424987, + "90.0" : 3.4073323438253937, + "95.0" : 3.4073323438253937, + "99.0" : 3.4073323438253937, + "99.9" : 3.4073323438253937, + "99.99" : 3.4073323438253937, + "99.999" : 3.4073323438253937, + "99.9999" : 3.4073323438253937, + "100.0" : 3.4073323438253937 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.398037257321173, + 3.4073323438253937 + ], + [ + 3.393090154110096, + 3.402541052363824 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7210546490132013, + "scoreError" : 0.012387317274444386, + "scoreConfidence" : [ + 1.7086673317387568, + 1.7334419662876457 + ], + "scorePercentiles" : { + "0.0" : 1.718746930977431, + "50.0" : 1.7210793200388954, + "90.0" : 1.7233130249975834, + "95.0" : 1.7233130249975834, + "99.0" : 1.7233130249975834, + "99.9" : 1.7233130249975834, + "99.99" : 1.7233130249975834, + "99.999" : 1.7233130249975834, + "99.9999" : 1.7233130249975834, + "100.0" : 1.7233130249975834 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7205329400600824, + 1.7233130249975834 + ], + [ + 1.718746930977431, + 1.7216257000177082 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.864706321488554, + "scoreError" : 0.0030292477814532876, + "scoreConfidence" : [ + 0.8616770737071007, + 0.8677355692700073 + ], + "scorePercentiles" : { + "0.0" : 0.8640312899876621, + "50.0" : 0.8648396757094557, + "90.0" : 0.865114644547642, + "95.0" : 0.865114644547642, + "99.0" : 0.865114644547642, + "99.9" : 0.865114644547642, + "99.99" : 0.865114644547642, + "99.999" : 0.865114644547642, + "99.9999" : 0.865114644547642, + "100.0" : 0.865114644547642 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8648141750571403, + 0.8648651763617712 + ], + [ + 0.8640312899876621, + 0.865114644547642 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 40.49237253367603, + "scoreError" : 1.4784498919336293, + "scoreConfidence" : [ + 39.013922641742404, + 41.97082242560966 + ], + "scorePercentiles" : { + "0.0" : 39.21798489494184, + "50.0" : 40.632274190391094, + "90.0" : 41.860872454143184, + "95.0" : 41.860872454143184, + "99.0" : 41.860872454143184, + "99.9" : 41.860872454143184, + "99.99" : 41.860872454143184, + "99.999" : 41.860872454143184, + "99.9999" : 41.860872454143184, + "100.0" : 41.860872454143184 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 40.632274190391094, + 39.21798489494184, + 40.52013138493316 + ], + [ + 41.860872454143184, + 41.10434763868566, + 41.21868290029448 + ], + [ + 40.698457638341345, + 39.81248540885506, + 39.36611629249843 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAbgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.02505365998153623, + "scoreError" : 7.321224107054102E-4, + "scoreConfidence" : [ + 0.02432153757083082, + 0.02578578239224164 + ], + "scorePercentiles" : { + "0.0" : 0.024503543127139364, + "50.0" : 0.025069455263157896, + "90.0" : 0.025665329338461537, + "95.0" : 0.025665329338461537, + "99.0" : 0.025665329338461537, + "99.9" : 0.025665329338461537, + "99.99" : 0.025665329338461537, + "99.999" : 0.025665329338461537, + "99.9999" : 0.025665329338461537, + "100.0" : 0.025665329338461537 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.025069455263157896, + 0.02473229191111111, + 0.02461288542997543 + ], + [ + 0.025665329338461537, + 0.025577278539641944, + 0.025356023572151897 + ], + [ + 0.024503543127139364, + 0.024692934773399015, + 0.02527319787878788 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-02-04T22:18:16Z-83fb2f9750acdea86a5d42a99eacfe75343bdb6e-jdk17.json b/performance-results/2025-02-04T22:18:16Z-83fb2f9750acdea86a5d42a99eacfe75343bdb6e-jdk17.json new file mode 100644 index 0000000000..7a1d3a9afe --- /dev/null +++ b/performance-results/2025-02-04T22:18:16Z-83fb2f9750acdea86a5d42a99eacfe75343bdb6e-jdk17.json @@ -0,0 +1,287 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.427046433766062, + "scoreError" : 0.04365548760091392, + "scoreConfidence" : [ + 3.383390946165148, + 3.470701921366976 + ], + "scorePercentiles" : { + "0.0" : 3.4187459374535316, + "50.0" : 3.4274414136872613, + "90.0" : 3.4345569702361933, + "95.0" : 3.4345569702361933, + "99.0" : 3.4345569702361933, + "99.9" : 3.4345569702361933, + "99.99" : 3.4345569702361933, + "99.999" : 3.4345569702361933, + "99.9999" : 3.4345569702361933, + "100.0" : 3.4345569702361933 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4187459374535316, + 3.425064288111735 + ], + [ + 3.429818539262788, + 3.4345569702361933 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7279093977892266, + "scoreError" : 0.01145621864072765, + "scoreConfidence" : [ + 1.716453179148499, + 1.7393656164299542 + ], + "scorePercentiles" : { + "0.0" : 1.7260944011710606, + "50.0" : 1.7276465395017473, + "90.0" : 1.7302501109823514, + "95.0" : 1.7302501109823514, + "99.0" : 1.7302501109823514, + "99.9" : 1.7302501109823514, + "99.99" : 1.7302501109823514, + "99.999" : 1.7302501109823514, + "99.9999" : 1.7302501109823514, + "100.0" : 1.7302501109823514 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7271377249156863, + 1.7302501109823514 + ], + [ + 1.7260944011710606, + 1.728155354087808 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8699132212785552, + "scoreError" : 0.003846909616339744, + "scoreConfidence" : [ + 0.8660663116622155, + 0.8737601308948949 + ], + "scorePercentiles" : { + "0.0" : 0.8695145403196621, + "50.0" : 0.8696695386461242, + "90.0" : 0.8707992675023106, + "95.0" : 0.8707992675023106, + "99.0" : 0.8707992675023106, + "99.9" : 0.8707992675023106, + "99.99" : 0.8707992675023106, + "99.999" : 0.8707992675023106, + "99.9999" : 0.8707992675023106, + "100.0" : 0.8707992675023106 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8696838162153353, + 0.8707992675023106 + ], + [ + 0.8696552610769129, + 0.8695145403196621 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 44.49448131762865, + "scoreError" : 1.1498204083528643, + "scoreConfidence" : [ + 43.34466090927578, + 45.644301725981514 + ], + "scorePercentiles" : { + "0.0" : 43.9067707953283, + "50.0" : 44.18457675048271, + "90.0" : 45.430707798776275, + "95.0" : 45.430707798776275, + "99.0" : 45.430707798776275, + "99.9" : 45.430707798776275, + "99.99" : 45.430707798776275, + "99.999" : 45.430707798776275, + "99.9999" : 45.430707798776275, + "100.0" : 45.430707798776275 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 44.054179446201815, + 44.19728125286074, + 44.18457675048271 + ], + [ + 43.9067707953283, + 43.946569962393944, + 43.96958858794671 + ], + [ + 45.37186589053077, + 45.38879137413653, + 45.430707798776275 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAbgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.0223351247933896, + "scoreError" : 7.66788561808646E-4, + "scoreConfidence" : [ + 0.021568336231580953, + 0.023101913355198244 + ], + "scorePercentiles" : { + "0.0" : 0.021752088417391305, + "50.0" : 0.02243793969955157, + "90.0" : 0.022811016271070614, + "95.0" : 0.022811016271070614, + "99.0" : 0.022811016271070614, + "99.9" : 0.022811016271070614, + "99.99" : 0.022811016271070614, + "99.999" : 0.022811016271070614, + "99.9999" : 0.022811016271070614, + "100.0" : 0.022811016271070614 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.021754917986956522, + 0.021752088417391305, + 0.02177836983478261 + ], + [ + 0.02246497825560538, + 0.02243793969955157, + 0.02243549151569507 + ], + [ + 0.02279936298861048, + 0.022811016271070614, + 0.022781958170842824 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-02-05T03:30:40Z-43f8ace3d9fbada18046c602b0b205dc562e8aa7-jdk17.json b/performance-results/2025-02-05T03:30:40Z-43f8ace3d9fbada18046c602b0b205dc562e8aa7-jdk17.json new file mode 100644 index 0000000000..2a129ecd0c --- /dev/null +++ b/performance-results/2025-02-05T03:30:40Z-43f8ace3d9fbada18046c602b0b205dc562e8aa7-jdk17.json @@ -0,0 +1,287 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.422693724848574, + "scoreError" : 0.034923902189520864, + "scoreConfidence" : [ + 3.387769822659053, + 3.4576176270380947 + ], + "scorePercentiles" : { + "0.0" : 3.4170249463534113, + "50.0" : 3.4220117595222, + "90.0" : 3.4297264339964837, + "95.0" : 3.4297264339964837, + "99.0" : 3.4297264339964837, + "99.9" : 3.4297264339964837, + "99.99" : 3.4297264339964837, + "99.999" : 3.4297264339964837, + "99.9999" : 3.4297264339964837, + "100.0" : 3.4297264339964837 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4236089548467903, + 3.4297264339964837 + ], + [ + 3.4170249463534113, + 3.42041456419761 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7300534439742297, + "scoreError" : 0.019032673370126152, + "scoreConfidence" : [ + 1.7110207706041036, + 1.7490861173443557 + ], + "scorePercentiles" : { + "0.0" : 1.7260690976473414, + "50.0" : 1.7304886524743175, + "90.0" : 1.733167373300942, + "95.0" : 1.733167373300942, + "99.0" : 1.733167373300942, + "99.9" : 1.733167373300942, + "99.99" : 1.733167373300942, + "99.999" : 1.733167373300942, + "99.9999" : 1.733167373300942, + "100.0" : 1.733167373300942 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7302956837792431, + 1.733167373300942 + ], + [ + 1.7260690976473414, + 1.7306816211693918 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8698987120372736, + "scoreError" : 0.00377581375645047, + "scoreConfidence" : [ + 0.8661228982808232, + 0.8736745257937241 + ], + "scorePercentiles" : { + "0.0" : 0.8690967971416474, + "50.0" : 0.8700294827105304, + "90.0" : 0.8704390855863859, + "95.0" : 0.8704390855863859, + "99.0" : 0.8704390855863859, + "99.9" : 0.8704390855863859, + "99.99" : 0.8704390855863859, + "99.999" : 0.8704390855863859, + "99.9999" : 0.8704390855863859, + "100.0" : 0.8704390855863859 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8701952932654208, + 0.8704390855863859 + ], + [ + 0.8690967971416474, + 0.8698636721556401 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 44.43585541369755, + "scoreError" : 2.21713038130226, + "scoreConfidence" : [ + 42.21872503239529, + 46.652985794999815 + ], + "scorePercentiles" : { + "0.0" : 42.70591352572246, + "50.0" : 44.91351616811866, + "90.0" : 45.698943042856044, + "95.0" : 45.698943042856044, + "99.0" : 45.698943042856044, + "99.9" : 45.698943042856044, + "99.99" : 45.698943042856044, + "99.999" : 45.698943042856044, + "99.9999" : 45.698943042856044, + "100.0" : 45.698943042856044 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 42.70591352572246, + 42.7354668083411, + 42.75134494654927 + ], + [ + 45.62264437022108, + 45.66645088612438, + 45.698943042856044 + ], + [ + 44.89908833299122, + 44.91351616811866, + 44.92933064235384 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAbgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.022318768566288623, + "scoreError" : 4.839872571792104E-4, + "scoreConfidence" : [ + 0.021834781309109413, + 0.022802755823467833 + ], + "scorePercentiles" : { + "0.0" : 0.022101342944812363, + "50.0" : 0.022146305756637168, + "90.0" : 0.02271604529478458, + "95.0" : 0.02271604529478458, + "99.0" : 0.02271604529478458, + "99.9" : 0.02271604529478458, + "99.99" : 0.02271604529478458, + "99.999" : 0.02271604529478458, + "99.9999" : 0.02271604529478458, + "100.0" : 0.02271604529478458 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.02210229688741722, + 0.022101342944812363, + 0.02212873989159292 + ], + [ + 0.022697511213151927, + 0.02269267171882086, + 0.02271604529478458 + ], + [ + 0.022146305756637168, + 0.02214712675884956, + 0.022136876630530974 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-02-05T05:02:49Z-d370d0b15b9a50bb15b4b1a494ca29164b68edb4-jdk17.json b/performance-results/2025-02-05T05:02:49Z-d370d0b15b9a50bb15b4b1a494ca29164b68edb4-jdk17.json new file mode 100644 index 0000000000..0ab2bd6f98 --- /dev/null +++ b/performance-results/2025-02-05T05:02:49Z-d370d0b15b9a50bb15b4b1a494ca29164b68edb4-jdk17.json @@ -0,0 +1,287 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4042371393335316, + "scoreError" : 0.0446872583155137, + "scoreConfidence" : [ + 3.359549881018018, + 3.448924397649045 + ], + "scorePercentiles" : { + "0.0" : 3.394914893117686, + "50.0" : 3.4052290542625556, + "90.0" : 3.4115755556913285, + "95.0" : 3.4115755556913285, + "99.0" : 3.4115755556913285, + "99.9" : 3.4115755556913285, + "99.99" : 3.4115755556913285, + "99.999" : 3.4115755556913285, + "99.9999" : 3.4115755556913285, + "100.0" : 3.4115755556913285 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.394914893117686, + 3.40583895732733 + ], + [ + 3.404619151197781, + 3.4115755556913285 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7184579763646566, + "scoreError" : 0.017984029000478307, + "scoreConfidence" : [ + 1.7004739473641783, + 1.7364420053651348 + ], + "scorePercentiles" : { + "0.0" : 1.7150109700481377, + "50.0" : 1.7185017101631561, + "90.0" : 1.721817515084177, + "95.0" : 1.721817515084177, + "99.0" : 1.721817515084177, + "99.9" : 1.721817515084177, + "99.99" : 1.721817515084177, + "99.999" : 1.721817515084177, + "99.9999" : 1.721817515084177, + "100.0" : 1.721817515084177 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7183229689238861, + 1.721817515084177 + ], + [ + 1.7150109700481377, + 1.718680451402426 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8644166678618949, + "scoreError" : 0.014273824793039343, + "scoreConfidence" : [ + 0.8501428430688556, + 0.8786904926549342 + ], + "scorePercentiles" : { + "0.0" : 0.8625013881061403, + "50.0" : 0.8640499230080323, + "90.0" : 0.8670654373253741, + "95.0" : 0.8670654373253741, + "99.0" : 0.8670654373253741, + "99.9" : 0.8670654373253741, + "99.99" : 0.8670654373253741, + "99.999" : 0.8670654373253741, + "99.9999" : 0.8670654373253741, + "100.0" : 0.8670654373253741 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8654071827075736, + 0.8670654373253741 + ], + [ + 0.8625013881061403, + 0.8626926633084911 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 40.107849203374485, + "scoreError" : 1.8613429979991036, + "scoreConfidence" : [ + 38.24650620537538, + 41.96919220137359 + ], + "scorePercentiles" : { + "0.0" : 38.957375193089185, + "50.0" : 39.87978038106594, + "90.0" : 42.106739336781644, + "95.0" : 42.106739336781644, + "99.0" : 42.106739336781644, + "99.9" : 42.106739336781644, + "99.99" : 42.106739336781644, + "99.999" : 42.106739336781644, + "99.9999" : 42.106739336781644, + "100.0" : 42.106739336781644 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 41.32311514586201, + 39.22873722502622, + 39.40093047378082 + ], + [ + 40.22868330630514, + 42.106739336781644, + 40.820245253788244 + ], + [ + 39.02503651467119, + 38.957375193089185, + 39.87978038106594 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAbgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.02515763671701217, + "scoreError" : 4.5515478538928604E-4, + "scoreConfidence" : [ + 0.02470248193162288, + 0.025612791502401457 + ], + "scorePercentiles" : { + "0.0" : 0.024772995148514852, + "50.0" : 0.025168438949748743, + "90.0" : 0.02553268769132653, + "95.0" : 0.02553268769132653, + "99.0" : 0.02553268769132653, + "99.9" : 0.02553268769132653, + "99.99" : 0.02553268769132653, + "99.999" : 0.02553268769132653, + "99.9999" : 0.02553268769132653, + "100.0" : 0.02553268769132653 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.024772995148514852, + 0.024887766286069653, + 0.024896308708955223 + ], + [ + 0.02533403954177215, + 0.025328802524050634, + 0.025448840152671754 + ], + [ + 0.02504885145, + 0.025168438949748743, + 0.02553268769132653 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-02-06T03:25:19Z-b0546d74a3a1974caed0d87930b8867bdd487762-jdk17.json b/performance-results/2025-02-06T03:25:19Z-b0546d74a3a1974caed0d87930b8867bdd487762-jdk17.json new file mode 100644 index 0000000000..8d80b209f6 --- /dev/null +++ b/performance-results/2025-02-06T03:25:19Z-b0546d74a3a1974caed0d87930b8867bdd487762-jdk17.json @@ -0,0 +1,287 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.402866252226364, + "scoreError" : 0.0421848378937494, + "scoreConfidence" : [ + 3.360681414332615, + 3.4450510901201135 + ], + "scorePercentiles" : { + "0.0" : 3.397928831896492, + "50.0" : 3.400671059467336, + "90.0" : 3.412194058074291, + "95.0" : 3.412194058074291, + "99.0" : 3.412194058074291, + "99.9" : 3.412194058074291, + "99.99" : 3.412194058074291, + "99.999" : 3.412194058074291, + "99.9999" : 3.412194058074291, + "100.0" : 3.412194058074291 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.397928831896492, + 3.402518546600235 + ], + [ + 3.3988235723344373, + 3.412194058074291 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.718488887939728, + "scoreError" : 0.01413215419536935, + "scoreConfidence" : [ + 1.7043567337443586, + 1.7326210421350974 + ], + "scorePercentiles" : { + "0.0" : 1.7167794743050087, + "50.0" : 1.717892436788207, + "90.0" : 1.7213912038774897, + "95.0" : 1.7213912038774897, + "99.0" : 1.7213912038774897, + "99.9" : 1.7213912038774897, + "99.99" : 1.7213912038774897, + "99.999" : 1.7213912038774897, + "99.9999" : 1.7213912038774897, + "100.0" : 1.7213912038774897 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7168220567730959, + 1.718962816803318 + ], + [ + 1.7167794743050087, + 1.7213912038774897 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8647181507551523, + "scoreError" : 0.007284417772818592, + "scoreConfidence" : [ + 0.8574337329823337, + 0.872002568527971 + ], + "scorePercentiles" : { + "0.0" : 0.8635274440152577, + "50.0" : 0.8646774530881736, + "90.0" : 0.8659902528290045, + "95.0" : 0.8659902528290045, + "99.0" : 0.8659902528290045, + "99.9" : 0.8659902528290045, + "99.99" : 0.8659902528290045, + "99.999" : 0.8659902528290045, + "99.9999" : 0.8659902528290045, + "100.0" : 0.8659902528290045 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8635274440152577, + 0.8640558078024131 + ], + [ + 0.8652990983739342, + 0.8659902528290045 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 39.40515730294485, + "scoreError" : 1.4215726826153885, + "scoreConfidence" : [ + 37.98358462032946, + 40.82672998556024 + ], + "scorePercentiles" : { + "0.0" : 37.93581376773447, + "50.0" : 39.27752387686973, + "90.0" : 40.343217369362335, + "95.0" : 40.343217369362335, + "99.0" : 40.343217369362335, + "99.9" : 40.343217369362335, + "99.99" : 40.343217369362335, + "99.999" : 40.343217369362335, + "99.9999" : 40.343217369362335, + "100.0" : 40.343217369362335 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 40.06384938710178, + 40.17442301384987, + 40.259929376837086 + ], + [ + 39.27752387686973, + 38.714228572397936, + 37.93581376773447 + ], + [ + 40.343217369362335, + 38.96220507920764, + 38.91522528314284 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAbgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.02554874198958805, + "scoreError" : 0.0017688172917319394, + "scoreConfidence" : [ + 0.02377992469785611, + 0.02731755928131999 + ], + "scorePercentiles" : { + "0.0" : 0.024039496365384615, + "50.0" : 0.02525976276010101, + "90.0" : 0.027049900545945946, + "95.0" : 0.027049900545945946, + "99.0" : 0.027049900545945946, + "99.9" : 0.027049900545945946, + "99.99" : 0.027049900545945946, + "99.999" : 0.027049900545945946, + "99.9999" : 0.027049900545945946, + "100.0" : 0.027049900545945946 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.026940275467741935, + 0.02652689669230769, + 0.027049900545945946 + ], + [ + 0.025087918175438595, + 0.02502862981, + 0.024039496365384615 + ], + [ + 0.024630795724815725, + 0.02525976276010101, + 0.02537500236455696 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-02-06T03:54:13Z-3710e685f7643d3ed541078fb3be9ca7c4b3ffaa-jdk17.json b/performance-results/2025-02-06T03:54:13Z-3710e685f7643d3ed541078fb3be9ca7c4b3ffaa-jdk17.json new file mode 100644 index 0000000000..fab923472c --- /dev/null +++ b/performance-results/2025-02-06T03:54:13Z-3710e685f7643d3ed541078fb3be9ca7c4b3ffaa-jdk17.json @@ -0,0 +1,287 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.40840468928762, + "scoreError" : 0.03172758838290947, + "scoreConfidence" : [ + 3.3766771009047103, + 3.4401322776705294 + ], + "scorePercentiles" : { + "0.0" : 3.401889288067258, + "50.0" : 3.4089583002614106, + "90.0" : 3.4138128685604006, + "95.0" : 3.4138128685604006, + "99.0" : 3.4138128685604006, + "99.9" : 3.4138128685604006, + "99.99" : 3.4138128685604006, + "99.999" : 3.4138128685604006, + "99.9999" : 3.4138128685604006, + "100.0" : 3.4138128685604006 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.408891511405186, + 3.4138128685604006 + ], + [ + 3.401889288067258, + 3.4090250891176357 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7210007707040362, + "scoreError" : 0.017508545331382953, + "scoreConfidence" : [ + 1.7034922253726532, + 1.7385093160354192 + ], + "scorePercentiles" : { + "0.0" : 1.7180058125704887, + "50.0" : 1.721345212697952, + "90.0" : 1.7233068448497522, + "95.0" : 1.7233068448497522, + "99.0" : 1.7233068448497522, + "99.9" : 1.7233068448497522, + "99.99" : 1.7233068448497522, + "99.999" : 1.7233068448497522, + "99.9999" : 1.7233068448497522, + "100.0" : 1.7233068448497522 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7180058125704887, + 1.7194089020585175 + ], + [ + 1.7232815233373864, + 1.7233068448497522 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8643609823632786, + "scoreError" : 0.0161080169738309, + "scoreConfidence" : [ + 0.8482529653894477, + 0.8804689993371095 + ], + "scorePercentiles" : { + "0.0" : 0.8621131943188688, + "50.0" : 0.8639380343612875, + "90.0" : 0.8674546664116706, + "95.0" : 0.8674546664116706, + "99.0" : 0.8674546664116706, + "99.9" : 0.8674546664116706, + "99.99" : 0.8674546664116706, + "99.999" : 0.8674546664116706, + "99.9999" : 0.8674546664116706, + "100.0" : 0.8674546664116706 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8652908015543234, + 0.8674546664116706 + ], + [ + 0.8625852671682516, + 0.8621131943188688 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 42.13143739568395, + "scoreError" : 1.28997090052118, + "scoreConfidence" : [ + 40.84146649516277, + 43.421408296205136 + ], + "scorePercentiles" : { + "0.0" : 40.7091955299111, + "50.0" : 42.34700827507123, + "90.0" : 43.09494311870861, + "95.0" : 43.09494311870861, + "99.0" : 43.09494311870861, + "99.9" : 43.09494311870861, + "99.99" : 43.09494311870861, + "99.999" : 43.09494311870861, + "99.9999" : 43.09494311870861, + "100.0" : 43.09494311870861 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 40.7091955299111, + 41.54843086871625, + 42.4898195879411 + ], + [ + 42.34700827507123, + 43.09494311870861, + 41.772721481340994 + ], + [ + 41.69707756441562, + 43.0226619809692, + 42.5010781540815 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAbgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.023930444714706154, + "scoreError" : 8.884213123377579E-4, + "scoreConfidence" : [ + 0.023042023402368397, + 0.02481886602704391 + ], + "scorePercentiles" : { + "0.0" : 0.023008338947126436, + "50.0" : 0.024051551677884614, + "90.0" : 0.024526884235294116, + "95.0" : 0.024526884235294116, + "99.0" : 0.024526884235294116, + "99.9" : 0.024526884235294116, + "99.99" : 0.024526884235294116, + "99.999" : 0.024526884235294116, + "99.9999" : 0.024526884235294116, + "100.0" : 0.024526884235294116 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.024526884235294116, + 0.024363735328467154, + 0.023997522652278176 + ], + [ + 0.024367394362530412, + 0.024051551677884614, + 0.024217514585956418 + ], + [ + 0.023008338947126436, + 0.023298507360465116, + 0.02354255328235294 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-02-14T05:39:11Z-a8e00c32c112ccef5695b0427cdda006da887a37-jdk17.json b/performance-results/2025-02-14T05:39:11Z-a8e00c32c112ccef5695b0427cdda006da887a37-jdk17.json new file mode 100644 index 0000000000..5b3e1c6e47 --- /dev/null +++ b/performance-results/2025-02-14T05:39:11Z-a8e00c32c112ccef5695b0427cdda006da887a37-jdk17.json @@ -0,0 +1,287 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.404357283980617, + "scoreError" : 0.03521914452873535, + "scoreConfidence" : [ + 3.3691381394518816, + 3.439576428509352 + ], + "scorePercentiles" : { + "0.0" : 3.3966817360964723, + "50.0" : 3.40558944367229, + "90.0" : 3.4095685124814152, + "95.0" : 3.4095685124814152, + "99.0" : 3.4095685124814152, + "99.9" : 3.4095685124814152, + "99.99" : 3.4095685124814152, + "99.999" : 3.4095685124814152, + "99.9999" : 3.4095685124814152, + "100.0" : 3.4095685124814152 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.3966817360964723, + 3.4055314796534444 + ], + [ + 3.4056474076911356, + 3.4095685124814152 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7178122106916855, + "scoreError" : 0.01023832001786633, + "scoreConfidence" : [ + 1.7075738906738192, + 1.728050530709552 + ], + "scorePercentiles" : { + "0.0" : 1.7160908939955062, + "50.0" : 1.7177309775482787, + "90.0" : 1.7196959936746783, + "95.0" : 1.7196959936746783, + "99.0" : 1.7196959936746783, + "99.9" : 1.7196959936746783, + "99.99" : 1.7196959936746783, + "99.999" : 1.7196959936746783, + "99.9999" : 1.7196959936746783, + "100.0" : 1.7196959936746783 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7170217100517866, + 1.7196959936746783 + ], + [ + 1.7160908939955062, + 1.718440245044771 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.864719378037384, + "scoreError" : 0.008385695422045172, + "scoreConfidence" : [ + 0.8563336826153388, + 0.8731050734594291 + ], + "scorePercentiles" : { + "0.0" : 0.8635028724987689, + "50.0" : 0.8645279250288825, + "90.0" : 0.8663187895930019, + "95.0" : 0.8663187895930019, + "99.0" : 0.8663187895930019, + "99.9" : 0.8663187895930019, + "99.99" : 0.8663187895930019, + "99.999" : 0.8663187895930019, + "99.9999" : 0.8663187895930019, + "100.0" : 0.8663187895930019 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8638420932589354, + 0.8663187895930019 + ], + [ + 0.8635028724987689, + 0.8652137567988297 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 38.68765878419774, + "scoreError" : 1.3595024579632389, + "scoreConfidence" : [ + 37.3281563262345, + 40.047161242160975 + ], + "scorePercentiles" : { + "0.0" : 37.6176212727424, + "50.0" : 38.91625003504807, + "90.0" : 39.96719044176991, + "95.0" : 39.96719044176991, + "99.0" : 39.96719044176991, + "99.9" : 39.96719044176991, + "99.99" : 39.96719044176991, + "99.999" : 39.96719044176991, + "99.9999" : 39.96719044176991, + "100.0" : 39.96719044176991 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 38.07023523961371, + 37.6176212727424, + 37.7109409706809 + ], + [ + 38.23620460941478, + 39.22998086295451, + 38.91625003504807 + ], + [ + 39.96719044176991, + 39.195550172304046, + 39.244955453251286 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAbgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.02482110118000495, + "scoreError" : 0.0012491594771989168, + "scoreConfidence" : [ + 0.023571941702806035, + 0.026070260657203866 + ], + "scorePercentiles" : { + "0.0" : 0.02395586482057416, + "50.0" : 0.0250229317475, + "90.0" : 0.025947926660621762, + "95.0" : 0.025947926660621762, + "99.0" : 0.025947926660621762, + "99.9" : 0.025947926660621762, + "99.99" : 0.025947926660621762, + "99.999" : 0.025947926660621762, + "99.9999" : 0.025947926660621762, + "100.0" : 0.025947926660621762 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.02557740179539642, + 0.02512524028822055, + 0.025947926660621762 + ], + [ + 0.0250229317475, + 0.025267129606060607, + 0.024533764960784313 + ], + [ + 0.02395586482057416, + 0.023976613050239234, + 0.023983037690647482 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-02-15T06:20:41Z-2d740aad4b4e7264bdddbdfad1d38923544700db-jdk17.json b/performance-results/2025-02-15T06:20:41Z-2d740aad4b4e7264bdddbdfad1d38923544700db-jdk17.json new file mode 100644 index 0000000000..6ac543c4fb --- /dev/null +++ b/performance-results/2025-02-15T06:20:41Z-2d740aad4b4e7264bdddbdfad1d38923544700db-jdk17.json @@ -0,0 +1,287 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4170644521395346, + "scoreError" : 0.06948104475705158, + "scoreConfidence" : [ + 3.347583407382483, + 3.486545496896586 + ], + "scorePercentiles" : { + "0.0" : 3.4066504834553046, + "50.0" : 3.4162868626402703, + "90.0" : 3.4290335998222927, + "95.0" : 3.4290335998222927, + "99.0" : 3.4290335998222927, + "99.9" : 3.4290335998222927, + "99.99" : 3.4290335998222927, + "99.999" : 3.4290335998222927, + "99.9999" : 3.4290335998222927, + "100.0" : 3.4290335998222927 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.423139355195289, + 3.4290335998222927 + ], + [ + 3.4066504834553046, + 3.4094343700852514 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7299781307919717, + "scoreError" : 0.007857454898446732, + "scoreConfidence" : [ + 1.722120675893525, + 1.7378355856904184 + ], + "scorePercentiles" : { + "0.0" : 1.7289438396262016, + "50.0" : 1.7297098953749621, + "90.0" : 1.7315488927917617, + "95.0" : 1.7315488927917617, + "99.0" : 1.7315488927917617, + "99.9" : 1.7315488927917617, + "99.99" : 1.7315488927917617, + "99.999" : 1.7315488927917617, + "99.9999" : 1.7315488927917617, + "100.0" : 1.7315488927917617 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7290956274732558, + 1.7303241632766684 + ], + [ + 1.7289438396262016, + 1.7315488927917617 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8697467791753941, + "scoreError" : 0.0028323725711086665, + "scoreConfidence" : [ + 0.8669144066042854, + 0.8725791517465028 + ], + "scorePercentiles" : { + "0.0" : 0.8692196616762735, + "50.0" : 0.869817331270005, + "90.0" : 0.8701327924852931, + "95.0" : 0.8701327924852931, + "99.0" : 0.8701327924852931, + "99.9" : 0.8701327924852931, + "99.99" : 0.8701327924852931, + "99.999" : 0.8701327924852931, + "99.9999" : 0.8701327924852931, + "100.0" : 0.8701327924852931 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8695531911766186, + 0.8700814713633914 + ], + [ + 0.8692196616762735, + 0.8701327924852931 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 45.0549346381212, + "scoreError" : 0.848757856193997, + "scoreConfidence" : [ + 44.206176781927205, + 45.9036924943152 + ], + "scorePercentiles" : { + "0.0" : 44.68208621438223, + "50.0" : 44.738282881112745, + "90.0" : 45.76180661959652, + "95.0" : 45.76180661959652, + "99.0" : 45.76180661959652, + "99.9" : 45.76180661959652, + "99.99" : 45.76180661959652, + "99.999" : 45.76180661959652, + "99.9999" : 45.76180661959652, + "100.0" : 45.76180661959652 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 44.756697510251236, + 44.738282881112745, + 44.68208621438223 + ], + [ + 44.73782098292451, + 44.695078879626514, + 44.70247575123757 + ], + [ + 45.698962720374276, + 45.72120018358523, + 45.76180661959652 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAbgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.022437348164506113, + "scoreError" : 9.210176860938199E-4, + "scoreConfidence" : [ + 0.021516330478412293, + 0.023358365850599933 + ], + "scorePercentiles" : { + "0.0" : 0.021832881671023964, + "50.0" : 0.022377403029082775, + "90.0" : 0.02315576094675926, + "95.0" : 0.02315576094675926, + "99.0" : 0.02315576094675926, + "99.9" : 0.02315576094675926, + "99.99" : 0.02315576094675926, + "99.999" : 0.02315576094675926, + "99.9999" : 0.02315576094675926, + "100.0" : 0.02315576094675926 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.021843250683406115, + 0.021832881671023964, + 0.02184149683187773 + ], + [ + 0.022377403029082775, + 0.022397466700223714, + 0.02235870547767857 + ], + [ + 0.022976684075688075, + 0.02315576094675926, + 0.023152484064814814 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-02-16T03:40:11Z-fc9c1336de7ab351d6cd6a68a43e8ee6b7876fb6-jdk17.json b/performance-results/2025-02-16T03:40:11Z-fc9c1336de7ab351d6cd6a68a43e8ee6b7876fb6-jdk17.json new file mode 100644 index 0000000000..40711a4f92 --- /dev/null +++ b/performance-results/2025-02-16T03:40:11Z-fc9c1336de7ab351d6cd6a68a43e8ee6b7876fb6-jdk17.json @@ -0,0 +1,287 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4197378188044096, + "scoreError" : 0.04262561676864909, + "scoreConfidence" : [ + 3.3771122020357605, + 3.462363435573059 + ], + "scorePercentiles" : { + "0.0" : 3.4117117828701837, + "50.0" : 3.4198156241090585, + "90.0" : 3.4276082441293374, + "95.0" : 3.4276082441293374, + "99.0" : 3.4276082441293374, + "99.9" : 3.4276082441293374, + "99.99" : 3.4276082441293374, + "99.999" : 3.4276082441293374, + "99.9999" : 3.4276082441293374, + "100.0" : 3.4276082441293374 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.418372884463662, + 3.4276082441293374 + ], + [ + 3.4117117828701837, + 3.421258363754455 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.726255760607202, + "scoreError" : 0.0069887452082228844, + "scoreConfidence" : [ + 1.719267015398979, + 1.7332445058154249 + ], + "scorePercentiles" : { + "0.0" : 1.724942047136417, + "50.0" : 1.7262524899916596, + "90.0" : 1.7275760153090716, + "95.0" : 1.7275760153090716, + "99.0" : 1.7275760153090716, + "99.9" : 1.7275760153090716, + "99.99" : 1.7275760153090716, + "99.999" : 1.7275760153090716, + "99.9999" : 1.7275760153090716, + "100.0" : 1.7275760153090716 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7261109025806118, + 1.7263940774027073 + ], + [ + 1.724942047136417, + 1.7275760153090716 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8695008952141935, + "scoreError" : 0.002839649770146112, + "scoreConfidence" : [ + 0.8666612454440474, + 0.8723405449843395 + ], + "scorePercentiles" : { + "0.0" : 0.8688932944831845, + "50.0" : 0.8695867203095606, + "90.0" : 0.8699368457544682, + "95.0" : 0.8699368457544682, + "99.0" : 0.8699368457544682, + "99.9" : 0.8699368457544682, + "99.99" : 0.8699368457544682, + "99.999" : 0.8699368457544682, + "99.9999" : 0.8699368457544682, + "100.0" : 0.8699368457544682 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8688932944831845, + 0.869534969252187 + ], + [ + 0.8699368457544682, + 0.8696384713669342 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 44.79340737680421, + "scoreError" : 1.1283373708302868, + "scoreConfidence" : [ + 43.665070005973924, + 45.9217447476345 + ], + "scorePercentiles" : { + "0.0" : 44.22709764883389, + "50.0" : 44.37852960081133, + "90.0" : 45.72777210141981, + "95.0" : 45.72777210141981, + "99.0" : 45.72777210141981, + "99.9" : 45.72777210141981, + "99.99" : 45.72777210141981, + "99.999" : 45.72777210141981, + "99.9999" : 45.72777210141981, + "100.0" : 45.72777210141981 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 44.37103141816148, + 44.37808732974959, + 44.43775470829123 + ], + [ + 45.68653293043291, + 45.63986315460877, + 45.72777210141981 + ], + [ + 44.37852960081133, + 44.29399749892893, + 44.22709764883389 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAbgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.02254336100574041, + "scoreError" : 0.0014251861750202459, + "scoreConfidence" : [ + 0.021118174830720163, + 0.023968547180760656 + ], + "scorePercentiles" : { + "0.0" : 0.02140835029059829, + "50.0" : 0.022582479492099322, + "90.0" : 0.023531701548235293, + "95.0" : 0.023531701548235293, + "99.0" : 0.023531701548235293, + "99.9" : 0.023531701548235293, + "99.99" : 0.023531701548235293, + "99.999" : 0.023531701548235293, + "99.9999" : 0.023531701548235293, + "100.0" : 0.023531701548235293 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.023531701548235293, + 0.02344455574941452, + 0.023488433495305164 + ], + [ + 0.021671676398268398, + 0.02140835029059829, + 0.021538914713978494 + ], + [ + 0.022566439108108106, + 0.022657698255656108, + 0.022582479492099322 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-02-17T20:34:06Z-1c40027a308e3a8034e8f2e168d2697e979e5c1b-jdk17.json b/performance-results/2025-02-17T20:34:06Z-1c40027a308e3a8034e8f2e168d2697e979e5c1b-jdk17.json new file mode 100644 index 0000000000..808a4a5fce --- /dev/null +++ b/performance-results/2025-02-17T20:34:06Z-1c40027a308e3a8034e8f2e168d2697e979e5c1b-jdk17.json @@ -0,0 +1,287 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4206088887895985, + "scoreError" : 0.013042699082723508, + "scoreConfidence" : [ + 3.4075661897068747, + 3.433651587872322 + ], + "scorePercentiles" : { + "0.0" : 3.417984980421843, + "50.0" : 3.4207956154691894, + "90.0" : 3.4228593437981725, + "95.0" : 3.4228593437981725, + "99.0" : 3.4228593437981725, + "99.9" : 3.4228593437981725, + "99.99" : 3.4228593437981725, + "99.999" : 3.4228593437981725, + "99.9999" : 3.4228593437981725, + "100.0" : 3.4228593437981725 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4211136575072607, + 3.4228593437981725 + ], + [ + 3.417984980421843, + 3.420477573431118 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7290954275461694, + "scoreError" : 0.014971146867698142, + "scoreConfidence" : [ + 1.7141242806784713, + 1.7440665744138675 + ], + "scorePercentiles" : { + "0.0" : 1.7268335612289947, + "50.0" : 1.728618007948021, + "90.0" : 1.732312133059641, + "95.0" : 1.732312133059641, + "99.0" : 1.732312133059641, + "99.9" : 1.732312133059641, + "99.99" : 1.732312133059641, + "99.999" : 1.732312133059641, + "99.9999" : 1.732312133059641, + "100.0" : 1.732312133059641 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7289210060678664, + 1.732312133059641 + ], + [ + 1.7268335612289947, + 1.7283150098281757 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8691296924737124, + "scoreError" : 0.003217906230387458, + "scoreConfidence" : [ + 0.865911786243325, + 0.8723475987040998 + ], + "scorePercentiles" : { + "0.0" : 0.8685411985907953, + "50.0" : 0.8691692958613317, + "90.0" : 0.8696389795813908, + "95.0" : 0.8696389795813908, + "99.0" : 0.8696389795813908, + "99.9" : 0.8696389795813908, + "99.99" : 0.8696389795813908, + "99.999" : 0.8696389795813908, + "99.9999" : 0.8696389795813908, + "100.0" : 0.8696389795813908 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8685411985907953, + 0.8694292003590817 + ], + [ + 0.8689093913635819, + 0.8696389795813908 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 44.00002592220759, + "scoreError" : 1.0169729471967608, + "scoreConfidence" : [ + 42.98305297501083, + 45.016998869404354 + ], + "scorePercentiles" : { + "0.0" : 43.190621895015134, + "50.0" : 44.339727784246385, + "90.0" : 44.49859689249208, + "95.0" : 44.49859689249208, + "99.0" : 44.49859689249208, + "99.9" : 44.49859689249208, + "99.99" : 44.49859689249208, + "99.999" : 44.49859689249208, + "99.9999" : 44.49859689249208, + "100.0" : 44.49859689249208 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 44.296203523003136, + 44.3675733423135, + 44.339727784246385 + ], + [ + 44.433477192763355, + 44.47220710306538, + 44.49859689249208 + ], + [ + 43.190621895015134, + 43.195083051862106, + 43.2067425151073 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAbgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.022014991133773334, + "scoreError" : 7.270139507733344E-4, + "scoreConfidence" : [ + 0.021287977183, + 0.022742005084546667 + ], + "scorePercentiles" : { + "0.0" : 0.02151436482795699, + "50.0" : 0.021798280185185186, + "90.0" : 0.02263859209276018, + "95.0" : 0.02263859209276018, + "99.0" : 0.02263859209276018, + "99.9" : 0.02263859209276018, + "99.99" : 0.02263859209276018, + "99.999" : 0.02263859209276018, + "99.9999" : 0.02263859209276018, + "100.0" : 0.02263859209276018 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.02176385843695652, + 0.021756122958695653, + 0.021755845339130435 + ], + [ + 0.021798280185185186, + 0.021809013647058822, + 0.02151436482795699 + ], + [ + 0.02263859209276018, + 0.022552278957207208, + 0.02254656375900901 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-02-17T22:24:53Z-6669c2035a983b1641544c06517726c31fba6de8-jdk17.json b/performance-results/2025-02-17T22:24:53Z-6669c2035a983b1641544c06517726c31fba6de8-jdk17.json new file mode 100644 index 0000000000..be9f5a784b --- /dev/null +++ b/performance-results/2025-02-17T22:24:53Z-6669c2035a983b1641544c06517726c31fba6de8-jdk17.json @@ -0,0 +1,287 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4242633766606025, + "scoreError" : 0.018975601014235673, + "scoreConfidence" : [ + 3.405287775646367, + 3.443238977674838 + ], + "scorePercentiles" : { + "0.0" : 3.4212131355295408, + "50.0" : 3.423987593935866, + "90.0" : 3.427865183241137, + "95.0" : 3.427865183241137, + "99.0" : 3.427865183241137, + "99.9" : 3.427865183241137, + "99.99" : 3.427865183241137, + "99.999" : 3.427865183241137, + "99.9999" : 3.427865183241137, + "100.0" : 3.427865183241137 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4212131355295408, + 3.427865183241137 + ], + [ + 3.4226761215874024, + 3.42529906628433 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7297100885344647, + "scoreError" : 0.012575602193575109, + "scoreConfidence" : [ + 1.7171344863408897, + 1.7422856907280397 + ], + "scorePercentiles" : { + "0.0" : 1.7269537146749794, + "50.0" : 1.7301797508085786, + "90.0" : 1.7315271378457233, + "95.0" : 1.7315271378457233, + "99.0" : 1.7315271378457233, + "99.9" : 1.7315271378457233, + "99.99" : 1.7315271378457233, + "99.999" : 1.7315271378457233, + "99.9999" : 1.7315271378457233, + "100.0" : 1.7315271378457233 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7269537146749794, + 1.730283069142333 + ], + [ + 1.730076432474824, + 1.7315271378457233 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8694133387568189, + "scoreError" : 8.350509859162894E-4, + "scoreConfidence" : [ + 0.8685782877709026, + 0.8702483897427352 + ], + "scorePercentiles" : { + "0.0" : 0.8692902387995611, + "50.0" : 0.8693866443860734, + "90.0" : 0.8695898274555681, + "95.0" : 0.8695898274555681, + "99.0" : 0.8695898274555681, + "99.9" : 0.8695898274555681, + "99.99" : 0.8695898274555681, + "99.999" : 0.8695898274555681, + "99.9999" : 0.8695898274555681, + "100.0" : 0.8695898274555681 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8693522182862535, + 0.8692902387995611 + ], + [ + 0.8695898274555681, + 0.8694210704858931 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 44.351621241143484, + "scoreError" : 0.5953242229423784, + "scoreConfidence" : [ + 43.7562970182011, + 44.946945464085864 + ], + "scorePercentiles" : { + "0.0" : 43.77066626511391, + "50.0" : 44.366053527100796, + "90.0" : 44.87096788250905, + "95.0" : 44.87096788250905, + "99.0" : 44.87096788250905, + "99.9" : 44.87096788250905, + "99.99" : 44.87096788250905, + "99.999" : 44.87096788250905, + "99.9999" : 44.87096788250905, + "100.0" : 44.87096788250905 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 44.297296748606456, + 44.397303245644636, + 44.366053527100796 + ], + [ + 44.0500241243553, + 44.05602909596345, + 43.77066626511391 + ], + [ + 44.87096788250905, + 44.68165375318243, + 44.674596527815304 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAbgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.022335216267832168, + "scoreError" : 5.743756954042363E-4, + "scoreConfidence" : [ + 0.02176084057242793, + 0.022909591963236404 + ], + "scorePercentiles" : { + "0.0" : 0.022069386140969163, + "50.0" : 0.02213912410619469, + "90.0" : 0.022815809872437358, + "95.0" : 0.022815809872437358, + "99.0" : 0.022815809872437358, + "99.9" : 0.022815809872437358, + "99.99" : 0.022815809872437358, + "99.999" : 0.022815809872437358, + "99.9999" : 0.022815809872437358, + "100.0" : 0.022815809872437358 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.02210124018763797, + 0.022075338872246695, + 0.022069386140969163 + ], + [ + 0.02275205906818182, + 0.022799795460136673, + 0.022815809872437358 + ], + [ + 0.022123397386313467, + 0.02213912410619469, + 0.02214079531637168 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-02-18T21:00:41Z-a38c75c4e4a155ab2d88dfb1304971e61ee32aed-jdk17.json b/performance-results/2025-02-18T21:00:41Z-a38c75c4e4a155ab2d88dfb1304971e61ee32aed-jdk17.json new file mode 100644 index 0000000000..260e44a4d4 --- /dev/null +++ b/performance-results/2025-02-18T21:00:41Z-a38c75c4e4a155ab2d88dfb1304971e61ee32aed-jdk17.json @@ -0,0 +1,287 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4115822946692296, + "scoreError" : 0.02374031077593178, + "scoreConfidence" : [ + 3.387841983893298, + 3.4353226054451613 + ], + "scorePercentiles" : { + "0.0" : 3.4079551742814718, + "50.0" : 3.4109733124928603, + "90.0" : 3.4164273794097273, + "95.0" : 3.4164273794097273, + "99.0" : 3.4164273794097273, + "99.9" : 3.4164273794097273, + "99.99" : 3.4164273794097273, + "99.999" : 3.4164273794097273, + "99.9999" : 3.4164273794097273, + "100.0" : 3.4164273794097273 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4097245690943745, + 3.4164273794097273 + ], + [ + 3.4079551742814718, + 3.4122220558913456 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.722694825573204, + "scoreError" : 0.009524342266229335, + "scoreConfidence" : [ + 1.7131704833069747, + 1.7322191678394332 + ], + "scorePercentiles" : { + "0.0" : 1.7205165151963069, + "50.0" : 1.7232566846012491, + "90.0" : 1.7237494178940111, + "95.0" : 1.7237494178940111, + "99.0" : 1.7237494178940111, + "99.9" : 1.7237494178940111, + "99.99" : 1.7237494178940111, + "99.999" : 1.7237494178940111, + "99.9999" : 1.7237494178940111, + "100.0" : 1.7237494178940111 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7233762538651085, + 1.7237494178940111 + ], + [ + 1.7205165151963069, + 1.7231371153373898 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.866572515884187, + "scoreError" : 0.004874669836230257, + "scoreConfidence" : [ + 0.8616978460479567, + 0.8714471857204173 + ], + "scorePercentiles" : { + "0.0" : 0.8659772491632904, + "50.0" : 0.866317387084177, + "90.0" : 0.867678040205104, + "95.0" : 0.867678040205104, + "99.0" : 0.867678040205104, + "99.9" : 0.867678040205104, + "99.99" : 0.867678040205104, + "99.999" : 0.867678040205104, + "99.9999" : 0.867678040205104, + "100.0" : 0.867678040205104 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8663020308179187, + 0.867678040205104 + ], + [ + 0.8659772491632904, + 0.8663327433504354 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 43.16581893791316, + "scoreError" : 2.066948947766819, + "scoreConfidence" : [ + 41.09886999014634, + 45.232767885679976 + ], + "scorePercentiles" : { + "0.0" : 41.47630378715374, + "50.0" : 43.19324157508737, + "90.0" : 45.10306662709041, + "95.0" : 45.10306662709041, + "99.0" : 45.10306662709041, + "99.9" : 45.10306662709041, + "99.99" : 45.10306662709041, + "99.999" : 45.10306662709041, + "99.9999" : 45.10306662709041, + "100.0" : 45.10306662709041 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 41.9283125770102, + 41.47630378715374, + 42.49340373619001 + ], + [ + 43.19324157508737, + 44.967595343521324, + 45.10306662709041 + ], + [ + 42.69787652122177, + 43.33871227400222, + 43.29385799994142 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAbgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.02357816374013612, + "scoreError" : 6.853628187300454E-4, + "scoreConfidence" : [ + 0.022892800921406078, + 0.024263526558866166 + ], + "scorePercentiles" : { + "0.0" : 0.02294608312614679, + "50.0" : 0.023463286145199064, + "90.0" : 0.024420310319512195, + "95.0" : 0.024420310319512195, + "99.0" : 0.024420310319512195, + "99.9" : 0.024420310319512195, + "99.99" : 0.024420310319512195, + "99.999" : 0.024420310319512195, + "99.9999" : 0.024420310319512195, + "100.0" : 0.024420310319512195 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.023463286145199064, + 0.02341394538551402, + 0.023628221283018867 + ], + [ + 0.023451077770491803, + 0.02331047241395349, + 0.02294608312614679 + ], + [ + 0.024420310319512195, + 0.02383940636904762, + 0.023730670848341233 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-02-23T23:27:11Z-422035b18d79a8c2da519fa224d57b54328d21af-jdk17.json b/performance-results/2025-02-23T23:27:11Z-422035b18d79a8c2da519fa224d57b54328d21af-jdk17.json new file mode 100644 index 0000000000..42469cd673 --- /dev/null +++ b/performance-results/2025-02-23T23:27:11Z-422035b18d79a8c2da519fa224d57b54328d21af-jdk17.json @@ -0,0 +1,1657 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.407056046800354, + "scoreError" : 0.029918815472154754, + "scoreConfidence" : [ + 3.3771372313281995, + 3.4369748622725087 + ], + "scorePercentiles" : { + "0.0" : 3.4007909424708345, + "50.0" : 3.4082762103332733, + "90.0" : 3.410880824064036, + "95.0" : 3.410880824064036, + "99.0" : 3.410880824064036, + "99.9" : 3.410880824064036, + "99.99" : 3.410880824064036, + "99.999" : 3.410880824064036, + "99.9999" : 3.410880824064036, + "100.0" : 3.410880824064036 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4063459499983404, + 3.4102064706682067 + ], + [ + 3.4007909424708345, + 3.410880824064036 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7237261899951235, + "scoreError" : 0.012279956940872572, + "scoreConfidence" : [ + 1.711446233054251, + 1.736006146935996 + ], + "scorePercentiles" : { + "0.0" : 1.7209620297907924, + "50.0" : 1.7243493101951046, + "90.0" : 1.725244109799492, + "95.0" : 1.725244109799492, + "99.0" : 1.725244109799492, + "99.9" : 1.725244109799492, + "99.99" : 1.725244109799492, + "99.999" : 1.725244109799492, + "99.9999" : 1.725244109799492, + "100.0" : 1.725244109799492 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7209620297907924, + 1.7245866091668745 + ], + [ + 1.7241120112233348, + 1.725244109799492 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8655072619557832, + "scoreError" : 0.0076541027379537704, + "scoreConfidence" : [ + 0.8578531592178295, + 0.873161364693737 + ], + "scorePercentiles" : { + "0.0" : 0.864075538285419, + "50.0" : 0.8655494103959934, + "90.0" : 0.866854688745727, + "95.0" : 0.866854688745727, + "99.0" : 0.866854688745727, + "99.9" : 0.866854688745727, + "99.99" : 0.866854688745727, + "99.999" : 0.866854688745727, + "99.9999" : 0.866854688745727, + "100.0" : 0.866854688745727 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8659617453318614, + 0.866854688745727 + ], + [ + 0.864075538285419, + 0.8651370754601254 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "2" + }, + "primaryMetric" : { + "score" : 26552.524153094724, + "scoreError" : 639.1805987554905, + "scoreConfidence" : [ + 25913.343554339233, + 27191.704751850215 + ], + "scorePercentiles" : { + "0.0" : 26180.44553092005, + "50.0" : 26356.254345436864, + "90.0" : 27200.80700737948, + "95.0" : 27200.80700737948, + "99.0" : 27200.80700737948, + "99.9" : 27200.80700737948, + "99.99" : 27200.80700737948, + "99.999" : 27200.80700737948, + "99.9999" : 27200.80700737948, + "100.0" : 27200.80700737948 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 26356.254345436864, + 26236.647378597983, + 26180.44553092005 + ], + [ + 27200.80700737948, + 26956.168602989936, + 26977.190532199587 + ], + [ + 26347.091494468492, + 26352.678896785805, + 26365.433589074324 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "10" + }, + "primaryMetric" : { + "score" : 52218.80958985782, + "scoreError" : 2879.5912049286203, + "scoreConfidence" : [ + 49339.2183849292, + 55098.40079478644 + ], + "scorePercentiles" : { + "0.0" : 50017.97044480345, + "50.0" : 52649.465625625206, + "90.0" : 53886.84577830227, + "95.0" : 53886.84577830227, + "99.0" : 53886.84577830227, + "99.9" : 53886.84577830227, + "99.99" : 53886.84577830227, + "99.999" : 53886.84577830227, + "99.9999" : 53886.84577830227, + "100.0" : 53886.84577830227 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 50017.97044480345, + 50035.0168865673, + 50041.48226304438 + ], + [ + 53885.89643819377, + 53886.84577830227, + 53842.27665966726 + ], + [ + 52989.15061916798, + 52621.18159334877, + 52649.465625625206 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 331112.89002765866, + "scoreError" : 9506.721360091407, + "scoreConfidence" : [ + 321606.16866756725, + 340619.6113877501 + ], + "scorePercentiles" : { + "0.0" : 324464.0961357516, + "50.0" : 330664.8458155606, + "90.0" : 337893.6958372753, + "95.0" : 337893.6958372753, + "99.0" : 337893.6958372753, + "99.9" : 337893.6958372753, + "99.99" : 337893.6958372753, + "99.999" : 337893.6958372753, + "99.9999" : 337893.6958372753, + "100.0" : 337893.6958372753 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 324886.30850199796, + 325013.14257856936, + 324464.0961357516 + ], + [ + 337864.1532146356, + 337893.6958372753, + 337731.1074636947 + ], + [ + 330875.09724060347, + 330623.5634608391, + 330664.8458155606 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "2" + }, + "primaryMetric" : { + "score" : 11427.622258229836, + "scoreError" : 324.31758374745107, + "scoreConfidence" : [ + 11103.304674482384, + 11751.939841977288 + ], + "scorePercentiles" : { + "0.0" : 11172.28876683924, + "50.0" : 11487.803492020093, + "90.0" : 11629.032201570599, + "95.0" : 11629.032201570599, + "99.0" : 11629.032201570599, + "99.9" : 11629.032201570599, + "99.99" : 11629.032201570599, + "99.999" : 11629.032201570599, + "99.9999" : 11629.032201570599, + "100.0" : 11629.032201570599 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 11483.757824638526, + 11487.803492020093, + 11492.811145806158 + ], + [ + 11191.473096017226, + 11179.267410675857, + 11172.28876683924 + ], + [ + 11629.032201570599, + 11611.247604627724, + 11600.918781873106 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "10" + }, + "primaryMetric" : { + "score" : 52007.73574828912, + "scoreError" : 2747.6709117774185, + "scoreConfidence" : [ + 49260.0648365117, + 54755.40666006653 + ], + "scorePercentiles" : { + "0.0" : 49772.18481171423, + "50.0" : 53028.99369495013, + "90.0" : 53201.20417305073, + "95.0" : 53201.20417305073, + "99.0" : 53201.20417305073, + "99.9" : 53201.20417305073, + "99.99" : 53201.20417305073, + "99.999" : 53201.20417305073, + "99.9999" : 53201.20417305073, + "100.0" : 53201.20417305073 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 53163.70150610576, + 53165.25671602116, + 53201.20417305073 + ], + [ + 49891.42993843483, + 49826.70391334243, + 49772.18481171423 + ], + [ + 53028.99369495013, + 53042.75352463799, + 52977.393456344726 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 519817.1073999086, + "scoreError" : 22899.539550691738, + "scoreConfidence" : [ + 496917.56784921687, + 542716.6469506003 + ], + "scorePercentiles" : { + "0.0" : 501659.81840983196, + "50.0" : 522679.67015104793, + "90.0" : 534125.0044864605, + "95.0" : 534125.0044864605, + "99.0" : 534125.0044864605, + "99.9" : 534125.0044864605, + "99.99" : 534125.0044864605, + "99.999" : 534125.0044864605, + "99.9999" : 534125.0044864605, + "100.0" : 534125.0044864605 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 523641.3408210284, + 522679.67015104793, + 522124.72834542894 + ], + [ + 502553.2957435047, + 501659.81840983196, + 504259.8995058491 + ], + [ + 533653.9709696355, + 534125.0044864605, + 533656.2381663909 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "2" + }, + "primaryMetric" : { + "score" : 5611.061899727954, + "scoreError" : 199.0334455523655, + "scoreConfidence" : [ + 5412.028454175589, + 5810.09534528032 + ], + "scorePercentiles" : { + "0.0" : 5471.789355523734, + "50.0" : 5604.591856510667, + "90.0" : 5748.895040773562, + "95.0" : 5748.895040773562, + "99.0" : 5748.895040773562, + "99.9" : 5748.895040773562, + "99.99" : 5748.895040773562, + "99.999" : 5748.895040773562, + "99.9999" : 5748.895040773562, + "100.0" : 5748.895040773562 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 5748.895040773562, + 5747.524777559183, + 5743.206077045362 + ], + [ + 5477.598544947824, + 5471.789355523734, + 5472.026265965817 + ], + [ + 5632.66979088397, + 5604.591856510667, + 5601.255388341467 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "10" + }, + "primaryMetric" : { + "score" : 23867.987814775624, + "scoreError" : 1536.3352111463519, + "scoreConfidence" : [ + 22331.65260362927, + 25404.323025921978 + ], + "scorePercentiles" : { + "0.0" : 22847.395096563116, + "50.0" : 23765.784316195237, + "90.0" : 24989.494894720796, + "95.0" : 24989.494894720796, + "99.0" : 24989.494894720796, + "99.9" : 24989.494894720796, + "99.99" : 24989.494894720796, + "99.999" : 24989.494894720796, + "99.9999" : 24989.494894720796, + "100.0" : 24989.494894720796 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 22877.390001349748, + 22847.395096563116, + 22865.330788454987 + ], + [ + 24989.494894720796, + 24966.94336075499, + 24946.11605536971 + ], + [ + 23819.37460549602, + 23734.06121407601, + 23765.784316195237 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 245953.21356996294, + "scoreError" : 4056.5186707154076, + "scoreConfidence" : [ + 241896.69489924752, + 250009.73224067836 + ], + "scorePercentiles" : { + "0.0" : 243425.86234512305, + "50.0" : 245794.41238785794, + "90.0" : 249309.52607698445, + "95.0" : 249309.52607698445, + "99.0" : 249309.52607698445, + "99.9" : 249309.52607698445, + "99.99" : 249309.52607698445, + "99.999" : 249309.52607698445, + "99.9999" : 249309.52607698445, + "100.0" : 249309.52607698445 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 243425.86234512305, + 243637.14963699263, + 243514.4556080456 + ], + [ + 248570.7896895429, + 248742.11399646793, + 249309.52607698445 + ], + [ + 244261.41762536333, + 245794.41238785794, + 246323.19476328883 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "2" + }, + "primaryMetric" : { + "score" : 23528.336167796446, + "scoreError" : 750.0966191948582, + "scoreConfidence" : [ + 22778.23954860159, + 24278.432786991303 + ], + "scorePercentiles" : { + "0.0" : 23042.671609256584, + "50.0" : 23441.3835416066, + "90.0" : 24124.690474984258, + "95.0" : 24124.690474984258, + "99.0" : 24124.690474984258, + "99.9" : 24124.690474984258, + "99.99" : 24124.690474984258, + "99.999" : 24124.690474984258, + "99.9999" : 24124.690474984258, + "100.0" : 24124.690474984258 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 23042.671609256584, + 23071.787075831264, + 23068.08098868525 + ], + [ + 24124.690474984258, + 24087.042072327695, + 24027.066119336283 + ], + [ + 23435.216268469587, + 23457.08735967048, + 23441.3835416066 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "10" + }, + "primaryMetric" : { + "score" : 100895.67719469467, + "scoreError" : 5842.513427615709, + "scoreConfidence" : [ + 95053.16376707896, + 106738.19062231037 + ], + "scorePercentiles" : { + "0.0" : 96850.12681348907, + "50.0" : 100614.00032196075, + "90.0" : 105156.68496708658, + "95.0" : 105156.68496708658, + "99.0" : 105156.68496708658, + "99.9" : 105156.68496708658, + "99.99" : 105156.68496708658, + "99.999" : 105156.68496708658, + "99.9999" : 105156.68496708658, + "100.0" : 105156.68496708658 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 105156.68496708658, + 104941.96199051337, + 104970.59175361619 + ], + [ + 97318.89535506097, + 96869.54980481048, + 96850.12681348907 + ], + [ + 100614.00032196075, + 100570.34877055362, + 100768.93497516097 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 1043337.3049575173, + "scoreError" : 37779.596320040575, + "scoreConfidence" : [ + 1005557.7086374768, + 1081116.901277558 + ], + "scorePercentiles" : { + "0.0" : 1015703.2474101158, + "50.0" : 1047311.917897162, + "90.0" : 1070712.6724839401, + "95.0" : 1070712.6724839401, + "99.0" : 1070712.6724839401, + "99.9" : 1070712.6724839401, + "99.99" : 1070712.6724839401, + "99.999" : 1070712.6724839401, + "99.9999" : 1070712.6724839401, + "100.0" : 1070712.6724839401 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 1015929.1653799269, + 1015703.2474101158, + 1015896.6107273466 + ], + [ + 1070712.6724839401, + 1065183.4569176696, + 1065792.1213897474 + ], + [ + 1048437.9009330119, + 1045068.6514787334, + 1047311.917897162 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "2" + }, + "primaryMetric" : { + "score" : 11315.216474771834, + "scoreError" : 172.02494354923866, + "scoreConfidence" : [ + 11143.191531222596, + 11487.241418321073 + ], + "scorePercentiles" : { + "0.0" : 11231.735644345008, + "50.0" : 11259.25251134355, + "90.0" : 11454.819931776112, + "95.0" : 11454.819931776112, + "99.0" : 11454.819931776112, + "99.9" : 11454.819931776112, + "99.99" : 11454.819931776112, + "99.999" : 11454.819931776112, + "99.9999" : 11454.819931776112, + "100.0" : 11454.819931776112 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 11454.819931776112, + 11443.821424852233, + 11452.087348576637 + ], + [ + 11232.920604413812, + 11233.837882043948, + 11231.735644345008 + ], + [ + 11250.457024921698, + 11259.25251134355, + 11278.015900673514 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "10" + }, + "primaryMetric" : { + "score" : 45224.83568262534, + "scoreError" : 1048.5119689576616, + "scoreConfidence" : [ + 44176.323713667676, + 46273.347651583 + ], + "scorePercentiles" : { + "0.0" : 44360.472011143196, + "50.0" : 45531.788517051406, + "90.0" : 45783.9767695266, + "95.0" : 45783.9767695266, + "99.0" : 45783.9767695266, + "99.9" : 45783.9767695266, + "99.99" : 45783.9767695266, + "99.999" : 45783.9767695266, + "99.9999" : 45783.9767695266, + "100.0" : 45783.9767695266 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 45548.20796990221, + 45531.788517051406, + 45457.03387411303 + ], + [ + 44360.472011143196, + 44439.66910192999, + 44418.26749609125 + ], + [ + 45783.9767695266, + 45742.61839198232, + 45741.48701188804 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 443138.7335609501, + "scoreError" : 5074.984883957929, + "scoreConfidence" : [ + 438063.74867699214, + 448213.71844490804 + ], + "scorePercentiles" : { + "0.0" : 438853.1384122526, + "50.0" : 445095.7127915257, + "90.0" : 445728.84810126584, + "95.0" : 445728.84810126584, + "99.0" : 445728.84810126584, + "99.9" : 445728.84810126584, + "99.99" : 445728.84810126584, + "99.999" : 445728.84810126584, + "99.9999" : 445728.84810126584, + "100.0" : 445728.84810126584 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 439968.1464144303, + 438853.1384122526, + 438961.0512685453 + ], + [ + 443190.1281687644, + 445095.7127915257, + 445312.6153092577 + ], + [ + 445728.84810126584, + 445501.1878201987, + 445637.77376231004 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "2" + }, + "primaryMetric" : { + "score" : 6503.243331074969, + "scoreError" : 155.88656306809895, + "scoreConfidence" : [ + 6347.35676800687, + 6659.129894143069 + ], + "scorePercentiles" : { + "0.0" : 6370.511738174869, + "50.0" : 6557.353963186129, + "90.0" : 6577.488689812577, + "95.0" : 6577.488689812577, + "99.0" : 6577.488689812577, + "99.9" : 6577.488689812577, + "99.99" : 6577.488689812577, + "99.999" : 6577.488689812577, + "99.9999" : 6577.488689812577, + "100.0" : 6577.488689812577 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 6577.488689812577, + 6566.590325298333, + 6570.458516592181 + ], + [ + 6387.074046326138, + 6370.511738174869, + 6382.5923342190135 + ], + [ + 6565.003626463732, + 6552.1167396017545, + 6557.353963186129 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "10" + }, + "primaryMetric" : { + "score" : 11867.329269757813, + "scoreError" : 196.04260834659178, + "scoreConfidence" : [ + 11671.28666141122, + 12063.371878104404 + ], + "scorePercentiles" : { + "0.0" : 11746.292867513015, + "50.0" : 11825.349115238892, + "90.0" : 12015.450360638877, + "95.0" : 12015.450360638877, + "99.0" : 12015.450360638877, + "99.9" : 12015.450360638877, + "99.99" : 12015.450360638877, + "99.999" : 12015.450360638877, + "99.9999" : 12015.450360638877, + "100.0" : 12015.450360638877 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 11825.349115238892, + 11746.292867513015, + 11913.832032557713 + ], + [ + 11777.689927721174, + 11753.985844854053, + 11766.35859539635 + ], + [ + 11993.450327416647, + 12015.450360638877, + 12013.554356483579 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 71438.27038128191, + "scoreError" : 1509.9384867966066, + "scoreConfidence" : [ + 69928.33189448531, + 72948.20886807851 + ], + "scorePercentiles" : { + "0.0" : 70268.86934433256, + "50.0" : 71282.76049270073, + "90.0" : 72538.75318438996, + "95.0" : 72538.75318438996, + "99.0" : 72538.75318438996, + "99.9" : 72538.75318438996, + "99.99" : 72538.75318438996, + "99.999" : 72538.75318438996, + "99.9999" : 72538.75318438996, + "100.0" : 72538.75318438996 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 72530.55498821396, + 72538.75318438996, + 72388.19837707932 + ], + [ + 70782.79696911784, + 70401.48243162378, + 70268.86934433256 + ], + [ + 71727.89320604227, + 71023.12443803666, + 71282.76049270073 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAbgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "2" + }, + "primaryMetric" : { + "score" : 6398709.275408815, + "scoreError" : 126183.5867819212, + "scoreConfidence" : [ + 6272525.688626894, + 6524892.8621907355 + ], + "scorePercentiles" : { + "0.0" : 6291085.297484277, + "50.0" : 6387188.439974457, + "90.0" : 6491328.1239454895, + "95.0" : 6491328.1239454895, + "99.0" : 6491328.1239454895, + "99.9" : 6491328.1239454895, + "99.99" : 6491328.1239454895, + "99.999" : 6491328.1239454895, + "99.9999" : 6491328.1239454895, + "100.0" : 6491328.1239454895 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 6491328.1239454895, + 6488077.19001297, + 6481109.981205444 + ], + [ + 6354258.74841169, + 6291085.297484277, + 6310670.466246056 + ], + [ + 6387188.439974457, + 6403043.638924456, + 6381621.5924744895 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAbgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "10" + }, + "primaryMetric" : { + "score" : 6569576.793351535, + "scoreError" : 384954.5853160948, + "scoreConfidence" : [ + 6184622.20803544, + 6954531.378667629 + ], + "scorePercentiles" : { + "0.0" : 6265185.024420789, + "50.0" : 6650287.005984043, + "90.0" : 6793779.208559782, + "95.0" : 6793779.208559782, + "99.0" : 6793779.208559782, + "99.9" : 6793779.208559782, + "99.99" : 6793779.208559782, + "99.999" : 6793779.208559782, + "99.9999" : 6793779.208559782, + "100.0" : 6793779.208559782 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 6282970.966080402, + 6269994.820689655, + 6265185.024420789 + ], + [ + 6747180.360755226, + 6789676.959945689, + 6793779.208559782 + ], + [ + 6643032.754316069, + 6684084.039412158, + 6650287.005984043 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAbgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 6478658.767822663, + "scoreError" : 49069.54441114768, + "scoreConfidence" : [ + 6429589.223411515, + 6527728.312233811 + ], + "scorePercentiles" : { + "0.0" : 6437623.745817246, + "50.0" : 6485599.195849546, + "90.0" : 6526921.3568167, + "95.0" : 6526921.3568167, + "99.0" : 6526921.3568167, + "99.9" : 6526921.3568167, + "99.99" : 6526921.3568167, + "99.999" : 6526921.3568167, + "99.9999" : 6526921.3568167, + "100.0" : 6526921.3568167 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 6526921.3568167, + 6492636.765736534, + 6506922.867924528 + ], + [ + 6437623.745817246, + 6472031.835058215, + 6450381.75177305 + ], + [ + 6449317.71308833, + 6486493.6783398185, + 6485599.195849546 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "2" + }, + "primaryMetric" : { + "score" : 6376575.1027172785, + "scoreError" : 194988.26138432373, + "scoreConfidence" : [ + 6181586.841332954, + 6571563.364101603 + ], + "scorePercentiles" : { + "0.0" : 6238185.0137157105, + "50.0" : 6369792.822929936, + "90.0" : 6524331.181343771, + "95.0" : 6524331.181343771, + "99.0" : 6524331.181343771, + "99.9" : 6524331.181343771, + "99.99" : 6524331.181343771, + "99.999" : 6524331.181343771, + "99.9999" : 6524331.181343771, + "100.0" : 6524331.181343771 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 6524331.181343771, + 6523662.991519895, + 6487411.79766537 + ], + [ + 6369792.822929936, + 6368797.631444939, + 6379426.840561224 + ], + [ + 6244740.780274657, + 6252826.865, + 6238185.0137157105 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "10" + }, + "primaryMetric" : { + "score" : 6263376.655796844, + "scoreError" : 223312.4731747562, + "scoreConfidence" : [ + 6040064.182622087, + 6486689.1289716 + ], + "scorePercentiles" : { + "0.0" : 6147048.186846958, + "50.0" : 6200365.234345939, + "90.0" : 6453870.472258065, + "95.0" : 6453870.472258065, + "99.0" : 6453870.472258065, + "99.9" : 6453870.472258065, + "99.99" : 6453870.472258065, + "99.999" : 6453870.472258065, + "99.9999" : 6453870.472258065, + "100.0" : 6453870.472258065 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 6441251.466194462, + 6418451.837075048, + 6453870.472258065 + ], + [ + 6147048.186846958, + 6148743.549477566, + 6159800.388546798 + ], + [ + 6202072.626782393, + 6200365.234345939, + 6198786.140644362 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 6448861.512850301, + "scoreError" : 94674.30577495846, + "scoreConfidence" : [ + 6354187.207075343, + 6543535.81862526 + ], + "scorePercentiles" : { + "0.0" : 6392429.194249202, + "50.0" : 6421305.336970475, + "90.0" : 6533245.871325931, + "95.0" : 6533245.871325931, + "99.0" : 6533245.871325931, + "99.9" : 6533245.871325931, + "99.99" : 6533245.871325931, + "99.999" : 6533245.871325931, + "99.9999" : 6533245.871325931, + "100.0" : 6533245.871325931 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 6533245.871325931, + 6506297.143786597, + 6526423.699282452 + ], + [ + 6392429.194249202, + 6431628.632154341, + 6403075.450704225 + ], + [ + 6411964.421794872, + 6413383.865384615, + 6421305.336970475 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-02-24T00:16:50Z-4f40d2eed6c54adcdfb8f67de1f7601ad3d5311a-jdk17.json b/performance-results/2025-02-24T00:16:50Z-4f40d2eed6c54adcdfb8f67de1f7601ad3d5311a-jdk17.json new file mode 100644 index 0000000000..45bd9b817a --- /dev/null +++ b/performance-results/2025-02-24T00:16:50Z-4f40d2eed6c54adcdfb8f67de1f7601ad3d5311a-jdk17.json @@ -0,0 +1,1161 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4274036884572663, + "scoreError" : 0.024762764818203227, + "scoreConfidence" : [ + 3.402640923639063, + 3.4521664532754697 + ], + "scorePercentiles" : { + "0.0" : 3.4228175390638214, + "50.0" : 3.427351229060756, + "90.0" : 3.4320947566437314, + "95.0" : 3.4320947566437314, + "99.0" : 3.4320947566437314, + "99.9" : 3.4320947566437314, + "99.99" : 3.4320947566437314, + "99.999" : 3.4320947566437314, + "99.9999" : 3.4320947566437314, + "100.0" : 3.4320947566437314 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4280617857617046, + 3.4320947566437314 + ], + [ + 3.4228175390638214, + 3.4266406723598073 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7317595392033245, + "scoreError" : 0.007202794691721973, + "scoreConfidence" : [ + 1.7245567445116026, + 1.7389623338950464 + ], + "scorePercentiles" : { + "0.0" : 1.730142448238231, + "50.0" : 1.7321035723481373, + "90.0" : 1.7326885638787919, + "95.0" : 1.7326885638787919, + "99.0" : 1.7326885638787919, + "99.9" : 1.7326885638787919, + "99.99" : 1.7326885638787919, + "99.999" : 1.7326885638787919, + "99.9999" : 1.7326885638787919, + "100.0" : 1.7326885638787919 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7320245712018445, + 1.7326885638787919 + ], + [ + 1.730142448238231, + 1.7321825734944303 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8696805774263187, + "scoreError" : 0.0034440948327385066, + "scoreConfidence" : [ + 0.8662364825935801, + 0.8731246722590572 + ], + "scorePercentiles" : { + "0.0" : 0.8691513855289171, + "50.0" : 0.8696254417977733, + "90.0" : 0.8703200405808109, + "95.0" : 0.8703200405808109, + "99.0" : 0.8703200405808109, + "99.9" : 0.8703200405808109, + "99.99" : 0.8703200405808109, + "99.999" : 0.8703200405808109, + "99.9999" : 0.8703200405808109, + "100.0" : 0.8703200405808109 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8699057612066945, + 0.8703200405808109 + ], + [ + 0.8693451223888521, + 0.8691513855289171 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "10" + }, + "primaryMetric" : { + "score" : 43.725382690111864, + "scoreError" : 1.2467483817498346, + "scoreConfidence" : [ + 42.47863430836203, + 44.972131071861696 + ], + "scorePercentiles" : { + "0.0" : 42.878972567778796, + "50.0" : 43.657222701719, + "90.0" : 44.64471078475697, + "95.0" : 44.64471078475697, + "99.0" : 44.64471078475697, + "99.9" : 44.64471078475697, + "99.99" : 44.64471078475697, + "99.999" : 44.64471078475697, + "99.9999" : 44.64471078475697, + "100.0" : 44.64471078475697 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 44.56080073698337, + 44.64471078475697, + 44.63330805860265 + ], + [ + 42.878972567778796, + 42.90726413527759, + 42.9272503303202 + ], + [ + 43.65377670524797, + 43.657222701719, + 43.66513819032023 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 43.51101417312418, + "scoreError" : 1.3039758175367824, + "scoreConfidence" : [ + 42.2070383555874, + 44.81498999066096 + ], + "scorePercentiles" : { + "0.0" : 42.46074799798999, + "50.0" : 43.919897336473376, + "90.0" : 44.14038266172348, + "95.0" : 44.14038266172348, + "99.0" : 44.14038266172348, + "99.9" : 44.14038266172348, + "99.99" : 44.14038266172348, + "99.999" : 44.14038266172348, + "99.9999" : 44.14038266172348, + "100.0" : 44.14038266172348 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 44.13510746298949, + 44.11681928133372, + 44.14038266172348 + ], + [ + 43.89040451298183, + 43.94458681643863, + 43.919897336473376 + ], + [ + 42.46074799798999, + 42.48649199343833, + 42.50468949474879 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "10" + }, + "primaryMetric" : { + "score" : 0.05188249344848197, + "scoreError" : 0.0016286800311858416, + "scoreConfidence" : [ + 0.05025381341729613, + 0.05351117347966781 + ], + "scorePercentiles" : { + "0.0" : 0.05066552862050097, + "50.0" : 0.05210605107363002, + "90.0" : 0.052883179308193064, + "95.0" : 0.052883179308193064, + "99.0" : 0.052883179308193064, + "99.9" : 0.052883179308193064, + "99.99" : 0.052883179308193064, + "99.999" : 0.052883179308193064, + "99.9999" : 0.052883179308193064, + "100.0" : 0.052883179308193064 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.050668343981962356, + 0.05066552862050097, + 0.050671809669066786 + ], + [ + 0.0521102071869268, + 0.052101387525008334, + 0.05210605107363002 + ], + [ + 0.05288311202068758, + 0.052883179308193064, + 0.05285282165036177 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.33817752867976947, + "scoreError" : 0.01650232636616941, + "scoreConfidence" : [ + 0.3216752023136001, + 0.35467985504593885 + ], + "scorePercentiles" : { + "0.0" : 0.3254714952483239, + "50.0" : 0.3396426453267219, + "90.0" : 0.34879158770185903, + "95.0" : 0.34879158770185903, + "99.0" : 0.34879158770185903, + "99.9" : 0.34879158770185903, + "99.99" : 0.34879158770185903, + "99.999" : 0.34879158770185903, + "99.9999" : 0.34879158770185903, + "100.0" : 0.34879158770185903 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.34038622288028864, + 0.3396426453267219, + 0.3394560875084861 + ], + [ + 0.34879158770185903, + 0.34850733047569266, + 0.34845366375135023 + ], + [ + 0.3271867593901322, + 0.32570196583507033, + 0.3254714952483239 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "10" + }, + "primaryMetric" : { + "score" : 0.0527440308189436, + "scoreError" : 7.295368504205332E-4, + "scoreConfidence" : [ + 0.05201449396852306, + 0.05347356766936413 + ], + "scorePercentiles" : { + "0.0" : 0.05218023944147021, + "50.0" : 0.05290051550754614, + "90.0" : 0.053163110423544546, + "95.0" : 0.053163110423544546, + "99.0" : 0.053163110423544546, + "99.9" : 0.053163110423544546, + "99.99" : 0.053163110423544546, + "99.999" : 0.053163110423544546, + "99.9999" : 0.053163110423544546, + "100.0" : 0.053163110423544546 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.0529105015846477, + 0.05289031704685492, + 0.05290051550754614 + ], + [ + 0.05218363736602064, + 0.052186375219179224, + 0.05218023944147021 + ], + [ + 0.053163110423544546, + 0.05316134911141944, + 0.053120231669809566 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.5202083735295633, + "scoreError" : 0.03190522031978566, + "scoreConfidence" : [ + 0.48830315320977763, + 0.552113593849349 + ], + "scorePercentiles" : { + "0.0" : 0.49537793248129985, + "50.0" : 0.5277170549868074, + "90.0" : 0.5377159787073879, + "95.0" : 0.5377159787073879, + "99.0" : 0.5377159787073879, + "99.9" : 0.5377159787073879, + "99.99" : 0.5377159787073879, + "99.999" : 0.5377159787073879, + "99.9999" : 0.5377159787073879, + "100.0" : 0.5377159787073879 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.5372063835947573, + 0.5372449502524981, + 0.5377159787073879 + ], + [ + 0.5277170549868074, + 0.5284748000845532, + 0.5269452361155021 + ], + [ + 0.49537793248129985, + 0.4955745880370682, + 0.4956184375061949 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "10" + }, + "primaryMetric" : { + "score" : 0.02330213170499937, + "scoreError" : 8.600355254300683E-4, + "scoreConfidence" : [ + 0.022442096179569302, + 0.02416216723042944 + ], + "scorePercentiles" : { + "0.0" : 0.022813897548678522, + "50.0" : 0.023125910827642506, + "90.0" : 0.02400309627284467, + "95.0" : 0.02400309627284467, + "99.0" : 0.02400309627284467, + "99.9" : 0.02400309627284467, + "99.99" : 0.02400309627284467, + "99.999" : 0.02400309627284467, + "99.9999" : 0.02400309627284467, + "100.0" : 0.02400309627284467 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.02400309627284467, + 0.02393782406913143, + 0.0239411025073199 + ], + [ + 0.023125910827642506, + 0.023130867757813513, + 0.02312172802480468 + ], + [ + 0.022815617882190817, + 0.022813897548678522, + 0.022829140454568284 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.24497773765850908, + "scoreError" : 0.01858056660717018, + "scoreConfidence" : [ + 0.2263971710513389, + 0.2635583042656793 + ], + "scorePercentiles" : { + "0.0" : 0.23287860653905268, + "50.0" : 0.24373483102196009, + "90.0" : 0.2584875260545906, + "95.0" : 0.2584875260545906, + "99.0" : 0.2584875260545906, + "99.9" : 0.2584875260545906, + "99.99" : 0.2584875260545906, + "99.999" : 0.2584875260545906, + "99.9999" : 0.2584875260545906, + "100.0" : 0.2584875260545906 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.24291845883838997, + 0.24373483102196009, + 0.244542229520223 + ], + [ + 0.23289833480832828, + 0.232887405798789, + 0.23287860653905268 + ], + [ + 0.2583865650983128, + 0.2580656812469356, + 0.2584875260545906 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "10" + }, + "primaryMetric" : { + "score" : 0.10041460423244533, + "scoreError" : 0.00344695704530663, + "scoreConfidence" : [ + 0.0969676471871387, + 0.10386156127775197 + ], + "scorePercentiles" : { + "0.0" : 0.09789638518844836, + "50.0" : 0.09973601610715496, + "90.0" : 0.10319401726415289, + "95.0" : 0.10319401726415289, + "99.0" : 0.10319401726415289, + "99.9" : 0.10319401726415289, + "99.99" : 0.10319401726415289, + "99.999" : 0.10319401726415289, + "99.9999" : 0.10319401726415289, + "100.0" : 0.10319401726415289 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.0997753193151546, + 0.09973601610715496, + 0.09968744761999701 + ], + [ + 0.10319401726415289, + 0.10292642249737541, + 0.10296189465122266 + ], + [ + 0.09890774312108085, + 0.09864619232742124, + 0.09789638518844836 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 1.0159083973122576, + "scoreError" : 0.02939051680419365, + "scoreConfidence" : [ + 0.9865178805080639, + 1.0452989141164513 + ], + "scorePercentiles" : { + "0.0" : 1.0011459455400942, + "50.0" : 1.0057589681182741, + "90.0" : 1.0412337920874544, + "95.0" : 1.0412337920874544, + "99.0" : 1.0412337920874544, + "99.9" : 1.0412337920874544, + "99.99" : 1.0412337920874544, + "99.999" : 1.0412337920874544, + "99.9999" : 1.0412337920874544, + "100.0" : 1.0412337920874544 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 1.009501218958207, + 1.005332541314837, + 1.0057589681182741 + ], + [ + 1.0412337920874544, + 1.0381442229834943, + 1.0374625426348547 + ], + [ + 1.003403861141768, + 1.0011924830313346, + 1.0011459455400942 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "10" + }, + "primaryMetric" : { + "score" : 0.04436857258557735, + "scoreError" : 0.001215658707935488, + "scoreConfidence" : [ + 0.04315291387764186, + 0.04558423129351284 + ], + "scorePercentiles" : { + "0.0" : 0.04356789100771141, + "50.0" : 0.04423132656897566, + "90.0" : 0.04526977572758838, + "95.0" : 0.04526977572758838, + "99.0" : 0.04526977572758838, + "99.9" : 0.04526977572758838, + "99.99" : 0.04526977572758838, + "99.999" : 0.04526977572758838, + "99.9999" : 0.04526977572758838, + "100.0" : 0.04526977572758838 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04427510071104736, + 0.04423132656897566, + 0.04421848874876743 + ], + [ + 0.043641449038373414, + 0.04356789100771141, + 0.04360398981424959 + ], + [ + 0.045260049685898945, + 0.04526977572758838, + 0.045249081967584 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.4358362930061064, + "scoreError" : 0.00755290990194395, + "scoreConfidence" : [ + 0.4282833831041624, + 0.44338920290805034 + ], + "scorePercentiles" : { + "0.0" : 0.4298716314477304, + "50.0" : 0.4364674297747905, + "90.0" : 0.44085744850996295, + "95.0" : 0.44085744850996295, + "99.0" : 0.44085744850996295, + "99.9" : 0.44085744850996295, + "99.99" : 0.44085744850996295, + "99.999" : 0.44085744850996295, + "99.9999" : 0.44085744850996295, + "100.0" : 0.44085744850996295 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.4368088904953263, + 0.4364674297747905, + 0.43620555661694144 + ], + [ + 0.44085744850996295, + 0.4406312695747962, + 0.44042787976746234 + ], + [ + 0.43134281193926843, + 0.4299137189286789, + 0.4298716314477304 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "10" + }, + "primaryMetric" : { + "score" : 0.011722568660637263, + "scoreError" : 2.1956260875161603E-4, + "scoreConfidence" : [ + 0.011503006051885646, + 0.01194213126938888 + ], + "scorePercentiles" : { + "0.0" : 0.011542314397607535, + "50.0" : 0.011800895635252648, + "90.0" : 0.011824917085953011, + "95.0" : 0.011824917085953011, + "99.0" : 0.011824917085953011, + "99.9" : 0.011824917085953011, + "99.99" : 0.011824917085953011, + "99.999" : 0.011824917085953011, + "99.9999" : 0.011824917085953011, + "100.0" : 0.011824917085953011 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.011550013690086382, + 0.011542314397607535, + 0.01155425209245146 + ], + [ + 0.011824917085953011, + 0.011808919938877789, + 0.01182250247441645 + ], + [ + 0.011800895635252648, + 0.01179528595810834, + 0.011804016672981744 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.0698523009710762, + "scoreError" : 0.0014210968304418292, + "scoreConfidence" : [ + 0.06843120414063437, + 0.07127339780151802 + ], + "scorePercentiles" : { + "0.0" : 0.06866273061342196, + "50.0" : 0.07006469910388363, + "90.0" : 0.07072980937157407, + "95.0" : 0.07072980937157407, + "99.0" : 0.07072980937157407, + "99.9" : 0.07072980937157407, + "99.99" : 0.07072980937157407, + "99.999" : 0.07072980937157407, + "99.9999" : 0.07072980937157407, + "100.0" : 0.07072980937157407 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.07070594901472782, + 0.07072980937157407, + 0.07066807764877146 + ], + [ + 0.06896519448563133, + 0.06874885908056566, + 0.06866273061342196 + ], + [ + 0.07010626623108039, + 0.07006469910388363, + 0.07001912319002941 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "10" + }, + "primaryMetric" : { + "score" : 2.2874525121049147E7, + "scoreError" : 920787.4900115487, + "scoreConfidence" : [ + 2.1953737631037597E7, + 2.3795312611060698E7 + ], + "scorePercentiles" : { + "0.0" : 2.240210304474273E7, + "50.0" : 2.2565303896396395E7, + "90.0" : 2.3641611439716313E7, + "95.0" : 2.3641611439716313E7, + "99.0" : 2.3641611439716313E7, + "99.9" : 2.3641611439716313E7, + "99.99" : 2.3641611439716313E7, + "99.999" : 2.3641611439716313E7, + "99.9999" : 2.3641611439716313E7, + "100.0" : 2.3641611439716313E7 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 2.3641611439716313E7, + 2.359826475471698E7, + 2.3560848635294117E7 + ], + [ + 2.2503107015730336E7, + 2.2443770878923766E7, + 2.240210304474273E7 + ], + [ + 2.2591522221218962E7, + 2.25641942027027E7, + 2.2565303896396395E7 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 2.3047301492169302E7, + "scoreError" : 309261.7454961725, + "scoreConfidence" : [ + 2.273803974667313E7, + 2.3356563237665474E7 + ], + "scorePercentiles" : { + "0.0" : 2.284278906392694E7, + "50.0" : 2.2973325006880734E7, + "90.0" : 2.3301097169767443E7, + "95.0" : 2.3301097169767443E7, + "99.0" : 2.3301097169767443E7, + "99.9" : 2.3301097169767443E7, + "99.99" : 2.3301097169767443E7, + "99.999" : 2.3301097169767443E7, + "99.9999" : 2.3301097169767443E7, + "100.0" : 2.3301097169767443E7 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 2.319061096064815E7, + 2.2973325006880734E7, + 2.2951058389908258E7 + ], + [ + 2.2868141162100457E7, + 2.2856062216894977E7, + 2.284278906392694E7 + ], + [ + 2.3301097169767443E7, + 2.323164748491879E7, + 2.3210981974477958E7 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-02-24T01:29:41Z-53fa9b53fcbe2b6804d82a3e24bd58c0f5e70c2d-jdk17.json b/performance-results/2025-02-24T01:29:41Z-53fa9b53fcbe2b6804d82a3e24bd58c0f5e70c2d-jdk17.json new file mode 100644 index 0000000000..94b24bdf8f --- /dev/null +++ b/performance-results/2025-02-24T01:29:41Z-53fa9b53fcbe2b6804d82a3e24bd58c0f5e70c2d-jdk17.json @@ -0,0 +1,665 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4240890205405137, + "scoreError" : 0.03936617511364664, + "scoreConfidence" : [ + 3.384722845426867, + 3.46345519565416 + ], + "scorePercentiles" : { + "0.0" : 3.416280112766159, + "50.0" : 3.424803993008525, + "90.0" : 3.4304679833788474, + "95.0" : 3.4304679833788474, + "99.0" : 3.4304679833788474, + "99.9" : 3.4304679833788474, + "99.99" : 3.4304679833788474, + "99.999" : 3.4304679833788474, + "99.9999" : 3.4304679833788474, + "100.0" : 3.4304679833788474 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4268828533900053, + 3.4304679833788474 + ], + [ + 3.416280112766159, + 3.4227251326270443 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7289182439981992, + "scoreError" : 0.009875088289429172, + "scoreConfidence" : [ + 1.71904315570877, + 1.7387933322876283 + ], + "scorePercentiles" : { + "0.0" : 1.7275909081867116, + "50.0" : 1.728819061863204, + "90.0" : 1.7304439440796775, + "95.0" : 1.7304439440796775, + "99.0" : 1.7304439440796775, + "99.9" : 1.7304439440796775, + "99.99" : 1.7304439440796775, + "99.999" : 1.7304439440796775, + "99.9999" : 1.7304439440796775, + "100.0" : 1.7304439440796775 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7300225473819377, + 1.7304439440796775 + ], + [ + 1.7275909081867116, + 1.7276155763444705 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8700132941789567, + "scoreError" : 0.0021170309298315024, + "scoreConfidence" : [ + 0.8678962632491252, + 0.8721303251087882 + ], + "scorePercentiles" : { + "0.0" : 0.8695372797886042, + "50.0" : 0.8701173884345118, + "90.0" : 0.870281120058199, + "95.0" : 0.870281120058199, + "99.0" : 0.870281120058199, + "99.9" : 0.870281120058199, + "99.99" : 0.870281120058199, + "99.999" : 0.870281120058199, + "99.9999" : 0.870281120058199, + "100.0" : 0.870281120058199 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8695372797886042, + 0.8700857738212587 + ], + [ + 0.8701490030477649, + 0.870281120058199 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 42.64160574403351, + "scoreError" : 1.3640765499826009, + "scoreConfidence" : [ + 41.27752919405091, + 44.00568229401611 + ], + "scorePercentiles" : { + "0.0" : 41.707744537786546, + "50.0" : 42.49634829304081, + "90.0" : 43.71206456211418, + "95.0" : 43.71206456211418, + "99.0" : 43.71206456211418, + "99.9" : 43.71206456211418, + "99.99" : 43.71206456211418, + "99.999" : 43.71206456211418, + "99.9999" : 43.71206456211418, + "100.0" : 43.71206456211418 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 41.707744537786546, + 41.77952555912812, + 41.87837244221971 + ], + [ + 43.71206456211418, + 43.60545355674085, + 43.60775354052616 + ], + [ + 42.50645826039412, + 42.48073094435115, + 42.49634829304081 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.34440201171656104, + "scoreError" : 0.004486131561743835, + "scoreConfidence" : [ + 0.3399158801548172, + 0.34888814327830486 + ], + "scorePercentiles" : { + "0.0" : 0.34078550754813425, + "50.0" : 0.34573783564390664, + "90.0" : 0.3467770228517928, + "95.0" : 0.3467770228517928, + "99.0" : 0.3467770228517928, + "99.9" : 0.3467770228517928, + "99.99" : 0.3467770228517928, + "99.999" : 0.3467770228517928, + "99.9999" : 0.3467770228517928, + "100.0" : 0.3467770228517928 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3466564419717138, + 0.34573783564390664, + 0.3454683490862611 + ], + [ + 0.34078550754813425, + 0.341077951739427, + 0.3407947371183206 + ], + [ + 0.3467770228517928, + 0.3460057300532835, + 0.34631452943621 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.5108566930793287, + "scoreError" : 0.01673376640611887, + "scoreConfidence" : [ + 0.49412292667320984, + 0.5275904594854476 + ], + "scorePercentiles" : { + "0.0" : 0.4975432007562565, + "50.0" : 0.5133298237347295, + "90.0" : 0.5213933500521376, + "95.0" : 0.5213933500521376, + "99.0" : 0.5213933500521376, + "99.9" : 0.5213933500521376, + "99.99" : 0.5213933500521376, + "99.999" : 0.5213933500521376, + "99.9999" : 0.5213933500521376, + "100.0" : 0.5213933500521376 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.5133298237347295, + 0.5134748340521668, + 0.5125813436699128 + ], + [ + 0.49966809073648444, + 0.49803418884462153, + 0.4975432007562565 + ], + [ + 0.5213933500521376, + 0.5209760688200052, + 0.5207093370476439 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.22985229142533534, + "scoreError" : 0.009007513978974728, + "scoreConfidence" : [ + 0.2208447774463606, + 0.23885980540431007 + ], + "scorePercentiles" : { + "0.0" : 0.2246681499179978, + "50.0" : 0.2278689162375245, + "90.0" : 0.237023872223934, + "95.0" : 0.237023872223934, + "99.0" : 0.237023872223934, + "99.9" : 0.237023872223934, + "99.99" : 0.237023872223934, + "99.999" : 0.237023872223934, + "99.9999" : 0.237023872223934, + "100.0" : 0.237023872223934 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.2278689162375245, + 0.22774250177636074, + 0.22795436086986254 + ], + [ + 0.22517435144446196, + 0.2246681499179978, + 0.2248926582634313 + ], + [ + 0.237023872223934, + 0.23653219364223374, + 0.2368136184522118 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 1.0276159079256935, + "scoreError" : 0.03894493523763066, + "scoreConfidence" : [ + 0.9886709726880628, + 1.0665608431633242 + ], + "scorePercentiles" : { + "0.0" : 1.0002823356671335, + "50.0" : 1.0272291300328678, + "90.0" : 1.0546416500052727, + "95.0" : 1.0546416500052727, + "99.0" : 1.0546416500052727, + "99.9" : 1.0546416500052727, + "99.99" : 1.0546416500052727, + "99.999" : 1.0546416500052727, + "99.9999" : 1.0546416500052727, + "100.0" : 1.0546416500052727 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 1.0546416500052727, + 1.054312120177103, + 1.0531231917649537 + ], + [ + 1.0005659335667834, + 1.0002823356671335, + 1.0008482301841473 + ], + [ + 1.0303489075829384, + 1.0272291300328678, + 1.0271916723500412 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.43364130483497326, + "scoreError" : 0.00832028889387276, + "scoreConfidence" : [ + 0.4253210159411005, + 0.441961593728846 + ], + "scorePercentiles" : { + "0.0" : 0.42869411788914136, + "50.0" : 0.43192799589686004, + "90.0" : 0.4409237714285714, + "95.0" : 0.4409237714285714, + "99.0" : 0.4409237714285714, + "99.9" : 0.4409237714285714, + "99.99" : 0.4409237714285714, + "99.999" : 0.4409237714285714, + "99.9999" : 0.4409237714285714, + "100.0" : 0.4409237714285714 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.4409237714285714, + 0.4396748718839305, + 0.4388150212383167 + ], + [ + 0.4287206548915373, + 0.42869411788914136, + 0.4290466350609233 + ], + [ + 0.43398500785488003, + 0.43192799589686004, + 0.4309836673705986 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.07000095626907243, + "scoreError" : 0.0014089190015736848, + "scoreConfidence" : [ + 0.06859203726749875, + 0.07140987527064611 + ], + "scorePercentiles" : { + "0.0" : 0.06913664714503985, + "50.0" : 0.06945898296891062, + "90.0" : 0.07108060061981121, + "95.0" : 0.07108060061981121, + "99.0" : 0.07108060061981121, + "99.9" : 0.07108060061981121, + "99.99" : 0.07108060061981121, + "99.999" : 0.07108060061981121, + "99.9999" : 0.07108060061981121, + "100.0" : 0.07108060061981121 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.07108060061981121, + 0.06928036679298614, + 0.06945898296891062 + ], + [ + 0.0692402498563288, + 0.06913664714503985, + 0.06942358199868097 + ], + [ + 0.07097093614137184, + 0.0708561556971084, + 0.07056108520141402 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 2.315031757691618E7, + "scoreError" : 834203.297699478, + "scoreConfidence" : [ + 2.2316114279216703E7, + 2.3984520874615658E7 + ], + "scorePercentiles" : { + "0.0" : 2.251475790786517E7, + "50.0" : 2.3254453705336425E7, + "90.0" : 2.3667659647754136E7, + "95.0" : 2.3667659647754136E7, + "99.0" : 2.3667659647754136E7, + "99.9" : 2.3667659647754136E7, + "99.99" : 2.3667659647754136E7, + "99.999" : 2.3667659647754136E7, + "99.9999" : 2.3667659647754136E7, + "100.0" : 2.3667659647754136E7 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 2.3667659647754136E7, + 2.3658213401891254E7, + 2.366260164066194E7 + ], + [ + 2.251475790786517E7, + 2.2533523272522524E7, + 2.2547165313063063E7 + ], + [ + 2.3254453705336425E7, + 2.32293066450116E7, + 2.3285176658139534E7 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-02-24T09:48:13Z-d229276fb3c4911f7a7e56bf28334808acb01ca3-jdk17.json b/performance-results/2025-02-24T09:48:13Z-d229276fb3c4911f7a7e56bf28334808acb01ca3-jdk17.json new file mode 100644 index 0000000000..30667dd796 --- /dev/null +++ b/performance-results/2025-02-24T09:48:13Z-d229276fb3c4911f7a7e56bf28334808acb01ca3-jdk17.json @@ -0,0 +1,665 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4022546195396735, + "scoreError" : 0.017482973489114994, + "scoreConfidence" : [ + 3.3847716460505586, + 3.4197375930287883 + ], + "scorePercentiles" : { + "0.0" : 3.3988796541507518, + "50.0" : 3.4023760846252484, + "90.0" : 3.4053866547574443, + "95.0" : 3.4053866547574443, + "99.0" : 3.4053866547574443, + "99.9" : 3.4053866547574443, + "99.99" : 3.4053866547574443, + "99.999" : 3.4053866547574443, + "99.9999" : 3.4053866547574443, + "100.0" : 3.4053866547574443 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.401772014494162, + 3.4029801547563348 + ], + [ + 3.3988796541507518, + 3.4053866547574443 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7196663533286398, + "scoreError" : 0.014536449828748476, + "scoreConfidence" : [ + 1.7051299034998912, + 1.7342028031573884 + ], + "scorePercentiles" : { + "0.0" : 1.7174594833968682, + "50.0" : 1.7194137156433158, + "90.0" : 1.722378498631059, + "95.0" : 1.722378498631059, + "99.0" : 1.722378498631059, + "99.9" : 1.722378498631059, + "99.99" : 1.722378498631059, + "99.999" : 1.722378498631059, + "99.9999" : 1.722378498631059, + "100.0" : 1.722378498631059 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7174594833968682, + 1.720602732042664 + ], + [ + 1.7182246992439676, + 1.722378498631059 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8642645143308028, + "scoreError" : 0.0034989436549679176, + "scoreConfidence" : [ + 0.8607655706758348, + 0.8677634579857707 + ], + "scorePercentiles" : { + "0.0" : 0.8635509397774016, + "50.0" : 0.8643195138315781, + "90.0" : 0.8648680898826532, + "95.0" : 0.8648680898826532, + "99.0" : 0.8648680898826532, + "99.9" : 0.8648680898826532, + "99.99" : 0.8648680898826532, + "99.999" : 0.8648680898826532, + "99.9999" : 0.8648680898826532, + "100.0" : 0.8648680898826532 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8643220007966118, + 0.8648680898826532 + ], + [ + 0.8635509397774016, + 0.8643170268665444 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 37.92108556259461, + "scoreError" : 2.1803773481991127, + "scoreConfidence" : [ + 35.7407082143955, + 40.10146291079373 + ], + "scorePercentiles" : { + "0.0" : 36.7907295161254, + "50.0" : 37.1257475248306, + "90.0" : 39.74442108757022, + "95.0" : 39.74442108757022, + "99.0" : 39.74442108757022, + "99.9" : 39.74442108757022, + "99.99" : 39.74442108757022, + "99.999" : 39.74442108757022, + "99.9999" : 39.74442108757022, + "100.0" : 39.74442108757022 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 37.093128965232616, + 37.108901583866064, + 36.7907295161254 + ], + [ + 37.1257475248306, + 37.04892454527629, + 37.19742750402842 + ], + [ + 39.464342600993746, + 39.74442108757022, + 39.716146735428204 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.35038660216748957, + "scoreError" : 0.0036178241546157524, + "scoreConfidence" : [ + 0.3467687780128738, + 0.3540044263221053 + ], + "scorePercentiles" : { + "0.0" : 0.34693029758889854, + "50.0" : 0.3503044037760964, + "90.0" : 0.3537241296381451, + "95.0" : 0.3537241296381451, + "99.0" : 0.3537241296381451, + "99.9" : 0.3537241296381451, + "99.99" : 0.3537241296381451, + "99.999" : 0.3537241296381451, + "99.9999" : 0.3537241296381451, + "100.0" : 0.3537241296381451 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3537241296381451, + 0.3500387195211593, + 0.3499470267697799 + ], + [ + 0.35256384406839414, + 0.3510276912492541, + 0.35132210816792553 + ], + [ + 0.3503044037760964, + 0.34762119872775304, + 0.34693029758889854 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.5133334808724517, + "scoreError" : 0.004854914945014691, + "scoreConfidence" : [ + 0.508478565927437, + 0.5181883958174663 + ], + "scorePercentiles" : { + "0.0" : 0.5105533991422883, + "50.0" : 0.5127151179697513, + "90.0" : 0.517916162773836, + "95.0" : 0.517916162773836, + "99.0" : 0.517916162773836, + "99.9" : 0.517916162773836, + "99.99" : 0.517916162773836, + "99.999" : 0.517916162773836, + "99.9999" : 0.517916162773836, + "100.0" : 0.517916162773836 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.5110045925907001, + 0.5107955352436409, + 0.5110505164554374 + ], + [ + 0.517916162773836, + 0.516407525690679, + 0.5166440658710477 + ], + [ + 0.5127151179697513, + 0.5129144121146844, + 0.5105533991422883 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.24284745478312963, + "scoreError" : 0.01049551718919714, + "scoreConfidence" : [ + 0.2323519375939325, + 0.2533429719723268 + ], + "scorePercentiles" : { + "0.0" : 0.23525882779306936, + "50.0" : 0.24295487135881053, + "90.0" : 0.2516049401197605, + "95.0" : 0.2516049401197605, + "99.0" : 0.2516049401197605, + "99.9" : 0.2516049401197605, + "99.99" : 0.2516049401197605, + "99.999" : 0.2516049401197605, + "99.9999" : 0.2516049401197605, + "100.0" : 0.2516049401197605 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.24295487135881053, + 0.2430232010012394, + 0.2428598038468077 + ], + [ + 0.2492799530373657, + 0.24897829017801568, + 0.2516049401197605 + ], + [ + 0.23538877749270312, + 0.23627842822039505, + 0.23525882779306936 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 1.0144827414344384, + "scoreError" : 0.040590136169010034, + "scoreConfidence" : [ + 0.9738926052654283, + 1.0550728776034484 + ], + "scorePercentiles" : { + "0.0" : 0.9830720440381402, + "50.0" : 1.019898655109117, + "90.0" : 1.039894017988978, + "95.0" : 1.039894017988978, + "99.0" : 1.039894017988978, + "99.9" : 1.039894017988978, + "99.99" : 1.039894017988978, + "99.999" : 1.039894017988978, + "99.9999" : 1.039894017988978, + "100.0" : 1.039894017988978 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 1.0388163423704166, + 1.0388171291160277, + 1.039894017988978 + ], + [ + 1.0213398724468954, + 1.019898655109117, + 1.0187678639095448 + ], + [ + 0.9838052153467781, + 0.9830720440381402, + 0.9859335325840481 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.43793185003198876, + "scoreError" : 0.007114234387317298, + "scoreConfidence" : [ + 0.43081761564467147, + 0.44504608441930604 + ], + "scorePercentiles" : { + "0.0" : 0.43224321594052556, + "50.0" : 0.4372556124786848, + "90.0" : 0.4434983154020134, + "95.0" : 0.4434983154020134, + "99.0" : 0.4434983154020134, + "99.9" : 0.4434983154020134, + "99.99" : 0.4434983154020134, + "99.999" : 0.4434983154020134, + "99.9999" : 0.4434983154020134, + "100.0" : 0.4434983154020134 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.4380310428821726, + 0.43682558900100465, + 0.43433328165038004 + ], + [ + 0.44269590252324037, + 0.4434983154020134, + 0.44286145321287806 + ], + [ + 0.4372556124786848, + 0.43224321594052556, + 0.43364223719699924 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.07028972787073305, + "scoreError" : 5.179855389906926E-4, + "scoreConfidence" : [ + 0.06977174233174235, + 0.07080771340972375 + ], + "scorePercentiles" : { + "0.0" : 0.06970817791269919, + "50.0" : 0.07033018202533248, + "90.0" : 0.07068447294240719, + "95.0" : 0.07068447294240719, + "99.0" : 0.07068447294240719, + "99.9" : 0.07068447294240719, + "99.99" : 0.07068447294240719, + "99.999" : 0.07068447294240719, + "99.9999" : 0.07068447294240719, + "100.0" : 0.07068447294240719 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06994119092314256, + 0.06970817791269919, + 0.07017967310904319 + ], + [ + 0.07031189624963087, + 0.07056519143351092, + 0.07033018202533248 + ], + [ + 0.0705037038261691, + 0.07038306241466195, + 0.07068447294240719 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 2.6797161614550885E7, + "scoreError" : 1219300.8546828355, + "scoreConfidence" : [ + 2.5577860759868048E7, + 2.801646246923372E7 + ], + "scorePercentiles" : { + "0.0" : 2.616316707310705E7, + "50.0" : 2.6336108715789475E7, + "90.0" : 2.7772019864265926E7, + "95.0" : 2.7772019864265926E7, + "99.0" : 2.7772019864265926E7, + "99.9" : 2.7772019864265926E7, + "99.99" : 2.7772019864265926E7, + "99.999" : 2.7772019864265926E7, + "99.9999" : 2.7772019864265926E7, + "100.0" : 2.7772019864265926E7 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 2.7772019864265926E7, + 2.770387028531856E7, + 2.7753106371191137E7 + ], + [ + 2.6267871010498688E7, + 2.616316707310705E7, + 2.6336108715789475E7 + ], + [ + 2.620666960209424E7, + 2.6275712790026248E7, + 2.6695928818666667E7 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-02-25T01:23:55Z-2f880f3c1b28bc9004d94aea79dd7609f3b3d513-jdk17.json b/performance-results/2025-02-25T01:23:55Z-2f880f3c1b28bc9004d94aea79dd7609f3b3d513-jdk17.json new file mode 100644 index 0000000000..9ff60cd618 --- /dev/null +++ b/performance-results/2025-02-25T01:23:55Z-2f880f3c1b28bc9004d94aea79dd7609f3b3d513-jdk17.json @@ -0,0 +1,665 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.404690960666666, + "scoreError" : 0.03044852968952923, + "scoreConfidence" : [ + 3.374242430977137, + 3.4351394903561956 + ], + "scorePercentiles" : { + "0.0" : 3.400213854643417, + "50.0" : 3.4045940175499285, + "90.0" : 3.4093619529233923, + "95.0" : 3.4093619529233923, + "99.0" : 3.4093619529233923, + "99.9" : 3.4093619529233923, + "99.99" : 3.4093619529233923, + "99.999" : 3.4093619529233923, + "99.9999" : 3.4093619529233923, + "100.0" : 3.4093619529233923 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4010779262103115, + 3.4093619529233923 + ], + [ + 3.400213854643417, + 3.4081101088895456 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7196934301008682, + "scoreError" : 0.009433261921329341, + "scoreConfidence" : [ + 1.7102601681795389, + 1.7291266920221975 + ], + "scorePercentiles" : { + "0.0" : 1.718360312679651, + "50.0" : 1.7193343356815178, + "90.0" : 1.7217447363607858, + "95.0" : 1.7217447363607858, + "99.0" : 1.7217447363607858, + "99.9" : 1.7217447363607858, + "99.99" : 1.7217447363607858, + "99.999" : 1.7217447363607858, + "99.9999" : 1.7217447363607858, + "100.0" : 1.7217447363607858 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.718360312679651, + 1.7196083418321035 + ], + [ + 1.7190603295309321, + 1.7217447363607858 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8631208369410628, + "scoreError" : 0.013966265434022882, + "scoreConfidence" : [ + 0.8491545715070399, + 0.8770871023750857 + ], + "scorePercentiles" : { + "0.0" : 0.8611588039727823, + "50.0" : 0.8627513593861174, + "90.0" : 0.8658218250192341, + "95.0" : 0.8658218250192341, + "99.0" : 0.8658218250192341, + "99.9" : 0.8658218250192341, + "99.99" : 0.8658218250192341, + "99.999" : 0.8658218250192341, + "99.9999" : 0.8658218250192341, + "100.0" : 0.8658218250192341 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8611588039727823, + 0.8616121378539223 + ], + [ + 0.8638905809183123, + 0.8658218250192341 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 98.27096987223166, + "scoreError" : 2.5045477559708336, + "scoreConfidence" : [ + 95.76642211626083, + 100.7755176282025 + ], + "scorePercentiles" : { + "0.0" : 95.68051247255123, + "50.0" : 98.9270899531805, + "90.0" : 100.39260288227369, + "95.0" : 100.39260288227369, + "99.0" : 100.39260288227369, + "99.9" : 100.39260288227369, + "99.99" : 100.39260288227369, + "99.999" : 100.39260288227369, + "99.9999" : 100.39260288227369, + "100.0" : 100.39260288227369 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 98.94312506760458, + 96.69698833361956, + 95.68051247255123 + ], + [ + 97.34514063006868, + 98.9270899531805, + 99.06264023901753 + ], + [ + 97.87215469667093, + 99.5184745750984, + 100.39260288227369 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.18459150246144512, + "scoreError" : 0.015563152229965621, + "scoreConfidence" : [ + 0.1690283502314795, + 0.20015465469141075 + ], + "scorePercentiles" : { + "0.0" : 0.17348002208344177, + "50.0" : 0.18480328357326337, + "90.0" : 0.195657021150046, + "95.0" : 0.195657021150046, + "99.0" : 0.195657021150046, + "99.9" : 0.195657021150046, + "99.99" : 0.195657021150046, + "99.999" : 0.195657021150046, + "99.9999" : 0.195657021150046, + "100.0" : 0.195657021150046 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17405713295854075, + 0.17348002208344177, + 0.17388261548225556 + ], + [ + 0.18486138387311446, + 0.18480328357326337, + 0.18468698899292665 + ], + [ + 0.195657021150046, + 0.19494815564263018, + 0.19494691839678735 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.34461395648434884, + "scoreError" : 0.018543995661311215, + "scoreConfidence" : [ + 0.32606996082303763, + 0.36315795214566005 + ], + "scorePercentiles" : { + "0.0" : 0.33486547773238684, + "50.0" : 0.33847169561685564, + "90.0" : 0.35935824540031625, + "95.0" : 0.35935824540031625, + "99.0" : 0.35935824540031625, + "99.9" : 0.35935824540031625, + "99.99" : 0.35935824540031625, + "99.999" : 0.35935824540031625, + "99.9999" : 0.35935824540031625, + "100.0" : 0.35935824540031625 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3397393252250722, + 0.33774711324259515, + 0.33847169561685564 + ], + [ + 0.33581736851472516, + 0.33486547773238684, + 0.33725926642385 + ], + [ + 0.3590065454676001, + 0.3592605707357379, + 0.35935824540031625 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1662644528201741, + "scoreError" : 0.007041908485461542, + "scoreConfidence" : [ + 0.15922254433471256, + 0.17330636130563565 + ], + "scorePercentiles" : { + "0.0" : 0.16043068409991498, + "50.0" : 0.16863301156790664, + "90.0" : 0.16965664430646038, + "95.0" : 0.16965664430646038, + "99.0" : 0.16965664430646038, + "99.9" : 0.16965664430646038, + "99.99" : 0.16965664430646038, + "99.999" : 0.16965664430646038, + "99.9999" : 0.16965664430646038, + "100.0" : 0.16965664430646038 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16937442495172927, + 0.16863301156790664, + 0.16815488644694804 + ], + [ + 0.16933125113026398, + 0.16909790911243003, + 0.16965664430646038 + ], + [ + 0.16098464717719216, + 0.16071661658872122, + 0.16043068409991498 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3986439231800467, + "scoreError" : 0.00637091300263217, + "scoreConfidence" : [ + 0.39227301017741456, + 0.40501483618267886 + ], + "scorePercentiles" : { + "0.0" : 0.39420818677073477, + "50.0" : 0.3977881543754972, + "90.0" : 0.40496893557139385, + "95.0" : 0.40496893557139385, + "99.0" : 0.40496893557139385, + "99.9" : 0.40496893557139385, + "99.99" : 0.40496893557139385, + "99.999" : 0.40496893557139385, + "99.9999" : 0.40496893557139385, + "100.0" : 0.40496893557139385 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.40496893557139385, + 0.39927211874151564, + 0.3992613548528766 + ], + [ + 0.40407144094710895, + 0.3971080157646031, + 0.3967713057451198 + ], + [ + 0.3977881543754972, + 0.3943457958515714, + 0.39420818677073477 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16648713306207816, + "scoreError" : 0.005414247074119306, + "scoreConfidence" : [ + 0.16107288598795885, + 0.17190138013619746 + ], + "scorePercentiles" : { + "0.0" : 0.16283060862981355, + "50.0" : 0.16614479812261174, + "90.0" : 0.1708238147110572, + "95.0" : 0.1708238147110572, + "99.0" : 0.1708238147110572, + "99.9" : 0.1708238147110572, + "99.99" : 0.1708238147110572, + "99.999" : 0.1708238147110572, + "99.9999" : 0.1708238147110572, + "100.0" : 0.1708238147110572 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17022843914479283, + 0.1708238147110572, + 0.17013370232566052 + ], + [ + 0.16572026116929603, + 0.16614479812261174, + 0.16627377380576294 + ], + [ + 0.1633060520772095, + 0.16283060862981355, + 0.1629227475724992 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.048708404283641024, + "scoreError" : 3.256900826240487E-4, + "scoreConfidence" : [ + 0.048382714201016974, + 0.049034094366265074 + ], + "scorePercentiles" : { + "0.0" : 0.04842643591134269, + "50.0" : 0.04864128523274478, + "90.0" : 0.04892708317962317, + "95.0" : 0.04892708317962317, + "99.0" : 0.04892708317962317, + "99.9" : 0.04892708317962317, + "99.99" : 0.04892708317962317, + "99.999" : 0.04892708317962317, + "99.9999" : 0.04892708317962317, + "100.0" : 0.04892708317962317 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.048913571263665044, + 0.04851722961938724, + 0.04856391890421869 + ], + [ + 0.04892708317962317, + 0.04887132461807626, + 0.04889490055397192 + ], + [ + 0.048619889269739404, + 0.04864128523274478, + 0.04842643591134269 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 1.0553918135524623E7, + "scoreError" : 679622.1646854198, + "scoreConfidence" : [ + 9874295.970839202, + 1.1233540300210044E7 + ], + "scorePercentiles" : { + "0.0" : 1.0047981846385542E7, + "50.0" : 1.0525982719242902E7, + "90.0" : 1.1121641787777778E7, + "95.0" : 1.1121641787777778E7, + "99.0" : 1.1121641787777778E7, + "99.9" : 1.1121641787777778E7, + "99.99" : 1.1121641787777778E7, + "99.999" : 1.1121641787777778E7, + "99.9999" : 1.1121641787777778E7, + "100.0" : 1.1121641787777778E7 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 1.0205105657142857E7, + 1.0095831249243189E7, + 1.0047981846385542E7 + ], + [ + 1.0493827069254985E7, + 1.0525982719242902E7, + 1.0534360494736843E7 + ], + [ + 1.0856959726681128E7, + 1.1103572669256382E7, + 1.1121641787777778E7 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-02-26T21:08:56Z-6f33577a109177a85edb84a8f9d16c4662a8b867-jdk17.json b/performance-results/2025-02-26T21:08:56Z-6f33577a109177a85edb84a8f9d16c4662a8b867-jdk17.json new file mode 100644 index 0000000000..7955929f2c --- /dev/null +++ b/performance-results/2025-02-26T21:08:56Z-6f33577a109177a85edb84a8f9d16c4662a8b867-jdk17.json @@ -0,0 +1,665 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4146001038397236, + "scoreError" : 0.06330522138552402, + "scoreConfidence" : [ + 3.3512948824541997, + 3.4779053252252474 + ], + "scorePercentiles" : { + "0.0" : 3.406498306401554, + "50.0" : 3.4121721428099234, + "90.0" : 3.4275578233374935, + "95.0" : 3.4275578233374935, + "99.0" : 3.4275578233374935, + "99.9" : 3.4275578233374935, + "99.99" : 3.4275578233374935, + "99.999" : 3.4275578233374935, + "99.9999" : 3.4275578233374935, + "100.0" : 3.4275578233374935 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.406498306401554, + 3.4075577224157994 + ], + [ + 3.4167865632040475, + 3.4275578233374935 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.724084373375287, + "scoreError" : 0.009173345534947237, + "scoreConfidence" : [ + 1.7149110278403399, + 1.7332577189102343 + ], + "scorePercentiles" : { + "0.0" : 1.722132522557934, + "50.0" : 1.7244104377307181, + "90.0" : 1.725384095481778, + "95.0" : 1.725384095481778, + "99.0" : 1.725384095481778, + "99.9" : 1.725384095481778, + "99.99" : 1.725384095481778, + "99.999" : 1.725384095481778, + "99.9999" : 1.725384095481778, + "100.0" : 1.725384095481778 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7240017613168217, + 1.722132522557934 + ], + [ + 1.725384095481778, + 1.7248191141446145 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8685933549611762, + "scoreError" : 0.0035669294749559304, + "scoreConfidence" : [ + 0.8650264254862202, + 0.8721602844361321 + ], + "scorePercentiles" : { + "0.0" : 0.8679462300764225, + "50.0" : 0.8686644140845527, + "90.0" : 0.8690983615991764, + "95.0" : 0.8690983615991764, + "99.0" : 0.8690983615991764, + "99.9" : 0.8690983615991764, + "99.99" : 0.8690983615991764, + "99.999" : 0.8690983615991764, + "99.9999" : 0.8690983615991764, + "100.0" : 0.8690983615991764 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8679462300764225, + 0.869003652537736 + ], + [ + 0.8683251756313696, + 0.8690983615991764 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 104.03131562635369, + "scoreError" : 3.8131574268555535, + "scoreConfidence" : [ + 100.21815819949813, + 107.84447305320924 + ], + "scorePercentiles" : { + "0.0" : 101.2345222399038, + "50.0" : 104.32314641078156, + "90.0" : 107.1723185797236, + "95.0" : 107.1723185797236, + "99.0" : 107.1723185797236, + "99.9" : 107.1723185797236, + "99.99" : 107.1723185797236, + "99.999" : 107.1723185797236, + "99.9999" : 107.1723185797236, + "100.0" : 107.1723185797236 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 103.72396500224156, + 104.42774438643247, + 104.32314641078156 + ], + [ + 101.2345222399038, + 101.61710742984098, + 101.3750069855028 + ], + [ + 105.55519565109971, + 107.1723185797236, + 106.85283395165672 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.18162770750824003, + "scoreError" : 0.006044886405865979, + "scoreConfidence" : [ + 0.17558282110237405, + 0.187672593914106 + ], + "scorePercentiles" : { + "0.0" : 0.17692104912957327, + "50.0" : 0.1825373323354933, + "90.0" : 0.18598964871298915, + "95.0" : 0.18598964871298915, + "99.0" : 0.18598964871298915, + "99.9" : 0.18598964871298915, + "99.99" : 0.18598964871298915, + "99.999" : 0.18598964871298915, + "99.9999" : 0.18598964871298915, + "100.0" : 0.18598964871298915 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.18334443915809545, + 0.1825373323354933, + 0.1824438548310589 + ], + [ + 0.17756069605823863, + 0.17692104912957327, + 0.17704654118938443 + ], + [ + 0.18598964871298915, + 0.1859790866266203, + 0.18282671953270685 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.33103155204854806, + "scoreError" : 0.010016052614272533, + "scoreConfidence" : [ + 0.32101549943427554, + 0.3410476046628206 + ], + "scorePercentiles" : { + "0.0" : 0.32390096534300705, + "50.0" : 0.33049450798109653, + "90.0" : 0.3382305706893053, + "95.0" : 0.3382305706893053, + "99.0" : 0.3382305706893053, + "99.9" : 0.3382305706893053, + "99.99" : 0.3382305706893053, + "99.999" : 0.3382305706893053, + "99.9999" : 0.3382305706893053, + "100.0" : 0.3382305706893053 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.33280675099840257, + 0.33049450798109653, + 0.33046942586167016 + ], + [ + 0.3243713012325657, + 0.32400376565689293, + 0.32390096534300705 + ], + [ + 0.33713828767446563, + 0.3382305706893053, + 0.337868392999527 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1651612001317232, + "scoreError" : 0.006671777327387482, + "scoreConfidence" : [ + 0.1584894228043357, + 0.1718329774591107 + ], + "scorePercentiles" : { + "0.0" : 0.15975479700305126, + "50.0" : 0.16664202561239794, + "90.0" : 0.16899561237008873, + "95.0" : 0.16899561237008873, + "99.0" : 0.16899561237008873, + "99.9" : 0.16899561237008873, + "99.99" : 0.16899561237008873, + "99.999" : 0.16899561237008873, + "99.9999" : 0.16899561237008873, + "100.0" : 0.16899561237008873 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1686909112378125, + 0.16899561237008873, + 0.16836642324398948 + ], + [ + 0.16008070533055868, + 0.16014325713828167, + 0.15975479700305126 + ], + [ + 0.16664202561239794, + 0.16726839185414402, + 0.16650867739518466 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.39718276540797226, + "scoreError" : 0.010495068770156386, + "scoreConfidence" : [ + 0.3866876966378159, + 0.40767783417812864 + ], + "scorePercentiles" : { + "0.0" : 0.39033811225605, + "50.0" : 0.39952032495705325, + "90.0" : 0.4070250141641906, + "95.0" : 0.4070250141641906, + "99.0" : 0.4070250141641906, + "99.9" : 0.4070250141641906, + "99.99" : 0.4070250141641906, + "99.999" : 0.4070250141641906, + "99.9999" : 0.4070250141641906, + "100.0" : 0.4070250141641906 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.39952032495705325, + 0.39207139022190857, + 0.39109308951896754 + ], + [ + 0.39983248678581423, + 0.39033811225605, + 0.3905832244180597 + ], + [ + 0.4070250141641906, + 0.40276224173345687, + 0.4014190046162492 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16230465175803965, + "scoreError" : 0.0039183994711270995, + "scoreConfidence" : [ + 0.15838625228691255, + 0.16622305122916675 + ], + "scorePercentiles" : { + "0.0" : 0.1597745644442314, + "50.0" : 0.16203763755975045, + "90.0" : 0.16624055238966004, + "95.0" : 0.16624055238966004, + "99.0" : 0.16624055238966004, + "99.9" : 0.16624055238966004, + "99.99" : 0.16624055238966004, + "99.999" : 0.16624055238966004, + "99.9999" : 0.16624055238966004, + "100.0" : 0.16624055238966004 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16624055238966004, + 0.16400418776547765, + 0.16484738292891996 + ], + [ + 0.15981138290051938, + 0.1598962359854178, + 0.1597745644442314 + ], + [ + 0.16191029436241175, + 0.16203763755975045, + 0.16221962748596827 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04763327336182691, + "scoreError" : 4.3904494906094033E-4, + "scoreConfidence" : [ + 0.04719422841276597, + 0.04807231831088785 + ], + "scorePercentiles" : { + "0.0" : 0.04727598728767486, + "50.0" : 0.04777726915010009, + "90.0" : 0.04794205962950889, + "95.0" : 0.04794205962950889, + "99.0" : 0.04794205962950889, + "99.9" : 0.04794205962950889, + "99.99" : 0.04794205962950889, + "99.999" : 0.04794205962950889, + "99.9999" : 0.04794205962950889, + "100.0" : 0.04794205962950889 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04788952776833304, + 0.047806814378185084, + 0.04777726915010009 + ], + [ + 0.04794205962950889, + 0.047515909017908475, + 0.0477935064352863 + ], + [ + 0.04729572183939576, + 0.04740266475004977, + 0.04727598728767486 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9672020.973374372, + "scoreError" : 191105.9680058244, + "scoreConfidence" : [ + 9480915.005368548, + 9863126.941380197 + ], + "scorePercentiles" : { + "0.0" : 9516544.845861085, + "50.0" : 9728260.992217898, + "90.0" : 9787208.828767123, + "95.0" : 9787208.828767123, + "99.0" : 9787208.828767123, + "99.9" : 9787208.828767123, + "99.99" : 9787208.828767123, + "99.999" : 9787208.828767123, + "99.9999" : 9787208.828767123, + "100.0" : 9787208.828767123 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9773146.44921875, + 9744554.864654332, + 9751680.31871345 + ], + [ + 9787208.828767123, + 9728260.992217898, + 9688269.999031946 + ], + [ + 9516544.845861085, + 9527939.308571428, + 9530583.153333334 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-02-27T00:02:35Z-c2d1a3b7a277ffb797f13873463e4c5566e6e28c-jdk17.json b/performance-results/2025-02-27T00:02:35Z-c2d1a3b7a277ffb797f13873463e4c5566e6e28c-jdk17.json new file mode 100644 index 0000000000..93a667cc19 --- /dev/null +++ b/performance-results/2025-02-27T00:02:35Z-c2d1a3b7a277ffb797f13873463e4c5566e6e28c-jdk17.json @@ -0,0 +1,1074 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.417549733621442, + "scoreError" : 0.01110297891536587, + "scoreConfidence" : [ + 3.406446754706076, + 3.428652712536808 + ], + "scorePercentiles" : { + "0.0" : 3.415335793926578, + "50.0" : 3.4177333996326036, + "90.0" : 3.419396341293982, + "95.0" : 3.419396341293982, + "99.0" : 3.419396341293982, + "99.9" : 3.419396341293982, + "99.99" : 3.419396341293982, + "99.999" : 3.419396341293982, + "99.9999" : 3.419396341293982, + "100.0" : 3.419396341293982 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4172446969186234, + 3.419396341293982 + ], + [ + 3.415335793926578, + 3.4182221023465837 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7274036461599989, + "scoreError" : 0.006128573825496412, + "scoreConfidence" : [ + 1.7212750723345025, + 1.7335322199854952 + ], + "scorePercentiles" : { + "0.0" : 1.726368585774484, + "50.0" : 1.7273860309105475, + "90.0" : 1.728473937044416, + "95.0" : 1.728473937044416, + "99.0" : 1.728473937044416, + "99.9" : 1.728473937044416, + "99.99" : 1.728473937044416, + "99.999" : 1.728473937044416, + "99.9999" : 1.728473937044416, + "100.0" : 1.728473937044416 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.727876395518843, + 1.728473937044416 + ], + [ + 1.726895666302252, + 1.726368585774484 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8696277675660219, + "scoreError" : 0.003731430116841793, + "scoreConfidence" : [ + 0.8658963374491802, + 0.8733591976828636 + ], + "scorePercentiles" : { + "0.0" : 0.8687745341041557, + "50.0" : 0.8698516605045905, + "90.0" : 0.8700332151507507, + "95.0" : 0.8700332151507507, + "99.0" : 0.8700332151507507, + "99.9" : 0.8700332151507507, + "99.99" : 0.8700332151507507, + "99.999" : 0.8700332151507507, + "99.9999" : 0.8700332151507507, + "100.0" : 0.8700332151507507 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8687745341041557, + 0.8697897336521034 + ], + [ + 0.8699135873570777, + 0.8700332151507507 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 68564.59072017718, + "scoreError" : 3342.4151922036704, + "scoreConfidence" : [ + 65222.17552797351, + 71907.00591238085 + ], + "scorePercentiles" : { + "0.0" : 66365.38880921605, + "50.0" : 68390.3393489677, + "90.0" : 70982.41269147139, + "95.0" : 70982.41269147139, + "99.0" : 70982.41269147139, + "99.9" : 70982.41269147139, + "99.99" : 70982.41269147139, + "99.999" : 70982.41269147139, + "99.9999" : 70982.41269147139, + "100.0" : 70982.41269147139 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 70921.10080429926, + 70971.54880272943, + 70982.41269147139 + ], + [ + 66391.38054980467, + 66403.4487675499, + 66365.38880921605 + ], + [ + 68121.9882924485, + 68390.3393489677, + 68533.7084151077 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 352.6073517068847, + "scoreError" : 14.226277593346195, + "scoreConfidence" : [ + 338.3810741135385, + 366.8336293002309 + ], + "scorePercentiles" : { + "0.0" : 340.9222360811488, + "50.0" : 357.0779004844468, + "90.0" : 360.2449960648248, + "95.0" : 360.2449960648248, + "99.0" : 360.2449960648248, + "99.9" : 360.2449960648248, + "99.99" : 360.2449960648248, + "99.999" : 360.2449960648248, + "99.9999" : 360.2449960648248, + "100.0" : 360.2449960648248 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 360.2449960648248, + 357.0779004844468, + 355.97632825052636 + ], + [ + 341.52235438044806, + 341.8721856208501, + 340.9222360811488 + ], + [ + 359.11797705900995, + 357.9689783725373, + 358.76320904817004 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 43.22957453296144, + "scoreError" : 1.0524067752181139, + "scoreConfidence" : [ + 42.17716775774333, + 44.28198130817956 + ], + "scorePercentiles" : { + "0.0" : 42.491759424373676, + "50.0" : 43.16580648696909, + "90.0" : 43.99113632712106, + "95.0" : 43.99113632712106, + "99.0" : 43.99113632712106, + "99.9" : 43.99113632712106, + "99.99" : 43.99113632712106, + "99.999" : 43.99113632712106, + "99.9999" : 43.99113632712106, + "100.0" : 43.99113632712106 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 42.491759424373676, + 42.55520495290065, + 42.53175908126641 + ], + [ + 43.95321369840156, + 43.96024421025855, + 43.99113632712106 + ], + [ + 43.16580648696909, + 43.14083248198754, + 43.27621413337447 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014312895471575268, + "scoreError" : 3.590636914352757E-4, + "scoreConfidence" : [ + 0.013953831780139992, + 0.014671959163010543 + ], + "scorePercentiles" : { + "0.0" : 0.014156584854911, + "50.0" : 0.014173242913814926, + "90.0" : 0.014606530733984486, + "95.0" : 0.014606530733984486, + "99.0" : 0.014606530733984486, + "99.9" : 0.014606530733984486, + "99.99" : 0.014606530733984486, + "99.999" : 0.014606530733984486, + "99.9999" : 0.014606530733984486, + "100.0" : 0.014606530733984486 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014172841730880705, + 0.014173242913814926, + 0.01419092347350018 + ], + [ + 0.014597928211176914, + 0.014606530733984486, + 0.014587914766734694 + ], + [ + 0.014156584854911, + 0.014164157074343924, + 0.014165935484830585 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 1.051780842346681, + "scoreError" : 0.010553840560371822, + "scoreConfidence" : [ + 1.0412270017863092, + 1.0623346829070528 + ], + "scorePercentiles" : { + "0.0" : 1.0440643342728886, + "50.0" : 1.0495260304334137, + "90.0" : 1.061504448100191, + "95.0" : 1.061504448100191, + "99.0" : 1.061504448100191, + "99.9" : 1.061504448100191, + "99.99" : 1.061504448100191, + "99.999" : 1.061504448100191, + "99.9999" : 1.061504448100191, + "100.0" : 1.061504448100191 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 1.0475535410076464, + 1.0495260304334137, + 1.0485825257418475 + ], + [ + 1.0462639663109436, + 1.0440643342728886, + 1.051101247950389 + ], + [ + 1.061504448100191, + 1.0594869623900838, + 1.0579445249127262 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.013025928893002378, + "scoreError" : 2.9233162577219546E-4, + "scoreConfidence" : [ + 0.012733597267230182, + 0.013318260518774574 + ], + "scorePercentiles" : { + "0.0" : 0.012845165675472241, + "50.0" : 0.013048059291336388, + "90.0" : 0.013116028007302832, + "95.0" : 0.013116028007302832, + "99.0" : 0.013116028007302832, + "99.9" : 0.013116028007302832, + "99.99" : 0.013116028007302832, + "99.999" : 0.013116028007302832, + "99.9999" : 0.013116028007302832, + "100.0" : 0.013116028007302832 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.012845165675472241, + 0.012994237794150132, + 0.012995796729287742 + ], + [ + 0.013104023298416284, + 0.013100321853385034, + 0.013116028007302832 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.6386671189948117, + "scoreError" : 0.23283007966411665, + "scoreConfidence" : [ + 3.405837039330695, + 3.871497198658928 + ], + "scorePercentiles" : { + "0.0" : 3.5593792142348755, + "50.0" : 3.638552702472288, + "90.0" : 3.717080251857355, + "95.0" : 3.717080251857355, + "99.0" : 3.717080251857355, + "99.9" : 3.717080251857355, + "99.99" : 3.717080251857355, + "99.999" : 3.717080251857355, + "99.9999" : 3.717080251857355, + "100.0" : 3.717080251857355 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.714684306607275, + 3.717080251857355, + 3.711503275222552 + ], + [ + 3.5593792142348755, + 3.5656021297220244, + 3.5637535363247865 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.892068432953975, + "scoreError" : 0.009267708162824911, + "scoreConfidence" : [ + 2.8828007247911502, + 2.9013361411167997 + ], + "scorePercentiles" : { + "0.0" : 2.8829103447679447, + "50.0" : 2.8941400842013887, + "90.0" : 2.900774136600928, + "95.0" : 2.900774136600928, + "99.0" : 2.900774136600928, + "99.9" : 2.900774136600928, + "99.99" : 2.900774136600928, + "99.999" : 2.900774136600928, + "99.9999" : 2.900774136600928, + "100.0" : 2.900774136600928 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.8909567751445087, + 2.900774136600928, + 2.895437655761436 + ], + [ + 2.8829103447679447, + 2.8853761220427003, + 2.8949296243125904 + ], + [ + 2.894673690593343, + 2.889417463160936, + 2.8941400842013887 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.33691360853923774, + "scoreError" : 0.019185202933204835, + "scoreConfidence" : [ + 0.3177284056060329, + 0.3560988114724426 + ], + "scorePercentiles" : { + "0.0" : 0.3215903219063545, + "50.0" : 0.34066744595469256, + "90.0" : 0.3475835746411317, + "95.0" : 0.3475835746411317, + "99.0" : 0.3475835746411317, + "99.9" : 0.3475835746411317, + "99.99" : 0.3475835746411317, + "99.999" : 0.3475835746411317, + "99.9999" : 0.3475835746411317, + "100.0" : 0.3475835746411317 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3230329570048777, + 0.32178376835703715, + 0.3215903219063545 + ], + [ + 0.3474673598554602, + 0.3475835746411317, + 0.34700911492418196 + ], + [ + 0.34260209705711053, + 0.34066744595469256, + 0.3404858371522931 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.5147195619121575, + "scoreError" : 0.005365502061905538, + "scoreConfidence" : [ + 0.509354059850252, + 0.5200850639740631 + ], + "scorePercentiles" : { + "0.0" : 0.5095666566114649, + "50.0" : 0.5141572140359897, + "90.0" : 0.5199076203275279, + "95.0" : 0.5199076203275279, + "99.0" : 0.5199076203275279, + "99.9" : 0.5199076203275279, + "99.99" : 0.5199076203275279, + "99.999" : 0.5199076203275279, + "99.9999" : 0.5199076203275279, + "100.0" : 0.5199076203275279 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.5095666566114649, + 0.5120266715989965, + 0.5134771368864243 + ], + [ + 0.5141572140359897, + 0.5143587923053183, + 0.5136087965692568 + ], + [ + 0.5199076203275279, + 0.5176240380434782, + 0.5177491308309604 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.2364564205155297, + "scoreError" : 0.005615719741969599, + "scoreConfidence" : [ + 0.23084070077356011, + 0.2420721402574993 + ], + "scorePercentiles" : { + "0.0" : 0.23106783016775267, + "50.0" : 0.23710881167014417, + "90.0" : 0.2401375854624916, + "95.0" : 0.2401375854624916, + "99.0" : 0.2401375854624916, + "99.9" : 0.2401375854624916, + "99.99" : 0.2401375854624916, + "99.999" : 0.2401375854624916, + "99.9999" : 0.2401375854624916, + "100.0" : 0.2401375854624916 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.2401375854624916, + 0.23965306583109663, + 0.2394539756961904 + ], + [ + 0.23547254910640703, + 0.23145445165023376, + 0.23106783016775267 + ], + [ + 0.23750379399610508, + 0.23710881167014417, + 0.23625572105934606 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 1.039934086864828, + "scoreError" : 0.014696474985303161, + "scoreConfidence" : [ + 1.0252376118795248, + 1.054630561850131 + ], + "scorePercentiles" : { + "0.0" : 1.0283595919794344, + "50.0" : 1.043634660857769, + "90.0" : 1.0487148862206377, + "95.0" : 1.0487148862206377, + "99.0" : 1.0487148862206377, + "99.9" : 1.0487148862206377, + "99.99" : 1.0487148862206377, + "99.999" : 1.0487148862206377, + "99.9999" : 1.0487148862206377, + "100.0" : 1.0487148862206377 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 1.0287253541816685, + 1.0284066072603866, + 1.0283595919794344 + ], + [ + 1.0434719802796326, + 1.043634660857769, + 1.0443083778195488 + ], + [ + 1.0487148862206377, + 1.046657566509681, + 1.0471277566746937 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.44161499542324184, + "scoreError" : 0.004366581579714742, + "scoreConfidence" : [ + 0.4372484138435271, + 0.4459815770029566 + ], + "scorePercentiles" : { + "0.0" : 0.43823696555501995, + "50.0" : 0.44111343381412377, + "90.0" : 0.44522993410800943, + "95.0" : 0.44522993410800943, + "99.0" : 0.44522993410800943, + "99.9" : 0.44522993410800943, + "99.99" : 0.44522993410800943, + "99.999" : 0.44522993410800943, + "99.9999" : 0.44522993410800943, + "100.0" : 0.44522993410800943 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.4385348860726188, + 0.43823696555501995, + 0.4400182119065429 + ], + [ + 0.44461083727547573, + 0.4443986759098787, + 0.44522993410800943 + ], + [ + 0.44149149507748003, + 0.44111343381412377, + 0.4409005190900273 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.07051290382076661, + "scoreError" : 0.0015072824781688767, + "scoreConfidence" : [ + 0.06900562134259773, + 0.07202018629893549 + ], + "scorePercentiles" : { + "0.0" : 0.06945675739875119, + "50.0" : 0.07009593459457186, + "90.0" : 0.07172936275867016, + "95.0" : 0.07172936275867016, + "99.0" : 0.07172936275867016, + "99.9" : 0.07172936275867016, + "99.99" : 0.07172936275867016, + "99.999" : 0.07172936275867016, + "99.9999" : 0.07172936275867016, + "100.0" : 0.07172936275867016 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.07009593459457186, + 0.07000790423051882, + 0.06975306674571898 + ], + [ + 0.07172936275867016, + 0.0716311333968454, + 0.07164192272864041 + ], + [ + 0.07030226510597912, + 0.0699977874272035, + 0.06945675739875119 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 2.2916434512089096E7, + "scoreError" : 334761.1993547782, + "scoreConfidence" : [ + 2.2581673312734317E7, + 2.3251195711443875E7 + ], + "scorePercentiles" : { + "0.0" : 2.2709041746031746E7, + "50.0" : 2.286806340410959E7, + "90.0" : 2.321051393039443E7, + "95.0" : 2.321051393039443E7, + "99.0" : 2.321051393039443E7, + "99.9" : 2.321051393039443E7, + "99.99" : 2.321051393039443E7, + "99.999" : 2.321051393039443E7, + "99.9999" : 2.321051393039443E7, + "100.0" : 2.321051393039443E7 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 2.321051393039443E7, + 2.3181100655092593E7, + 2.310629179907621E7 + ], + [ + 2.2853278180365298E7, + 2.286806340410959E7, + 2.2868454625570778E7 + ], + [ + 2.2739949259090908E7, + 2.2709041746031746E7, + 2.2711217009070296E7 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-02-27T01:25:55Z-31804cdc79dd4fa2c8b6ddd9fac1a4168e510fc2-jdk17.json b/performance-results/2025-02-27T01:25:55Z-31804cdc79dd4fa2c8b6ddd9fac1a4168e510fc2-jdk17.json new file mode 100644 index 0000000000..e07aecac38 --- /dev/null +++ b/performance-results/2025-02-27T01:25:55Z-31804cdc79dd4fa2c8b6ddd9fac1a4168e510fc2-jdk17.json @@ -0,0 +1,413 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 70219.54876920363, + "scoreError" : 877.051607001723, + "scoreConfidence" : [ + 69342.49716220191, + 71096.60037620534 + ], + "scorePercentiles" : { + "0.0" : 69373.1799451383, + "50.0" : 70346.02467738034, + "90.0" : 70806.15426297102, + "95.0" : 70806.15426297102, + "99.0" : 70806.15426297102, + "99.9" : 70806.15426297102, + "99.99" : 70806.15426297102, + "99.999" : 70806.15426297102, + "99.9999" : 70806.15426297102, + "100.0" : 70806.15426297102 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 69518.78115218057, + 69373.1799451383, + 69976.66849523893 + ], + [ + 70806.15426297102, + 70725.87117127908, + 70610.372758707 + ], + [ + 70561.85379402456, + 70057.03266591279, + 70346.02467738034 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 346.9107894426578, + "scoreError" : 9.426249005233789, + "scoreConfidence" : [ + 337.484540437424, + 356.3370384478916 + ], + "scorePercentiles" : { + "0.0" : 338.26005679797504, + "50.0" : 347.03501349459947, + "90.0" : 354.57859781312527, + "95.0" : 354.57859781312527, + "99.0" : 354.57859781312527, + "99.9" : 354.57859781312527, + "99.99" : 354.57859781312527, + "99.999" : 354.57859781312527, + "99.9999" : 354.57859781312527, + "100.0" : 354.57859781312527 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 338.26005679797504, + 340.50631789283403, + 343.88528415142383 + ], + [ + 353.56875541193926, + 351.6138386462634, + 354.57859781312527 + ], + [ + 347.03976687575766, + 345.7094739000024, + 347.03501349459947 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014352362665403752, + "scoreError" : 2.98599213348489E-4, + "scoreConfidence" : [ + 0.014053763452055263, + 0.01465096187875224 + ], + "scorePercentiles" : { + "0.0" : 0.014157780336214879, + "50.0" : 0.014331860724752957, + "90.0" : 0.014639790268461288, + "95.0" : 0.014639790268461288, + "99.0" : 0.014639790268461288, + "99.9" : 0.014639790268461288, + "99.99" : 0.014639790268461288, + "99.999" : 0.014639790268461288, + "99.9999" : 0.014639790268461288, + "100.0" : 0.014639790268461288 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014339939093238652, + 0.014331860724752957, + 0.014260492186764702 + ], + [ + 0.014538310723621276, + 0.014639790268461288, + 0.014531535512455552 + ], + [ + 0.014157780336214879, + 0.01420724729817084, + 0.014164307844953598 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 1.056255119077973, + "scoreError" : 0.07030724285344893, + "scoreConfidence" : [ + 0.9859478762245241, + 1.126562361931422 + ], + "scorePercentiles" : { + "0.0" : 1.0189330812022415, + "50.0" : 1.0329520149762446, + "90.0" : 1.1164261720250055, + "95.0" : 1.1164261720250055, + "99.0" : 1.1164261720250055, + "99.9" : 1.1164261720250055, + "99.99" : 1.1164261720250055, + "99.999" : 1.1164261720250055, + "99.9999" : 1.1164261720250055, + "100.0" : 1.1164261720250055 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 1.0477812422210582, + 1.0329520149762446, + 1.0309344408823833 + ], + [ + 1.1030785476505625, + 1.1164261720250055, + 1.1125569858716209 + ], + [ + 1.0189330812022415, + 1.0217059660878447, + 1.0219276207847947 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.013035694974636735, + "scoreError" : 3.80344969049074E-4, + "scoreConfidence" : [ + 0.01265535000558766, + 0.01341603994368581 + ], + "scorePercentiles" : { + "0.0" : 0.012849147604975074, + "50.0" : 0.013023318203321078, + "90.0" : 0.013215352230829614, + "95.0" : 0.013215352230829614, + "99.0" : 0.013215352230829614, + "99.9" : 0.013215352230829614, + "99.99" : 0.013215352230829614, + "99.999" : 0.013215352230829614, + "99.9999" : 0.013215352230829614, + "100.0" : 0.013215352230829614 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.012849147604975074, + 0.012976139697715217, + 0.012952399375191043 + ], + [ + 0.013150634230182525, + 0.013215352230829614, + 0.013070496708926937 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.6779970045280823, + "scoreError" : 0.14690336575784563, + "scoreConfidence" : [ + 3.5310936387702365, + 3.824900370285928 + ], + "scorePercentiles" : { + "0.0" : 3.5989308258992807, + "50.0" : 3.6785783035306947, + "90.0" : 3.754549879129129, + "95.0" : 3.754549879129129, + "99.0" : 3.754549879129129, + "99.9" : 3.754549879129129, + "99.99" : 3.754549879129129, + "99.999" : 3.754549879129129, + "99.9999" : 3.754549879129129, + "100.0" : 3.754549879129129 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.5989308258992807, + 3.658934260424287, + 3.6582162809070957 + ], + [ + 3.698222346637103, + 3.754549879129129, + 3.6991284341715978 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.884272532819487, + "scoreError" : 0.12828739230038708, + "scoreConfidence" : [ + 2.7559851405191, + 3.012559925119874 + ], + "scorePercentiles" : { + "0.0" : 2.7761082681099083, + "50.0" : 2.9086586077348064, + "90.0" : 3.0072171803968732, + "95.0" : 3.0072171803968732, + "99.0" : 3.0072171803968732, + "99.9" : 3.0072171803968732, + "99.99" : 3.0072171803968732, + "99.999" : 3.0072171803968732, + "99.9999" : 3.0072171803968732, + "100.0" : 3.0072171803968732 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.9186964487890283, + 2.923129876972531, + 2.9086586077348064 + ], + [ + 2.897631711761298, + 2.927875331967213, + 3.0072171803968732 + ], + [ + 2.7761082681099083, + 2.8062966290684623, + 2.792838740575258 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-02-27T19:41:06Z-11211e11a54c35e1e9ffe9900e7ec7baad92d55c-jdk17.json b/performance-results/2025-02-27T19:41:06Z-11211e11a54c35e1e9ffe9900e7ec7baad92d55c-jdk17.json new file mode 100644 index 0000000000..34f194c1bf --- /dev/null +++ b/performance-results/2025-02-27T19:41:06Z-11211e11a54c35e1e9ffe9900e7ec7baad92d55c-jdk17.json @@ -0,0 +1,665 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.424204324807343, + "scoreError" : 0.05799769532538598, + "scoreConfidence" : [ + 3.366206629481957, + 3.482202020132729 + ], + "scorePercentiles" : { + "0.0" : 3.4159836041695884, + "50.0" : 3.4237277918290836, + "90.0" : 3.433378111401614, + "95.0" : 3.433378111401614, + "99.0" : 3.433378111401614, + "99.9" : 3.433378111401614, + "99.99" : 3.433378111401614, + "99.999" : 3.433378111401614, + "99.9999" : 3.433378111401614, + "100.0" : 3.433378111401614 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4159836041695884, + 3.417039358674823 + ], + [ + 3.430416224983344, + 3.433378111401614 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.728024357619412, + "scoreError" : 0.005667731146331268, + "scoreConfidence" : [ + 1.7223566264730807, + 1.7336920887657434 + ], + "scorePercentiles" : { + "0.0" : 1.7270563159253658, + "50.0" : 1.728063700679468, + "90.0" : 1.7289137131933463, + "95.0" : 1.7289137131933463, + "99.0" : 1.7289137131933463, + "99.9" : 1.7289137131933463, + "99.99" : 1.7289137131933463, + "99.999" : 1.7289137131933463, + "99.9999" : 1.7289137131933463, + "100.0" : 1.7289137131933463 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7286006804391694, + 1.7275267209197662 + ], + [ + 1.7270563159253658, + 1.7289137131933463 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8687373037199976, + "scoreError" : 0.007828251353031416, + "scoreConfidence" : [ + 0.8609090523669661, + 0.876565555073029 + ], + "scorePercentiles" : { + "0.0" : 0.8677172931089318, + "50.0" : 0.8683724801432033, + "90.0" : 0.8704869614846519, + "95.0" : 0.8704869614846519, + "99.0" : 0.8704869614846519, + "99.9" : 0.8704869614846519, + "99.99" : 0.8704869614846519, + "99.999" : 0.8704869614846519, + "99.9999" : 0.8704869614846519, + "100.0" : 0.8704869614846519 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8677172931089318, + 0.8685043429446764 + ], + [ + 0.8682406173417304, + 0.8704869614846519 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 107.1436562038279, + "scoreError" : 5.6105425024585065, + "scoreConfidence" : [ + 101.5331137013694, + 112.7541987062864 + ], + "scorePercentiles" : { + "0.0" : 102.50973848385428, + "50.0" : 109.21468173090412, + "90.0" : 109.90699541456834, + "95.0" : 109.90699541456834, + "99.0" : 109.90699541456834, + "99.9" : 109.90699541456834, + "99.99" : 109.90699541456834, + "99.999" : 109.90699541456834, + "99.9999" : 109.90699541456834, + "100.0" : 109.90699541456834 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 109.21468173090412, + 109.27836917733696, + 109.90699541456834 + ], + [ + 102.50973848385428, + 102.60092263928637, + 103.01205226543857 + ], + [ + 108.97543715441627, + 109.36582665700297, + 109.4288823116432 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.18715525560681903, + "scoreError" : 0.020286238893373214, + "scoreConfidence" : [ + 0.1668690167134458, + 0.20744149450019225 + ], + "scorePercentiles" : { + "0.0" : 0.17607753671162446, + "50.0" : 0.18194778879953422, + "90.0" : 0.20298734608748603, + "95.0" : 0.20298734608748603, + "99.0" : 0.20298734608748603, + "99.9" : 0.20298734608748603, + "99.99" : 0.20298734608748603, + "99.999" : 0.20298734608748603, + "99.9999" : 0.20298734608748603, + "100.0" : 0.20298734608748603 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.18297718427167767, + 0.18194778879953422, + 0.18188762704619862 + ], + [ + 0.20298734608748603, + 0.2028440355780933, + 0.20278723644401184 + ], + [ + 0.1767823894427945, + 0.17607753671162446, + 0.1761061560799507 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.33746284165580004, + "scoreError" : 0.009801170575544799, + "scoreConfidence" : [ + 0.32766167108025523, + 0.34726401223134484 + ], + "scorePercentiles" : { + "0.0" : 0.33322743102299235, + "50.0" : 0.3339327810131232, + "90.0" : 0.3462359468891736, + "95.0" : 0.3462359468891736, + "99.0" : 0.3462359468891736, + "99.9" : 0.3462359468891736, + "99.99" : 0.3462359468891736, + "99.999" : 0.3462359468891736, + "99.9999" : 0.3462359468891736, + "100.0" : 0.3462359468891736 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3339327810131232, + 0.333327132728909, + 0.33331685544297046 + ], + [ + 0.3462359468891736, + 0.3447156930368838, + 0.34466495712562467 + ], + [ + 0.3342104271439075, + 0.3335343504986159, + 0.33322743102299235 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1626035761133484, + "scoreError" : 0.009923728597793184, + "scoreConfidence" : [ + 0.15267984751555522, + 0.1725273047111416 + ], + "scorePercentiles" : { + "0.0" : 0.15574798043857463, + "50.0" : 0.16241545803287208, + "90.0" : 0.16958445535789993, + "95.0" : 0.16958445535789993, + "99.0" : 0.16958445535789993, + "99.9" : 0.16958445535789993, + "99.99" : 0.16958445535789993, + "99.999" : 0.16958445535789993, + "99.9999" : 0.16958445535789993, + "100.0" : 0.16958445535789993 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16958445535789993, + 0.16957912419663904, + 0.16929908774632627 + ], + [ + 0.16241545803287208, + 0.16258103080849956, + 0.1624111286765303 + ], + [ + 0.15574798043857463, + 0.15582760495520062, + 0.1559863148075933 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3948568791221134, + "scoreError" : 0.005118335017259271, + "scoreConfidence" : [ + 0.38973854410485415, + 0.3999752141393727 + ], + "scorePercentiles" : { + "0.0" : 0.39062994046875, + "50.0" : 0.3952583020829216, + "90.0" : 0.3990008796680498, + "95.0" : 0.3990008796680498, + "99.0" : 0.3990008796680498, + "99.9" : 0.3990008796680498, + "99.99" : 0.3990008796680498, + "99.999" : 0.3990008796680498, + "99.9999" : 0.3990008796680498, + "100.0" : 0.3990008796680498 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3913463903889802, + 0.39134656312123345, + 0.39062994046875 + ], + [ + 0.3974219333147876, + 0.3969439823363633, + 0.3966984339719941 + ], + [ + 0.3990008796680498, + 0.39506548674594083, + 0.3952583020829216 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1610574826858421, + "scoreError" : 0.003752410557245631, + "scoreConfidence" : [ + 0.15730507212859648, + 0.16480989324308773 + ], + "scorePercentiles" : { + "0.0" : 0.15879246556679422, + "50.0" : 0.1602639839738453, + "90.0" : 0.16460379410070283, + "95.0" : 0.16460379410070283, + "99.0" : 0.16460379410070283, + "99.9" : 0.16460379410070283, + "99.99" : 0.16460379410070283, + "99.999" : 0.16460379410070283, + "99.9999" : 0.16460379410070283, + "100.0" : 0.16460379410070283 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15879246556679422, + 0.15922639871029376, + 0.1590539176116934 + ], + [ + 0.16016096425311105, + 0.1602639839738453, + 0.1603011353231598 + ], + [ + 0.16460379410070283, + 0.16316207262196117, + 0.1639526120110175 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04835155109742807, + "scoreError" : 0.0014775111568661589, + "scoreConfidence" : [ + 0.04687403994056191, + 0.04982906225429423 + ], + "scorePercentiles" : { + "0.0" : 0.047276101358698225, + "50.0" : 0.048217913343684, + "90.0" : 0.04951674853308905, + "95.0" : 0.04951674853308905, + "99.0" : 0.04951674853308905, + "99.9" : 0.04951674853308905, + "99.99" : 0.04951674853308905, + "99.999" : 0.04951674853308905, + "99.9999" : 0.04951674853308905, + "100.0" : 0.04951674853308905 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04951674853308905, + 0.04938211956247994, + 0.04941198198959399 + ], + [ + 0.04821848832645425, + 0.0481013592933039, + 0.048217913343684 + ], + [ + 0.04749393822546021, + 0.04754530924408902, + 0.047276101358698225 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9625059.040573487, + "scoreError" : 219935.77309763603, + "scoreConfidence" : [ + 9405123.26747585, + 9844994.813671123 + ], + "scorePercentiles" : { + "0.0" : 9448406.368271954, + "50.0" : 9683659.49177154, + "90.0" : 9762830.43609756, + "95.0" : 9762830.43609756, + "99.0" : 9762830.43609756, + "99.9" : 9762830.43609756, + "99.99" : 9762830.43609756, + "99.999" : 9762830.43609756, + "99.9999" : 9762830.43609756, + "100.0" : 9762830.43609756 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9687952.249757987, + 9683659.49177154, + 9676237.632495165 + ], + [ + 9762830.43609756, + 9739261.683544304, + 9712223.050485438 + ], + [ + 9461725.996215705, + 9453234.456521738, + 9448406.368271954 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-02-28T00:03:05Z-c0366ce7f430d3ea6827a80a5dca1b7c43c3950e-jdk17.json b/performance-results/2025-02-28T00:03:05Z-c0366ce7f430d3ea6827a80a5dca1b7c43c3950e-jdk17.json new file mode 100644 index 0000000000..93b65412ac --- /dev/null +++ b/performance-results/2025-02-28T00:03:05Z-c0366ce7f430d3ea6827a80a5dca1b7c43c3950e-jdk17.json @@ -0,0 +1,1074 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4093139013067724, + "scoreError" : 0.021893836129409316, + "scoreConfidence" : [ + 3.387420065177363, + 3.4312077374361816 + ], + "scorePercentiles" : { + "0.0" : 3.404731404003703, + "50.0" : 3.409860333857129, + "90.0" : 3.412803533509129, + "95.0" : 3.412803533509129, + "99.0" : 3.412803533509129, + "99.9" : 3.412803533509129, + "99.99" : 3.412803533509129, + "99.999" : 3.412803533509129, + "99.9999" : 3.412803533509129, + "100.0" : 3.412803533509129 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.409284321996756, + 3.4104363457175024 + ], + [ + 3.404731404003703, + 3.412803533509129 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7182419922433345, + "scoreError" : 0.009837862041857262, + "scoreConfidence" : [ + 1.7084041302014772, + 1.7280798542851918 + ], + "scorePercentiles" : { + "0.0" : 1.7161595064751782, + "50.0" : 1.7186904440757775, + "90.0" : 1.719427574346604, + "95.0" : 1.719427574346604, + "99.0" : 1.719427574346604, + "99.9" : 1.719427574346604, + "99.99" : 1.719427574346604, + "99.999" : 1.719427574346604, + "99.9999" : 1.719427574346604, + "100.0" : 1.719427574346604 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.719427574346604, + 1.7193263365006115 + ], + [ + 1.7161595064751782, + 1.7180545516509436 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8656415344042727, + "scoreError" : 0.00216935852863811, + "scoreConfidence" : [ + 0.8634721758756346, + 0.8678108929329108 + ], + "scorePercentiles" : { + "0.0" : 0.8652472998061675, + "50.0" : 0.8656445886938953, + "90.0" : 0.8660296604231326, + "95.0" : 0.8660296604231326, + "99.0" : 0.8660296604231326, + "99.9" : 0.8660296604231326, + "99.99" : 0.8660296604231326, + "99.999" : 0.8660296604231326, + "99.9999" : 0.8660296604231326, + "100.0" : 0.8660296604231326 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8657711262503519, + 0.8655180511374387 + ], + [ + 0.8652472998061675, + 0.8660296604231326 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 70249.89615163156, + "scoreError" : 184.9343928170246, + "scoreConfidence" : [ + 70064.96175881453, + 70434.83054444859 + ], + "scorePercentiles" : { + "0.0" : 70120.69035144885, + "50.0" : 70222.45600654616, + "90.0" : 70403.71718522921, + "95.0" : 70403.71718522921, + "99.0" : 70403.71718522921, + "99.9" : 70403.71718522921, + "99.99" : 70403.71718522921, + "99.999" : 70403.71718522921, + "99.9999" : 70403.71718522921, + "100.0" : 70403.71718522921 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 70401.49822549731, + 70353.74617990099, + 70403.71718522921 + ], + [ + 70144.53735546515, + 70197.23574567295, + 70120.69035144885 + ], + [ + 70245.4038793827, + 70222.45600654616, + 70159.78043554082 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 324.1235870149517, + "scoreError" : 12.518422380833014, + "scoreConfidence" : [ + 311.6051646341187, + 336.64200939578467 + ], + "scorePercentiles" : { + "0.0" : 314.0885905749031, + "50.0" : 326.2222939474484, + "90.0" : 331.6432472176766, + "95.0" : 331.6432472176766, + "99.0" : 331.6432472176766, + "99.9" : 331.6432472176766, + "99.99" : 331.6432472176766, + "99.999" : 331.6432472176766, + "99.9999" : 331.6432472176766, + "100.0" : 331.6432472176766 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 325.97687376627675, + 327.32026111840463, + 331.126243086308 + ], + [ + 331.6432472176766, + 331.0286050083805, + 326.2222939474484 + ], + [ + 314.0885905749031, + 315.02124216928775, + 314.6849262458794 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 104.08364604746585, + "scoreError" : 1.343132091816652, + "scoreConfidence" : [ + 102.74051395564919, + 105.4267781392825 + ], + "scorePercentiles" : { + "0.0" : 103.10488102505084, + "50.0" : 103.9406500655117, + "90.0" : 105.49964296877762, + "95.0" : 105.49964296877762, + "99.0" : 105.49964296877762, + "99.9" : 105.49964296877762, + "99.99" : 105.49964296877762, + "99.999" : 105.49964296877762, + "99.9999" : 105.49964296877762, + "100.0" : 105.49964296877762 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 103.10488102505084, + 103.9406500655117, + 103.92876928971134 + ], + [ + 104.72044867134093, + 105.49964296877762, + 104.86104107178554 + ], + [ + 103.94586724796258, + 103.56578526150736, + 103.18572882554477 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.01420008079255139, + "scoreError" : 3.534476823480423E-5, + "scoreConfidence" : [ + 0.014164736024316586, + 0.014235425560786193 + ], + "scorePercentiles" : { + "0.0" : 0.01417365751768496, + "50.0" : 0.014199791465741986, + "90.0" : 0.014234270268654507, + "95.0" : 0.014234270268654507, + "99.0" : 0.014234270268654507, + "99.9" : 0.014234270268654507, + "99.99" : 0.014234270268654507, + "99.999" : 0.014234270268654507, + "99.9999" : 0.014234270268654507, + "100.0" : 0.014234270268654507 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014199791465741986, + 0.014212377463151328, + 0.014190600920106542 + ], + [ + 0.01422226798704651, + 0.014209003600516065, + 0.014234270268654507 + ], + [ + 0.01417841923080195, + 0.01418033867925866, + 0.01417365751768496 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 1.0020239600224718, + "scoreError" : 0.020447026162184023, + "scoreConfidence" : [ + 0.9815769338602878, + 1.022470986184656 + ], + "scorePercentiles" : { + "0.0" : 0.9786403171543204, + "50.0" : 1.0060794966800806, + "90.0" : 1.017381385757884, + "95.0" : 1.017381385757884, + "99.0" : 1.017381385757884, + "99.9" : 1.017381385757884, + "99.99" : 1.017381385757884, + "99.999" : 1.017381385757884, + "99.9999" : 1.017381385757884, + "100.0" : 1.017381385757884 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 1.0114736057449176, + 1.017381385757884, + 1.0080577986090111 + ], + [ + 0.9922600353209644, + 0.9939197001590141, + 0.9989399211866946 + ], + [ + 1.0114633795893597, + 0.9786403171543204, + 1.0060794966800806 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.013369104906817872, + "scoreError" : 5.803541797248806E-4, + "scoreConfidence" : [ + 0.012788750727092991, + 0.013949459086542753 + ], + "scorePercentiles" : { + "0.0" : 0.013171773939042702, + "50.0" : 0.013363062333361295, + "90.0" : 0.01359549083414451, + "95.0" : 0.01359549083414451, + "99.0" : 0.01359549083414451, + "99.9" : 0.01359549083414451, + "99.99" : 0.01359549083414451, + "99.999" : 0.01359549083414451, + "99.9999" : 0.01359549083414451, + "100.0" : 0.01359549083414451 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013539637246645636, + 0.01359549083414451, + 0.0135357767250224 + ], + [ + 0.013181602754351786, + 0.013171773939042702, + 0.013190347941700192 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.8901509541468826, + "scoreError" : 0.03736323494833567, + "scoreConfidence" : [ + 3.852787719198547, + 3.927514189095218 + ], + "scorePercentiles" : { + "0.0" : 3.8659979497681607, + "50.0" : 3.8930672909390642, + "90.0" : 3.9019652425897036, + "95.0" : 3.9019652425897036, + "99.0" : 3.9019652425897036, + "99.9" : 3.9019652425897036, + "99.99" : 3.9019652425897036, + "99.999" : 3.9019652425897036, + "99.9999" : 3.9019652425897036, + "100.0" : 3.9019652425897036 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.8659979497681607, + 3.9019652425897036, + 3.901129496099844 + ], + [ + 3.89117386848249, + 3.8949607133956388, + 3.8856784545454546 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.9819383742313637, + "scoreError" : 0.05841787458508158, + "scoreConfidence" : [ + 2.923520499646282, + 3.0403562488164453 + ], + "scorePercentiles" : { + "0.0" : 2.9387547916544228, + "50.0" : 2.9656987298339264, + "90.0" : 3.033763831058538, + "95.0" : 3.033763831058538, + "99.0" : 3.033763831058538, + "99.9" : 3.033763831058538, + "99.99" : 3.033763831058538, + "99.999" : 3.033763831058538, + "99.9999" : 3.033763831058538, + "100.0" : 3.033763831058538 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.033763831058538, + 3.01548591046126, + 3.0099463171832683 + ], + [ + 3.007374973541792, + 2.9656987298339264, + 2.9656569952550416 + ], + [ + 2.9459099366715757, + 2.954853882422452, + 2.9387547916544228 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.18768522962156822, + "scoreError" : 0.00834799006050313, + "scoreConfidence" : [ + 0.1793372395610651, + 0.19603321968207135 + ], + "scorePercentiles" : { + "0.0" : 0.18104723394586766, + "50.0" : 0.18936799948871383, + "90.0" : 0.19284200376034094, + "95.0" : 0.19284200376034094, + "99.0" : 0.19284200376034094, + "99.9" : 0.19284200376034094, + "99.99" : 0.19284200376034094, + "99.999" : 0.19284200376034094, + "99.9999" : 0.19284200376034094, + "100.0" : 0.19284200376034094 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.19284200376034094, + 0.1923480044623966, + 0.19192666618685705 + ], + [ + 0.18179211868966896, + 0.18107432534810872, + 0.18104723394586766 + ], + [ + 0.18942655156084257, + 0.18934216315131777, + 0.18936799948871383 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.34058191618212075, + "scoreError" : 0.003858026612173194, + "scoreConfidence" : [ + 0.33672388956994753, + 0.34443994279429396 + ], + "scorePercentiles" : { + "0.0" : 0.33769021212939826, + "50.0" : 0.3407948157374591, + "90.0" : 0.3438218884686791, + "95.0" : 0.3438218884686791, + "99.0" : 0.3438218884686791, + "99.9" : 0.3438218884686791, + "99.99" : 0.3438218884686791, + "99.999" : 0.3438218884686791, + "99.9999" : 0.3438218884686791, + "100.0" : 0.3438218884686791 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.33851800196337295, + 0.33776987850846085, + 0.33769021212939826 + ], + [ + 0.3438218884686791, + 0.34235571417322835, + 0.34216245375851095 + ], + [ + 0.3407948157374591, + 0.3426416534982526, + 0.33948262740172447 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16430571049586792, + "scoreError" : 0.006062912563558703, + "scoreConfidence" : [ + 0.15824279793230922, + 0.17036862305942663 + ], + "scorePercentiles" : { + "0.0" : 0.16106335164038718, + "50.0" : 0.16263530021629885, + "90.0" : 0.16930342624477288, + "95.0" : 0.16930342624477288, + "99.0" : 0.16930342624477288, + "99.9" : 0.16930342624477288, + "99.99" : 0.16930342624477288, + "99.999" : 0.16930342624477288, + "99.9999" : 0.16930342624477288, + "100.0" : 0.16930342624477288 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16297191605553926, + 0.16218497714851035, + 0.16263530021629885 + ], + [ + 0.16139171223149298, + 0.16106335164038718, + 0.16137712693648334 + ], + [ + 0.16871034478279207, + 0.16911323920653443, + 0.16930342624477288 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.4014406332579484, + "scoreError" : 0.0064106096443937105, + "scoreConfidence" : [ + 0.39503002361355466, + 0.4078512429023421 + ], + "scorePercentiles" : { + "0.0" : 0.39696473793267706, + "50.0" : 0.4002436985511887, + "90.0" : 0.40840316928040515, + "95.0" : 0.40840316928040515, + "99.0" : 0.40840316928040515, + "99.9" : 0.40840316928040515, + "99.99" : 0.40840316928040515, + "99.999" : 0.40840316928040515, + "99.9999" : 0.40840316928040515, + "100.0" : 0.40840316928040515 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.39874033963317385, + 0.39796666401368935, + 0.39696473793267706 + ], + [ + 0.40840316928040515, + 0.4047517820860485, + 0.40437363024666395 + ], + [ + 0.40258169533011273, + 0.4002436985511887, + 0.3989399822475765 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1622603517749877, + "scoreError" : 0.0022710755266089396, + "scoreConfidence" : [ + 0.15998927624837878, + 0.16453142730159664 + ], + "scorePercentiles" : { + "0.0" : 0.16080216116998183, + "50.0" : 0.16173225106740846, + "90.0" : 0.1650935754874284, + "95.0" : 0.1650935754874284, + "99.0" : 0.1650935754874284, + "99.9" : 0.1650935754874284, + "99.99" : 0.1650935754874284, + "99.999" : 0.1650935754874284, + "99.9999" : 0.1650935754874284, + "100.0" : 0.1650935754874284 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16263024725569594, + 0.16173225106740846, + 0.16164135474485591 + ], + [ + 0.1650935754874284, + 0.1630933295387827, + 0.163012935448114 + ], + [ + 0.16125758538394555, + 0.16080216116998183, + 0.16107972587867658 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.048687190219174316, + "scoreError" : 0.0012339357980707558, + "scoreConfidence" : [ + 0.04745325442110356, + 0.04992112601724507 + ], + "scorePercentiles" : { + "0.0" : 0.04793252728754254, + "50.0" : 0.048637015865141436, + "90.0" : 0.05031688491166984, + "95.0" : 0.05031688491166984, + "99.0" : 0.05031688491166984, + "99.9" : 0.05031688491166984, + "99.99" : 0.05031688491166984, + "99.999" : 0.05031688491166984, + "99.9999" : 0.05031688491166984, + "100.0" : 0.05031688491166984 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04793252728754254, + 0.04806552263605908, + 0.04803455098325536 + ], + [ + 0.05031688491166984, + 0.04888433324860193, + 0.048948174551274835 + ], + [ + 0.0489710829950295, + 0.048637015865141436, + 0.04839461949399433 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9679679.952722099, + "scoreError" : 352471.94224217994, + "scoreConfidence" : [ + 9327208.01047992, + 1.0032151894964278E7 + ], + "scorePercentiles" : { + "0.0" : 9410322.933207903, + "50.0" : 9733389.864785992, + "90.0" : 9917231.136769079, + "95.0" : 9917231.136769079, + "99.0" : 9917231.136769079, + "99.9" : 9917231.136769079, + "99.99" : 9917231.136769079, + "99.999" : 9917231.136769079, + "99.9999" : 9917231.136769079, + "100.0" : 9917231.136769079 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9412682.519285042, + 9417082.15913371, + 9410322.933207903 + ], + [ + 9917231.136769079, + 9867065.872781064, + 9860209.638423646 + ], + [ + 9784028.08797654, + 9715107.362135923, + 9733389.864785992 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-02-28T01:21:28Z-233fcc4f8943e346ae4ff21e5561b85f426f535b-jdk17.json b/performance-results/2025-02-28T01:21:28Z-233fcc4f8943e346ae4ff21e5561b85f426f535b-jdk17.json new file mode 100644 index 0000000000..e6aa8705dc --- /dev/null +++ b/performance-results/2025-02-28T01:21:28Z-233fcc4f8943e346ae4ff21e5561b85f426f535b-jdk17.json @@ -0,0 +1,1074 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.425004188960926, + "scoreError" : 0.0174529961835408, + "scoreConfidence" : [ + 3.407551192777385, + 3.442457185144467 + ], + "scorePercentiles" : { + "0.0" : 3.4215569792394542, + "50.0" : 3.4251662860439884, + "90.0" : 3.4281272045162727, + "95.0" : 3.4281272045162727, + "99.0" : 3.4281272045162727, + "99.9" : 3.4281272045162727, + "99.99" : 3.4281272045162727, + "99.999" : 3.4281272045162727, + "99.9999" : 3.4281272045162727, + "100.0" : 3.4281272045162727 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4215569792394542, + 3.4281272045162727 + ], + [ + 3.4248539784419494, + 3.425478593646028 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7291184118820688, + "scoreError" : 0.004159502908174387, + "scoreConfidence" : [ + 1.7249589089738944, + 1.7332779147902433 + ], + "scorePercentiles" : { + "0.0" : 1.7284478976539939, + "50.0" : 1.7290384028345496, + "90.0" : 1.7299489442051819, + "95.0" : 1.7299489442051819, + "99.0" : 1.7299489442051819, + "99.9" : 1.7299489442051819, + "99.99" : 1.7299489442051819, + "99.999" : 1.7299489442051819, + "99.9999" : 1.7299489442051819, + "100.0" : 1.7299489442051819 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7288253003704586, + 1.7284478976539939 + ], + [ + 1.7292515052986406, + 1.7299489442051819 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8678256118833285, + "scoreError" : 0.006561550956313254, + "scoreConfidence" : [ + 0.8612640609270152, + 0.8743871628396418 + ], + "scorePercentiles" : { + "0.0" : 0.8668878985260587, + "50.0" : 0.8676384753786253, + "90.0" : 0.8691375982500048, + "95.0" : 0.8691375982500048, + "99.0" : 0.8691375982500048, + "99.9" : 0.8691375982500048, + "99.99" : 0.8691375982500048, + "99.999" : 0.8691375982500048, + "99.9999" : 0.8691375982500048, + "100.0" : 0.8691375982500048 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8691375982500048, + 0.8680980953764585 + ], + [ + 0.8671788553807921, + 0.8668878985260587 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 69300.6801932766, + "scoreError" : 2948.965995832353, + "scoreConfidence" : [ + 66351.71419744425, + 72249.64618910894 + ], + "scorePercentiles" : { + "0.0" : 66905.52137361391, + "50.0" : 70369.64562102163, + "90.0" : 70576.55566451224, + "95.0" : 70576.55566451224, + "99.0" : 70576.55566451224, + "99.9" : 70576.55566451224, + "99.99" : 70576.55566451224, + "99.999" : 70576.55566451224, + "99.9999" : 70576.55566451224, + "100.0" : 70576.55566451224 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 70569.49827302896, + 70524.63925300592, + 70576.55566451224 + ], + [ + 70423.57707233248, + 70351.35599478213, + 70369.64562102163 + ], + [ + 66905.52137361391, + 67030.73245789492, + 66954.59602929726 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 349.52049772404257, + "scoreError" : 7.200395101991134, + "scoreConfidence" : [ + 342.3201026220514, + 356.7208928260337 + ], + "scorePercentiles" : { + "0.0" : 344.4032078203839, + "50.0" : 350.22761457137, + "90.0" : 356.6250203740414, + "95.0" : 356.6250203740414, + "99.0" : 356.6250203740414, + "99.9" : 356.6250203740414, + "99.99" : 356.6250203740414, + "99.999" : 356.6250203740414, + "99.9999" : 356.6250203740414, + "100.0" : 356.6250203740414 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 347.53019390364983, + 350.22761457137, + 351.764415757937 + ], + [ + 356.6250203740414, + 353.5611755887331, + 351.5199872665624 + ], + [ + 344.98688408164884, + 345.0659801520564, + 344.4032078203839 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 104.37242796876829, + "scoreError" : 6.922906797014581, + "scoreConfidence" : [ + 97.44952117175372, + 111.29533476578287 + ], + "scorePercentiles" : { + "0.0" : 99.71513007956918, + "50.0" : 103.72256768038186, + "90.0" : 109.56034934265045, + "95.0" : 109.56034934265045, + "99.0" : 109.56034934265045, + "99.9" : 109.56034934265045, + "99.99" : 109.56034934265045, + "99.999" : 109.56034934265045, + "99.9999" : 109.56034934265045, + "100.0" : 109.56034934265045 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 99.71513007956918, + 100.2024660758994, + 100.0292213935468 + ], + [ + 109.56034934265045, + 109.26460933508037, + 109.43978481861957 + ], + [ + 103.66061563143764, + 103.75710736172933, + 103.72256768038186 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014193070731641019, + "scoreError" : 1.3985027221844092E-4, + "scoreConfidence" : [ + 0.014053220459422578, + 0.01433292100385946 + ], + "scorePercentiles" : { + "0.0" : 0.014072886206629656, + "50.0" : 0.014221143006056711, + "90.0" : 0.014279952131259906, + "95.0" : 0.014279952131259906, + "99.0" : 0.014279952131259906, + "99.9" : 0.014279952131259906, + "99.99" : 0.014279952131259906, + "99.999" : 0.014279952131259906, + "99.9999" : 0.014279952131259906, + "100.0" : 0.014279952131259906 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014221143006056711, + 0.014226597827339501, + 0.01421779372490588 + ], + [ + 0.014279952131259906, + 0.014266136113009278, + 0.014266727080777242 + ], + [ + 0.014102687160922474, + 0.014083713333868507, + 0.014072886206629656 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 1.0134086142929557, + "scoreError" : 0.016656611892461523, + "scoreConfidence" : [ + 0.9967520024004942, + 1.0300652261854173 + ], + "scorePercentiles" : { + "0.0" : 0.9993761009293495, + "50.0" : 1.0191509573015387, + "90.0" : 1.0243929557467732, + "95.0" : 1.0243929557467732, + "99.0" : 1.0243929557467732, + "99.9" : 1.0243929557467732, + "99.99" : 1.0243929557467732, + "99.999" : 1.0243929557467732, + "99.9999" : 1.0243929557467732, + "100.0" : 1.0243929557467732 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 1.020094274479804, + 1.0235628798362333, + 1.0243929557467732 + ], + [ + 1.0194230865443425, + 1.0093312450545013, + 1.0191509573015387 + ], + [ + 1.0041463041470027, + 0.9993761009293495, + 1.0011997245970568 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.012999582896411559, + "scoreError" : 6.992813461278419E-4, + "scoreConfidence" : [ + 0.012300301550283717, + 0.0136988642425394 + ], + "scorePercentiles" : { + "0.0" : 0.01269426261526119, + "50.0" : 0.012976330358043518, + "90.0" : 0.013273546866330943, + "95.0" : 0.013273546866330943, + "99.0" : 0.013273546866330943, + "99.9" : 0.013273546866330943, + "99.99" : 0.013273546866330943, + "99.999" : 0.013273546866330943, + "99.9999" : 0.013273546866330943, + "100.0" : 0.013273546866330943 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013119807961963936, + 0.013259157202067318, + 0.013273546866330943 + ], + [ + 0.01269426261526119, + 0.012817869978722859, + 0.0128328527541231 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.709114407689517, + "scoreError" : 0.05197450643726689, + "scoreConfidence" : [ + 3.65713990125225, + 3.7610889141267836 + ], + "scorePercentiles" : { + "0.0" : 3.6743841410727405, + "50.0" : 3.712563719022545, + "90.0" : 3.7299658426547353, + "95.0" : 3.7299658426547353, + "99.0" : 3.7299658426547353, + "99.9" : 3.7299658426547353, + "99.99" : 3.7299658426547353, + "99.999" : 3.7299658426547353, + "99.9999" : 3.7299658426547353, + "100.0" : 3.7299658426547353 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.6743841410727405, + 3.7137454847809948, + 3.716191622585438 + ], + [ + 3.711381953264095, + 3.7299658426547353, + 3.7090174017790956 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.908876032349584, + "scoreError" : 0.06653523093807073, + "scoreConfidence" : [ + 2.8423408014115132, + 2.975411263287655 + ], + "scorePercentiles" : { + "0.0" : 2.859286373927959, + "50.0" : 2.9278416536885246, + "90.0" : 2.9591043917159765, + "95.0" : 2.9591043917159765, + "99.0" : 2.9591043917159765, + "99.9" : 2.9591043917159765, + "99.99" : 2.9591043917159765, + "99.999" : 2.9591043917159765, + "99.9999" : 2.9591043917159765, + "100.0" : 2.9591043917159765 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.885501371609925, + 2.9278416536885246, + 2.932055654353562 + ], + [ + 2.859286373927959, + 2.8695159586800574, + 2.862702666571265 + ], + [ + 2.930786301201289, + 2.9591043917159765, + 2.953089919397697 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.18940902420611713, + "scoreError" : 0.012623487496932687, + "scoreConfidence" : [ + 0.17678553670918445, + 0.2020325117030498 + ], + "scorePercentiles" : { + "0.0" : 0.17928718473233174, + "50.0" : 0.19351137820736097, + "90.0" : 0.19568663671408723, + "95.0" : 0.19568663671408723, + "99.0" : 0.19568663671408723, + "99.9" : 0.19568663671408723, + "99.99" : 0.19568663671408723, + "99.999" : 0.19568663671408723, + "99.9999" : 0.19568663671408723, + "100.0" : 0.19568663671408723 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.19346425306635712, + 0.19351137820736097, + 0.19361049129736113 + ], + [ + 0.17968087045189113, + 0.1793736514501982, + 0.17928718473233174 + ], + [ + 0.19568663671408723, + 0.19518574770660108, + 0.19488100422886542 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3257654980395767, + "scoreError" : 0.003647712937679187, + "scoreConfidence" : [ + 0.32211778510189754, + 0.3294132109772559 + ], + "scorePercentiles" : { + "0.0" : 0.32280374912037185, + "50.0" : 0.32625077087955107, + "90.0" : 0.3281728269943885, + "95.0" : 0.3281728269943885, + "99.0" : 0.3281728269943885, + "99.9" : 0.3281728269943885, + "99.99" : 0.3281728269943885, + "99.999" : 0.3281728269943885, + "99.9999" : 0.3281728269943885, + "100.0" : 0.3281728269943885 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.32630149026005806, + 0.32592821641353237, + 0.32625077087955107 + ], + [ + 0.32797510793348855, + 0.3279792810665442, + 0.3281728269943885 + ], + [ + 0.32311754786907493, + 0.32280374912037185, + 0.32336049181918125 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1664925346902736, + "scoreError" : 0.009505190969284327, + "scoreConfidence" : [ + 0.1569873437209893, + 0.17599772565955793 + ], + "scorePercentiles" : { + "0.0" : 0.1592184539071456, + "50.0" : 0.16805786182673724, + "90.0" : 0.1724910860888314, + "95.0" : 0.1724910860888314, + "99.0" : 0.1724910860888314, + "99.9" : 0.1724910860888314, + "99.99" : 0.1724910860888314, + "99.999" : 0.1724910860888314, + "99.9999" : 0.1724910860888314, + "100.0" : 0.1724910860888314 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15938114037995665, + 0.1594989847523047, + 0.1592184539071456 + ], + [ + 0.1676237910793007, + 0.1681097820327472, + 0.16805786182673724 + ], + [ + 0.1724910860888314, + 0.172039499939787, + 0.17201221220565216 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.38993431325865663, + "scoreError" : 0.009461256488847478, + "scoreConfidence" : [ + 0.38047305676980914, + 0.3993955697475041 + ], + "scorePercentiles" : { + "0.0" : 0.3824617474280032, + "50.0" : 0.39044726392847384, + "90.0" : 0.3966692765856174, + "95.0" : 0.3966692765856174, + "99.0" : 0.3966692765856174, + "99.9" : 0.3966692765856174, + "99.99" : 0.3966692765856174, + "99.999" : 0.3966692765856174, + "99.9999" : 0.3966692765856174, + "100.0" : 0.3966692765856174 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3966692765856174, + 0.39627204069583133, + 0.39586610612778084 + ], + [ + 0.3852658757945833, + 0.38265304564934566, + 0.3824617474280032 + ], + [ + 0.39087826020168853, + 0.39044726392847384, + 0.38889520291658564 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1580856687466588, + "scoreError" : 0.00260313401060033, + "scoreConfidence" : [ + 0.15548253473605847, + 0.16068880275725914 + ], + "scorePercentiles" : { + "0.0" : 0.1561233264484099, + "50.0" : 0.15758299941695555, + "90.0" : 0.16031973716273626, + "95.0" : 0.16031973716273626, + "99.0" : 0.16031973716273626, + "99.9" : 0.16031973716273626, + "99.99" : 0.16031973716273626, + "99.999" : 0.16031973716273626, + "99.9999" : 0.16031973716273626, + "100.0" : 0.16031973716273626 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1595882914159871, + 0.16031973716273626, + 0.1598122411666001 + ], + [ + 0.15758299941695555, + 0.15727130698581449, + 0.15731520293229298 + ], + [ + 0.15852091390980425, + 0.1561233264484099, + 0.15623699928132861 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04749293708460388, + "scoreError" : 8.250305964143997E-4, + "scoreConfidence" : [ + 0.04666790648818948, + 0.04831796768101828 + ], + "scorePercentiles" : { + "0.0" : 0.046976803193438374, + "50.0" : 0.0473359307863807, + "90.0" : 0.048134309229621426, + "95.0" : 0.048134309229621426, + "99.0" : 0.048134309229621426, + "99.9" : 0.048134309229621426, + "99.99" : 0.048134309229621426, + "99.999" : 0.048134309229621426, + "99.9999" : 0.048134309229621426, + "100.0" : 0.048134309229621426 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04756417431092297, + 0.04726491346844633, + 0.0473359307863807 + ], + [ + 0.04698740704143291, + 0.046976803193438374, + 0.04701674583554701 + ], + [ + 0.04810798255151081, + 0.048134309229621426, + 0.048048167344134377 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9524975.016775662, + "scoreError" : 289751.35326766694, + "scoreConfidence" : [ + 9235223.663507994, + 9814726.37004333 + ], + "scorePercentiles" : { + "0.0" : 9370765.244382022, + "50.0" : 9429927.322337417, + "90.0" : 9768079.684570312, + "95.0" : 9768079.684570312, + "99.0" : 9768079.684570312, + "99.9" : 9768079.684570312, + "99.99" : 9768079.684570312, + "99.999" : 9768079.684570312, + "99.9999" : 9768079.684570312, + "100.0" : 9768079.684570312 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9742250.733203506, + 9768079.684570312, + 9749335.159844054 + ], + [ + 9435293.098113207, + 9427336.44674835, + 9429927.322337417 + ], + [ + 9397928.663849765, + 9370765.244382022, + 9403858.79793233 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-02-28T05:10:58Z-77adc96ca0deeb4098d1ff1450312cf30d18e6a4-jdk17.json b/performance-results/2025-02-28T05:10:58Z-77adc96ca0deeb4098d1ff1450312cf30d18e6a4-jdk17.json new file mode 100644 index 0000000000..d7a3282577 --- /dev/null +++ b/performance-results/2025-02-28T05:10:58Z-77adc96ca0deeb4098d1ff1450312cf30d18e6a4-jdk17.json @@ -0,0 +1,1074 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4155242671178643, + "scoreError" : 0.021366874756141404, + "scoreConfidence" : [ + 3.394157392361723, + 3.4368911418740056 + ], + "scorePercentiles" : { + "0.0" : 3.4126757505658514, + "50.0" : 3.414666030565734, + "90.0" : 3.420089256774136, + "95.0" : 3.420089256774136, + "99.0" : 3.420089256774136, + "99.9" : 3.420089256774136, + "99.99" : 3.420089256774136, + "99.999" : 3.420089256774136, + "99.9999" : 3.420089256774136, + "100.0" : 3.420089256774136 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4157554002096697, + 3.413576660921798 + ], + [ + 3.4126757505658514, + 3.420089256774136 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7256630448941475, + "scoreError" : 0.011635721260581646, + "scoreConfidence" : [ + 1.714027323633566, + 1.737298766154729 + ], + "scorePercentiles" : { + "0.0" : 1.723193635282295, + "50.0" : 1.725973087245099, + "90.0" : 1.7275123698040975, + "95.0" : 1.7275123698040975, + "99.0" : 1.7275123698040975, + "99.9" : 1.7275123698040975, + "99.99" : 1.7275123698040975, + "99.999" : 1.7275123698040975, + "99.9999" : 1.7275123698040975, + "100.0" : 1.7275123698040975 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7260644171569068, + 1.7275123698040975 + ], + [ + 1.723193635282295, + 1.7258817573332907 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8674451074711825, + "scoreError" : 0.004249137348369588, + "scoreConfidence" : [ + 0.8631959701228129, + 0.8716942448195522 + ], + "scorePercentiles" : { + "0.0" : 0.8665786884079261, + "50.0" : 0.8675735756317964, + "90.0" : 0.8680545902132113, + "95.0" : 0.8680545902132113, + "99.0" : 0.8680545902132113, + "99.9" : 0.8680545902132113, + "99.99" : 0.8680545902132113, + "99.999" : 0.8680545902132113, + "99.9999" : 0.8680545902132113, + "100.0" : 0.8680545902132113 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8673071258039897, + 0.8680545902132113 + ], + [ + 0.8665786884079261, + 0.8678400254596029 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 70504.76307379914, + "scoreError" : 624.3060851188214, + "scoreConfidence" : [ + 69880.45698868032, + 71129.06915891796 + ], + "scorePercentiles" : { + "0.0" : 69782.18803539468, + "50.0" : 70549.373916216, + "90.0" : 70890.4395602008, + "95.0" : 70890.4395602008, + "99.0" : 70890.4395602008, + "99.9" : 70890.4395602008, + "99.99" : 70890.4395602008, + "99.999" : 70890.4395602008, + "99.9999" : 70890.4395602008, + "100.0" : 70890.4395602008 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 70810.01885219604, + 70549.373916216, + 70502.1469169721 + ], + [ + 70244.23636788203, + 69782.18803539468, + 70180.44548991376 + ], + [ + 70797.86184337315, + 70786.15668204376, + 70890.4395602008 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 344.1163493384629, + "scoreError" : 4.629038164553738, + "scoreConfidence" : [ + 339.4873111739092, + 348.7453875030166 + ], + "scorePercentiles" : { + "0.0" : 339.99341521153025, + "50.0" : 344.63463159856883, + "90.0" : 347.6493297625378, + "95.0" : 347.6493297625378, + "99.0" : 347.6493297625378, + "99.9" : 347.6493297625378, + "99.99" : 347.6493297625378, + "99.999" : 347.6493297625378, + "99.9999" : 347.6493297625378, + "100.0" : 347.6493297625378 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 342.65194830682475, + 343.2995607102032, + 339.99341521153025 + ], + [ + 345.1038421289899, + 347.6493297625378, + 346.38617001258297 + ], + [ + 344.63463159856883, + 340.37714261970393, + 346.9511036952247 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 105.35398262068469, + "scoreError" : 3.698496186029317, + "scoreConfidence" : [ + 101.65548643465537, + 109.052478806714 + ], + "scorePercentiles" : { + "0.0" : 102.45147063371301, + "50.0" : 106.25917608524738, + "90.0" : 108.11542107904748, + "95.0" : 108.11542107904748, + "99.0" : 108.11542107904748, + "99.9" : 108.11542107904748, + "99.99" : 108.11542107904748, + "99.999" : 108.11542107904748, + "99.9999" : 108.11542107904748, + "100.0" : 108.11542107904748 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 102.66020454166096, + 102.45147063371301, + 102.92241228943182 + ], + [ + 106.7842668012313, + 107.62840877904392, + 108.11542107904748 + ], + [ + 104.88238605208642, + 106.25917608524738, + 106.48209732469995 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014213492598747074, + "scoreError" : 7.099203275016753E-5, + "scoreConfidence" : [ + 0.014142500565996906, + 0.014284484631497242 + ], + "scorePercentiles" : { + "0.0" : 0.014149042191943632, + "50.0" : 0.01422631078726077, + "90.0" : 0.014281189885095554, + "95.0" : 0.014281189885095554, + "99.0" : 0.014281189885095554, + "99.9" : 0.014281189885095554, + "99.99" : 0.014281189885095554, + "99.999" : 0.014281189885095554, + "99.9999" : 0.014281189885095554, + "100.0" : 0.014281189885095554 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014203040847456905, + 0.014155791548526187, + 0.014197787038719717 + ], + [ + 0.014244770724807378, + 0.014281189885095554, + 0.014236574419438972 + ], + [ + 0.014149042191943632, + 0.01422692594547454, + 0.01422631078726077 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 1.0081913559861528, + "scoreError" : 0.016135465762877176, + "scoreConfidence" : [ + 0.9920558902232757, + 1.02432682174903 + ], + "scorePercentiles" : { + "0.0" : 0.9921777786486755, + "50.0" : 1.006073398390342, + "90.0" : 1.0239972782101168, + "95.0" : 1.0239972782101168, + "99.0" : 1.0239972782101168, + "99.9" : 1.0239972782101168, + "99.99" : 1.0239972782101168, + "99.999" : 1.0239972782101168, + "99.9999" : 1.0239972782101168, + "100.0" : 1.0239972782101168 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 1.0142654561866127, + 1.01110784774037, + 1.0239972782101168 + ], + [ + 1.0051798572720876, + 1.004683809121961, + 1.0170640514593714 + ], + [ + 1.006073398390342, + 0.9921777786486755, + 0.9991727268458388 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.01318987517952846, + "scoreError" : 8.277840973854652E-4, + "scoreConfidence" : [ + 0.012362091082142994, + 0.014017659276913926 + ], + "scorePercentiles" : { + "0.0" : 0.012867848170490049, + "50.0" : 0.013192078718330464, + "90.0" : 0.013497093532112692, + "95.0" : 0.013497093532112692, + "99.0" : 0.013497093532112692, + "99.9" : 0.013497093532112692, + "99.99" : 0.013497093532112692, + "99.999" : 0.013497093532112692, + "99.9999" : 0.013497093532112692, + "100.0" : 0.013497093532112692 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013497093532112692, + 0.01340318480504372, + 0.013467493731061882 + ], + [ + 0.012867848170490049, + 0.012922658206845218, + 0.012980972631617207 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.6633665231890657, + "scoreError" : 0.06570786988662425, + "scoreConfidence" : [ + 3.5976586533024415, + 3.72907439307569 + ], + "scorePercentiles" : { + "0.0" : 3.635598972383721, + "50.0" : 3.6661064322808183, + "90.0" : 3.691381441328413, + "95.0" : 3.691381441328413, + "99.0" : 3.691381441328413, + "99.9" : 3.691381441328413, + "99.99" : 3.691381441328413, + "99.999" : 3.691381441328413, + "99.9999" : 3.691381441328413, + "100.0" : 3.691381441328413 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.6367515265454546, + 3.6622488674963396, + 3.669963997065297 + ], + [ + 3.635598972383721, + 3.691381441328413, + 3.6842543343151695 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.8219502049935965, + "scoreError" : 0.04334966840170217, + "scoreConfidence" : [ + 2.7786005365918944, + 2.8652998733952986 + ], + "scorePercentiles" : { + "0.0" : 2.784729027561247, + "50.0" : 2.8237416016374928, + "90.0" : 2.8593693684962838, + "95.0" : 2.8593693684962838, + "99.0" : 2.8593693684962838, + "99.9" : 2.8593693684962838, + "99.99" : 2.8593693684962838, + "99.999" : 2.8593693684962838, + "99.9999" : 2.8593693684962838, + "100.0" : 2.8593693684962838 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.787435985785953, + 2.784729027561247, + 2.8094674806179776 + ], + [ + 2.82518856299435, + 2.815962915259009, + 2.8237416016374928 + ], + [ + 2.8466063020210646, + 2.84505060056899, + 2.8593693684962838 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.181212277502675, + "scoreError" : 0.015454213970487527, + "scoreConfidence" : [ + 0.16575806353218747, + 0.1966664914731625 + ], + "scorePercentiles" : { + "0.0" : 0.17226614054882775, + "50.0" : 0.17801267326485928, + "90.0" : 0.19332841403908985, + "95.0" : 0.19332841403908985, + "99.0" : 0.19332841403908985, + "99.9" : 0.19332841403908985, + "99.99" : 0.19332841403908985, + "99.999" : 0.19332841403908985, + "99.9999" : 0.19332841403908985, + "100.0" : 0.19332841403908985 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.19299061562807573, + 0.1928803875248327, + 0.19332841403908985 + ], + [ + 0.1729473925495486, + 0.17255121123285308, + 0.17226614054882775 + ], + [ + 0.1783403926418661, + 0.17801267326485928, + 0.17759327009412182 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.33635890077558334, + "scoreError" : 0.020346260493578534, + "scoreConfidence" : [ + 0.3160126402820048, + 0.35670516126916185 + ], + "scorePercentiles" : { + "0.0" : 0.3262282423501011, + "50.0" : 0.329679224705766, + "90.0" : 0.3527149473405756, + "95.0" : 0.3527149473405756, + "99.0" : 0.3527149473405756, + "99.9" : 0.3527149473405756, + "99.99" : 0.3527149473405756, + "99.999" : 0.3527149473405756, + "99.9999" : 0.3527149473405756, + "100.0" : 0.3527149473405756 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3524606698269482, + 0.3519048874305018, + 0.3527149473405756 + ], + [ + 0.3262282423501011, + 0.3267454162255767, + 0.32682386309562717 + ], + [ + 0.3311071462437506, + 0.3295657097614026, + 0.329679224705766 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17155921178043101, + "scoreError" : 0.005706412048826315, + "scoreConfidence" : [ + 0.1658527997316047, + 0.17726562382925734 + ], + "scorePercentiles" : { + "0.0" : 0.16605277506932567, + "50.0" : 0.17356418499748338, + "90.0" : 0.17465667584183317, + "95.0" : 0.17465667584183317, + "99.0" : 0.17465667584183317, + "99.9" : 0.17465667584183317, + "99.99" : 0.17465667584183317, + "99.999" : 0.17465667584183317, + "99.9999" : 0.17465667584183317, + "100.0" : 0.17465667584183317 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16605277506932567, + 0.16713794880665864, + 0.16820257048424805 + ], + [ + 0.17374464774050072, + 0.1729026097653751, + 0.17465667584183317 + ], + [ + 0.17356418499748338, + 0.17366743593484074, + 0.17410405738361365 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.40108385604350244, + "scoreError" : 0.004093280443088559, + "scoreConfidence" : [ + 0.3969905756004139, + 0.405177136486591 + ], + "scorePercentiles" : { + "0.0" : 0.39789512596984045, + "50.0" : 0.40023563443528376, + "90.0" : 0.40471912991217773, + "95.0" : 0.40471912991217773, + "99.0" : 0.40471912991217773, + "99.9" : 0.40471912991217773, + "99.99" : 0.40471912991217773, + "99.999" : 0.40471912991217773, + "99.9999" : 0.40471912991217773, + "100.0" : 0.40471912991217773 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3998197200143931, + 0.40023563443528376, + 0.39970199716215676 + ], + [ + 0.40471912991217773, + 0.4044219175799733, + 0.40312262095376306 + ], + [ + 0.4008796912531067, + 0.3989588671108274, + 0.39789512596984045 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16044247923562138, + "scoreError" : 0.0020666140587943618, + "scoreConfidence" : [ + 0.15837586517682703, + 0.16250909329441574 + ], + "scorePercentiles" : { + "0.0" : 0.15859480142732535, + "50.0" : 0.16041678557564285, + "90.0" : 0.16204565700350013, + "95.0" : 0.16204565700350013, + "99.0" : 0.16204565700350013, + "99.9" : 0.16204565700350013, + "99.99" : 0.16204565700350013, + "99.999" : 0.16204565700350013, + "99.9999" : 0.16204565700350013, + "100.0" : 0.16204565700350013 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16193803345532273, + 0.16144244192241253, + 0.16204565700350013 + ], + [ + 0.1603984048695987, + 0.16059771067465353, + 0.15952169556062468 + ], + [ + 0.16041678557564285, + 0.159026782631512, + 0.15859480142732535 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04701046030973298, + "scoreError" : 3.8555797178145215E-4, + "scoreConfidence" : [ + 0.046624902337951524, + 0.047396018281514435 + ], + "scorePercentiles" : { + "0.0" : 0.046712751198161415, + "50.0" : 0.04703237564786335, + "90.0" : 0.047322644024645324, + "95.0" : 0.047322644024645324, + "99.0" : 0.047322644024645324, + "99.9" : 0.047322644024645324, + "99.99" : 0.047322644024645324, + "99.999" : 0.047322644024645324, + "99.9999" : 0.047322644024645324, + "100.0" : 0.047322644024645324 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.047322644024645324, + 0.047222791438623, + 0.04703237564786335 + ], + [ + 0.04725773195720389, + 0.04681896056968426, + 0.046712751198161415 + ], + [ + 0.04707274059969874, + 0.046928389102410685, + 0.04672575824930613 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9430758.342778, + "scoreError" : 263280.67197279376, + "scoreConfidence" : [ + 9167477.670805205, + 9694039.014750794 + ], + "scorePercentiles" : { + "0.0" : 9210703.829650093, + "50.0" : 9476646.130681818, + "90.0" : 9617267.366346154, + "95.0" : 9617267.366346154, + "99.0" : 9617267.366346154, + "99.9" : 9617267.366346154, + "99.99" : 9617267.366346154, + "99.999" : 9617267.366346154, + "99.9999" : 9617267.366346154, + "100.0" : 9617267.366346154 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9476646.130681818, + 9423476.688323917, + 9498627.851851853 + ], + [ + 9242939.773567468, + 9210703.829650093, + 9258214.512488436 + ], + [ + 9569795.895693779, + 9579153.036398467, + 9617267.366346154 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-03-02T21:33:18Z-c046e6fc09f17d3c382657e747c6023ba7f252a9-jdk17.json b/performance-results/2025-03-02T21:33:18Z-c046e6fc09f17d3c382657e747c6023ba7f252a9-jdk17.json new file mode 100644 index 0000000000..f52aae0279 --- /dev/null +++ b/performance-results/2025-03-02T21:33:18Z-c046e6fc09f17d3c382657e747c6023ba7f252a9-jdk17.json @@ -0,0 +1,1074 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.41828965785467, + "scoreError" : 0.03630562611823795, + "scoreConfidence" : [ + 3.3819840317364323, + 3.4545952839729077 + ], + "scorePercentiles" : { + "0.0" : 3.4122457287978434, + "50.0" : 3.417858050147738, + "90.0" : 3.4251968023253596, + "95.0" : 3.4251968023253596, + "99.0" : 3.4251968023253596, + "99.9" : 3.4251968023253596, + "99.99" : 3.4251968023253596, + "99.999" : 3.4251968023253596, + "99.9999" : 3.4251968023253596, + "100.0" : 3.4251968023253596 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4201038015672776, + 3.4251968023253596 + ], + [ + 3.4122457287978434, + 3.415612298728198 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7263085250284311, + "scoreError" : 0.007038612914019544, + "scoreConfidence" : [ + 1.7192699121144115, + 1.7333471379424508 + ], + "scorePercentiles" : { + "0.0" : 1.72514416466237, + "50.0" : 1.7262999109653892, + "90.0" : 1.727490113520576, + "95.0" : 1.727490113520576, + "99.0" : 1.727490113520576, + "99.9" : 1.727490113520576, + "99.99" : 1.727490113520576, + "99.999" : 1.727490113520576, + "99.9999" : 1.727490113520576, + "100.0" : 1.727490113520576 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.72514416466237, + 1.7256645954268708 + ], + [ + 1.727490113520576, + 1.7269352265039075 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.86899198118607, + "scoreError" : 0.0011975356626304622, + "scoreConfidence" : [ + 0.8677944455234395, + 0.8701895168487005 + ], + "scorePercentiles" : { + "0.0" : 0.8688009019274694, + "50.0" : 0.8689987999936732, + "90.0" : 0.8691694228294644, + "95.0" : 0.8691694228294644, + "99.0" : 0.8691694228294644, + "99.9" : 0.8691694228294644, + "99.99" : 0.8691694228294644, + "99.999" : 0.8691694228294644, + "99.9999" : 0.8691694228294644, + "100.0" : 0.8691694228294644 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8688666246158518, + 0.8691694228294644 + ], + [ + 0.8688009019274694, + 0.8691309753714946 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 70232.01481354213, + "scoreError" : 1538.188912414745, + "scoreConfidence" : [ + 68693.82590112739, + 71770.20372595688 + ], + "scorePercentiles" : { + "0.0" : 68834.11719335812, + "50.0" : 70335.7912615769, + "90.0" : 71248.55268371207, + "95.0" : 71248.55268371207, + "99.0" : 71248.55268371207, + "99.9" : 71248.55268371207, + "99.99" : 71248.55268371207, + "99.999" : 71248.55268371207, + "99.9999" : 71248.55268371207, + "100.0" : 71248.55268371207 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 70335.7912615769, + 70318.29869520647, + 70615.3482588539 + ], + [ + 68834.11719335812, + 69184.4699954476, + 69310.74272699936 + ], + [ + 71248.55268371207, + 71233.87557474103, + 71006.93693198367 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 348.7358560146452, + "scoreError" : 9.45323495910323, + "scoreConfidence" : [ + 339.282621055542, + 358.1890909737484 + ], + "scorePercentiles" : { + "0.0" : 339.467589297965, + "50.0" : 351.0502196395492, + "90.0" : 355.2367532576896, + "95.0" : 355.2367532576896, + "99.0" : 355.2367532576896, + "99.9" : 355.2367532576896, + "99.99" : 355.2367532576896, + "99.999" : 355.2367532576896, + "99.9999" : 355.2367532576896, + "100.0" : 355.2367532576896 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 348.6266856905834, + 353.7210730850551, + 355.2367532576896 + ], + [ + 352.2086936648004, + 352.1941358313394, + 351.0502196395492 + ], + [ + 341.2831938162754, + 344.83435984855004, + 339.467589297965 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 108.8976425616819, + "scoreError" : 4.5235077479722525, + "scoreConfidence" : [ + 104.37413481370966, + 113.42115030965415 + ], + "scorePercentiles" : { + "0.0" : 105.13588070683821, + "50.0" : 109.84674602291123, + "90.0" : 111.53991107410427, + "95.0" : 111.53991107410427, + "99.0" : 111.53991107410427, + "99.9" : 111.53991107410427, + "99.99" : 111.53991107410427, + "99.999" : 111.53991107410427, + "99.9999" : 111.53991107410427, + "100.0" : 111.53991107410427 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 109.9271038747169, + 109.84674602291123, + 109.28821350660738 + ], + [ + 111.47146048588766, + 111.53978992907797, + 111.53991107410427 + ], + [ + 105.33613831237075, + 105.13588070683821, + 105.99353914262285 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014151886837748762, + "scoreError" : 1.8201815515134884E-4, + "scoreConfidence" : [ + 0.013969868682597412, + 0.01433390499290011 + ], + "scorePercentiles" : { + "0.0" : 0.014046185393534612, + "50.0" : 0.014093099466441932, + "90.0" : 0.014298931872192083, + "95.0" : 0.014298931872192083, + "99.0" : 0.014298931872192083, + "99.9" : 0.014298931872192083, + "99.99" : 0.014298931872192083, + "99.999" : 0.014298931872192083, + "99.9999" : 0.014298931872192083, + "100.0" : 0.014298931872192083 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014065132065705843, + 0.014167577229310642, + 0.014048452400921006 + ], + [ + 0.014294062328473413, + 0.014270803594771241, + 0.014298931872192083 + ], + [ + 0.014093099466441932, + 0.01408273718838808, + 0.014046185393534612 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9825431540425588, + "scoreError" : 0.010821959248908594, + "scoreConfidence" : [ + 0.9717211947936502, + 0.9933651132914674 + ], + "scorePercentiles" : { + "0.0" : 0.9743582786438035, + "50.0" : 0.9813524897458542, + "90.0" : 0.993766748981417, + "95.0" : 0.993766748981417, + "99.0" : 0.993766748981417, + "99.9" : 0.993766748981417, + "99.99" : 0.993766748981417, + "99.999" : 0.993766748981417, + "99.9999" : 0.993766748981417, + "100.0" : 0.993766748981417 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9828495155773955, + 0.978821331604189, + 0.9806014058638949 + ], + [ + 0.9832963547689282, + 0.9763275131309187, + 0.9813524897458542 + ], + [ + 0.9743582786438035, + 0.993766748981417, + 0.991514748066627 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.01300260075448132, + "scoreError" : 8.023467513972726E-4, + "scoreConfidence" : [ + 0.012200254003084048, + 0.013804947505878594 + ], + "scorePercentiles" : { + "0.0" : 0.012720992199664173, + "50.0" : 0.012971484214673937, + "90.0" : 0.013335832962161846, + "95.0" : 0.013335832962161846, + "99.0" : 0.013335832962161846, + "99.9" : 0.013335832962161846, + "99.99" : 0.013335832962161846, + "99.999" : 0.013335832962161846, + "99.9999" : 0.013335832962161846, + "100.0" : 0.013335832962161846 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.012720992199664173, + 0.012732649700408199, + 0.012790562874435309 + ], + [ + 0.013152405554912565, + 0.013283161235305837, + 0.013335832962161846 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.7915260479825292, + "scoreError" : 0.1983707891453185, + "scoreConfidence" : [ + 3.5931552588372107, + 3.989896837127848 + ], + "scorePercentiles" : { + "0.0" : 3.6699134086573735, + "50.0" : 3.7937304046584868, + "90.0" : 3.8893684937791604, + "95.0" : 3.8893684937791604, + "99.0" : 3.8893684937791604, + "99.9" : 3.8893684937791604, + "99.99" : 3.8893684937791604, + "99.999" : 3.8893684937791604, + "99.9999" : 3.8893684937791604, + "100.0" : 3.8893684937791604 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.6699134086573735, + 3.7899163765151513, + 3.797544432801822 + ], + [ + 3.8893684937791604, + 3.7865034678274037, + 3.815910108314264 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.8929701553211618, + "scoreError" : 0.11108803922461892, + "scoreConfidence" : [ + 2.781882116096543, + 3.0040581945457805 + ], + "scorePercentiles" : { + "0.0" : 2.7998811998880178, + "50.0" : 2.9051692349695033, + "90.0" : 2.975505501636418, + "95.0" : 2.975505501636418, + "99.0" : 2.975505501636418, + "99.9" : 2.975505501636418, + "99.99" : 2.975505501636418, + "99.999" : 2.975505501636418, + "99.9999" : 2.975505501636418, + "100.0" : 2.975505501636418 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.975505501636418, + 2.9466927030053034, + 2.966848873331356 + ], + [ + 2.827787556969183, + 2.7998811998880178, + 2.8193454034395264 + ], + [ + 2.9229998939216832, + 2.9051692349695033, + 2.872501030729466 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17544947039487774, + "scoreError" : 0.0052488607290020655, + "scoreConfidence" : [ + 0.17020060966587566, + 0.1806983311238798 + ], + "scorePercentiles" : { + "0.0" : 0.17165985189508376, + "50.0" : 0.17549794610578778, + "90.0" : 0.179824128751506, + "95.0" : 0.179824128751506, + "99.0" : 0.179824128751506, + "99.9" : 0.179824128751506, + "99.99" : 0.179824128751506, + "99.999" : 0.179824128751506, + "99.9999" : 0.179824128751506, + "100.0" : 0.179824128751506 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17227370679942808, + 0.17183004900512044, + 0.17165985189508376 + ], + [ + 0.178551218915155, + 0.179824128751506, + 0.17882252447114783 + ], + [ + 0.17549794610578778, + 0.17569065722066057, + 0.17489515039001013 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3358209039887323, + "scoreError" : 0.015562757724852853, + "scoreConfidence" : [ + 0.3202581462638795, + 0.35138366171358515 + ], + "scorePercentiles" : { + "0.0" : 0.32385241021406136, + "50.0" : 0.3377909938186117, + "90.0" : 0.34700695846490165, + "95.0" : 0.34700695846490165, + "99.0" : 0.34700695846490165, + "99.9" : 0.34700695846490165, + "99.99" : 0.34700695846490165, + "99.999" : 0.34700695846490165, + "99.9999" : 0.34700695846490165, + "100.0" : 0.34700695846490165 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.32521056380487806, + 0.32385241021406136, + 0.32386125089060175 + ], + [ + 0.34700695846490165, + 0.34364055864059656, + 0.3447147407790417 + ], + [ + 0.3377909938186117, + 0.3400444924342888, + 0.336266166851609 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16134176687262286, + "scoreError" : 0.004812602207946651, + "scoreConfidence" : [ + 0.1565291646646762, + 0.16615436908056952 + ], + "scorePercentiles" : { + "0.0" : 0.1572061005313463, + "50.0" : 0.16288815610900265, + "90.0" : 0.16382506316962092, + "95.0" : 0.16382506316962092, + "99.0" : 0.16382506316962092, + "99.9" : 0.16382506316962092, + "99.99" : 0.16382506316962092, + "99.999" : 0.16382506316962092, + "99.9999" : 0.16382506316962092, + "100.0" : 0.16382506316962092 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15762173064859328, + 0.1578787331270425, + 0.1572061005313463 + ], + [ + 0.16345162815860875, + 0.16382506316962092, + 0.16329059359589823 + ], + [ + 0.1623845217751364, + 0.16352937473835688, + 0.16288815610900265 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.39310674445864563, + "scoreError" : 0.010868598898243683, + "scoreConfidence" : [ + 0.3822381455604019, + 0.40397534335688934 + ], + "scorePercentiles" : { + "0.0" : 0.3862654843182696, + "50.0" : 0.3901732209129926, + "90.0" : 0.40193320541778865, + "95.0" : 0.40193320541778865, + "99.0" : 0.40193320541778865, + "99.9" : 0.40193320541778865, + "99.99" : 0.40193320541778865, + "99.999" : 0.40193320541778865, + "99.9999" : 0.40193320541778865, + "100.0" : 0.40193320541778865 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3939431058893047, + 0.3866839318304849, + 0.3862654843182696 + ], + [ + 0.40193320541778865, + 0.4007557186022281, + 0.4009131120109044 + ], + [ + 0.3901732209129926, + 0.3883718215853043, + 0.38892109956053356 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15737170175876328, + "scoreError" : 8.129918877386329E-4, + "scoreConfidence" : [ + 0.15655870987102463, + 0.15818469364650192 + ], + "scorePercentiles" : { + "0.0" : 0.15657145389071553, + "50.0" : 0.157625196081522, + "90.0" : 0.1578368545250797, + "95.0" : 0.1578368545250797, + "99.0" : 0.1578368545250797, + "99.9" : 0.1578368545250797, + "99.99" : 0.1578368545250797, + "99.999" : 0.1578368545250797, + "99.9999" : 0.1578368545250797, + "100.0" : 0.1578368545250797 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.156874781762279, + 0.15678063731284786, + 0.15657145389071553 + ], + [ + 0.1575724023540905, + 0.157625196081522, + 0.1578368545250797 + ], + [ + 0.15765837165379157, + 0.15771490363839955, + 0.15771071461014383 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04741806749151767, + "scoreError" : 0.0014343819370443356, + "scoreConfidence" : [ + 0.04598368555447333, + 0.048852449428562005 + ], + "scorePercentiles" : { + "0.0" : 0.04673769655968555, + "50.0" : 0.04698499036351762, + "90.0" : 0.04928052339557369, + "95.0" : 0.04928052339557369, + "99.0" : 0.04928052339557369, + "99.9" : 0.04928052339557369, + "99.99" : 0.04928052339557369, + "99.999" : 0.04928052339557369, + "99.9999" : 0.04928052339557369, + "100.0" : 0.04928052339557369 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04682732774065455, + 0.046959641036477706, + 0.04698499036351762 + ], + [ + 0.04928052339557369, + 0.04791430007809917, + 0.048122328429744905 + ], + [ + 0.04700595427325117, + 0.04673769655968555, + 0.04692984554665465 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9288801.490699522, + "scoreError" : 154527.26504390594, + "scoreConfidence" : [ + 9134274.225655615, + 9443328.755743429 + ], + "scorePercentiles" : { + "0.0" : 9205640.332106715, + "50.0" : 9236812.06278855, + "90.0" : 9426756.017907634, + "95.0" : 9426756.017907634, + "99.0" : 9426756.017907634, + "99.9" : 9426756.017907634, + "99.99" : 9426756.017907634, + "99.999" : 9426756.017907634, + "99.9999" : 9426756.017907634, + "100.0" : 9426756.017907634 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9376145.139643861, + 9426756.017907634, + 9423155.61299435 + ], + [ + 9205640.332106715, + 9212345.915285451, + 9249796.383548982 + ], + [ + 9236065.98984303, + 9236812.06278855, + 9232495.962177122 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-03-06T06:12:18Z-2e1e0ebf65b788790763a974ce9e8aea4e4e558d-jdk17.json b/performance-results/2025-03-06T06:12:18Z-2e1e0ebf65b788790763a974ce9e8aea4e4e558d-jdk17.json new file mode 100644 index 0000000000..206936aaca --- /dev/null +++ b/performance-results/2025-03-06T06:12:18Z-2e1e0ebf65b788790763a974ce9e8aea4e4e558d-jdk17.json @@ -0,0 +1,1074 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4115082119150353, + "scoreError" : 0.02941825923097294, + "scoreConfidence" : [ + 3.3820899526840624, + 3.440926471146008 + ], + "scorePercentiles" : { + "0.0" : 3.4064825548916207, + "50.0" : 3.4113171297808074, + "90.0" : 3.4169160332069057, + "95.0" : 3.4169160332069057, + "99.0" : 3.4169160332069057, + "99.9" : 3.4169160332069057, + "99.99" : 3.4169160332069057, + "99.999" : 3.4169160332069057, + "99.9999" : 3.4169160332069057, + "100.0" : 3.4169160332069057 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4064825548916207, + 3.4093676160232755 + ], + [ + 3.413266643538339, + 3.4169160332069057 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7317113411285598, + "scoreError" : 0.012064473875984218, + "scoreConfidence" : [ + 1.7196468672525755, + 1.7437758150045441 + ], + "scorePercentiles" : { + "0.0" : 1.7292424938779714, + "50.0" : 1.7319358983574031, + "90.0" : 1.7337310739214618, + "95.0" : 1.7337310739214618, + "99.0" : 1.7337310739214618, + "99.9" : 1.7337310739214618, + "99.99" : 1.7337310739214618, + "99.999" : 1.7337310739214618, + "99.9999" : 1.7337310739214618, + "100.0" : 1.7337310739214618 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7292424938779714, + 1.731634581684259 + ], + [ + 1.7322372150305472, + 1.7337310739214618 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8690424200353214, + "scoreError" : 0.0036514138591921194, + "scoreConfidence" : [ + 0.8653910061761293, + 0.8726938338945135 + ], + "scorePercentiles" : { + "0.0" : 0.8685279670834416, + "50.0" : 0.8689007639611597, + "90.0" : 0.8698401851355247, + "95.0" : 0.8698401851355247, + "99.0" : 0.8698401851355247, + "99.9" : 0.8698401851355247, + "99.99" : 0.8698401851355247, + "99.999" : 0.8698401851355247, + "99.9999" : 0.8698401851355247, + "100.0" : 0.8698401851355247 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8688095069876479, + 0.8698401851355247 + ], + [ + 0.8685279670834416, + 0.8689920209346713 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 71003.00198373497, + "scoreError" : 226.15950652706366, + "scoreConfidence" : [ + 70776.8424772079, + 71229.16149026203 + ], + "scorePercentiles" : { + "0.0" : 70857.99060334494, + "50.0" : 70923.80077840707, + "90.0" : 71184.9506282876, + "95.0" : 71184.9506282876, + "99.0" : 71184.9506282876, + "99.9" : 71184.9506282876, + "99.99" : 71184.9506282876, + "99.999" : 71184.9506282876, + "99.9999" : 71184.9506282876, + "100.0" : 71184.9506282876 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 70973.6692035204, + 70923.80077840707, + 70903.17863630773 + ], + [ + 71184.9506282876, + 71184.3262835792, + 71164.54289466105 + ], + [ + 70857.99060334494, + 70916.85608232094, + 70917.70274318576 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 352.38226824513544, + "scoreError" : 7.476513158615815, + "scoreConfidence" : [ + 344.9057550865196, + 359.85878140375127 + ], + "scorePercentiles" : { + "0.0" : 346.3626408752838, + "50.0" : 353.1910462537864, + "90.0" : 360.13309044096724, + "95.0" : 360.13309044096724, + "99.0" : 360.13309044096724, + "99.9" : 360.13309044096724, + "99.99" : 360.13309044096724, + "99.999" : 360.13309044096724, + "99.9999" : 360.13309044096724, + "100.0" : 360.13309044096724 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 360.13309044096724, + 354.0114902596122, + 354.8992054315646 + ], + [ + 348.1853851621876, + 346.3626408752838, + 346.95881248467407 + ], + [ + 354.5816970955848, + 353.11704620255824, + 353.1910462537864 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 109.10022468858686, + "scoreError" : 2.3501641962858777, + "scoreConfidence" : [ + 106.75006049230099, + 111.45038888487274 + ], + "scorePercentiles" : { + "0.0" : 107.70994138070586, + "50.0" : 108.52727320445477, + "90.0" : 111.38642304206356, + "95.0" : 111.38642304206356, + "99.0" : 111.38642304206356, + "99.9" : 111.38642304206356, + "99.99" : 111.38642304206356, + "99.999" : 111.38642304206356, + "99.9999" : 111.38642304206356, + "100.0" : 111.38642304206356 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 108.52727320445477, + 108.48393073097333, + 108.75781417072851 + ], + [ + 111.38642304206356, + 110.86333689582654, + 110.38348521770283 + ], + [ + 107.70994138070586, + 107.92321928833897, + 107.86659826648732 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014221039915220942, + "scoreError" : 2.626663013411908E-4, + "scoreConfidence" : [ + 0.01395837361387975, + 0.014483706216562134 + ], + "scorePercentiles" : { + "0.0" : 0.014024734535800536, + "50.0" : 0.014236648604823324, + "90.0" : 0.014412459617527056, + "95.0" : 0.014412459617527056, + "99.0" : 0.014412459617527056, + "99.9" : 0.014412459617527056, + "99.99" : 0.014412459617527056, + "99.999" : 0.014412459617527056, + "99.9999" : 0.014412459617527056, + "100.0" : 0.014412459617527056 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014412459617527056, + 0.014401516950372995, + 0.01437941576137362 + ], + [ + 0.014047371501014911, + 0.014042817105640093, + 0.014024734535800536 + ], + [ + 0.014236648604823324, + 0.014207094412131579, + 0.014237300748304356 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9942440211101774, + "scoreError" : 0.02390461473886758, + "scoreConfidence" : [ + 0.9703394063713098, + 1.018148635849045 + ], + "scorePercentiles" : { + "0.0" : 0.9743954687713144, + "50.0" : 0.9901732647524752, + "90.0" : 1.0120957015484262, + "95.0" : 1.0120957015484262, + "99.0" : 1.0120957015484262, + "99.9" : 1.0120957015484262, + "99.99" : 1.0120957015484262, + "99.999" : 1.0120957015484262, + "99.9999" : 1.0120957015484262, + "100.0" : 1.0120957015484262 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 1.010028034036966, + 1.0106066732012935, + 1.0120957015484262 + ], + [ + 0.9972798716593538, + 0.9773831014464426, + 0.9743954687713144 + ], + [ + 0.9866703780584056, + 0.9901732647524752, + 0.9895636965169207 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.012955598848475294, + "scoreError" : 2.3999670936960022E-4, + "scoreConfidence" : [ + 0.012715602139105693, + 0.013195595557844894 + ], + "scorePercentiles" : { + "0.0" : 0.012822485927646949, + "50.0" : 0.012942355418299141, + "90.0" : 0.013063587491149645, + "95.0" : 0.013063587491149645, + "99.0" : 0.013063587491149645, + "99.9" : 0.013063587491149645, + "99.99" : 0.013063587491149645, + "99.999" : 0.013063587491149645, + "99.9999" : 0.013063587491149645, + "100.0" : 0.013063587491149645 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.012822485927646949, + 0.012943171870550899, + 0.012941538966047385 + ], + [ + 0.012928680997347095, + 0.013034127838109786, + 0.013063587491149645 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.638930492890097, + "scoreError" : 0.1003970316328303, + "scoreConfidence" : [ + 3.5385334612572668, + 3.739327524522927 + ], + "scorePercentiles" : { + "0.0" : 3.5787822303290415, + "50.0" : 3.6449954462283793, + "90.0" : 3.6791761544117647, + "95.0" : 3.6791761544117647, + "99.0" : 3.6791761544117647, + "99.9" : 3.6791761544117647, + "99.99" : 3.6791761544117647, + "99.999" : 3.6791761544117647, + "99.9999" : 3.6791761544117647, + "100.0" : 3.6791761544117647 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.5787822303290415, + 3.63090818287373, + 3.6245014231884056 + ], + [ + 3.661132256954612, + 3.6590827095830285, + 3.6791761544117647 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.847417907792545, + "scoreError" : 0.116819409513867, + "scoreConfidence" : [ + 2.7305984982786784, + 2.964237317306412 + ], + "scorePercentiles" : { + "0.0" : 2.7529092496559318, + "50.0" : 2.8777063679516686, + "90.0" : 2.921575672801636, + "95.0" : 2.921575672801636, + "99.0" : 2.921575672801636, + "99.9" : 2.921575672801636, + "99.99" : 2.921575672801636, + "99.999" : 2.921575672801636, + "99.9999" : 2.921575672801636, + "100.0" : 2.921575672801636 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.8777063679516686, + 2.877371197065593, + 2.882502662536023 + ], + [ + 2.921575672801636, + 2.903710849303136, + 2.8941062572337963 + ], + [ + 2.7529092496559318, + 2.757577626964433, + 2.7593012866206896 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1784711380749599, + "scoreError" : 0.006343286936357945, + "scoreConfidence" : [ + 0.17212785113860196, + 0.18481442501131784 + ], + "scorePercentiles" : { + "0.0" : 0.1745021115919521, + "50.0" : 0.17718292266123317, + "90.0" : 0.18330034890114927, + "95.0" : 0.18330034890114927, + "99.0" : 0.18330034890114927, + "99.9" : 0.18330034890114927, + "99.99" : 0.18330034890114927, + "99.999" : 0.18330034890114927, + "99.9999" : 0.18330034890114927, + "100.0" : 0.18330034890114927 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17538364753853977, + 0.17455278001396404, + 0.1745021115919521 + ], + [ + 0.17718292266123317, + 0.17657819980930184, + 0.17833551557735175 + ], + [ + 0.18330034890114927, + 0.18323100183227367, + 0.1831737147488735 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.33533802084093994, + "scoreError" : 0.01194928814488877, + "scoreConfidence" : [ + 0.3233887326960512, + 0.3472873089858287 + ], + "scorePercentiles" : { + "0.0" : 0.32534111988418246, + "50.0" : 0.3390308479845408, + "90.0" : 0.3412313907732205, + "95.0" : 0.3412313907732205, + "99.0" : 0.3412313907732205, + "99.9" : 0.3412313907732205, + "99.99" : 0.3412313907732205, + "99.999" : 0.3412313907732205, + "99.9999" : 0.3412313907732205, + "100.0" : 0.3412313907732205 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.326667493417829, + 0.3258572763205057, + 0.32534111988418246 + ], + [ + 0.3390515225631463, + 0.3386837247942561, + 0.3390308479845408 + ], + [ + 0.3412313907732205, + 0.34111317256199475, + 0.34106563926878347 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16927030043181046, + "scoreError" : 0.012463968221868946, + "scoreConfidence" : [ + 0.1568063322099415, + 0.18173426865367942 + ], + "scorePercentiles" : { + "0.0" : 0.1597120899798767, + "50.0" : 0.17153760280975008, + "90.0" : 0.17657531521700745, + "95.0" : 0.17657531521700745, + "99.0" : 0.17657531521700745, + "99.9" : 0.17657531521700745, + "99.99" : 0.17657531521700745, + "99.999" : 0.17657531521700745, + "99.9999" : 0.17657531521700745, + "100.0" : 0.17657531521700745 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15983509142345684, + 0.15978003380893796, + 0.1597120899798767 + ], + [ + 0.17657531521700745, + 0.17646659101095838, + 0.17618008565740562 + ], + [ + 0.17187182930015124, + 0.17147406467874965, + 0.17153760280975008 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3963000690307283, + "scoreError" : 0.005716787708106384, + "scoreConfidence" : [ + 0.3905832813226219, + 0.4020168567388347 + ], + "scorePercentiles" : { + "0.0" : 0.3926168154764242, + "50.0" : 0.3953295221378874, + "90.0" : 0.40172962820873337, + "95.0" : 0.40172962820873337, + "99.0" : 0.40172962820873337, + "99.9" : 0.40172962820873337, + "99.99" : 0.40172962820873337, + "99.999" : 0.40172962820873337, + "99.9999" : 0.40172962820873337, + "100.0" : 0.40172962820873337 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.39757093607378546, + 0.39651309218508385, + 0.3953295221378874 + ], + [ + 0.40152707986027464, + 0.3943262865817594, + 0.39405590286862635 + ], + [ + 0.40172962820873337, + 0.3930313578839805, + 0.3926168154764242 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15831173145313004, + "scoreError" : 0.0030272423283522493, + "scoreConfidence" : [ + 0.1552844891247778, + 0.1613389737814823 + ], + "scorePercentiles" : { + "0.0" : 0.15655079634615987, + "50.0" : 0.1574761917074784, + "90.0" : 0.16100002611369602, + "95.0" : 0.16100002611369602, + "99.0" : 0.16100002611369602, + "99.9" : 0.16100002611369602, + "99.99" : 0.16100002611369602, + "99.999" : 0.16100002611369602, + "99.9999" : 0.16100002611369602, + "100.0" : 0.16100002611369602 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16100002611369602, + 0.16037180656231959, + 0.16022089158054956 + ], + [ + 0.15656058518982388, + 0.15671883595047797, + 0.15655079634615987 + ], + [ + 0.1587234615262523, + 0.1574761917074784, + 0.15718298810141307 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04721208488681848, + "scoreError" : 7.293969171730858E-4, + "scoreConfidence" : [ + 0.04648268796964539, + 0.04794148180399157 + ], + "scorePercentiles" : { + "0.0" : 0.04670943996973264, + "50.0" : 0.046960116708147454, + "90.0" : 0.0477835956565367, + "95.0" : 0.0477835956565367, + "99.0" : 0.0477835956565367, + "99.9" : 0.0477835956565367, + "99.99" : 0.0477835956565367, + "99.999" : 0.0477835956565367, + "99.9999" : 0.0477835956565367, + "100.0" : 0.0477835956565367 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.047395170383184436, + 0.046960116708147454, + 0.04689423038326088 + ], + [ + 0.0477835956565367, + 0.04766173785477683, + 0.047752969949478065 + ], + [ + 0.04694250115242526, + 0.046809001923824055, + 0.04670943996973264 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9630622.948722191, + "scoreError" : 363748.3480624857, + "scoreConfidence" : [ + 9266874.600659706, + 9994371.296784677 + ], + "scorePercentiles" : { + "0.0" : 9355448.681308411, + "50.0" : 9637481.202312138, + "90.0" : 9925310.231150793, + "95.0" : 9925310.231150793, + "99.0" : 9925310.231150793, + "99.9" : 9925310.231150793, + "99.99" : 9925310.231150793, + "99.999" : 9925310.231150793, + "99.9999" : 9925310.231150793, + "100.0" : 9925310.231150793 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9925310.231150793, + 9853500.939901479, + 9846036.579724409 + ], + [ + 9630494.096246392, + 9637481.202312138, + 9645752.631629702 + ], + [ + 9411868.841956725, + 9369713.334269663, + 9355448.681308411 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-03-12T01:40:12Z-11a2be59907cdbd3bb9943a941861930807555de-jdk17.json b/performance-results/2025-03-12T01:40:12Z-11a2be59907cdbd3bb9943a941861930807555de-jdk17.json new file mode 100644 index 0000000000..5dedbbda14 --- /dev/null +++ b/performance-results/2025-03-12T01:40:12Z-11a2be59907cdbd3bb9943a941861930807555de-jdk17.json @@ -0,0 +1,1074 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4076702946979935, + "scoreError" : 0.03121695051498341, + "scoreConfidence" : [ + 3.3764533441830102, + 3.438887245212977 + ], + "scorePercentiles" : { + "0.0" : 3.4023668922631765, + "50.0" : 3.407716749267827, + "90.0" : 3.4128807879931413, + "95.0" : 3.4128807879931413, + "99.0" : 3.4128807879931413, + "99.9" : 3.4128807879931413, + "99.99" : 3.4128807879931413, + "99.999" : 3.4128807879931413, + "99.9999" : 3.4128807879931413, + "100.0" : 3.4128807879931413 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4023668922631765, + 3.410430779758213 + ], + [ + 3.4050027187774417, + 3.4128807879931413 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7203584625512023, + "scoreError" : 0.016926372222672525, + "scoreConfidence" : [ + 1.7034320903285298, + 1.7372848347738747 + ], + "scorePercentiles" : { + "0.0" : 1.7179994830077605, + "50.0" : 1.7197199204007574, + "90.0" : 1.7239945263955332, + "95.0" : 1.7239945263955332, + "99.0" : 1.7239945263955332, + "99.9" : 1.7239945263955332, + "99.99" : 1.7239945263955332, + "99.999" : 1.7239945263955332, + "99.9999" : 1.7239945263955332, + "100.0" : 1.7239945263955332 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.720420690227677, + 1.7239945263955332 + ], + [ + 1.7179994830077605, + 1.7190191505738377 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8648697545079026, + "scoreError" : 0.0075160983778016855, + "scoreConfidence" : [ + 0.857353656130101, + 0.8723858528857042 + ], + "scorePercentiles" : { + "0.0" : 0.863427883815053, + "50.0" : 0.8649943438233192, + "90.0" : 0.8660624465699193, + "95.0" : 0.8660624465699193, + "99.0" : 0.8660624465699193, + "99.9" : 0.8660624465699193, + "99.99" : 0.8660624465699193, + "99.999" : 0.8660624465699193, + "99.9999" : 0.8660624465699193, + "100.0" : 0.8660624465699193 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8644814960543413, + 0.8655071915922969 + ], + [ + 0.863427883815053, + 0.8660624465699193 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 69389.95500863831, + "scoreError" : 1755.8886125589615, + "scoreConfidence" : [ + 67634.06639607935, + 71145.84362119727 + ], + "scorePercentiles" : { + "0.0" : 68185.71876777064, + "50.0" : 69278.7096608454, + "90.0" : 70722.78777504961, + "95.0" : 70722.78777504961, + "99.0" : 70722.78777504961, + "99.9" : 70722.78777504961, + "99.99" : 70722.78777504961, + "99.999" : 70722.78777504961, + "99.9999" : 70722.78777504961, + "100.0" : 70722.78777504961 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 69364.0209108631, + 69204.40314517489, + 69278.7096608454 + ], + [ + 70609.4285342994, + 70601.79215979534, + 70722.78777504961 + ], + [ + 68185.71876777064, + 68237.46553567571, + 68305.26858827074 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 340.8338008020541, + "scoreError" : 2.893493166734086, + "scoreConfidence" : [ + 337.94030763532004, + 343.72729396878816 + ], + "scorePercentiles" : { + "0.0" : 337.51858191131913, + "50.0" : 341.0045137233911, + "90.0" : 343.1466067997579, + "95.0" : 343.1466067997579, + "99.0" : 343.1466067997579, + "99.9" : 343.1466067997579, + "99.99" : 343.1466067997579, + "99.999" : 343.1466067997579, + "99.9999" : 343.1466067997579, + "100.0" : 343.1466067997579 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 341.79525643351167, + 340.68463968792423, + 339.4671920234933 + ], + [ + 339.7021322573094, + 341.88583929366797, + 342.2994450881126 + ], + [ + 343.1466067997579, + 341.0045137233911, + 337.51858191131913 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 101.9505095823736, + "scoreError" : 3.70236669542828, + "scoreConfidence" : [ + 98.24814288694532, + 105.65287627780188 + ], + "scorePercentiles" : { + "0.0" : 98.95005773885293, + "50.0" : 101.69121875987764, + "90.0" : 104.79007731231022, + "95.0" : 104.79007731231022, + "99.0" : 104.79007731231022, + "99.9" : 104.79007731231022, + "99.99" : 104.79007731231022, + "99.999" : 104.79007731231022, + "99.9999" : 104.79007731231022, + "100.0" : 104.79007731231022 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 101.69121875987764, + 100.87319417929982, + 102.02589744799347 + ], + [ + 100.31006870314435, + 98.95005773885293, + 99.839171786519 + ], + [ + 104.51878795064138, + 104.79007731231022, + 104.55611236272352 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014207907244656271, + "scoreError" : 1.406139052230887E-4, + "scoreConfidence" : [ + 0.014067293339433183, + 0.01434852114987936 + ], + "scorePercentiles" : { + "0.0" : 0.014080431946664038, + "50.0" : 0.014222649451795088, + "90.0" : 0.01430348100952599, + "95.0" : 0.01430348100952599, + "99.0" : 0.01430348100952599, + "99.9" : 0.01430348100952599, + "99.99" : 0.01430348100952599, + "99.999" : 0.01430348100952599, + "99.9999" : 0.01430348100952599, + "100.0" : 0.01430348100952599 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.01410771311237201, + 0.014080431946664038, + 0.014127782222950578 + ], + [ + 0.014288505505292396, + 0.01430348100952599, + 0.014290552535683052 + ], + [ + 0.014220443325151943, + 0.014229606092471352, + 0.014222649451795088 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9899931875389658, + "scoreError" : 0.019138091109985326, + "scoreConfidence" : [ + 0.9708550964289805, + 1.0091312786489512 + ], + "scorePercentiles" : { + "0.0" : 0.9765089769553754, + "50.0" : 0.9884470899476129, + "90.0" : 1.0120053324225866, + "95.0" : 1.0120053324225866, + "99.0" : 1.0120053324225866, + "99.9" : 1.0120053324225866, + "99.99" : 1.0120053324225866, + "99.999" : 1.0120053324225866, + "99.9999" : 1.0120053324225866, + "100.0" : 1.0120053324225866 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9765089769553754, + 0.9884470899476129, + 0.9902420496088722 + ], + [ + 0.98586842636041, + 0.9818955948944527, + 0.9790268553108175 + ], + [ + 1.0120053324225866, + 1.0023681029367546, + 0.9935762594138102 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.013177577224591489, + "scoreError" : 4.270440246067902E-4, + "scoreConfidence" : [ + 0.012750533199984699, + 0.013604621249198279 + ], + "scorePercentiles" : { + "0.0" : 0.012983986930667359, + "50.0" : 0.013193273216565243, + "90.0" : 0.013348885971492874, + "95.0" : 0.013348885971492874, + "99.0" : 0.013348885971492874, + "99.9" : 0.013348885971492874, + "99.99" : 0.013348885971492874, + "99.999" : 0.013348885971492874, + "99.9999" : 0.013348885971492874, + "100.0" : 0.013348885971492874 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013293016413664762, + 0.013348885971492874, + 0.013292778899067935 + ], + [ + 0.012983986930667359, + 0.01309376753406255, + 0.013053027598593442 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.8965855004740657, + "scoreError" : 0.13698940967062448, + "scoreConfidence" : [ + 3.7595960908034414, + 4.03357491014469 + ], + "scorePercentiles" : { + "0.0" : 3.8204210718105425, + "50.0" : 3.8998276071221425, + "90.0" : 3.9658294631245044, + "95.0" : 3.9658294631245044, + "99.0" : 3.9658294631245044, + "99.9" : 3.9658294631245044, + "99.99" : 3.9658294631245044, + "99.999" : 3.9658294631245044, + "99.9999" : 3.9658294631245044, + "100.0" : 3.9658294631245044 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.9658294631245044, + 3.885656021756022, + 3.9181803915426783 + ], + [ + 3.8204210718105425, + 3.913999192488263, + 3.875426862122386 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.953343152087654, + "scoreError" : 0.1008413095317884, + "scoreConfidence" : [ + 2.8525018425558653, + 3.0541844616194425 + ], + "scorePercentiles" : { + "0.0" : 2.8928908501590973, + "50.0" : 2.9422236131215063, + "90.0" : 3.05081770347773, + "95.0" : 3.05081770347773, + "99.0" : 3.05081770347773, + "99.9" : 3.05081770347773, + "99.99" : 3.05081770347773, + "99.999" : 3.05081770347773, + "99.9999" : 3.05081770347773, + "100.0" : 3.05081770347773 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.9494852205838984, + 2.9129140305765873, + 2.8928908501590973 + ], + [ + 3.033292042462845, + 2.997000550494456, + 3.05081770347773 + ], + [ + 2.9422236131215063, + 2.895923255356109, + 2.9055411025566533 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1740608663647572, + "scoreError" : 0.0031797824390332624, + "scoreConfidence" : [ + 0.17088108392572393, + 0.17724064880379048 + ], + "scorePercentiles" : { + "0.0" : 0.1714743284349869, + "50.0" : 0.17423779480433496, + "90.0" : 0.17657913986544949, + "95.0" : 0.17657913986544949, + "99.0" : 0.17657913986544949, + "99.9" : 0.17657913986544949, + "99.99" : 0.17657913986544949, + "99.999" : 0.17657913986544949, + "99.9999" : 0.17657913986544949, + "100.0" : 0.17657913986544949 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17490636216878006, + 0.17413062688490336, + 0.17423779480433496 + ], + [ + 0.17180489303691995, + 0.17198642027689398, + 0.1714743284349869 + ], + [ + 0.17657913986544949, + 0.17574860689618813, + 0.17567962491435798 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3220899653280465, + "scoreError" : 0.011797543311675193, + "scoreConfidence" : [ + 0.3102924220163713, + 0.3338875086397217 + ], + "scorePercentiles" : { + "0.0" : 0.3133007488329835, + "50.0" : 0.32191402085948817, + "90.0" : 0.33121310459378, + "95.0" : 0.33121310459378, + "99.0" : 0.33121310459378, + "99.9" : 0.33121310459378, + "99.99" : 0.33121310459378, + "99.999" : 0.33121310459378, + "99.9999" : 0.33121310459378, + "100.0" : 0.33121310459378 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.32191402085948817, + 0.32146066157703557, + 0.32222403992266796 + ], + [ + 0.33121310459378, + 0.3296149954843601, + 0.33000252455121437 + ], + [ + 0.3147955884852682, + 0.3133007488329835, + 0.31428400364562054 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16434010627076526, + "scoreError" : 0.006922172642315291, + "scoreConfidence" : [ + 0.15741793362844997, + 0.17126227891308055 + ], + "scorePercentiles" : { + "0.0" : 0.158946975888103, + "50.0" : 0.16548735592182562, + "90.0" : 0.16844729587144372, + "95.0" : 0.16844729587144372, + "99.0" : 0.16844729587144372, + "99.9" : 0.16844729587144372, + "99.99" : 0.16844729587144372, + "99.999" : 0.16844729587144372, + "99.9999" : 0.16844729587144372, + "100.0" : 0.16844729587144372 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16844729587144372, + 0.16825600417262557, + 0.16784994932693276 + ], + [ + 0.16515502999124704, + 0.16548735592182562, + 0.1666896035204107 + ], + [ + 0.15900905450700417, + 0.1592196872372946, + 0.158946975888103 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.38842922644034866, + "scoreError" : 0.0067031864482287465, + "scoreConfidence" : [ + 0.3817260399921199, + 0.3951324128885774 + ], + "scorePercentiles" : { + "0.0" : 0.3846055533633322, + "50.0" : 0.38798181970902035, + "90.0" : 0.3976954414618627, + "95.0" : 0.3976954414618627, + "99.0" : 0.3976954414618627, + "99.9" : 0.3976954414618627, + "99.99" : 0.3976954414618627, + "99.999" : 0.3976954414618627, + "99.9999" : 0.3976954414618627, + "100.0" : 0.3976954414618627 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3976954414618627, + 0.3865560140316969, + 0.3859009754572818 + ], + [ + 0.39057186982502734, + 0.38881781959564543, + 0.38798181970902035 + ], + [ + 0.3887489937801275, + 0.38498455073914384, + 0.3846055533633322 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15897312984427683, + "scoreError" : 0.007362010999413564, + "scoreConfidence" : [ + 0.15161111884486328, + 0.1663351408436904 + ], + "scorePercentiles" : { + "0.0" : 0.15367977617101058, + "50.0" : 0.15898293027137883, + "90.0" : 0.1647780857321755, + "95.0" : 0.1647780857321755, + "99.0" : 0.1647780857321755, + "99.9" : 0.1647780857321755, + "99.99" : 0.1647780857321755, + "99.999" : 0.1647780857321755, + "99.9999" : 0.1647780857321755, + "100.0" : 0.1647780857321755 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15948752983955855, + 0.15898293027137883, + 0.15867462969074783 + ], + [ + 0.1647780857321755, + 0.16382083167878908, + 0.163306469478738 + ], + [ + 0.15408670708782743, + 0.15394120864826588, + 0.15367977617101058 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.047710108860097446, + "scoreError" : 6.500947272283788E-4, + "scoreConfidence" : [ + 0.04706001413286907, + 0.048360203587325824 + ], + "scorePercentiles" : { + "0.0" : 0.0472659968237763, + "50.0" : 0.04773794186079817, + "90.0" : 0.04823766706864117, + "95.0" : 0.04823766706864117, + "99.0" : 0.04823766706864117, + "99.9" : 0.04823766706864117, + "99.99" : 0.04823766706864117, + "99.999" : 0.04823766706864117, + "99.9999" : 0.04823766706864117, + "100.0" : 0.04823766706864117 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04823766706864117, + 0.04728105270822301, + 0.0472659968237763 + ], + [ + 0.047403124687144485, + 0.04773794186079817, + 0.04735863134240711 + ], + [ + 0.04801767788341496, + 0.0480227627954552, + 0.04806612457101658 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9545103.75383263, + "scoreError" : 383788.9358783984, + "scoreConfidence" : [ + 9161314.817954233, + 9928892.689711029 + ], + "scorePercentiles" : { + "0.0" : 9173861.760769935, + "50.0" : 9645109.1195757, + "90.0" : 9782659.88172043, + "95.0" : 9782659.88172043, + "99.0" : 9782659.88172043, + "99.9" : 9782659.88172043, + "99.99" : 9782659.88172043, + "99.999" : 9782659.88172043, + "99.9999" : 9782659.88172043, + "100.0" : 9782659.88172043 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9722427.170068027, + 9638300.232177263, + 9645109.1195757 + ], + [ + 9782659.88172043, + 9661711.056949807, + 9705344.597478177 + ], + [ + 9317311.997206705, + 9173861.760769935, + 9259207.96854764 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-03-13T01:14:36Z-753555fd9ff1dae369f13fde1198ecf0ccdbe3f3-jdk17.json b/performance-results/2025-03-13T01:14:36Z-753555fd9ff1dae369f13fde1198ecf0ccdbe3f3-jdk17.json new file mode 100644 index 0000000000..9a95fb387f --- /dev/null +++ b/performance-results/2025-03-13T01:14:36Z-753555fd9ff1dae369f13fde1198ecf0ccdbe3f3-jdk17.json @@ -0,0 +1,1074 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4235289471012904, + "scoreError" : 0.025315012152433914, + "scoreConfidence" : [ + 3.3982139349488567, + 3.448843959253724 + ], + "scorePercentiles" : { + "0.0" : 3.418973543921273, + "50.0" : 3.423959070120495, + "90.0" : 3.4272241042428986, + "95.0" : 3.4272241042428986, + "99.0" : 3.4272241042428986, + "99.9" : 3.4272241042428986, + "99.99" : 3.4272241042428986, + "99.999" : 3.4272241042428986, + "99.9999" : 3.4272241042428986, + "100.0" : 3.4272241042428986 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4215857667884384, + 3.4272241042428986 + ], + [ + 3.418973543921273, + 3.4263323734525515 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.731466065401667, + "scoreError" : 0.01621103250787632, + "scoreConfidence" : [ + 1.7152550328937906, + 1.7476770979095433 + ], + "scorePercentiles" : { + "0.0" : 1.7288700515575068, + "50.0" : 1.7310567913839625, + "90.0" : 1.7348806272812356, + "95.0" : 1.7348806272812356, + "99.0" : 1.7348806272812356, + "99.9" : 1.7348806272812356, + "99.99" : 1.7348806272812356, + "99.999" : 1.7348806272812356, + "99.9999" : 1.7348806272812356, + "100.0" : 1.7348806272812356 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7288700515575068, + 1.7313277369538398 + ], + [ + 1.7307858458140855, + 1.7348806272812356 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8697984954948363, + "scoreError" : 0.008861407151655697, + "scoreConfidence" : [ + 0.8609370883431806, + 0.8786599026464921 + ], + "scorePercentiles" : { + "0.0" : 0.8679124538019363, + "50.0" : 0.8700474146575718, + "90.0" : 0.8711866988622655, + "95.0" : 0.8711866988622655, + "99.0" : 0.8711866988622655, + "99.9" : 0.8711866988622655, + "99.99" : 0.8711866988622655, + "99.999" : 0.8711866988622655, + "99.9999" : 0.8711866988622655, + "100.0" : 0.8711866988622655 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8679124538019363, + 0.8699183582693664 + ], + [ + 0.8711866988622655, + 0.8701764710457774 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 70820.79388702071, + "scoreError" : 231.68668855776454, + "scoreConfidence" : [ + 70589.10719846295, + 71052.48057557848 + ], + "scorePercentiles" : { + "0.0" : 70629.0793607269, + "50.0" : 70911.01076174284, + "90.0" : 70941.7424562172, + "95.0" : 70941.7424562172, + "99.0" : 70941.7424562172, + "99.9" : 70941.7424562172, + "99.99" : 70941.7424562172, + "99.999" : 70941.7424562172, + "99.9999" : 70941.7424562172, + "100.0" : 70941.7424562172 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 70643.28992633008, + 70629.0793607269, + 70657.4130445598 + ], + [ + 70920.59943604424, + 70921.67177006771, + 70939.99468918028 + ], + [ + 70911.01076174284, + 70822.34353831736, + 70941.7424562172 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 350.2295935097646, + "scoreError" : 11.639809665349746, + "scoreConfidence" : [ + 338.58978384441485, + 361.8694031751143 + ], + "scorePercentiles" : { + "0.0" : 340.89493260237515, + "50.0" : 353.68886615744447, + "90.0" : 355.99957632871315, + "95.0" : 355.99957632871315, + "99.0" : 355.99957632871315, + "99.9" : 355.99957632871315, + "99.99" : 355.99957632871315, + "99.999" : 355.99957632871315, + "99.9999" : 355.99957632871315, + "100.0" : 355.99957632871315 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 340.89493260237515, + 341.42435224510996, + 341.26510021738767 + ], + [ + 355.6708203390944, + 355.8300028298273, + 355.99957632871315 + ], + [ + 351.49926625063017, + 353.68886615744447, + 355.79342461729897 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 108.65109974016178, + "scoreError" : 2.5522442534017724, + "scoreConfidence" : [ + 106.09885548676002, + 111.20334399356355 + ], + "scorePercentiles" : { + "0.0" : 107.03049434345812, + "50.0" : 108.17258660022053, + "90.0" : 110.61737269420547, + "95.0" : 110.61737269420547, + "99.0" : 110.61737269420547, + "99.9" : 110.61737269420547, + "99.99" : 110.61737269420547, + "99.999" : 110.61737269420547, + "99.9999" : 110.61737269420547, + "100.0" : 110.61737269420547 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 107.82145896771539, + 108.17258660022053, + 108.24703418493814 + ], + [ + 110.58815235947327, + 110.61737269420547, + 110.60165244657608 + ], + [ + 107.66093902870458, + 107.03049434345812, + 107.12020703616446 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014279243473265146, + "scoreError" : 4.394936204422015E-4, + "scoreConfidence" : [ + 0.013839749852822944, + 0.014718737093707348 + ], + "scorePercentiles" : { + "0.0" : 0.014042465096456565, + "50.0" : 0.014159224540681671, + "90.0" : 0.014676226498498639, + "95.0" : 0.014676226498498639, + "99.0" : 0.014676226498498639, + "99.9" : 0.014676226498498639, + "99.99" : 0.014676226498498639, + "99.999" : 0.014676226498498639, + "99.9999" : 0.014676226498498639, + "100.0" : 0.014676226498498639 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014202651352641087, + 0.014158744326676936, + 0.014159224540681671 + ], + [ + 0.014591742794315707, + 0.014676226498498639, + 0.01458607336714348 + ], + [ + 0.014043656603105857, + 0.014052406679866392, + 0.014042465096456565 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9710502426780204, + "scoreError" : 0.014764440975773075, + "scoreConfidence" : [ + 0.9562858017022473, + 0.9858146836537935 + ], + "scorePercentiles" : { + "0.0" : 0.9562935803212851, + "50.0" : 0.9705228318128882, + "90.0" : 0.984122220035426, + "95.0" : 0.984122220035426, + "99.0" : 0.984122220035426, + "99.9" : 0.984122220035426, + "99.99" : 0.984122220035426, + "99.999" : 0.984122220035426, + "99.9999" : 0.984122220035426, + "100.0" : 0.984122220035426 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9703851923151562, + 0.9705228318128882, + 0.984122220035426 + ], + [ + 0.9797588517683943, + 0.9756658378536586, + 0.9748855913433417 + ], + [ + 0.9665884706166634, + 0.9562935803212851, + 0.961229608035371 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.01294115826408152, + "scoreError" : 0.001014437164646088, + "scoreConfidence" : [ + 0.011926721099435432, + 0.013955595428727608 + ], + "scorePercentiles" : { + "0.0" : 0.012536907865737619, + "50.0" : 0.012912209069093654, + "90.0" : 0.013316694295522761, + "95.0" : 0.013316694295522761, + "99.0" : 0.013316694295522761, + "99.9" : 0.013316694295522761, + "99.99" : 0.013316694295522761, + "99.999" : 0.013316694295522761, + "99.9999" : 0.013316694295522761, + "100.0" : 0.013316694295522761 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013166219852067968, + 0.013316694295522761, + 0.013312663393594078 + ], + [ + 0.012536907865737619, + 0.01265626589144736, + 0.012658198286119339 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.659688428674198, + "scoreError" : 0.35262658295588856, + "scoreConfidence" : [ + 3.3070618457183096, + 4.012315011630086 + ], + "scorePercentiles" : { + "0.0" : 3.5062078731604767, + "50.0" : 3.6768514411668174, + "90.0" : 3.774024763773585, + "95.0" : 3.774024763773585, + "99.0" : 3.774024763773585, + "99.9" : 3.774024763773585, + "99.99" : 3.774024763773585, + "99.999" : 3.774024763773585, + "99.9999" : 3.774024763773585, + "100.0" : 3.774024763773585 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.5062078731604767, + 3.551304622159091, + 3.5838853209169055 + ], + [ + 3.774024763773585, + 3.7698175614167293, + 3.7728904306184012 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.8300064842002626, + "scoreError" : 0.045503109266854615, + "scoreConfidence" : [ + 2.784503374933408, + 2.8755095934671173 + ], + "scorePercentiles" : { + "0.0" : 2.8048665698261357, + "50.0" : 2.817010330140845, + "90.0" : 2.8728336325768455, + "95.0" : 2.8728336325768455, + "99.0" : 2.8728336325768455, + "99.9" : 2.8728336325768455, + "99.99" : 2.8728336325768455, + "99.999" : 2.8728336325768455, + "99.9999" : 2.8728336325768455, + "100.0" : 2.8728336325768455 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.817010330140845, + 2.8212701472496473, + 2.807157726915521 + ], + [ + 2.8048665698261357, + 2.809550511516854, + 2.8145303981429377 + ], + [ + 2.862065851788269, + 2.860773189645309, + 2.8728336325768455 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1831706552485558, + "scoreError" : 0.01373850570445273, + "scoreConfidence" : [ + 0.16943214954410307, + 0.19690916095300853 + ], + "scorePercentiles" : { + "0.0" : 0.1770023762257071, + "50.0" : 0.17780909203250297, + "90.0" : 0.19403957457748802, + "95.0" : 0.19403957457748802, + "99.0" : 0.19403957457748802, + "99.9" : 0.19403957457748802, + "99.99" : 0.19403957457748802, + "99.999" : 0.19403957457748802, + "99.9999" : 0.19403957457748802, + "100.0" : 0.19403957457748802 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17979130297909063, + 0.17780909203250297, + 0.17764850200739005 + ], + [ + 0.1771452058563027, + 0.1770023762257071, + 0.17709491752851172 + ], + [ + 0.1940173466232078, + 0.19403957457748802, + 0.19398757940680103 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3325174605480197, + "scoreError" : 0.01808023901793655, + "scoreConfidence" : [ + 0.3144372215300832, + 0.35059769956595627 + ], + "scorePercentiles" : { + "0.0" : 0.3243598086990367, + "50.0" : 0.32611440247839557, + "90.0" : 0.34748987869627157, + "95.0" : 0.34748987869627157, + "99.0" : 0.34748987869627157, + "99.9" : 0.34748987869627157, + "99.99" : 0.34748987869627157, + "99.999" : 0.34748987869627157, + "99.9999" : 0.34748987869627157, + "100.0" : 0.34748987869627157 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.32611440247839557, + 0.32569432595101616, + 0.3270104821621268 + ], + [ + 0.34748987869627157, + 0.34672240551972816, + 0.34622278749480684 + ], + [ + 0.324573349680309, + 0.3243598086990367, + 0.3244697042504867 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1563755353557113, + "scoreError" : 0.008218591647864093, + "scoreConfidence" : [ + 0.1481569437078472, + 0.1645941270035754 + ], + "scorePercentiles" : { + "0.0" : 0.15114627648801426, + "50.0" : 0.15527347374386685, + "90.0" : 0.1627050920731509, + "95.0" : 0.1627050920731509, + "99.0" : 0.1627050920731509, + "99.9" : 0.1627050920731509, + "99.99" : 0.1627050920731509, + "99.999" : 0.1627050920731509, + "99.9999" : 0.1627050920731509, + "100.0" : 0.1627050920731509 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1627050920731509, + 0.16256147183705316, + 0.16222034130357202 + ], + [ + 0.1551279640884835, + 0.15535810315524554, + 0.15527347374386685 + ], + [ + 0.15164503142012284, + 0.1513420640918928, + 0.15114627648801426 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3909588769316857, + "scoreError" : 0.007017556895511356, + "scoreConfidence" : [ + 0.3839413200361743, + 0.39797643382719705 + ], + "scorePercentiles" : { + "0.0" : 0.38759703340955776, + "50.0" : 0.3903544967797338, + "90.0" : 0.39986755376064614, + "95.0" : 0.39986755376064614, + "99.0" : 0.39986755376064614, + "99.9" : 0.39986755376064614, + "99.99" : 0.39986755376064614, + "99.999" : 0.39986755376064614, + "99.9999" : 0.39986755376064614, + "100.0" : 0.39986755376064614 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.390763948382307, + 0.39082237861497576, + 0.3903544967797338 + ], + [ + 0.39986755376064614, + 0.3884779611918266, + 0.38759703340955776 + ], + [ + 0.3954614829167985, + 0.3876213509050738, + 0.3876636864242518 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15722552517859067, + "scoreError" : 0.0011511582869311112, + "scoreConfidence" : [ + 0.15607436689165957, + 0.15837668346552178 + ], + "scorePercentiles" : { + "0.0" : 0.1562580664864527, + "50.0" : 0.15734629136509534, + "90.0" : 0.15837414240691763, + "95.0" : 0.15837414240691763, + "99.0" : 0.15837414240691763, + "99.9" : 0.15837414240691763, + "99.99" : 0.15837414240691763, + "99.999" : 0.15837414240691763, + "99.9999" : 0.15837414240691763, + "100.0" : 0.15837414240691763 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15734629136509534, + 0.15751020181448755, + 0.15674231195924765 + ], + [ + 0.15837414240691763, + 0.15780906814057347, + 0.156918052864473 + ], + [ + 0.15761143390754778, + 0.15646015766252053, + 0.1562580664864527 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04698808880000418, + "scoreError" : 8.233100908406212E-4, + "scoreConfidence" : [ + 0.04616477870916356, + 0.0478113988908448 + ], + "scorePercentiles" : { + "0.0" : 0.04632947766947111, + "50.0" : 0.046950707557091347, + "90.0" : 0.04777402328470013, + "95.0" : 0.04777402328470013, + "99.0" : 0.04777402328470013, + "99.9" : 0.04777402328470013, + "99.99" : 0.04777402328470013, + "99.999" : 0.04777402328470013, + "99.9999" : 0.04777402328470013, + "100.0" : 0.04777402328470013 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04702555390236677, + 0.04694176933151202, + 0.046950707557091347 + ], + [ + 0.0475525959219386, + 0.04777402328470013, + 0.04725548325284239 + ], + [ + 0.04670036606984412, + 0.046362822210271076, + 0.04632947766947111 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9317046.219681531, + "scoreError" : 207195.67907354757, + "scoreConfidence" : [ + 9109850.540607983, + 9524241.89875508 + ], + "scorePercentiles" : { + "0.0" : 9157390.381518755, + "50.0" : 9319772.534948742, + "90.0" : 9506483.568441065, + "95.0" : 9506483.568441065, + "99.0" : 9506483.568441065, + "99.9" : 9506483.568441065, + "99.99" : 9506483.568441065, + "99.999" : 9506483.568441065, + "99.9999" : 9506483.568441065, + "100.0" : 9506483.568441065 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9304948.350697674, + 9321557.7166822, + 9319772.534948742 + ], + [ + 9210019.607734807, + 9168707.978001833, + 9157390.381518755 + ], + [ + 9506483.568441065, + 9437706.294339623, + 9426829.544769086 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-03-15T11:47:41Z-2d799ff19a93b0033f4386c5f73692f03905ad99-jdk17.json b/performance-results/2025-03-15T11:47:41Z-2d799ff19a93b0033f4386c5f73692f03905ad99-jdk17.json new file mode 100644 index 0000000000..e193b1af7c --- /dev/null +++ b/performance-results/2025-03-15T11:47:41Z-2d799ff19a93b0033f4386c5f73692f03905ad99-jdk17.json @@ -0,0 +1,1074 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4231252386576827, + "scoreError" : 0.018002418557553388, + "scoreConfidence" : [ + 3.405122820100129, + 3.4411276572152363 + ], + "scorePercentiles" : { + "0.0" : 3.4206360868600725, + "50.0" : 3.4227234889032605, + "90.0" : 3.426417889964138, + "95.0" : 3.426417889964138, + "99.0" : 3.426417889964138, + "99.9" : 3.426417889964138, + "99.99" : 3.426417889964138, + "99.999" : 3.426417889964138, + "99.9999" : 3.426417889964138, + "100.0" : 3.426417889964138 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4206360868600725, + 3.426417889964138 + ], + [ + 3.4210025321286244, + 3.4244444456778966 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7292023782063795, + "scoreError" : 0.008901727040554206, + "scoreConfidence" : [ + 1.7203006511658252, + 1.7381041052469337 + ], + "scorePercentiles" : { + "0.0" : 1.727258983952786, + "50.0" : 1.7295273432478537, + "90.0" : 1.7304958423770247, + "95.0" : 1.7304958423770247, + "99.0" : 1.7304958423770247, + "99.9" : 1.7304958423770247, + "99.99" : 1.7304958423770247, + "99.999" : 1.7304958423770247, + "99.9999" : 1.7304958423770247, + "100.0" : 1.7304958423770247 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.727258983952786, + 1.729653664527176 + ], + [ + 1.7294010219685314, + 1.7304958423770247 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.869712827685915, + "scoreError" : 0.004324516237681346, + "scoreConfidence" : [ + 0.8653883114482336, + 0.8740373439235963 + ], + "scorePercentiles" : { + "0.0" : 0.8688162079164902, + "50.0" : 0.8698652531758249, + "90.0" : 0.8703045964755199, + "95.0" : 0.8703045964755199, + "99.0" : 0.8703045964755199, + "99.9" : 0.8703045964755199, + "99.99" : 0.8703045964755199, + "99.999" : 0.8703045964755199, + "99.9999" : 0.8703045964755199, + "100.0" : 0.8703045964755199 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8695978615068914, + 0.8703045964755199 + ], + [ + 0.8688162079164902, + 0.8701326448447583 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 69653.97322970562, + "scoreError" : 1241.7114519240731, + "scoreConfidence" : [ + 68412.26177778155, + 70895.68468162969 + ], + "scorePercentiles" : { + "0.0" : 68917.9239635008, + "50.0" : 69422.69087159562, + "90.0" : 70623.12588344632, + "95.0" : 70623.12588344632, + "99.0" : 70623.12588344632, + "99.9" : 70623.12588344632, + "99.99" : 70623.12588344632, + "99.999" : 70623.12588344632, + "99.9999" : 70623.12588344632, + "100.0" : 70623.12588344632 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 69422.69087159562, + 69447.65361598988, + 69400.19164738775 + ], + [ + 68940.63600147932, + 68961.39448861738, + 68917.9239635008 + ], + [ + 70600.79825836433, + 70571.34433696925, + 70623.12588344632 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 354.88093484304494, + "scoreError" : 7.331351454553499, + "scoreConfidence" : [ + 347.54958338849144, + 362.21228629759844 + ], + "scorePercentiles" : { + "0.0" : 350.8325447951137, + "50.0" : 353.1650809438877, + "90.0" : 361.5314151767399, + "95.0" : 361.5314151767399, + "99.0" : 361.5314151767399, + "99.9" : 361.5314151767399, + "99.99" : 361.5314151767399, + "99.999" : 361.5314151767399, + "99.9999" : 361.5314151767399, + "100.0" : 361.5314151767399 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 351.55160168006574, + 350.8325447951137, + 351.18421384816645 + ], + [ + 361.5314151767399, + 360.32258091010436, + 359.8482269083232 + ], + [ + 353.1650809438877, + 353.2751303140137, + 352.217619010989 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 105.31040747128041, + "scoreError" : 1.5707935883293318, + "scoreConfidence" : [ + 103.73961388295108, + 106.88120105960975 + ], + "scorePercentiles" : { + "0.0" : 103.84489219491039, + "50.0" : 105.45124511244312, + "90.0" : 106.35534837676299, + "95.0" : 106.35534837676299, + "99.0" : 106.35534837676299, + "99.9" : 106.35534837676299, + "99.99" : 106.35534837676299, + "99.999" : 106.35534837676299, + "99.9999" : 106.35534837676299, + "100.0" : 106.35534837676299 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 106.26255275762055, + 106.35534837676299, + 106.22838730121315 + ], + [ + 104.56216360600726, + 103.84489219491039, + 104.14140128934277 + ], + [ + 105.44628502972814, + 105.45124511244312, + 105.50139157349538 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014266009260685645, + "scoreError" : 2.4840351995337605E-4, + "scoreConfidence" : [ + 0.014017605740732268, + 0.014514412780639021 + ], + "scorePercentiles" : { + "0.0" : 0.01415508872730258, + "50.0" : 0.014178914767305513, + "90.0" : 0.014487416443321521, + "95.0" : 0.014487416443321521, + "99.0" : 0.014487416443321521, + "99.9" : 0.014487416443321521, + "99.99" : 0.014487416443321521, + "99.999" : 0.014487416443321521, + "99.9999" : 0.014487416443321521, + "100.0" : 0.014487416443321521 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014487416443321521, + 0.014444846733189272, + 0.014454177195923972 + ], + [ + 0.01415580208738833, + 0.01415508872730258, + 0.014162183566676203 + ], + [ + 0.014173912294303573, + 0.014178914767305513, + 0.014181741530759849 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9737795573950387, + "scoreError" : 0.023019476479558414, + "scoreConfidence" : [ + 0.9507600809154804, + 0.9967990338745971 + ], + "scorePercentiles" : { + "0.0" : 0.9530193546788641, + "50.0" : 0.9795748023312764, + "90.0" : 0.9933472102701629, + "95.0" : 0.9933472102701629, + "99.0" : 0.9933472102701629, + "99.9" : 0.9933472102701629, + "99.99" : 0.9933472102701629, + "99.999" : 0.9933472102701629, + "99.9999" : 0.9933472102701629, + "100.0" : 0.9933472102701629 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9583253188003066, + 0.9530193546788641, + 0.9583518679444178 + ], + [ + 0.9933472102701629, + 0.9791489124730761, + 0.9805528812628689 + ], + [ + 0.9819098810996564, + 0.9797857876947194, + 0.9795748023312764 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.013001308170039402, + "scoreError" : 2.976310973814306E-4, + "scoreConfidence" : [ + 0.012703677072657972, + 0.013298939267420833 + ], + "scorePercentiles" : { + "0.0" : 0.01288314263629407, + "50.0" : 0.013002860792589627, + "90.0" : 0.013110911374780397, + "95.0" : 0.013110911374780397, + "99.0" : 0.013110911374780397, + "99.9" : 0.013110911374780397, + "99.99" : 0.013110911374780397, + "99.999" : 0.013110911374780397, + "99.9999" : 0.013110911374780397, + "100.0" : 0.013110911374780397 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.01288314263629407, + 0.012924590065370965, + 0.01290896248228287 + ], + [ + 0.013081131519808288, + 0.013099110941699807, + 0.013110911374780397 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.6469265221099043, + "scoreError" : 0.233983938982243, + "scoreConfidence" : [ + 3.4129425831276614, + 3.880910461092147 + ], + "scorePercentiles" : { + "0.0" : 3.550249164655784, + "50.0" : 3.6518308336198055, + "90.0" : 3.725429276247208, + "95.0" : 3.725429276247208, + "99.0" : 3.725429276247208, + "99.9" : 3.725429276247208, + "99.99" : 3.725429276247208, + "99.999" : 3.725429276247208, + "99.9999" : 3.725429276247208, + "100.0" : 3.725429276247208 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.71911931598513, + 3.72239825, + 3.725429276247208 + ], + [ + 3.550249164655784, + 3.5798207745168216, + 3.5845423512544805 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.8297739018441317, + "scoreError" : 0.055082385306873205, + "scoreConfidence" : [ + 2.7746915165372585, + 2.884856287151005 + ], + "scorePercentiles" : { + "0.0" : 2.776723303442532, + "50.0" : 2.849999239954403, + "90.0" : 2.857089768637532, + "95.0" : 2.857089768637532, + "99.0" : 2.857089768637532, + "99.9" : 2.857089768637532, + "99.99" : 2.857089768637532, + "99.999" : 2.857089768637532, + "99.9999" : 2.857089768637532, + "100.0" : 2.857089768637532 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.857089768637532, + 2.846963235980643, + 2.8502645807922486 + ], + [ + 2.849999239954403, + 2.8532497991440797, + 2.850531029353092 + ], + [ + 2.7937917039106144, + 2.7893524553820415, + 2.776723303442532 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17399340825190943, + "scoreError" : 0.002415189799166387, + "scoreConfidence" : [ + 0.17157821845274304, + 0.1764085980510758 + ], + "scorePercentiles" : { + "0.0" : 0.17195098658802896, + "50.0" : 0.17425089607945635, + "90.0" : 0.17574364637446838, + "95.0" : 0.17574364637446838, + "99.0" : 0.17574364637446838, + "99.9" : 0.17574364637446838, + "99.99" : 0.17574364637446838, + "99.999" : 0.17574364637446838, + "99.9999" : 0.17574364637446838, + "100.0" : 0.17574364637446838 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17527287233371308, + 0.1742294504242382, + 0.17425089607945635 + ], + [ + 0.17256591154443485, + 0.17195098658802896, + 0.17207340420882372 + ], + [ + 0.17574364637446838, + 0.17510702307867412, + 0.17474648363534695 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3288146853420742, + "scoreError" : 0.00961866055753691, + "scoreConfidence" : [ + 0.3191960247845373, + 0.3384333458996111 + ], + "scorePercentiles" : { + "0.0" : 0.3229496437267883, + "50.0" : 0.32701093767371897, + "90.0" : 0.33675235816271554, + "95.0" : 0.33675235816271554, + "99.0" : 0.33675235816271554, + "99.9" : 0.33675235816271554, + "99.99" : 0.33675235816271554, + "99.999" : 0.33675235816271554, + "99.9999" : 0.33675235816271554, + "100.0" : 0.33675235816271554 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3237096521865795, + 0.3234401143633365, + 0.3229496437267883 + ], + [ + 0.3271919762792828, + 0.32659347181580667, + 0.32701093767371897 + ], + [ + 0.33675235816271554, + 0.33555434001073753, + 0.3361296738597022 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16611211253103553, + "scoreError" : 0.012610331553940314, + "scoreConfidence" : [ + 0.15350178097709521, + 0.17872244408497584 + ], + "scorePercentiles" : { + "0.0" : 0.15637186147206455, + "50.0" : 0.16811454968479447, + "90.0" : 0.17377661910471623, + "95.0" : 0.17377661910471623, + "99.0" : 0.17377661910471623, + "99.9" : 0.17377661910471623, + "99.99" : 0.17377661910471623, + "99.999" : 0.17377661910471623, + "99.9999" : 0.17377661910471623, + "100.0" : 0.17377661910471623 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16811454968479447, + 0.16761891483405966, + 0.168381385940394 + ], + [ + 0.1568560021488848, + 0.15637186147206455, + 0.1567233963923019 + ], + [ + 0.1736130055380983, + 0.17377661910471623, + 0.17355327766400555 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3944184633266344, + "scoreError" : 0.009038540290119374, + "scoreConfidence" : [ + 0.385379923036515, + 0.40345700361675374 + ], + "scorePercentiles" : { + "0.0" : 0.3866889062294575, + "50.0" : 0.3934567140103081, + "90.0" : 0.4031605217899617, + "95.0" : 0.4031605217899617, + "99.0" : 0.4031605217899617, + "99.9" : 0.4031605217899617, + "99.99" : 0.4031605217899617, + "99.999" : 0.4031605217899617, + "99.9999" : 0.4031605217899617, + "100.0" : 0.4031605217899617 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3925430768566494, + 0.3866889062294575, + 0.38754908797085724 + ], + [ + 0.4031605217899617, + 0.3982964957384101, + 0.39914906773369524 + ], + [ + 0.39622482324973257, + 0.3934567140103081, + 0.39269747636063773 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15571468225916585, + "scoreError" : 0.0021395399956352862, + "scoreConfidence" : [ + 0.15357514226353056, + 0.15785422225480114 + ], + "scorePercentiles" : { + "0.0" : 0.15414635183044317, + "50.0" : 0.15539449561798802, + "90.0" : 0.15795597009951035, + "95.0" : 0.15795597009951035, + "99.0" : 0.15795597009951035, + "99.9" : 0.15795597009951035, + "99.99" : 0.15795597009951035, + "99.999" : 0.15795597009951035, + "99.9999" : 0.15795597009951035, + "100.0" : 0.15795597009951035 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1554432936860758, + 0.1543657783489241, + 0.15414635183044317 + ], + [ + 0.15795597009951035, + 0.15723632378930819, + 0.1565063382214849 + ], + [ + 0.15517247261273004, + 0.15539449561798802, + 0.15521111612602825 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.048346727576037835, + "scoreError" : 7.806057457140025E-4, + "scoreConfidence" : [ + 0.04756612183032383, + 0.049127333321751836 + ], + "scorePercentiles" : { + "0.0" : 0.04790786884931756, + "50.0" : 0.04807760585096154, + "90.0" : 0.0491959880701133, + "95.0" : 0.0491959880701133, + "99.0" : 0.0491959880701133, + "99.9" : 0.0491959880701133, + "99.99" : 0.0491959880701133, + "99.999" : 0.0491959880701133, + "99.9999" : 0.0491959880701133, + "100.0" : 0.0491959880701133 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04790786884931756, + 0.048031901780996936, + 0.04796132565802095 + ], + [ + 0.04867936401871206, + 0.04863606014726767, + 0.048699932351881255 + ], + [ + 0.0491959880701133, + 0.04793050145706918, + 0.04807760585096154 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9389509.542990893, + "scoreError" : 168809.23465839543, + "scoreConfidence" : [ + 9220700.308332497, + 9558318.777649289 + ], + "scorePercentiles" : { + "0.0" : 9245023.112754159, + "50.0" : 9440439.841509433, + "90.0" : 9504771.950617284, + "95.0" : 9504771.950617284, + "99.0" : 9504771.950617284, + "99.9" : 9504771.950617284, + "99.99" : 9504771.950617284, + "99.999" : 9504771.950617284, + "99.9999" : 9504771.950617284, + "100.0" : 9504771.950617284 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9447608.750708215, + 9440439.841509433, + 9409778.511759171 + ], + [ + 9458990.512287335, + 9504771.950617284, + 9461597.62630085 + ], + [ + 9290695.124419684, + 9245023.112754159, + 9246680.456561923 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-03-15T21:51:58Z-2d799ff19a93b0033f4386c5f73692f03905ad99-jdk17.json b/performance-results/2025-03-15T21:51:58Z-2d799ff19a93b0033f4386c5f73692f03905ad99-jdk17.json new file mode 100644 index 0000000000..44fbbec310 --- /dev/null +++ b/performance-results/2025-03-15T21:51:58Z-2d799ff19a93b0033f4386c5f73692f03905ad99-jdk17.json @@ -0,0 +1,1074 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.419081479349856, + "scoreError" : 0.02181667824030549, + "scoreConfidence" : [ + 3.3972648011095505, + 3.4408981575901616 + ], + "scorePercentiles" : { + "0.0" : 3.4151876582998333, + "50.0" : 3.418878719276705, + "90.0" : 3.4233808205461798, + "95.0" : 3.4233808205461798, + "99.0" : 3.4233808205461798, + "99.9" : 3.4233808205461798, + "99.99" : 3.4233808205461798, + "99.999" : 3.4233808205461798, + "99.9999" : 3.4233808205461798, + "100.0" : 3.4233808205461798 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4183955684003458, + 3.4233808205461798 + ], + [ + 3.4151876582998333, + 3.4193618701530646 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7278052370461388, + "scoreError" : 0.015468518360417289, + "scoreConfidence" : [ + 1.7123367186857215, + 1.743273755406556 + ], + "scorePercentiles" : { + "0.0" : 1.725058425680371, + "50.0" : 1.7276601761908168, + "90.0" : 1.7308421701225511, + "95.0" : 1.7308421701225511, + "99.0" : 1.7308421701225511, + "99.9" : 1.7308421701225511, + "99.99" : 1.7308421701225511, + "99.999" : 1.7308421701225511, + "99.9999" : 1.7308421701225511, + "100.0" : 1.7308421701225511 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.725058425680371, + 1.7272240633541005 + ], + [ + 1.7280962890275329, + 1.7308421701225511 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8685942360123592, + "scoreError" : 0.0032093629192022875, + "scoreConfidence" : [ + 0.8653848730931569, + 0.8718035989315615 + ], + "scorePercentiles" : { + "0.0" : 0.8680596600008403, + "50.0" : 0.8685323243645763, + "90.0" : 0.8692526353194442, + "95.0" : 0.8692526353194442, + "99.0" : 0.8692526353194442, + "99.9" : 0.8692526353194442, + "99.99" : 0.8692526353194442, + "99.999" : 0.8692526353194442, + "99.9999" : 0.8692526353194442, + "100.0" : 0.8692526353194442 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8684515043579376, + 0.8692526353194442 + ], + [ + 0.8680596600008403, + 0.868613144371215 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 70219.63258531665, + "scoreError" : 2456.2624530759686, + "scoreConfidence" : [ + 67763.37013224069, + 72675.89503839261 + ], + "scorePercentiles" : { + "0.0" : 68262.69827508756, + "50.0" : 71070.91574665892, + "90.0" : 71360.62796599019, + "95.0" : 71360.62796599019, + "99.0" : 71360.62796599019, + "99.9" : 71360.62796599019, + "99.99" : 71360.62796599019, + "99.999" : 71360.62796599019, + "99.9999" : 71360.62796599019, + "100.0" : 71360.62796599019 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 71090.84115154805, + 71070.91574665892, + 71068.11668011114 + ], + [ + 71326.00567174528, + 71360.62796599019, + 71232.73593615185 + ], + [ + 68263.9148079727, + 68262.69827508756, + 68300.83703258426 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 352.62506314566724, + "scoreError" : 5.912882195955713, + "scoreConfidence" : [ + 346.7121809497115, + 358.53794534162296 + ], + "scorePercentiles" : { + "0.0" : 348.5994939203698, + "50.0" : 351.2596406536745, + "90.0" : 357.8709892240457, + "95.0" : 357.8709892240457, + "99.0" : 357.8709892240457, + "99.9" : 357.8709892240457, + "99.99" : 357.8709892240457, + "99.999" : 357.8709892240457, + "99.9999" : 357.8709892240457, + "100.0" : 357.8709892240457 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 355.6002990284403, + 357.8709892240457, + 355.992835288197 + ], + [ + 355.0809382965137, + 351.2596406536745, + 350.96968106293775 + ], + [ + 348.5994939203698, + 349.08160018811935, + 349.1700906487072 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 107.6838769084973, + "scoreError" : 2.183117097066455, + "scoreConfidence" : [ + 105.50075981143084, + 109.86699400556375 + ], + "scorePercentiles" : { + "0.0" : 106.1920201263132, + "50.0" : 107.28988932269989, + "90.0" : 109.68039857724867, + "95.0" : 109.68039857724867, + "99.0" : 109.68039857724867, + "99.9" : 109.68039857724867, + "99.99" : 109.68039857724867, + "99.999" : 109.68039857724867, + "99.9999" : 109.68039857724867, + "100.0" : 109.68039857724867 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 106.1920201263132, + 106.3107103466616, + 106.51494550464022 + ], + [ + 109.68039857724867, + 108.93303271007677, + 109.1345679005366 + ], + [ + 107.85149666900807, + 107.24783101929074, + 107.28988932269989 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.01424904469711514, + "scoreError" : 2.8712049885863054E-4, + "scoreConfidence" : [ + 0.01396192419825651, + 0.01453616519597377 + ], + "scorePercentiles" : { + "0.0" : 0.014081548691345716, + "50.0" : 0.014197285943467211, + "90.0" : 0.014469735555761344, + "95.0" : 0.014469735555761344, + "99.0" : 0.014469735555761344, + "99.9" : 0.014469735555761344, + "99.99" : 0.014469735555761344, + "99.999" : 0.014469735555761344, + "99.9999" : 0.014469735555761344, + "100.0" : 0.014469735555761344 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014469735555761344, + 0.014466371526486872, + 0.014465053651656951 + ], + [ + 0.014084542436261102, + 0.014081548691345716, + 0.014082558140615627 + ], + [ + 0.014202345880946092, + 0.014197285943467211, + 0.014191960447495364 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9605920681254805, + "scoreError" : 0.0156261620457851, + "scoreConfidence" : [ + 0.9449659060796953, + 0.9762182301712656 + ], + "scorePercentiles" : { + "0.0" : 0.9515725629876308, + "50.0" : 0.9594482724743356, + "90.0" : 0.9813261324698264, + "95.0" : 0.9813261324698264, + "99.0" : 0.9813261324698264, + "99.9" : 0.9813261324698264, + "99.99" : 0.9813261324698264, + "99.999" : 0.9813261324698264, + "99.9999" : 0.9813261324698264, + "100.0" : 0.9813261324698264 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9632121626697486, + 0.9640522833317265, + 0.9634844487475915 + ], + [ + 0.9523479509570517, + 0.9517655204149614, + 0.9515725629876308 + ], + [ + 0.9581192790764514, + 0.9594482724743356, + 0.9813261324698264 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.012935286805918217, + "scoreError" : 2.0065649442416766E-4, + "scoreConfidence" : [ + 0.01273463031149405, + 0.013135943300342384 + ], + "scorePercentiles" : { + "0.0" : 0.01282056484627199, + "50.0" : 0.012957244368985167, + "90.0" : 0.01300262296676349, + "95.0" : 0.01300262296676349, + "99.0" : 0.01300262296676349, + "99.9" : 0.01300262296676349, + "99.99" : 0.01300262296676349, + "99.999" : 0.01300262296676349, + "99.9999" : 0.01300262296676349, + "100.0" : 0.01300262296676349 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.012886497260394009, + 0.012987495216820997, + 0.012987547024109466 + ], + [ + 0.01282056484627199, + 0.012926993521149337, + 0.01300262296676349 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.6640448498751206, + "scoreError" : 0.10001425229743845, + "scoreConfidence" : [ + 3.5640305975776823, + 3.764059102172559 + ], + "scorePercentiles" : { + "0.0" : 3.6288989746008706, + "50.0" : 3.664207595317245, + "90.0" : 3.697876677014043, + "95.0" : 3.697876677014043, + "99.0" : 3.697876677014043, + "99.9" : 3.697876677014043, + "99.99" : 3.697876677014043, + "99.999" : 3.697876677014043, + "99.9999" : 3.697876677014043, + "100.0" : 3.697876677014043 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.697876677014043, + 3.6976350059127863, + 3.6941182392909897 + ], + [ + 3.6288989746008706, + 3.6342969513435004, + 3.631443251088534 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.796145889648464, + "scoreError" : 0.10606264859186876, + "scoreConfidence" : [ + 2.690083241056595, + 2.9022085382403326 + ], + "scorePercentiles" : { + "0.0" : 2.735265740153173, + "50.0" : 2.7747582746947836, + "90.0" : 2.8826144273775216, + "95.0" : 2.8826144273775216, + "99.0" : 2.8826144273775216, + "99.9" : 2.8826144273775216, + "99.99" : 2.8826144273775216, + "99.999" : 2.8826144273775216, + "99.9999" : 2.8826144273775216, + "100.0" : 2.8826144273775216 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.77613158340272, + 2.7747582746947836, + 2.759658219646799 + ], + [ + 2.7483473440505635, + 2.735265740153173, + 2.7371980117679255 + ], + [ + 2.86899744205393, + 2.8823419636887606, + 2.8826144273775216 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.18386029216491354, + "scoreError" : 0.015936383371688425, + "scoreConfidence" : [ + 0.1679239087932251, + 0.19979667553660196 + ], + "scorePercentiles" : { + "0.0" : 0.17637173245149912, + "50.0" : 0.1786052278401886, + "90.0" : 0.1967785992325856, + "95.0" : 0.1967785992325856, + "99.0" : 0.1967785992325856, + "99.9" : 0.1967785992325856, + "99.99" : 0.1967785992325856, + "99.999" : 0.1967785992325856, + "99.9999" : 0.1967785992325856, + "100.0" : 0.1967785992325856 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17676752035423257, + 0.17639937312800974, + 0.17637173245149912 + ], + [ + 0.1965152944112561, + 0.19603218908905573, + 0.1967785992325856 + ], + [ + 0.17880823137303986, + 0.17846446160435442, + 0.1786052278401886 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3268686979876325, + "scoreError" : 0.009509582095350317, + "scoreConfidence" : [ + 0.3173591158922822, + 0.3363782800829828 + ], + "scorePercentiles" : { + "0.0" : 0.32142813943173054, + "50.0" : 0.3239967884011016, + "90.0" : 0.3350558973766208, + "95.0" : 0.3350558973766208, + "99.0" : 0.3350558973766208, + "99.9" : 0.3350558973766208, + "99.99" : 0.3350558973766208, + "99.999" : 0.3350558973766208, + "99.9999" : 0.3350558973766208, + "100.0" : 0.3350558973766208 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.32486509677419356, + 0.3239967884011016, + 0.32357341784766713 + ], + [ + 0.33470154652252493, + 0.33304827188863356, + 0.3350558973766208 + ], + [ + 0.3226825007905521, + 0.32142813943173054, + 0.3224666228556688 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16040518763688932, + "scoreError" : 0.005985603649017898, + "scoreConfidence" : [ + 0.15441958398787142, + 0.16639079128590722 + ], + "scorePercentiles" : { + "0.0" : 0.15520278784163394, + "50.0" : 0.16224452822168503, + "90.0" : 0.1633454222407344, + "95.0" : 0.1633454222407344, + "99.0" : 0.1633454222407344, + "99.9" : 0.1633454222407344, + "99.99" : 0.1633454222407344, + "99.999" : 0.1633454222407344, + "99.9999" : 0.1633454222407344, + "100.0" : 0.1633454222407344 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16206104194013646, + 0.16235918097835794, + 0.16224452822168503 + ], + [ + 0.15520278784163394, + 0.15584427127228526, + 0.15607415878763287 + ], + [ + 0.1633454222407344, + 0.16317626146691686, + 0.1633390359826212 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.39186170392434727, + "scoreError" : 0.008382766232144253, + "scoreConfidence" : [ + 0.38347893769220304, + 0.4002444701564915 + ], + "scorePercentiles" : { + "0.0" : 0.3852108789723046, + "50.0" : 0.39403914370148546, + "90.0" : 0.39714948530579824, + "95.0" : 0.39714948530579824, + "99.0" : 0.39714948530579824, + "99.9" : 0.39714948530579824, + "99.99" : 0.39714948530579824, + "99.999" : 0.39714948530579824, + "99.9999" : 0.39714948530579824, + "100.0" : 0.39714948530579824 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.38585839105606357, + 0.38531843093284013, + 0.3852108789723046 + ], + [ + 0.3969191444334193, + 0.39403914370148546, + 0.3927082935794227 + ], + [ + 0.39714948530579824, + 0.394844230031192, + 0.3947073373065993 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15617891534733674, + "scoreError" : 0.0027246898703879286, + "scoreConfidence" : [ + 0.1534542254769488, + 0.15890360521772467 + ], + "scorePercentiles" : { + "0.0" : 0.15406912377709647, + "50.0" : 0.1558871378020265, + "90.0" : 0.15838028224133288, + "95.0" : 0.15838028224133288, + "99.0" : 0.15838028224133288, + "99.9" : 0.15838028224133288, + "99.99" : 0.15838028224133288, + "99.999" : 0.15838028224133288, + "99.9999" : 0.15838028224133288, + "100.0" : 0.15838028224133288 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15838028224133288, + 0.15824253888757023, + 0.1577863723847392 + ], + [ + 0.15528550955760181, + 0.15422730028839776, + 0.15406912377709647 + ], + [ + 0.1558871378020265, + 0.155819362336003, + 0.15591261085126287 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.046892479422411135, + "scoreError" : 7.27228595279716E-4, + "scoreConfidence" : [ + 0.04616525082713142, + 0.04761970801769085 + ], + "scorePercentiles" : { + "0.0" : 0.04646620786848378, + "50.0" : 0.04681246217834389, + "90.0" : 0.04745806077877702, + "95.0" : 0.04745806077877702, + "99.0" : 0.04745806077877702, + "99.9" : 0.04745806077877702, + "99.99" : 0.04745806077877702, + "99.999" : 0.04745806077877702, + "99.9999" : 0.04745806077877702, + "100.0" : 0.04745806077877702 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04697078824430134, + 0.04647115450996794, + 0.04646620786848378 + ], + [ + 0.04681246217834389, + 0.04654221015349387, + 0.04649830915304675 + ], + [ + 0.04740479233190489, + 0.04740832958338074, + 0.04745806077877702 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9153374.794718103, + "scoreError" : 35141.224373571386, + "scoreConfidence" : [ + 9118233.570344532, + 9188516.019091675 + ], + "scorePercentiles" : { + "0.0" : 9121060.185050137, + "50.0" : 9156568.882891126, + "90.0" : 9189768.824609734, + "95.0" : 9189768.824609734, + "99.0" : 9189768.824609734, + "99.9" : 9189768.824609734, + "99.99" : 9189768.824609734, + "99.999" : 9189768.824609734, + "99.9999" : 9189768.824609734, + "100.0" : 9189768.824609734 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9138728.467579909, + 9135038.461187216, + 9121060.185050137 + ], + [ + 9144502.108775137, + 9156568.882891126, + 9157744.234432235 + ], + [ + 9189768.824609734, + 9171180.827681027, + 9165781.16025641 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-03-15T22:05:06Z-2d799ff19a93b0033f4386c5f73692f03905ad99-jdk17.json b/performance-results/2025-03-15T22:05:06Z-2d799ff19a93b0033f4386c5f73692f03905ad99-jdk17.json new file mode 100644 index 0000000000..662bfc4c3b --- /dev/null +++ b/performance-results/2025-03-15T22:05:06Z-2d799ff19a93b0033f4386c5f73692f03905ad99-jdk17.json @@ -0,0 +1,1074 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.419640407240273, + "scoreError" : 0.033845851587922124, + "scoreConfidence" : [ + 3.3857945556523505, + 3.453486258828195 + ], + "scorePercentiles" : { + "0.0" : 3.4146699284177893, + "50.0" : 3.4184445363788676, + "90.0" : 3.427002627785568, + "95.0" : 3.427002627785568, + "99.0" : 3.427002627785568, + "99.9" : 3.427002627785568, + "99.99" : 3.427002627785568, + "99.999" : 3.427002627785568, + "99.9999" : 3.427002627785568, + "100.0" : 3.427002627785568 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.418960193365409, + 3.427002627785568 + ], + [ + 3.4146699284177893, + 3.417928879392327 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.728259570626513, + "scoreError" : 0.009225737494153523, + "scoreConfidence" : [ + 1.7190338331323594, + 1.7374853081206665 + ], + "scorePercentiles" : { + "0.0" : 1.726468041428064, + "50.0" : 1.7283038272179163, + "90.0" : 1.7299625866421546, + "95.0" : 1.7299625866421546, + "99.0" : 1.7299625866421546, + "99.9" : 1.7299625866421546, + "99.99" : 1.7299625866421546, + "99.999" : 1.7299625866421546, + "99.9999" : 1.7299625866421546, + "100.0" : 1.7299625866421546 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7282796925630504, + 1.7299625866421546 + ], + [ + 1.726468041428064, + 1.7283279618727825 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8681979109233867, + "scoreError" : 0.006028616842983343, + "scoreConfidence" : [ + 0.8621692940804033, + 0.8742265277663701 + ], + "scorePercentiles" : { + "0.0" : 0.8668273030701195, + "50.0" : 0.8685266393427444, + "90.0" : 0.8689110619379388, + "95.0" : 0.8689110619379388, + "99.0" : 0.8689110619379388, + "99.9" : 0.8689110619379388, + "99.99" : 0.8689110619379388, + "99.999" : 0.8689110619379388, + "99.9999" : 0.8689110619379388, + "100.0" : 0.8689110619379388 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8685892047662458, + 0.8689110619379388 + ], + [ + 0.8668273030701195, + 0.8684640739192432 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 69648.01861478564, + "scoreError" : 2087.607519878574, + "scoreConfidence" : [ + 67560.41109490707, + 71735.62613466421 + ], + "scorePercentiles" : { + "0.0" : 68001.28467819697, + "50.0" : 69992.90089804973, + "90.0" : 71029.82538555992, + "95.0" : 71029.82538555992, + "99.0" : 71029.82538555992, + "99.9" : 71029.82538555992, + "99.99" : 71029.82538555992, + "99.999" : 71029.82538555992, + "99.9999" : 71029.82538555992, + "100.0" : 71029.82538555992 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 68001.28467819697, + 70138.72785998843, + 69992.90089804973 + ], + [ + 71001.67829047698, + 71024.5754757033, + 71029.82538555992 + ], + [ + 68613.0120961982, + 68517.5283816697, + 68512.63446722752 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 346.553845841135, + "scoreError" : 7.0370841367788906, + "scoreConfidence" : [ + 339.5167617043561, + 353.5909299779139 + ], + "scorePercentiles" : { + "0.0" : 338.8824915344101, + "50.0" : 345.86361663474355, + "90.0" : 352.82648521467127, + "95.0" : 352.82648521467127, + "99.0" : 352.82648521467127, + "99.9" : 352.82648521467127, + "99.99" : 352.82648521467127, + "99.999" : 352.82648521467127, + "99.9999" : 352.82648521467127, + "100.0" : 352.82648521467127 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 346.78276083942797, + 343.2203107307122, + 338.8824915344101 + ], + [ + 349.6999294135891, + 350.7825466039242, + 352.82648521467127 + ], + [ + 345.07844612419234, + 345.84802547454444, + 345.86361663474355 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 107.93576515773535, + "scoreError" : 4.531444666535601, + "scoreConfidence" : [ + 103.40432049119974, + 112.46720982427095 + ], + "scorePercentiles" : { + "0.0" : 104.48158965432441, + "50.0" : 107.8583918780271, + "90.0" : 111.14908882675743, + "95.0" : 111.14908882675743, + "99.0" : 111.14908882675743, + "99.9" : 111.14908882675743, + "99.99" : 111.14908882675743, + "99.999" : 111.14908882675743, + "99.9999" : 111.14908882675743, + "100.0" : 111.14908882675743 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 111.14908882675743, + 110.92489527140685, + 111.13665039776886 + ], + [ + 107.64938815573633, + 107.8583918780271, + 108.09974628464035 + ], + [ + 105.27645600496199, + 104.48158965432441, + 104.84567994599468 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014182477074290387, + "scoreError" : 4.544045452456582E-5, + "scoreConfidence" : [ + 0.01413703661976582, + 0.014227917528814953 + ], + "scorePercentiles" : { + "0.0" : 0.014150026652705457, + "50.0" : 0.01417108860798957, + "90.0" : 0.014222776878592986, + "95.0" : 0.014222776878592986, + "99.0" : 0.014222776878592986, + "99.9" : 0.014222776878592986, + "99.99" : 0.014222776878592986, + "99.999" : 0.014222776878592986, + "99.9999" : 0.014222776878592986, + "100.0" : 0.014222776878592986 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014193744343859291, + 0.014196946813177453, + 0.01417108860798957 + ], + [ + 0.014150026652705457, + 0.014220712166243843, + 0.014222776878592986 + ], + [ + 0.01416372353148631, + 0.014158148562610167, + 0.014165126111948418 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9717049067434507, + "scoreError" : 0.006816987246318855, + "scoreConfidence" : [ + 0.9648879194971318, + 0.9785218939897695 + ], + "scorePercentiles" : { + "0.0" : 0.9666643270178831, + "50.0" : 0.9739816991624465, + "90.0" : 0.9758728205503513, + "95.0" : 0.9758728205503513, + "99.0" : 0.9758728205503513, + "99.9" : 0.9758728205503513, + "99.99" : 0.9758728205503513, + "99.999" : 0.9758728205503513, + "99.9999" : 0.9758728205503513, + "100.0" : 0.9758728205503513 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9676304501209483, + 0.9666643270178831, + 0.9755419225441421 + ], + [ + 0.9683314082106894, + 0.9673373230798994, + 0.9753787322734809 + ], + [ + 0.9739816991624465, + 0.9758728205503513, + 0.9746054777312153 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.013071837844191544, + "scoreError" : 2.2574804378363924E-4, + "scoreConfidence" : [ + 0.012846089800407905, + 0.013297585887975184 + ], + "scorePercentiles" : { + "0.0" : 0.012941054920453339, + "50.0" : 0.013066141899765456, + "90.0" : 0.013166056665429086, + "95.0" : 0.013166056665429086, + "99.0" : 0.013166056665429086, + "99.9" : 0.013166056665429086, + "99.99" : 0.013166056665429086, + "99.999" : 0.013166056665429086, + "99.9999" : 0.013166056665429086, + "100.0" : 0.013166056665429086 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.012941054920453339, + 0.013062482853298849, + 0.013044916436211845 + ], + [ + 0.013069800946232063, + 0.01314671524352408, + 0.013166056665429086 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.714277948000932, + "scoreError" : 0.21064436555544172, + "scoreConfidence" : [ + 3.5036335824454903, + 3.9249223135563738 + ], + "scorePercentiles" : { + "0.0" : 3.6397042852983987, + "50.0" : 3.7140892108414008, + "90.0" : 3.7856188084784255, + "95.0" : 3.7856188084784255, + "99.0" : 3.7856188084784255, + "99.9" : 3.7856188084784255, + "99.99" : 3.7856188084784255, + "99.999" : 3.7856188084784255, + "99.9999" : 3.7856188084784255, + "100.0" : 3.7856188084784255 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.650553775912409, + 3.6397042852983987, + 3.647226038657914 + ], + [ + 3.7776246457703926, + 3.7856188084784255, + 3.7849401338880484 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.8470397521263693, + "scoreError" : 0.025566746262419202, + "scoreConfidence" : [ + 2.82147300586395, + 2.8726064983887887 + ], + "scorePercentiles" : { + "0.0" : 2.8274614687588353, + "50.0" : 2.8499350316329437, + "90.0" : 2.8701827578192254, + "95.0" : 2.8701827578192254, + "99.0" : 2.8701827578192254, + "99.9" : 2.8701827578192254, + "99.99" : 2.8701827578192254, + "99.999" : 2.8701827578192254, + "99.9999" : 2.8701827578192254, + "100.0" : 2.8701827578192254 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.8701827578192254, + 2.8599932299113524, + 2.8499350316329437 + ], + [ + 2.860579891590389, + 2.8513845940706957, + 2.841021331534091 + ], + [ + 2.835212614512472, + 2.8274614687588353, + 2.8275868493073224 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1745005195505932, + "scoreError" : 0.0020275178639915406, + "scoreConfidence" : [ + 0.17247300168660165, + 0.17652803741458475 + ], + "scorePercentiles" : { + "0.0" : 0.17309754439867064, + "50.0" : 0.1741435452329125, + "90.0" : 0.1760333223960992, + "95.0" : 0.1760333223960992, + "99.0" : 0.1760333223960992, + "99.9" : 0.1760333223960992, + "99.99" : 0.1760333223960992, + "99.999" : 0.1760333223960992, + "99.9999" : 0.1760333223960992, + "100.0" : 0.1760333223960992 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17357218840906724, + 0.1732631288875028, + 0.17309754439867064 + ], + [ + 0.17473068384819682, + 0.1737637954162395, + 0.1741435452329125 + ], + [ + 0.1760333223960992, + 0.17601621082831698, + 0.175884256538333 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3228836238631105, + "scoreError" : 0.0025800955935671417, + "scoreConfidence" : [ + 0.32030352826954334, + 0.3254637194566776 + ], + "scorePercentiles" : { + "0.0" : 0.3206341434800731, + "50.0" : 0.32319999993536086, + "90.0" : 0.3249434223883022, + "95.0" : 0.3249434223883022, + "99.0" : 0.3249434223883022, + "99.9" : 0.3249434223883022, + "99.99" : 0.3249434223883022, + "99.999" : 0.3249434223883022, + "99.9999" : 0.3249434223883022, + "100.0" : 0.3249434223883022 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3206341434800731, + 0.32145425224211643, + 0.3210235518923951 + ], + [ + 0.3242084933700762, + 0.32319999993536086, + 0.32265440853068333 + ], + [ + 0.3249434223883022, + 0.3239831920173648, + 0.3238511509116228 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16591044519258213, + "scoreError" : 0.0067544336253027755, + "scoreConfidence" : [ + 0.15915601156727935, + 0.17266487881788492 + ], + "scorePercentiles" : { + "0.0" : 0.1618345934814623, + "50.0" : 0.16472899033060437, + "90.0" : 0.17116194415062044, + "95.0" : 0.17116194415062044, + "99.0" : 0.17116194415062044, + "99.9" : 0.17116194415062044, + "99.99" : 0.17116194415062044, + "99.999" : 0.17116194415062044, + "99.9999" : 0.17116194415062044, + "100.0" : 0.17116194415062044 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16472899033060437, + 0.16473938853104458, + 0.1646474898167509 + ], + [ + 0.17080365469358474, + 0.17116194415062044, + 0.17112831592997588 + ], + [ + 0.16229985615749157, + 0.1618345934814623, + 0.16184977364170455 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3956644356033628, + "scoreError" : 0.008307636951365563, + "scoreConfidence" : [ + 0.38735679865199724, + 0.40397207255472833 + ], + "scorePercentiles" : { + "0.0" : 0.390096359625512, + "50.0" : 0.3933824678808859, + "90.0" : 0.405691865030426, + "95.0" : 0.405691865030426, + "99.0" : 0.405691865030426, + "99.9" : 0.405691865030426, + "99.99" : 0.405691865030426, + "99.999" : 0.405691865030426, + "99.9999" : 0.405691865030426, + "100.0" : 0.405691865030426 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.39496456504739336, + 0.3915411707842293, + 0.390096359625512 + ], + [ + 0.405691865030426, + 0.39975288051646946, + 0.3991692626831118 + ], + [ + 0.39332322076696163, + 0.3930581280952755, + 0.3933824678808859 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1572647709808916, + "scoreError" : 0.0037341884184379057, + "scoreConfidence" : [ + 0.1535305825624537, + 0.16099895939932948 + ], + "scorePercentiles" : { + "0.0" : 0.15498375, + "50.0" : 0.15638225283437848, + "90.0" : 0.16048965336778417, + "95.0" : 0.16048965336778417, + "99.0" : 0.16048965336778417, + "99.9" : 0.16048965336778417, + "99.99" : 0.16048965336778417, + "99.999" : 0.16048965336778417, + "99.9999" : 0.16048965336778417, + "100.0" : 0.16048965336778417 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1560176270184252, + 0.15642328273111217, + 0.15638225283437848 + ], + [ + 0.1554366101715991, + 0.15567427536660544, + 0.15498375 + ], + [ + 0.16048965336778417, + 0.16026842540506755, + 0.15970706193305226 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.0472223516947196, + "scoreError" : 0.0011805643716068521, + "scoreConfidence" : [ + 0.046041787323112746, + 0.04840291606632645 + ], + "scorePercentiles" : { + "0.0" : 0.04637169603342422, + "50.0" : 0.0471845359800318, + "90.0" : 0.04845031826065892, + "95.0" : 0.04845031826065892, + "99.0" : 0.04845031826065892, + "99.9" : 0.04845031826065892, + "99.99" : 0.04845031826065892, + "99.999" : 0.04845031826065892, + "99.9999" : 0.04845031826065892, + "100.0" : 0.04845031826065892 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.046576301418225004, + 0.04637169603342422, + 0.046407148343055496 + ], + [ + 0.04845031826065892, + 0.047919916816813936, + 0.04754857862529361 + ], + [ + 0.047405010376817366, + 0.04713765939815601, + 0.0471845359800318 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9322508.960505482, + "scoreError" : 254291.34908198053, + "scoreConfidence" : [ + 9068217.611423502, + 9576800.309587462 + ], + "scorePercentiles" : { + "0.0" : 9170753.268560953, + "50.0" : 9282116.878478665, + "90.0" : 9531735.557142857, + "95.0" : 9531735.557142857, + "99.0" : 9531735.557142857, + "99.9" : 9531735.557142857, + "99.99" : 9531735.557142857, + "99.999" : 9531735.557142857, + "99.9999" : 9531735.557142857, + "100.0" : 9531735.557142857 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9250168.812384473, + 9284957.720779222, + 9282116.878478665 + ], + [ + 9193211.326286765, + 9170753.268560953, + 9173660.361136572 + ], + [ + 9493256.503795067, + 9522720.215984777, + 9531735.557142857 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-03-18T23:42:07Z-3d7dce5e49dfbe92d656629ae4fdbab979bba8be-jdk17.json b/performance-results/2025-03-18T23:42:07Z-3d7dce5e49dfbe92d656629ae4fdbab979bba8be-jdk17.json new file mode 100644 index 0000000000..01af99efd7 --- /dev/null +++ b/performance-results/2025-03-18T23:42:07Z-3d7dce5e49dfbe92d656629ae4fdbab979bba8be-jdk17.json @@ -0,0 +1,1310 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4030341962375994, + "scoreError" : 0.02905720653413424, + "scoreConfidence" : [ + 3.3739769897034653, + 3.4320914027717335 + ], + "scorePercentiles" : { + "0.0" : 3.3984726801583083, + "50.0" : 3.40222251416189, + "90.0" : 3.40921907646831, + "95.0" : 3.40921907646831, + "99.0" : 3.40921907646831, + "99.9" : 3.40921907646831, + "99.99" : 3.40921907646831, + "99.999" : 3.40921907646831, + "99.9999" : 3.40921907646831, + "100.0" : 3.40921907646831 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.3984726801583083, + 3.40921907646831 + ], + [ + 3.401847449089267, + 3.402597579234513 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7177090587738857, + "scoreError" : 0.011729170580772197, + "scoreConfidence" : [ + 1.7059798881931134, + 1.729438229354658 + ], + "scorePercentiles" : { + "0.0" : 1.7161540986078148, + "50.0" : 1.7174972498814143, + "90.0" : 1.7196876367249, + "95.0" : 1.7196876367249, + "99.0" : 1.7196876367249, + "99.9" : 1.7196876367249, + "99.99" : 1.7196876367249, + "99.999" : 1.7196876367249, + "99.9999" : 1.7196876367249, + "100.0" : 1.7196876367249 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7161816911797099, + 1.7188128085831187 + ], + [ + 1.7161540986078148, + 1.7196876367249 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8648592999960828, + "scoreError" : 0.005526498918160724, + "scoreConfidence" : [ + 0.8593328010779221, + 0.8703857989142435 + ], + "scorePercentiles" : { + "0.0" : 0.8639429699495912, + "50.0" : 0.8649398593777518, + "90.0" : 0.8656145112792367, + "95.0" : 0.8656145112792367, + "99.0" : 0.8656145112792367, + "99.9" : 0.8656145112792367, + "99.99" : 0.8656145112792367, + "99.999" : 0.8656145112792367, + "99.9999" : 0.8656145112792367, + "100.0" : 0.8656145112792367 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.864318860199225, + 0.8639429699495912 + ], + [ + 0.8655608585562785, + 0.8656145112792367 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 15.894285209058118, + "scoreError" : 0.22100514707279106, + "scoreConfidence" : [ + 15.673280061985327, + 16.11529035613091 + ], + "scorePercentiles" : { + "0.0" : 15.675229525482061, + "50.0" : 15.907164710763897, + "90.0" : 16.06855890412849, + "95.0" : 16.06855890412849, + "99.0" : 16.06855890412849, + "99.9" : 16.06855890412849, + "99.99" : 16.06855890412849, + "99.999" : 16.06855890412849, + "99.9999" : 16.06855890412849, + "100.0" : 16.06855890412849 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.06855890412849, + 15.954200891572873, + 15.889569229430252 + ], + [ + 15.907164710763897, + 16.00879970270076, + 15.99190467327713 + ], + [ + 15.830796895625069, + 15.675229525482061, + 15.72234234854253 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 23.84258595407435, + "scoreError" : 0.16971826450224373, + "scoreConfidence" : [ + 23.672867689572108, + 24.012304218576595 + ], + "scorePercentiles" : { + "0.0" : 23.73385673723001, + "50.0" : 23.823719230321753, + "90.0" : 24.079442391385157, + "95.0" : 24.079442391385157, + "99.0" : 24.079442391385157, + "99.9" : 24.079442391385157, + "99.99" : 24.079442391385157, + "99.999" : 24.079442391385157, + "99.9999" : 24.079442391385157, + "100.0" : 24.079442391385157 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 23.899958603431326, + 23.796039927842227, + 23.790688365773097 + ], + [ + 23.849380733110003, + 24.079442391385157, + 23.823719230321753 + ], + [ + 23.839112614729608, + 23.73385673723001, + 23.771074982845974 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 70190.75403769573, + "scoreError" : 401.50400495191934, + "scoreConfidence" : [ + 69789.25003274382, + 70592.25804264765 + ], + "scorePercentiles" : { + "0.0" : 69854.4041312379, + "50.0" : 70190.65239873884, + "90.0" : 70493.13169380104, + "95.0" : 70493.13169380104, + "99.0" : 70493.13169380104, + "99.9" : 70493.13169380104, + "99.99" : 70493.13169380104, + "99.999" : 70493.13169380104, + "99.9999" : 70493.13169380104, + "100.0" : 70493.13169380104 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 70482.36880103988, + 70493.13169380104, + 70329.6963337318 + ], + [ + 69983.17063049234, + 70365.16553246543, + 70190.65239873884 + ], + [ + 70073.43951918474, + 69854.4041312379, + 69944.75729856959 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 324.33117298479885, + "scoreError" : 16.396151264190877, + "scoreConfidence" : [ + 307.935021720608, + 340.7273242489897 + ], + "scorePercentiles" : { + "0.0" : 311.7536298897916, + "50.0" : 320.7394310847248, + "90.0" : 341.3502382353502, + "95.0" : 341.3502382353502, + "99.0" : 341.3502382353502, + "99.9" : 341.3502382353502, + "99.99" : 341.3502382353502, + "99.999" : 341.3502382353502, + "99.9999" : 341.3502382353502, + "100.0" : 341.3502382353502 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 320.6566368654864, + 323.2717383562003, + 320.0584633567249 + ], + [ + 334.0350009976469, + 341.3502382353502, + 332.8480453159042 + ], + [ + 314.2673727613599, + 311.7536298897916, + 320.7394310847248 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 98.82877677960663, + "scoreError" : 2.213364397678412, + "scoreConfidence" : [ + 96.61541238192821, + 101.04214117728505 + ], + "scorePercentiles" : { + "0.0" : 96.7095691352346, + "50.0" : 98.54617145982048, + "90.0" : 100.73049767909293, + "95.0" : 100.73049767909293, + "99.0" : 100.73049767909293, + "99.9" : 100.73049767909293, + "99.99" : 100.73049767909293, + "99.999" : 100.73049767909293, + "99.9999" : 100.73049767909293, + "100.0" : 100.73049767909293 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 98.54617145982048, + 98.33512677300635, + 97.41535629373469 + ], + [ + 100.49777592353054, + 98.52742877499989, + 99.21958486804665 + ], + [ + 99.47748010899346, + 100.73049767909293, + 96.7095691352346 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06274013284017438, + "scoreError" : 7.00780518209212E-4, + "scoreConfidence" : [ + 0.06203935232196517, + 0.06344091335838359 + ], + "scorePercentiles" : { + "0.0" : 0.06218591576394503, + "50.0" : 0.06281513064070351, + "90.0" : 0.06342166454841226, + "95.0" : 0.06342166454841226, + "99.0" : 0.06342166454841226, + "99.9" : 0.06342166454841226, + "99.99" : 0.06342166454841226, + "99.999" : 0.06342166454841226, + "99.9999" : 0.06342166454841226, + "100.0" : 0.06342166454841226 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06298900028974552, + 0.06281513064070351, + 0.06218591576394503 + ], + [ + 0.06310182017466368, + 0.06285766694114098, + 0.06342166454841226 + ], + [ + 0.06224469643779682, + 0.062339103487828444, + 0.06270619727733327 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.041783924753189074, + "scoreError" : 3.37840812015335E-4, + "scoreConfidence" : [ + 0.04144608394117374, + 0.04212176556520441 + ], + "scorePercentiles" : { + "0.0" : 0.04141958317973782, + "50.0" : 0.04176708066375415, + "90.0" : 0.04209846797618948, + "95.0" : 0.04209846797618948, + "99.0" : 0.04209846797618948, + "99.9" : 0.04209846797618948, + "99.99" : 0.04209846797618948, + "99.999" : 0.04209846797618948, + "99.9999" : 0.04209846797618948, + "100.0" : 0.04209846797618948 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04191370691440092, + 0.04174531906358145, + 0.04141958317973782 + ], + [ + 0.04176708066375415, + 0.04170001375666671, + 0.04209846797618948 + ], + [ + 0.04160955372753638, + 0.041965154257729884, + 0.041836443239104876 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014174588031238746, + "scoreError" : 1.2015869779662313E-4, + "scoreConfidence" : [ + 0.014054429333442123, + 0.014294746729035369 + ], + "scorePercentiles" : { + "0.0" : 0.0140440420136085, + "50.0" : 0.01417231512733663, + "90.0" : 0.014274561368398815, + "95.0" : 0.014274561368398815, + "99.0" : 0.014274561368398815, + "99.9" : 0.014274561368398815, + "99.99" : 0.014274561368398815, + "99.999" : 0.014274561368398815, + "99.9999" : 0.014274561368398815, + "100.0" : 0.014274561368398815 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014137954149789701, + 0.014109782593543162, + 0.0140440420136085 + ], + [ + 0.014237063277154677, + 0.014236445661644117, + 0.014274561368398815 + ], + [ + 0.014163128768233044, + 0.01417231512733663, + 0.01419599932144008 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.983950143153562, + "scoreError" : 0.01789666233502451, + "scoreConfidence" : [ + 0.9660534808185375, + 1.0018468054885865 + ], + "scorePercentiles" : { + "0.0" : 0.9690377924418605, + "50.0" : 0.9826584856047951, + "90.0" : 1.0008194397518015, + "95.0" : 1.0008194397518015, + "99.0" : 1.0008194397518015, + "99.9" : 1.0008194397518015, + "99.99" : 1.0008194397518015, + "99.999" : 1.0008194397518015, + "99.9999" : 1.0008194397518015, + "100.0" : 1.0008194397518015 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9766162767578125, + 0.9759815764614034, + 0.977302323463305 + ], + [ + 0.9921559711309523, + 1.0008194397518015, + 0.9969865728242449 + ], + [ + 0.9690377924418605, + 0.9826584856047951, + 0.9839928499458821 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.013046854808199082, + "scoreError" : 7.155498045868686E-4, + "scoreConfidence" : [ + 0.012331305003612214, + 0.013762404612785951 + ], + "scorePercentiles" : { + "0.0" : 0.012759913740041137, + "50.0" : 0.013023311519173332, + "90.0" : 0.013313933373629036, + "95.0" : 0.013313933373629036, + "99.0" : 0.013313933373629036, + "99.9" : 0.013313933373629036, + "99.99" : 0.013313933373629036, + "99.999" : 0.013313933373629036, + "99.9999" : 0.013313933373629036, + "100.0" : 0.013313933373629036 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013197641879604188, + 0.013312456124516436, + 0.013313933373629036 + ], + [ + 0.012759913740041137, + 0.012848981158742476, + 0.012848202572661234 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.9100372274851996, + "scoreError" : 0.09267811388781177, + "scoreConfidence" : [ + 3.8173591135973877, + 4.002715341373011 + ], + "scorePercentiles" : { + "0.0" : 3.8678984586233565, + "50.0" : 3.906645754355439, + "90.0" : 3.9560345450949366, + "95.0" : 3.9560345450949366, + "99.0" : 3.9560345450949366, + "99.9" : 3.9560345450949366, + "99.99" : 3.9560345450949366, + "99.999" : 3.9560345450949366, + "99.9999" : 3.9560345450949366, + "100.0" : 3.9560345450949366 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.8678984586233565, + 3.8990089734996105, + 3.914282535211268 + ], + [ + 3.8847961304347827, + 3.938202722047244, + 3.9560345450949366 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.074877921242732, + "scoreError" : 0.14285652352037062, + "scoreConfidence" : [ + 2.9320213977223615, + 3.217734444763103 + ], + "scorePercentiles" : { + "0.0" : 2.9614455812851643, + "50.0" : 3.079247117302956, + "90.0" : 3.1787071652892562, + "95.0" : 3.1787071652892562, + "99.0" : 3.1787071652892562, + "99.9" : 3.1787071652892562, + "99.99" : 3.1787071652892562, + "99.999" : 3.1787071652892562, + "99.9999" : 3.1787071652892562, + "100.0" : 3.1787071652892562 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.079247117302956, + 3.1787071652892562, + 3.1742028940019043 + ], + [ + 2.9614455812851643, + 3.001099893189319, + 2.99687381810009 + ], + [ + 3.162621833649589, + 3.011864800361337, + 3.107838188004972 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1792216150867655, + "scoreError" : 0.0028134776583006605, + "scoreConfidence" : [ + 0.17640813742846484, + 0.18203509274506618 + ], + "scorePercentiles" : { + "0.0" : 0.1767819975958139, + "50.0" : 0.1795381048653501, + "90.0" : 0.1817618339270784, + "95.0" : 0.1817618339270784, + "99.0" : 0.1817618339270784, + "99.9" : 0.1817618339270784, + "99.99" : 0.1817618339270784, + "99.999" : 0.1817618339270784, + "99.9999" : 0.1817618339270784, + "100.0" : 0.1817618339270784 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.18049263225340673, + 0.1804214153210529, + 0.1795381048653501 + ], + [ + 0.1817618339270784, + 0.17952781720912697, + 0.17965059216743015 + ], + [ + 0.1772999119373083, + 0.1775202305043225, + 0.1767819975958139 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.33466733956572775, + "scoreError" : 0.004866797587081008, + "scoreConfidence" : [ + 0.3298005419786467, + 0.3395341371528088 + ], + "scorePercentiles" : { + "0.0" : 0.3300852951544758, + "50.0" : 0.3358559937533584, + "90.0" : 0.33746668143623665, + "95.0" : 0.33746668143623665, + "99.0" : 0.33746668143623665, + "99.9" : 0.33746668143623665, + "99.99" : 0.33746668143623665, + "99.999" : 0.33746668143623665, + "99.9999" : 0.33746668143623665, + "100.0" : 0.33746668143623665 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3300852951544758, + 0.3314083194034797, + 0.33132537756352914 + ], + [ + 0.33537929941645983, + 0.33673772668193147, + 0.3358559937533584 + ], + [ + 0.337392372537112, + 0.33746668143623665, + 0.33635499014496656 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17101508461082024, + "scoreError" : 0.010519194639942204, + "scoreConfidence" : [ + 0.16049588997087805, + 0.18153427925076243 + ], + "scorePercentiles" : { + "0.0" : 0.16516208604743343, + "50.0" : 0.16813719979487524, + "90.0" : 0.17961573141030246, + "95.0" : 0.17961573141030246, + "99.0" : 0.17961573141030246, + "99.9" : 0.17961573141030246, + "99.99" : 0.17961573141030246, + "99.999" : 0.17961573141030246, + "99.9999" : 0.17961573141030246, + "100.0" : 0.17961573141030246 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17919520307852202, + 0.17888246420649684, + 0.17961573141030246 + ], + [ + 0.16516208604743343, + 0.16615715744786907, + 0.16587774737505598 + ], + [ + 0.16861689849598704, + 0.16749127364084013, + 0.16813719979487524 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.39043772821823275, + "scoreError" : 0.0047876565689028575, + "scoreConfidence" : [ + 0.3856500716493299, + 0.3952253847871356 + ], + "scorePercentiles" : { + "0.0" : 0.38742203788788593, + "50.0" : 0.38943609887456676, + "90.0" : 0.39498915905679755, + "95.0" : 0.39498915905679755, + "99.0" : 0.39498915905679755, + "99.9" : 0.39498915905679755, + "99.99" : 0.39498915905679755, + "99.999" : 0.39498915905679755, + "99.9999" : 0.39498915905679755, + "100.0" : 0.39498915905679755 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.39472534043812907, + 0.39137307032717594, + 0.38897682500291725 + ], + [ + 0.39498915905679755, + 0.3910808260529506, + 0.38943609887456676 + ], + [ + 0.388212455628882, + 0.38742203788788593, + 0.3877237406947891 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15861643109426515, + "scoreError" : 0.003487971523721404, + "scoreConfidence" : [ + 0.15512845957054375, + 0.16210440261798656 + ], + "scorePercentiles" : { + "0.0" : 0.15579235488946705, + "50.0" : 0.1587464442257322, + "90.0" : 0.1619693449677691, + "95.0" : 0.1619693449677691, + "99.0" : 0.1619693449677691, + "99.9" : 0.1619693449677691, + "99.99" : 0.1619693449677691, + "99.999" : 0.1619693449677691, + "99.9999" : 0.1619693449677691, + "100.0" : 0.1619693449677691 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.158881436433542, + 0.1587464442257322, + 0.1579010665382429 + ], + [ + 0.1573456464535213, + 0.1560672353767401, + 0.15579235488946705 + ], + [ + 0.1619693449677691, + 0.16050901377140747, + 0.16033533719196422 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04797686652872106, + "scoreError" : 0.0022187213778125004, + "scoreConfidence" : [ + 0.04575814515090856, + 0.05019558790653356 + ], + "scorePercentiles" : { + "0.0" : 0.04637634170569958, + "50.0" : 0.04768700323789723, + "90.0" : 0.04974361433389377, + "95.0" : 0.04974361433389377, + "99.0" : 0.04974361433389377, + "99.9" : 0.04974361433389377, + "99.99" : 0.04974361433389377, + "99.999" : 0.04974361433389377, + "99.9999" : 0.04974361433389377, + "100.0" : 0.04974361433389377 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04974361433389377, + 0.049498889757855345, + 0.04956484810095212 + ], + [ + 0.04768409821807484, + 0.047797690581116346, + 0.04768700323789723 + ], + [ + 0.04654392197026818, + 0.04637634170569958, + 0.04689539085273208 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 1.0102506343115807E7, + "scoreError" : 414058.2334989545, + "scoreConfidence" : [ + 9688448.109616851, + 1.0516564576614762E7 + ], + "scorePercentiles" : { + "0.0" : 9719042.463556852, + "50.0" : 1.0038881575727182E7, + "90.0" : 1.0483148298742138E7, + "95.0" : 1.0483148298742138E7, + "99.0" : 1.0483148298742138E7, + "99.9" : 1.0483148298742138E7, + "99.99" : 1.0483148298742138E7, + "99.999" : 1.0483148298742138E7, + "99.9999" : 1.0483148298742138E7, + "100.0" : 1.0483148298742138E7 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9950572.298507463, + 9989488.596806386, + 9719042.463556852 + ], + [ + 1.014154786828774E7, + 1.0462304284518829E7, + 1.0483148298742138E7 + ], + [ + 1.0038881575727182E7, + 9967271.066733068, + 1.0170300635162601E7 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-03-20T04:24:26Z-9a931ba6ad8e2ee49ea48c98ca86c2901f2343b1-jdk17.json b/performance-results/2025-03-20T04:24:26Z-9a931ba6ad8e2ee49ea48c98ca86c2901f2343b1-jdk17.json new file mode 100644 index 0000000000..f2de5b21a6 --- /dev/null +++ b/performance-results/2025-03-20T04:24:26Z-9a931ba6ad8e2ee49ea48c98ca86c2901f2343b1-jdk17.json @@ -0,0 +1,1310 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.424254609168787, + "scoreError" : 0.02613921724586001, + "scoreConfidence" : [ + 3.3981153919229268, + 3.450393826414647 + ], + "scorePercentiles" : { + "0.0" : 3.419489493150746, + "50.0" : 3.424232606853354, + "90.0" : 3.429063729817694, + "95.0" : 3.429063729817694, + "99.0" : 3.429063729817694, + "99.9" : 3.429063729817694, + "99.99" : 3.429063729817694, + "99.999" : 3.429063729817694, + "99.9999" : 3.429063729817694, + "100.0" : 3.429063729817694 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.422957283038915, + 3.4255079306677936 + ], + [ + 3.419489493150746, + 3.429063729817694 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7283881755988588, + "scoreError" : 0.0075711935811060855, + "scoreConfidence" : [ + 1.7208169820177528, + 1.7359593691799649 + ], + "scorePercentiles" : { + "0.0" : 1.7272608832354859, + "50.0" : 1.7281327281107284, + "90.0" : 1.7300263629384918, + "95.0" : 1.7300263629384918, + "99.0" : 1.7300263629384918, + "99.9" : 1.7300263629384918, + "99.99" : 1.7300263629384918, + "99.999" : 1.7300263629384918, + "99.9999" : 1.7300263629384918, + "100.0" : 1.7300263629384918 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7282618455510002, + 1.7272608832354859 + ], + [ + 1.7280036106704566, + 1.7300263629384918 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8682027175699097, + "scoreError" : 0.004935973252822849, + "scoreConfidence" : [ + 0.8632667443170869, + 0.8731386908227325 + ], + "scorePercentiles" : { + "0.0" : 0.8675676336105674, + "50.0" : 0.8679655469663551, + "90.0" : 0.8693121427363618, + "95.0" : 0.8693121427363618, + "99.0" : 0.8693121427363618, + "99.9" : 0.8693121427363618, + "99.99" : 0.8693121427363618, + "99.999" : 0.8693121427363618, + "99.9999" : 0.8693121427363618, + "100.0" : 0.8693121427363618 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8675676336105674, + 0.867922346385138 + ], + [ + 0.8680087475475722, + 0.8693121427363618 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.36869394908749, + "scoreError" : 0.04032602783381367, + "scoreConfidence" : [ + 16.328367921253676, + 16.409019976921304 + ], + "scorePercentiles" : { + "0.0" : 16.330608886150326, + "50.0" : 16.36573210114837, + "90.0" : 16.3997056798874, + "95.0" : 16.3997056798874, + "99.0" : 16.3997056798874, + "99.9" : 16.3997056798874, + "99.99" : 16.3997056798874, + "99.999" : 16.3997056798874, + "99.9999" : 16.3997056798874, + "100.0" : 16.3997056798874 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.36573210114837, + 16.39567738769027, + 16.3997056798874 + ], + [ + 16.354154879020427, + 16.35331486739305, + 16.330608886150326 + ], + [ + 16.38900046883599, + 16.348132670430132, + 16.38191860123142 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2755.2645435237955, + "scoreError" : 142.15005863441795, + "scoreConfidence" : [ + 2613.1144848893778, + 2897.4146021582133 + ], + "scorePercentiles" : { + "0.0" : 2645.769653967194, + "50.0" : 2777.358790668434, + "90.0" : 2844.082898480718, + "95.0" : 2844.082898480718, + "99.0" : 2844.082898480718, + "99.9" : 2844.082898480718, + "99.99" : 2844.082898480718, + "99.999" : 2844.082898480718, + "99.9999" : 2844.082898480718, + "100.0" : 2844.082898480718 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2645.769653967194, + 2650.136785283063, + 2651.473877519024 + ], + [ + 2780.1082222295813, + 2769.131638137327, + 2777.358790668434 + ], + [ + 2844.082898480718, + 2840.1765737310034, + 2839.1424516978195 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 69686.99595380232, + "scoreError" : 1940.033884888202, + "scoreConfidence" : [ + 67746.96206891412, + 71627.02983869053 + ], + "scorePercentiles" : { + "0.0" : 68658.18447808478, + "50.0" : 69182.69094993896, + "90.0" : 71219.67727831232, + "95.0" : 71219.67727831232, + "99.0" : 71219.67727831232, + "99.9" : 71219.67727831232, + "99.99" : 71219.67727831232, + "99.999" : 71219.67727831232, + "99.9999" : 71219.67727831232, + "100.0" : 71219.67727831232 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 71197.47410218067, + 71180.94216999353, + 71219.67727831232 + ], + [ + 69167.24550293588, + 69182.69094993896, + 69185.52767427432 + ], + [ + 68700.10055066991, + 68658.18447808478, + 68691.12087783056 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 353.88994514661977, + "scoreError" : 8.60461783150149, + "scoreConfidence" : [ + 345.28532731511825, + 362.4945629781213 + ], + "scorePercentiles" : { + "0.0" : 347.80532224376645, + "50.0" : 353.0663168731576, + "90.0" : 360.1943821922987, + "95.0" : 360.1943821922987, + "99.0" : 360.1943821922987, + "99.9" : 360.1943821922987, + "99.99" : 360.1943821922987, + "99.999" : 360.1943821922987, + "99.9999" : 360.1943821922987, + "100.0" : 360.1943821922987 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 359.3096151632722, + 360.1943821922987, + 359.9042966967716 + ], + [ + 348.9299003319532, + 348.06675704900783, + 347.80532224376645 + ], + [ + 353.0663168731576, + 351.83558769978185, + 355.8973280695685 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 107.22422695181898, + "scoreError" : 2.300054928270859, + "scoreConfidence" : [ + 104.92417202354812, + 109.52428188008983 + ], + "scorePercentiles" : { + "0.0" : 105.11702222043792, + "50.0" : 107.60099849482508, + "90.0" : 108.64394817524074, + "95.0" : 108.64394817524074, + "99.0" : 108.64394817524074, + "99.9" : 108.64394817524074, + "99.99" : 108.64394817524074, + "99.999" : 108.64394817524074, + "99.9999" : 108.64394817524074, + "100.0" : 108.64394817524074 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 106.10524767429007, + 105.47579180802381, + 105.11702222043792 + ], + [ + 108.61995646598682, + 108.56537197809733, + 108.64394817524074 + ], + [ + 107.10120847440774, + 107.60099849482508, + 107.78849727506135 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.0612988109620845, + "scoreError" : 8.652535687359045E-4, + "scoreConfidence" : [ + 0.060433557393348596, + 0.0621640645308204 + ], + "scorePercentiles" : { + "0.0" : 0.06061360878156405, + "50.0" : 0.06131260160268791, + "90.0" : 0.061910864993035136, + "95.0" : 0.061910864993035136, + "99.0" : 0.061910864993035136, + "99.9" : 0.061910864993035136, + "99.99" : 0.061910864993035136, + "99.999" : 0.061910864993035136, + "99.9999" : 0.061910864993035136, + "100.0" : 0.061910864993035136 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.061816245462750045, + 0.061910864993035136, + 0.061907721375817945 + ], + [ + 0.06070640137194196, + 0.06061360878156405, + 0.06077460113646723 + ], + [ + 0.06124887921308744, + 0.06131260160268791, + 0.0613983747214087 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.83704055702058E-4, + "scoreError" : 1.8341314884139816E-5, + "scoreConfidence" : [ + 3.653627408179182E-4, + 4.020453705861978E-4 + ], + "scorePercentiles" : { + "0.0" : 3.7188639856197784E-4, + "50.0" : 3.7950586013066773E-4, + "90.0" : 3.981731629629329E-4, + "95.0" : 3.981731629629329E-4, + "99.0" : 3.981731629629329E-4, + "99.9" : 3.981731629629329E-4, + "99.99" : 3.981731629629329E-4, + "99.999" : 3.981731629629329E-4, + "99.9999" : 3.981731629629329E-4, + "100.0" : 3.981731629629329E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.974309778124687E-4, + 3.981731629629329E-4, + 3.978541673612461E-4 + ], + [ + 3.7925996341091464E-4, + 3.7981703252567807E-4, + 3.7950586013066773E-4 + ], + [ + 3.7188639856197784E-4, + 3.7403482801825057E-4, + 3.7537411053438545E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014271994702376285, + "scoreError" : 5.216322474734358E-4, + "scoreConfidence" : [ + 0.01375036245490285, + 0.01479362694984972 + ], + "scorePercentiles" : { + "0.0" : 0.01395132297181729, + "50.0" : 0.014194895541158969, + "90.0" : 0.014695156501421738, + "95.0" : 0.014695156501421738, + "99.0" : 0.014695156501421738, + "99.9" : 0.014695156501421738, + "99.99" : 0.014695156501421738, + "99.999" : 0.014695156501421738, + "99.9999" : 0.014695156501421738, + "100.0" : 0.014695156501421738 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014645885331614907, + 0.014695156501421738, + 0.01464714127276136 + ], + [ + 0.013970092754773178, + 0.013957995058929938, + 0.01395132297181729 + ], + [ + 0.014183137027334836, + 0.014194895541158969, + 0.014202325861574338 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9710519168134688, + "scoreError" : 0.011208694685730868, + "scoreConfidence" : [ + 0.959843222127738, + 0.9822606114991996 + ], + "scorePercentiles" : { + "0.0" : 0.9630646993451464, + "50.0" : 0.9684868110594615, + "90.0" : 0.9809538926924963, + "95.0" : 0.9809538926924963, + "99.0" : 0.9809538926924963, + "99.9" : 0.9809538926924963, + "99.99" : 0.9809538926924963, + "99.999" : 0.9809538926924963, + "99.9999" : 0.9809538926924963, + "100.0" : 0.9809538926924963 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9668159646171693, + 0.9671069353060633, + 0.9724057801439129 + ], + [ + 0.9751261756045242, + 0.9808086011180855, + 0.9809538926924963 + ], + [ + 0.964698391434359, + 0.9684868110594615, + 0.9630646993451464 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.013268263113495505, + "scoreError" : 4.465237350273874E-4, + "scoreConfidence" : [ + 0.012821739378468118, + 0.013714786848522892 + ], + "scorePercentiles" : { + "0.0" : 0.013099557043340206, + "50.0" : 0.013270168813548271, + "90.0" : 0.01348281547845361, + "95.0" : 0.01348281547845361, + "99.0" : 0.01348281547845361, + "99.9" : 0.01348281547845361, + "99.99" : 0.01348281547845361, + "99.999" : 0.01348281547845361, + "99.9999" : 0.01348281547845361, + "100.0" : 0.01348281547845361 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013351823428725543, + 0.013380745552344251, + 0.01348281547845361 + ], + [ + 0.013099557043340206, + 0.013188514198370999, + 0.013106122979738408 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.8236215956341684, + "scoreError" : 0.11204404869949024, + "scoreConfidence" : [ + 3.711577546934678, + 3.9356656443336586 + ], + "scorePercentiles" : { + "0.0" : 3.7785576442598185, + "50.0" : 3.8263314364495367, + "90.0" : 3.8664696870170014, + "95.0" : 3.8664696870170014, + "99.0" : 3.8664696870170014, + "99.9" : 3.8664696870170014, + "99.99" : 3.8664696870170014, + "99.999" : 3.8664696870170014, + "99.9999" : 3.8664696870170014, + "100.0" : 3.8664696870170014 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.784792498487141, + 3.800600712006079, + 3.7785576442598185 + ], + [ + 3.859246871141975, + 3.8520621608929946, + 3.8664696870170014 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.8760393545398433, + "scoreError" : 0.03561405209144057, + "scoreConfidence" : [ + 2.8404253024484025, + 2.911653406631284 + ], + "scorePercentiles" : { + "0.0" : 2.8550628495575223, + "50.0" : 2.867487625860092, + "90.0" : 2.9119395694323145, + "95.0" : 2.9119395694323145, + "99.0" : 2.9119395694323145, + "99.9" : 2.9119395694323145, + "99.99" : 2.9119395694323145, + "99.999" : 2.9119395694323145, + "99.9999" : 2.9119395694323145, + "100.0" : 2.9119395694323145 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.9119395694323145, + 2.896368578048074, + 2.9009854074825987 + ], + [ + 2.8569692313624677, + 2.8603496425507577, + 2.8550628495575223 + ], + [ + 2.868876608146873, + 2.867487625860092, + 2.8663146784178846 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17666360171690498, + "scoreError" : 0.007018650315553071, + "scoreConfidence" : [ + 0.1696449514013519, + 0.18368225203245805 + ], + "scorePercentiles" : { + "0.0" : 0.171930377965752, + "50.0" : 0.17588338716428936, + "90.0" : 0.18198961034777703, + "95.0" : 0.18198961034777703, + "99.0" : 0.18198961034777703, + "99.9" : 0.18198961034777703, + "99.99" : 0.18198961034777703, + "99.999" : 0.18198961034777703, + "99.9999" : 0.18198961034777703, + "100.0" : 0.18198961034777703 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17230693078553336, + 0.171930377965752, + 0.17222718737944337 + ], + [ + 0.18198961034777703, + 0.18161404623794564, + 0.18156196546778264 + ], + [ + 0.17679468235980483, + 0.17588338716428936, + 0.17566422774381676 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.328427280265929, + "scoreError" : 0.009007381611096744, + "scoreConfidence" : [ + 0.3194198986548322, + 0.33743466187702575 + ], + "scorePercentiles" : { + "0.0" : 0.32402172724621714, + "50.0" : 0.32554089566717664, + "90.0" : 0.3365099610000673, + "95.0" : 0.3365099610000673, + "99.0" : 0.3365099610000673, + "99.9" : 0.3365099610000673, + "99.99" : 0.3365099610000673, + "99.999" : 0.3365099610000673, + "99.9999" : 0.3365099610000673, + "100.0" : 0.3365099610000673 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.32554089566717664, + 0.3255366924379049, + 0.3257196699889258 + ], + [ + 0.32449776503991173, + 0.32402172724621714, + 0.3240274855161688 + ], + [ + 0.3365099610000673, + 0.33505243635876303, + 0.33493888913822556 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1671680197141367, + "scoreError" : 0.0031650202498782714, + "scoreConfidence" : [ + 0.16400299946425842, + 0.17033303996401497 + ], + "scorePercentiles" : { + "0.0" : 0.16575822910658047, + "50.0" : 0.1660215798718332, + "90.0" : 0.16990446979170207, + "95.0" : 0.16990446979170207, + "99.0" : 0.16990446979170207, + "99.9" : 0.16990446979170207, + "99.99" : 0.16990446979170207, + "99.999" : 0.16990446979170207, + "99.9999" : 0.16990446979170207, + "100.0" : 0.16990446979170207 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16575822910658047, + 0.16582184809391945, + 0.16580947611546815 + ], + [ + 0.16954085197680727, + 0.16956868575982637, + 0.16990446979170207 + ], + [ + 0.16597716160727624, + 0.1660215798718332, + 0.16610987510381714 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3920398294957659, + "scoreError" : 0.008199953086242167, + "scoreConfidence" : [ + 0.3838398764095237, + 0.40023978258200804 + ], + "scorePercentiles" : { + "0.0" : 0.3855065223777033, + "50.0" : 0.39384232234562067, + "90.0" : 0.3974420058421429, + "95.0" : 0.3974420058421429, + "99.0" : 0.3974420058421429, + "99.9" : 0.3974420058421429, + "99.99" : 0.3974420058421429, + "99.999" : 0.3974420058421429, + "99.9999" : 0.3974420058421429, + "100.0" : 0.3974420058421429 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3960158337161413, + 0.39384232234562067, + 0.3934183516660766 + ], + [ + 0.3974420058421429, + 0.3958316693714376, + 0.3945936228149785 + ], + [ + 0.38551056595990746, + 0.3855065223777033, + 0.38619757136788446 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15782436732750707, + "scoreError" : 0.002616382192165471, + "scoreConfidence" : [ + 0.1552079851353416, + 0.16044074951967255 + ], + "scorePercentiles" : { + "0.0" : 0.15603131695557879, + "50.0" : 0.15772105887548302, + "90.0" : 0.1594922870972887, + "95.0" : 0.1594922870972887, + "99.0" : 0.1594922870972887, + "99.9" : 0.1594922870972887, + "99.99" : 0.1594922870972887, + "99.999" : 0.1594922870972887, + "99.9999" : 0.1594922870972887, + "100.0" : 0.1594922870972887 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15940837378455064, + 0.15939634857662022, + 0.15924676244088093 + ], + [ + 0.1594922870972887, + 0.15603131695557879, + 0.15647512279960568 + ], + [ + 0.15772105887548302, + 0.15649656486697966, + 0.15615147055057618 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.047281600662263244, + "scoreError" : 6.838695510515516E-4, + "scoreConfidence" : [ + 0.046597731111211696, + 0.04796547021331479 + ], + "scorePercentiles" : { + "0.0" : 0.04668713239804851, + "50.0" : 0.04720676570665181, + "90.0" : 0.04785155874401267, + "95.0" : 0.04785155874401267, + "99.0" : 0.04785155874401267, + "99.9" : 0.04785155874401267, + "99.99" : 0.04785155874401267, + "99.999" : 0.04785155874401267, + "99.9999" : 0.04785155874401267, + "100.0" : 0.04785155874401267 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04781449074800138, + 0.047079504446610076, + 0.046953820972119184 + ], + [ + 0.046992236287851735, + 0.04668713239804851, + 0.04720676570665181 + ], + [ + 0.04785155874401267, + 0.047633694671760235, + 0.0473152019853136 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9135012.469143517, + "scoreError" : 253053.52971484294, + "scoreConfidence" : [ + 8881958.939428674, + 9388065.99885836 + ], + "scorePercentiles" : { + "0.0" : 8947247.978533095, + "50.0" : 9055753.752941176, + "90.0" : 9349670.872897197, + "95.0" : 9349670.872897197, + "99.0" : 9349670.872897197, + "99.9" : 9349670.872897197, + "99.99" : 9349670.872897197, + "99.999" : 9349670.872897197, + "99.9999" : 9349670.872897197, + "100.0" : 9349670.872897197 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9320103.47530289, + 9349670.872897197, + 9313670.555865921 + ], + [ + 8947247.978533095, + 9036093.97289973, + 9037422.124661246 + ], + [ + 9106851.006369427, + 9048298.482820977, + 9055753.752941176 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-03-24T00:22:41Z-c46c07a77f81d0493fc0e7c93d9de49e97118281-jdk17.json b/performance-results/2025-03-24T00:22:41Z-c46c07a77f81d0493fc0e7c93d9de49e97118281-jdk17.json new file mode 100644 index 0000000000..a51d44b83f --- /dev/null +++ b/performance-results/2025-03-24T00:22:41Z-c46c07a77f81d0493fc0e7c93d9de49e97118281-jdk17.json @@ -0,0 +1,1310 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4176518241718075, + "scoreError" : 0.03280658276993444, + "scoreConfidence" : [ + 3.384845241401873, + 3.450458406941742 + ], + "scorePercentiles" : { + "0.0" : 3.4124960763887926, + "50.0" : 3.4167311543305194, + "90.0" : 3.424648911637398, + "95.0" : 3.424648911637398, + "99.0" : 3.424648911637398, + "99.9" : 3.424648911637398, + "99.99" : 3.424648911637398, + "99.999" : 3.424648911637398, + "99.9999" : 3.424648911637398, + "100.0" : 3.424648911637398 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4124960763887926, + 3.4169398837072293 + ], + [ + 3.416522424953809, + 3.424648911637398 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7270621320703794, + "scoreError" : 0.008373270312183335, + "scoreConfidence" : [ + 1.7186888617581961, + 1.7354354023825627 + ], + "scorePercentiles" : { + "0.0" : 1.7254785768184715, + "50.0" : 1.7272053680709314, + "90.0" : 1.728359215321183, + "95.0" : 1.728359215321183, + "99.0" : 1.728359215321183, + "99.9" : 1.728359215321183, + "99.99" : 1.728359215321183, + "99.999" : 1.728359215321183, + "99.9999" : 1.728359215321183, + "100.0" : 1.728359215321183 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7278401816392681, + 1.728359215321183 + ], + [ + 1.7254785768184715, + 1.7265705545025947 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.868071044762071, + "scoreError" : 0.004228217601595203, + "scoreConfidence" : [ + 0.8638428271604758, + 0.8722992623636662 + ], + "scorePercentiles" : { + "0.0" : 0.8675660430469083, + "50.0" : 0.8678863787909559, + "90.0" : 0.8689453784194636, + "95.0" : 0.8689453784194636, + "99.0" : 0.8689453784194636, + "99.9" : 0.8689453784194636, + "99.99" : 0.8689453784194636, + "99.999" : 0.8689453784194636, + "99.9999" : 0.8689453784194636, + "100.0" : 0.8689453784194636 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8675727546647017, + 0.8682000029172099 + ], + [ + 0.8675660430469083, + 0.8689453784194636 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.21024972688744, + "scoreError" : 0.07558240245151955, + "scoreConfidence" : [ + 16.13466732443592, + 16.28583212933896 + ], + "scorePercentiles" : { + "0.0" : 16.13359353840349, + "50.0" : 16.236806302152885, + "90.0" : 16.25798250721321, + "95.0" : 16.25798250721321, + "99.0" : 16.25798250721321, + "99.9" : 16.25798250721321, + "99.99" : 16.25798250721321, + "99.999" : 16.25798250721321, + "99.9999" : 16.25798250721321, + "100.0" : 16.25798250721321 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.203181117707555, + 16.16988292740664, + 16.13359353840349 + ], + [ + 16.245425626132974, + 16.161443650413105, + 16.244571346287103 + ], + [ + 16.239360526269998, + 16.236806302152885, + 16.25798250721321 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2669.028993204871, + "scoreError" : 137.4498966451194, + "scoreConfidence" : [ + 2531.5790965597516, + 2806.47888984999 + ], + "scorePercentiles" : { + "0.0" : 2556.6799422908157, + "50.0" : 2698.057835761459, + "90.0" : 2749.80392247701, + "95.0" : 2749.80392247701, + "99.0" : 2749.80392247701, + "99.9" : 2749.80392247701, + "99.99" : 2749.80392247701, + "99.999" : 2749.80392247701, + "99.9999" : 2749.80392247701, + "100.0" : 2749.80392247701 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2698.057835761459, + 2700.513649170286, + 2691.3840174449533 + ], + [ + 2745.679025287743, + 2743.8605837566774, + 2749.80392247701 + ], + [ + 2556.6799422908157, + 2569.604626828068, + 2565.6773358268297 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 69622.25476604533, + "scoreError" : 3039.3046996421267, + "scoreConfidence" : [ + 66582.9500664032, + 72661.55946568746 + ], + "scorePercentiles" : { + "0.0" : 67945.86095422869, + "50.0" : 68858.10770484112, + "90.0" : 71994.01572630244, + "95.0" : 71994.01572630244, + "99.0" : 71994.01572630244, + "99.9" : 71994.01572630244, + "99.99" : 71994.01572630244, + "99.999" : 71994.01572630244, + "99.9999" : 71994.01572630244, + "100.0" : 71994.01572630244 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 71985.8498471133, + 71984.38163765594, + 71994.01572630244 + ], + [ + 68131.5306860081, + 67945.86095422869, + 68039.64569420867 + ], + [ + 68858.10770484112, + 68791.96960924863, + 68868.93103480102 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 345.54602006775417, + "scoreError" : 10.379158594558005, + "scoreConfidence" : [ + 335.16686147319615, + 355.9251786623122 + ], + "scorePercentiles" : { + "0.0" : 337.0649979908811, + "50.0" : 347.4970106082307, + "90.0" : 354.3317645250134, + "95.0" : 354.3317645250134, + "99.0" : 354.3317645250134, + "99.9" : 354.3317645250134, + "99.99" : 354.3317645250134, + "99.999" : 354.3317645250134, + "99.9999" : 354.3317645250134, + "100.0" : 354.3317645250134 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 349.88831901345856, + 350.18456102805493, + 354.3317645250134 + ], + [ + 347.4970106082307, + 348.05296895971105, + 346.12872413474 + ], + [ + 337.23163930227275, + 337.0649979908811, + 339.53419504742493 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 107.35371713199402, + "scoreError" : 1.314903125074696, + "scoreConfidence" : [ + 106.03881400691932, + 108.66862025706871 + ], + "scorePercentiles" : { + "0.0" : 106.50530219512214, + "50.0" : 107.18568194367174, + "90.0" : 108.41755405532847, + "95.0" : 108.41755405532847, + "99.0" : 108.41755405532847, + "99.9" : 108.41755405532847, + "99.99" : 108.41755405532847, + "99.999" : 108.41755405532847, + "99.9999" : 108.41755405532847, + "100.0" : 108.41755405532847 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 108.24981127400055, + 108.32662146400149, + 108.41755405532847 + ], + [ + 107.18568194367174, + 107.13477003105366, + 107.19828019655115 + ], + [ + 106.51999139644225, + 106.50530219512214, + 106.64544163177464 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06214532710612761, + "scoreError" : 0.0011852883013128773, + "scoreConfidence" : [ + 0.06096003880481473, + 0.06333061540744049 + ], + "scorePercentiles" : { + "0.0" : 0.06138486032693099, + "50.0" : 0.061953984499293735, + "90.0" : 0.06306548163563896, + "95.0" : 0.06306548163563896, + "99.0" : 0.06306548163563896, + "99.9" : 0.06306548163563896, + "99.99" : 0.06306548163563896, + "99.999" : 0.06306548163563896, + "99.9999" : 0.06306548163563896, + "100.0" : 0.06306548163563896 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06296859688814448, + 0.06306548163563896, + 0.06306126613401607 + ], + [ + 0.06203823581048805, + 0.061953984499293735, + 0.06191340799787021 + ], + [ + 0.06145513012296971, + 0.06138486032693099, + 0.0614669805397963 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.6512152469115493E-4, + "scoreError" : 1.1829384828379278E-5, + "scoreConfidence" : [ + 3.5329213986277566E-4, + 3.769509095195342E-4 + ], + "scorePercentiles" : { + "0.0" : 3.567600496961329E-4, + "50.0" : 3.644490447931634E-4, + "90.0" : 3.741745325947859E-4, + "95.0" : 3.741745325947859E-4, + "99.0" : 3.741745325947859E-4, + "99.9" : 3.741745325947859E-4, + "99.99" : 3.741745325947859E-4, + "99.999" : 3.741745325947859E-4, + "99.9999" : 3.741745325947859E-4, + "100.0" : 3.741745325947859E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.6447179445013437E-4, + 3.644490447931634E-4, + 3.638343372007972E-4 + ], + [ + 3.574252590678668E-4, + 3.582691317531037E-4, + 3.567600496961329E-4 + ], + [ + 3.7298703933026005E-4, + 3.741745325947859E-4, + 3.7372253333415055E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014286522855636308, + "scoreError" : 3.422176757491122E-4, + "scoreConfidence" : [ + 0.013944305179887196, + 0.01462874053138542 + ], + "scorePercentiles" : { + "0.0" : 0.014121189797843438, + "50.0" : 0.014170198734616665, + "90.0" : 0.014574590904983574, + "95.0" : 0.014574590904983574, + "99.0" : 0.014574590904983574, + "99.9" : 0.014574590904983574, + "99.99" : 0.014574590904983574, + "99.999" : 0.014574590904983574, + "99.9999" : 0.014574590904983574, + "100.0" : 0.014574590904983574 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014548139487416732, + 0.014546160303777877, + 0.014574590904983574 + ], + [ + 0.01416057589840752, + 0.014192353136610967, + 0.014170198734616665 + ], + [ + 0.014127603557568556, + 0.014121189797843438, + 0.014137893879501448 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9921077492196557, + "scoreError" : 0.01930856406398767, + "scoreConfidence" : [ + 0.9727991851556681, + 1.0114163132836433 + ], + "scorePercentiles" : { + "0.0" : 0.9776878349789814, + "50.0" : 0.9924878263199682, + "90.0" : 1.0144587190099412, + "95.0" : 1.0144587190099412, + "99.0" : 1.0144587190099412, + "99.9" : 1.0144587190099412, + "99.99" : 1.0144587190099412, + "99.999" : 1.0144587190099412, + "99.9999" : 1.0144587190099412, + "100.0" : 1.0144587190099412 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9970329595214357, + 0.9986729526662672, + 0.9964110701404802 + ], + [ + 0.9829197303911933, + 0.9788613039052559, + 0.9776878349789814 + ], + [ + 1.0144587190099412, + 0.9904373460433792, + 0.9924878263199682 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.012921779722266246, + "scoreError" : 2.2252345704252554E-4, + "scoreConfidence" : [ + 0.01269925626522372, + 0.013144303179308772 + ], + "scorePercentiles" : { + "0.0" : 0.012807454812541783, + "50.0" : 0.012926500284236968, + "90.0" : 0.013009797126978096, + "95.0" : 0.013009797126978096, + "99.0" : 0.013009797126978096, + "99.9" : 0.013009797126978096, + "99.99" : 0.013009797126978096, + "99.999" : 0.013009797126978096, + "99.9999" : 0.013009797126978096, + "100.0" : 0.013009797126978096 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.012807454812541783, + 0.012876620666477814, + 0.012877833138453773 + ], + [ + 0.012975167430020163, + 0.012983805159125847, + 0.013009797126978096 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.6740661339279614, + "scoreError" : 0.1367137587039101, + "scoreConfidence" : [ + 3.537352375224051, + 3.8107798926318717 + ], + "scorePercentiles" : { + "0.0" : 3.6163268293564714, + "50.0" : 3.665471940654629, + "90.0" : 3.7335179947761192, + "95.0" : 3.7335179947761192, + "99.0" : 3.7335179947761192, + "99.9" : 3.7335179947761192, + "99.99" : 3.7335179947761192, + "99.999" : 3.7335179947761192, + "99.9999" : 3.7335179947761192, + "100.0" : 3.7335179947761192 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.6163268293564714, + 3.639242845705968, + 3.641746879096868 + ], + [ + 3.6891970022123894, + 3.7335179947761192, + 3.7243652524199553 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.912590076892591, + "scoreError" : 0.0803534341024097, + "scoreConfidence" : [ + 2.8322366427901815, + 2.992943510995001 + ], + "scorePercentiles" : { + "0.0" : 2.875525743243243, + "50.0" : 2.884065987600923, + "90.0" : 2.9793437852249034, + "95.0" : 2.9793437852249034, + "99.0" : 2.9793437852249034, + "99.9" : 2.9793437852249034, + "99.99" : 2.9793437852249034, + "99.999" : 2.9793437852249034, + "99.9999" : 2.9793437852249034, + "100.0" : 2.9793437852249034 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.8792008750719633, + 2.875525743243243, + 2.879239616292458 + ], + [ + 2.977670115212861, + 2.9793437852249034, + 2.971356167260844 + ], + [ + 2.887610698614319, + 2.884065987600923, + 2.879297703511802 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.18040665676819445, + "scoreError" : 0.016040685065821514, + "scoreConfidence" : [ + 0.16436597170237294, + 0.19644734183401596 + ], + "scorePercentiles" : { + "0.0" : 0.17271579670120898, + "50.0" : 0.17492238903270946, + "90.0" : 0.19332436052041446, + "95.0" : 0.19332436052041446, + "99.0" : 0.19332436052041446, + "99.9" : 0.19332436052041446, + "99.99" : 0.19332436052041446, + "99.999" : 0.19332436052041446, + "99.9999" : 0.19332436052041446, + "100.0" : 0.19332436052041446 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17597227153867812, + 0.17492238903270946, + 0.1748560182371352 + ], + [ + 0.19332436052041446, + 0.19294238105344394, + 0.19289537515190094 + ], + [ + 0.17271579670120898, + 0.17295336802144587, + 0.17307795065681303 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3337584233657038, + "scoreError" : 0.00641428915227004, + "scoreConfidence" : [ + 0.3273441342134338, + 0.3401727125179739 + ], + "scorePercentiles" : { + "0.0" : 0.330027413253688, + "50.0" : 0.3320781430563857, + "90.0" : 0.33920266566040297, + "95.0" : 0.33920266566040297, + "99.0" : 0.33920266566040297, + "99.9" : 0.33920266566040297, + "99.99" : 0.33920266566040297, + "99.999" : 0.33920266566040297, + "99.9999" : 0.33920266566040297, + "100.0" : 0.33920266566040297 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.33920266566040297, + 0.33819932622002774, + 0.33880499762840494 + ], + [ + 0.330027413253688, + 0.3304519575705505, + 0.3308180865394158 + ], + [ + 0.3322776499534822, + 0.3320781430563857, + 0.33196557040897623 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1661026225633705, + "scoreError" : 0.008337119359901021, + "scoreConfidence" : [ + 0.15776550320346946, + 0.17443974192327152 + ], + "scorePercentiles" : { + "0.0" : 0.15952054031807814, + "50.0" : 0.167699954084285, + "90.0" : 0.17118456085453113, + "95.0" : 0.17118456085453113, + "99.0" : 0.17118456085453113, + "99.9" : 0.17118456085453113, + "99.99" : 0.17118456085453113, + "99.999" : 0.17118456085453113, + "99.9999" : 0.17118456085453113, + "100.0" : 0.17118456085453113 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17118456085453113, + 0.17085764863571903, + 0.17079298237464136 + ], + [ + 0.15952054031807814, + 0.15996125433489028, + 0.159874185931255 + ], + [ + 0.16773681192237375, + 0.167699954084285, + 0.16729566461456102 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.38635613779325884, + "scoreError" : 0.0060439134029958005, + "scoreConfidence" : [ + 0.380312224390263, + 0.39240005119625465 + ], + "scorePercentiles" : { + "0.0" : 0.38195458276678634, + "50.0" : 0.38560133064702706, + "90.0" : 0.39093867740422206, + "95.0" : 0.39093867740422206, + "99.0" : 0.39093867740422206, + "99.9" : 0.39093867740422206, + "99.99" : 0.39093867740422206, + "99.999" : 0.39093867740422206, + "99.9999" : 0.39093867740422206, + "100.0" : 0.39093867740422206 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3823639669649002, + 0.38230232548359966, + 0.38195458276678634 + ], + [ + 0.38974632624030553, + 0.3855979278195489, + 0.38560133064702706 + ], + [ + 0.38964763343074227, + 0.39093867740422206, + 0.38905246938219734 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15826757739724495, + "scoreError" : 0.004627573086720224, + "scoreConfidence" : [ + 0.1536400043105247, + 0.1628951504839652 + ], + "scorePercentiles" : { + "0.0" : 0.15448236841536134, + "50.0" : 0.1591381985041375, + "90.0" : 0.16089253403587805, + "95.0" : 0.16089253403587805, + "99.0" : 0.16089253403587805, + "99.9" : 0.16089253403587805, + "99.99" : 0.16089253403587805, + "99.999" : 0.16089253403587805, + "99.9999" : 0.16089253403587805, + "100.0" : 0.16089253403587805 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15521114455998758, + 0.15448236841536134, + 0.15455100908739663 + ], + [ + 0.1608481260535289, + 0.16089253403587805, + 0.16086269677959014 + ], + [ + 0.1591381985041375, + 0.15963652022540067, + 0.1587855989139237 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.047272604046442124, + "scoreError" : 0.001440391145386556, + "scoreConfidence" : [ + 0.04583221290105557, + 0.04871299519182868 + ], + "scorePercentiles" : { + "0.0" : 0.04625750033304962, + "50.0" : 0.04723635614652465, + "90.0" : 0.04837972442320066, + "95.0" : 0.04837972442320066, + "99.0" : 0.04837972442320066, + "99.9" : 0.04837972442320066, + "99.99" : 0.04837972442320066, + "99.999" : 0.04837972442320066, + "99.9999" : 0.04837972442320066, + "100.0" : 0.04837972442320066 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04741171134216128, + 0.04722703777166983, + 0.04723635614652465 + ], + [ + 0.04837972442320066, + 0.048154765152864924, + 0.04821053368912287 + ], + [ + 0.046259463596623106, + 0.04625750033304962, + 0.04631634396276226 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9628501.02926758, + "scoreError" : 641376.5173927421, + "scoreConfidence" : [ + 8987124.511874838, + 1.026987754666032E7 + ], + "scorePercentiles" : { + "0.0" : 9113710.301457195, + "50.0" : 9821262.300294407, + "90.0" : 9976360.238285145, + "95.0" : 9976360.238285145, + "99.0" : 9976360.238285145, + "99.9" : 9976360.238285145, + "99.99" : 9976360.238285145, + "99.999" : 9976360.238285145, + "99.9999" : 9976360.238285145, + "100.0" : 9976360.238285145 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9976360.238285145, + 9899911.798219584, + 9908957.99009901 + ], + [ + 9126353.703467153, + 9131182.38229927, + 9113710.301457195 + ], + [ + 9866579.378698224, + 9812191.170588234, + 9821262.300294407 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-03-24T00:22:42Z-c46c07a77f81d0493fc0e7c93d9de49e97118281-jdk17.json b/performance-results/2025-03-24T00:22:42Z-c46c07a77f81d0493fc0e7c93d9de49e97118281-jdk17.json new file mode 100644 index 0000000000..71f139c13c --- /dev/null +++ b/performance-results/2025-03-24T00:22:42Z-c46c07a77f81d0493fc0e7c93d9de49e97118281-jdk17.json @@ -0,0 +1,1310 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.420161184183998, + "scoreError" : 0.01312921616822022, + "scoreConfidence" : [ + 3.4070319680157777, + 3.4332904003522184 + ], + "scorePercentiles" : { + "0.0" : 3.4181212856651784, + "50.0" : 3.4200665558935337, + "90.0" : 3.422390339283747, + "95.0" : 3.422390339283747, + "99.0" : 3.422390339283747, + "99.9" : 3.422390339283747, + "99.99" : 3.422390339283747, + "99.999" : 3.422390339283747, + "99.9999" : 3.422390339283747, + "100.0" : 3.422390339283747 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4213385479537735, + 3.422390339283747 + ], + [ + 3.418794563833294, + 3.4181212856651784 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7276845429241154, + "scoreError" : 0.01306208372096958, + "scoreConfidence" : [ + 1.7146224592031458, + 1.740746626645085 + ], + "scorePercentiles" : { + "0.0" : 1.7256505716963815, + "50.0" : 1.727679262588992, + "90.0" : 1.7297290748220968, + "95.0" : 1.7297290748220968, + "99.0" : 1.7297290748220968, + "99.9" : 1.7297290748220968, + "99.99" : 1.7297290748220968, + "99.999" : 1.7297290748220968, + "99.9999" : 1.7297290748220968, + "100.0" : 1.7297290748220968 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7290829413006634, + 1.7297290748220968 + ], + [ + 1.7256505716963815, + 1.7262755838773205 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8687410304418786, + "scoreError" : 0.0024592742022505935, + "scoreConfidence" : [ + 0.866281756239628, + 0.8712003046441291 + ], + "scorePercentiles" : { + "0.0" : 0.8684148887674343, + "50.0" : 0.8686953515573114, + "90.0" : 0.8691585298854573, + "95.0" : 0.8691585298854573, + "99.0" : 0.8691585298854573, + "99.9" : 0.8691585298854573, + "99.99" : 0.8691585298854573, + "99.999" : 0.8691585298854573, + "99.9999" : 0.8691585298854573, + "100.0" : 0.8691585298854573 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.868968907418696, + 0.8691585298854573 + ], + [ + 0.8684217956959267, + 0.8684148887674343 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.224821826130235, + "scoreError" : 0.10048051732951685, + "scoreConfidence" : [ + 16.12434130880072, + 16.32530234345975 + ], + "scorePercentiles" : { + "0.0" : 16.16446628444778, + "50.0" : 16.216501795428456, + "90.0" : 16.31885112609713, + "95.0" : 16.31885112609713, + "99.0" : 16.31885112609713, + "99.9" : 16.31885112609713, + "99.99" : 16.31885112609713, + "99.999" : 16.31885112609713, + "99.9999" : 16.31885112609713, + "100.0" : 16.31885112609713 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.167966195040854, + 16.171702268596363, + 16.186333278362973 + ], + [ + 16.216501795428456, + 16.219076817393454, + 16.16446628444778 + ], + [ + 16.27979011280597, + 16.31885112609713, + 16.29870855699916 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2737.5909349527656, + "scoreError" : 119.9485903655442, + "scoreConfidence" : [ + 2617.6423445872215, + 2857.5395253183096 + ], + "scorePercentiles" : { + "0.0" : 2657.620468169439, + "50.0" : 2728.8335513951547, + "90.0" : 2828.7526106375753, + "95.0" : 2828.7526106375753, + "99.0" : 2828.7526106375753, + "99.9" : 2828.7526106375753, + "99.99" : 2828.7526106375753, + "99.999" : 2828.7526106375753, + "99.9999" : 2828.7526106375753, + "100.0" : 2828.7526106375753 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2657.620468169439, + 2662.884293462235, + 2659.29952062177 + ], + [ + 2824.7339008494246, + 2828.7526106375753, + 2818.3510215124497 + ], + [ + 2728.2922326958756, + 2729.550815230966, + 2728.8335513951547 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 69862.82581904189, + "scoreError" : 1728.1188838150238, + "scoreConfidence" : [ + 68134.70693522686, + 71590.94470285691 + ], + "scorePercentiles" : { + "0.0" : 68958.28296516981, + "50.0" : 69417.52869894679, + "90.0" : 71216.90369253689, + "95.0" : 71216.90369253689, + "99.0" : 71216.90369253689, + "99.9" : 71216.90369253689, + "99.99" : 71216.90369253689, + "99.999" : 71216.90369253689, + "99.9999" : 71216.90369253689, + "100.0" : 71216.90369253689 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 69002.86496078158, + 68958.28296516981, + 68978.58832205336 + ], + [ + 69353.2210103416, + 69417.52869894679, + 69417.55557708694 + ], + [ + 71210.03441354769, + 71216.90369253689, + 71210.45273091237 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 356.6851162543681, + "scoreError" : 2.9786665796925273, + "scoreConfidence" : [ + 353.7064496746756, + 359.6637828340606 + ], + "scorePercentiles" : { + "0.0" : 355.03951802399394, + "50.0" : 355.77587736376466, + "90.0" : 359.56820737462897, + "95.0" : 359.56820737462897, + "99.0" : 359.56820737462897, + "99.9" : 359.56820737462897, + "99.99" : 359.56820737462897, + "99.999" : 359.56820737462897, + "99.9999" : 359.56820737462897, + "100.0" : 359.56820737462897 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 355.77587736376466, + 355.1195495481835, + 355.03951802399394 + ], + [ + 355.53794376732657, + 355.6143610562547, + 356.1276712534493 + ], + [ + 358.60885342768995, + 359.56820737462897, + 358.77406447402103 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 106.63031003241571, + "scoreError" : 5.9928407989608665, + "scoreConfidence" : [ + 100.63746923345484, + 112.62315083137658 + ], + "scorePercentiles" : { + "0.0" : 101.8237778560693, + "50.0" : 108.37566141662414, + "90.0" : 109.67987437919469, + "95.0" : 109.67987437919469, + "99.0" : 109.67987437919469, + "99.9" : 109.67987437919469, + "99.99" : 109.67987437919469, + "99.999" : 109.67987437919469, + "99.9999" : 109.67987437919469, + "100.0" : 109.67987437919469 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 101.96717304519494, + 101.8237778560693, + 102.04935047858294 + ], + [ + 107.95691746021808, + 108.37566141662414, + 108.5213479810202 + ], + [ + 109.67987437919469, + 109.62918120434263, + 109.66950647049454 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06115860988012198, + "scoreError" : 2.5866124625998005E-4, + "scoreConfidence" : [ + 0.060899948633862, + 0.061417271126381956 + ], + "scorePercentiles" : { + "0.0" : 0.06094085120904836, + "50.0" : 0.06123712456675362, + "90.0" : 0.061325009830254865, + "95.0" : 0.061325009830254865, + "99.0" : 0.061325009830254865, + "99.9" : 0.061325009830254865, + "99.99" : 0.061325009830254865, + "99.999" : 0.061325009830254865, + "99.9999" : 0.061325009830254865, + "100.0" : 0.061325009830254865 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06121436393797861, + 0.06124506581292373, + 0.061244503631753655 + ], + [ + 0.061325009830254865, + 0.0612870807567614, + 0.06123712456675362 + ], + [ + 0.06094085120904836, + 0.06097625959597807, + 0.06095722957964548 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.660580843532509E-4, + "scoreError" : 2.1584630401834428E-5, + "scoreConfidence" : [ + 3.444734539514165E-4, + 3.876427147550853E-4 + ], + "scorePercentiles" : { + "0.0" : 3.485295668586137E-4, + "50.0" : 3.7371202020352256E-4, + "90.0" : 3.7543158886062337E-4, + "95.0" : 3.7543158886062337E-4, + "99.0" : 3.7543158886062337E-4, + "99.9" : 3.7543158886062337E-4, + "99.99" : 3.7543158886062337E-4, + "99.999" : 3.7543158886062337E-4, + "99.9999" : 3.7543158886062337E-4, + "100.0" : 3.7543158886062337E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.7371202020352256E-4, + 3.743454742106291E-4, + 3.736798714136409E-4 + ], + [ + 3.485295668586137E-4, + 3.4913701701646063E-4, + 3.491975061719075E-4 + ], + [ + 3.7543158886062337E-4, + 3.753495183136453E-4, + 3.7514019613021487E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014294007118711134, + "scoreError" : 2.467831746836528E-4, + "scoreConfidence" : [ + 0.01404722394402748, + 0.014540790293394787 + ], + "scorePercentiles" : { + "0.0" : 0.01410185573973926, + "50.0" : 0.014340279476126561, + "90.0" : 0.014435574408039945, + "95.0" : 0.014435574408039945, + "99.0" : 0.014435574408039945, + "99.9" : 0.014435574408039945, + "99.99" : 0.014435574408039945, + "99.999" : 0.014435574408039945, + "99.9999" : 0.014435574408039945, + "100.0" : 0.014435574408039945 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014340279476126561, + 0.014339337843476616, + 0.014350159556011566 + ], + [ + 0.014435574408039945, + 0.014430580636409946, + 0.014434201299929129 + ], + [ + 0.014106480124135986, + 0.01410185573973926, + 0.014107594984531218 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9827271961215186, + "scoreError" : 0.01661406289183188, + "scoreConfidence" : [ + 0.9661131332296867, + 0.9993412590133505 + ], + "scorePercentiles" : { + "0.0" : 0.9650379618836245, + "50.0" : 0.9843077026574804, + "90.0" : 0.9982393412856858, + "95.0" : 0.9982393412856858, + "99.0" : 0.9982393412856858, + "99.9" : 0.9982393412856858, + "99.99" : 0.9982393412856858, + "99.999" : 0.9982393412856858, + "99.9999" : 0.9982393412856858, + "100.0" : 0.9982393412856858 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9900924386694386, + 0.9982393412856858, + 0.98929232505688 + ], + [ + 0.9650379618836245, + 0.9769195255445932, + 0.9732962304622871 + ], + [ + 0.9851143342198582, + 0.9822449053138199, + 0.9843077026574804 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.012964384898346287, + "scoreError" : 2.577701313091225E-4, + "scoreConfidence" : [ + 0.012706614767037164, + 0.01322215502965541 + ], + "scorePercentiles" : { + "0.0" : 0.012813191806904116, + "50.0" : 0.01298516114747426, + "90.0" : 0.013039108015990779, + "95.0" : 0.013039108015990779, + "99.0" : 0.013039108015990779, + "99.9" : 0.013039108015990779, + "99.99" : 0.013039108015990779, + "99.999" : 0.013039108015990779, + "99.9999" : 0.013039108015990779, + "100.0" : 0.013039108015990779 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.012813191806904116, + 0.012931354416990374, + 0.012924645154536313 + ], + [ + 0.013038967877958146, + 0.013039042117697986, + 0.013039108015990779 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.673469200929784, + "scoreError" : 0.14943802892508878, + "scoreConfidence" : [ + 3.524031172004695, + 3.8229072298548727 + ], + "scorePercentiles" : { + "0.0" : 3.6237315644927537, + "50.0" : 3.67061608442467, + "90.0" : 3.7256586865227104, + "95.0" : 3.7256586865227104, + "99.0" : 3.7256586865227104, + "99.9" : 3.7256586865227104, + "99.99" : 3.7256586865227104, + "99.999" : 3.7256586865227104, + "99.9999" : 3.7256586865227104, + "100.0" : 3.7256586865227104 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.6248462644927537, + 3.6237315644927537, + 3.626285658448151 + ], + [ + 3.7253465212211467, + 3.7149465104011887, + 3.7256586865227104 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.845002438442127, + "scoreError" : 0.04287871366742935, + "scoreConfidence" : [ + 2.802123724774698, + 2.887881152109556 + ], + "scorePercentiles" : { + "0.0" : 2.7989082118667787, + "50.0" : 2.8569832750642674, + "90.0" : 2.8689466262191625, + "95.0" : 2.8689466262191625, + "99.0" : 2.8689466262191625, + "99.9" : 2.8689466262191625, + "99.99" : 2.8689466262191625, + "99.999" : 2.8689466262191625, + "99.9999" : 2.8689466262191625, + "100.0" : 2.8689466262191625 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.8689466262191625, + 2.8678104997133027, + 2.8603603591649986 + ], + [ + 2.8197480668170285, + 2.8194921466027627, + 2.7989082118667787 + ], + [ + 2.862014226323319, + 2.8569832750642674, + 2.8507585342075257 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17667398738573184, + "scoreError" : 0.004522962845580232, + "scoreConfidence" : [ + 0.1721510245401516, + 0.18119695023131208 + ], + "scorePercentiles" : { + "0.0" : 0.17274437678355503, + "50.0" : 0.17773538823424864, + "90.0" : 0.17929800475131782, + "95.0" : 0.17929800475131782, + "99.0" : 0.17929800475131782, + "99.9" : 0.17929800475131782, + "99.99" : 0.17929800475131782, + "99.999" : 0.17929800475131782, + "99.9999" : 0.17929800475131782, + "100.0" : 0.17929800475131782 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17929800475131782, + 0.17875492422779923, + 0.1786768472698685 + ], + [ + 0.17354256814868804, + 0.17317766123473893, + 0.17274437678355503 + ], + [ + 0.17841636940231936, + 0.177719746419051, + 0.17773538823424864 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3278785338826535, + "scoreError" : 0.02325834532732937, + "scoreConfidence" : [ + 0.30462018855532413, + 0.3511368792099828 + ], + "scorePercentiles" : { + "0.0" : 0.3089522779288186, + "50.0" : 0.33629414826646936, + "90.0" : 0.33916132474139393, + "95.0" : 0.33916132474139393, + "99.0" : 0.33916132474139393, + "99.9" : 0.33916132474139393, + "99.99" : 0.33916132474139393, + "99.999" : 0.33916132474139393, + "99.9999" : 0.33916132474139393, + "100.0" : 0.33916132474139393 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.336947062232555, + 0.33597702281202757, + 0.33629414826646936 + ], + [ + 0.31003876372655403, + 0.3089522779288186, + 0.3094074593298475 + ], + [ + 0.33916132474139393, + 0.3373513187828903, + 0.3367774271233246 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16002382610015384, + "scoreError" : 0.0028749300894222066, + "scoreConfidence" : [ + 0.15714889601073162, + 0.16289875618957605 + ], + "scorePercentiles" : { + "0.0" : 0.157941736670036, + "50.0" : 0.16011360556863122, + "90.0" : 0.16208578819067376, + "95.0" : 0.16208578819067376, + "99.0" : 0.16208578819067376, + "99.9" : 0.16208578819067376, + "99.99" : 0.16208578819067376, + "99.999" : 0.16208578819067376, + "99.9999" : 0.16208578819067376, + "100.0" : 0.16208578819067376 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15800144895089427, + 0.15802927755566443, + 0.157941736670036 + ], + [ + 0.16208578819067376, + 0.1619398366719026, + 0.16176520781636713 + ], + [ + 0.1602269537756557, + 0.16011360556863122, + 0.16011057970155945 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3937664494679593, + "scoreError" : 0.005156686612415254, + "scoreConfidence" : [ + 0.38860976285554405, + 0.39892313608037455 + ], + "scorePercentiles" : { + "0.0" : 0.3895133925761471, + "50.0" : 0.393265371583625, + "90.0" : 0.39806655210572406, + "95.0" : 0.39806655210572406, + "99.0" : 0.39806655210572406, + "99.9" : 0.39806655210572406, + "99.99" : 0.39806655210572406, + "99.999" : 0.39806655210572406, + "99.9999" : 0.39806655210572406, + "100.0" : 0.39806655210572406 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.39707056577327776, + 0.39672426091958585, + 0.39806655210572406 + ], + [ + 0.3921561219952159, + 0.39032111385191837, + 0.3895133925761471 + ], + [ + 0.39482050100675115, + 0.393265371583625, + 0.39196016539938855 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15675301344455994, + "scoreError" : 0.004658609047840728, + "scoreConfidence" : [ + 0.1520944043967192, + 0.16141162249240068 + ], + "scorePercentiles" : { + "0.0" : 0.1545591449127525, + "50.0" : 0.15518161604233263, + "90.0" : 0.16099979876998374, + "95.0" : 0.16099979876998374, + "99.0" : 0.16099979876998374, + "99.9" : 0.16099979876998374, + "99.99" : 0.16099979876998374, + "99.999" : 0.16099979876998374, + "99.9999" : 0.16099979876998374, + "100.0" : 0.16099979876998374 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15467007167272445, + 0.1545591449127525, + 0.1545636310453021 + ], + [ + 0.15573376948951942, + 0.15518161604233263, + 0.1548710712548977 + ], + [ + 0.16099979876998374, + 0.1602751452383242, + 0.1599228725752027 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.047817784078729414, + "scoreError" : 0.0011948342870446483, + "scoreConfidence" : [ + 0.04662294979168476, + 0.049012618365774065 + ], + "scorePercentiles" : { + "0.0" : 0.047114732199141585, + "50.0" : 0.047610175369687965, + "90.0" : 0.04905999008021194, + "95.0" : 0.04905999008021194, + "99.0" : 0.04905999008021194, + "99.9" : 0.04905999008021194, + "99.99" : 0.04905999008021194, + "99.999" : 0.04905999008021194, + "99.9999" : 0.04905999008021194, + "100.0" : 0.04905999008021194 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.047308128061386207, + 0.04719235425810044, + 0.047269258719872184 + ], + [ + 0.04856412413314167, + 0.04905999008021194, + 0.048489256354432346 + ], + [ + 0.047610175369687965, + 0.04775203753259032, + 0.047114732199141585 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9421759.159399383, + "scoreError" : 707140.3164048794, + "scoreConfidence" : [ + 8714618.842994504, + 1.0128899475804262E7 + ], + "scorePercentiles" : { + "0.0" : 9036655.30532972, + "50.0" : 9254157.081406105, + "90.0" : 1.0006135448E7, + "95.0" : 1.0006135448E7, + "99.0" : 1.0006135448E7, + "99.9" : 1.0006135448E7, + "99.99" : 1.0006135448E7, + "99.999" : 1.0006135448E7, + "99.9999" : 1.0006135448E7, + "100.0" : 1.0006135448E7 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9206639.917203313, + 9254157.081406105, + 9259158.390379278 + ], + [ + 9036655.30532972, + 9050269.691402715, + 9074580.583484573 + ], + [ + 9935700.8897716, + 9972535.127617149, + 1.0006135448E7 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-03-24T00:23:14Z-c46c07a77f81d0493fc0e7c93d9de49e97118281-jdk17.json b/performance-results/2025-03-24T00:23:14Z-c46c07a77f81d0493fc0e7c93d9de49e97118281-jdk17.json new file mode 100644 index 0000000000..cde7a7ef91 --- /dev/null +++ b/performance-results/2025-03-24T00:23:14Z-c46c07a77f81d0493fc0e7c93d9de49e97118281-jdk17.json @@ -0,0 +1,1310 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4223396104835797, + "scoreError" : 0.043725212925550025, + "scoreConfidence" : [ + 3.37861439755803, + 3.4660648234091296 + ], + "scorePercentiles" : { + "0.0" : 3.4145587032492717, + "50.0" : 3.42227609893122, + "90.0" : 3.4302475408226076, + "95.0" : 3.4302475408226076, + "99.0" : 3.4302475408226076, + "99.9" : 3.4302475408226076, + "99.99" : 3.4302475408226076, + "99.999" : 3.4302475408226076, + "99.9999" : 3.4302475408226076, + "100.0" : 3.4302475408226076 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4145587032492717, + 3.4196048034813886 + ], + [ + 3.424947394381052, + 3.4302475408226076 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7293409537320772, + "scoreError" : 0.013098203820130744, + "scoreConfidence" : [ + 1.7162427499119464, + 1.742439157552208 + ], + "scorePercentiles" : { + "0.0" : 1.7271885468681993, + "50.0" : 1.7291572733627323, + "90.0" : 1.7318607213346457, + "95.0" : 1.7318607213346457, + "99.0" : 1.7318607213346457, + "99.9" : 1.7318607213346457, + "99.99" : 1.7318607213346457, + "99.999" : 1.7318607213346457, + "99.9999" : 1.7318607213346457, + "100.0" : 1.7318607213346457 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7271885468681993, + 1.7299560719039933 + ], + [ + 1.728358474821471, + 1.7318607213346457 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8690871927147313, + "scoreError" : 0.004974514875233495, + "scoreConfidence" : [ + 0.8641126778394979, + 0.8740617075899648 + ], + "scorePercentiles" : { + "0.0" : 0.8683436536883511, + "50.0" : 0.8689709686170206, + "90.0" : 0.8700631799365328, + "95.0" : 0.8700631799365328, + "99.0" : 0.8700631799365328, + "99.9" : 0.8700631799365328, + "99.99" : 0.8700631799365328, + "99.999" : 0.8700631799365328, + "99.9999" : 0.8700631799365328, + "100.0" : 0.8700631799365328 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8683436536883511, + 0.8686206739831588 + ], + [ + 0.8693212632508825, + 0.8700631799365328 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.176447094328555, + "scoreError" : 0.21039762953362492, + "scoreConfidence" : [ + 15.96604946479493, + 16.38684472386218 + ], + "scorePercentiles" : { + "0.0" : 16.02273460262859, + "50.0" : 16.17803229239284, + "90.0" : 16.338047338633128, + "95.0" : 16.338047338633128, + "99.0" : 16.338047338633128, + "99.9" : 16.338047338633128, + "99.99" : 16.338047338633128, + "99.999" : 16.338047338633128, + "99.9999" : 16.338047338633128, + "100.0" : 16.338047338633128 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.149948890904675, + 16.1789391938823, + 16.17803229239284 + ], + [ + 16.042872420624704, + 16.0440694515352, + 16.02273460262859 + ], + [ + 16.338047338633128, + 16.327952875347822, + 16.30542678300774 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2700.2882550030386, + "scoreError" : 96.7322058302932, + "scoreConfidence" : [ + 2603.5560491727456, + 2797.0204608333315 + ], + "scorePercentiles" : { + "0.0" : 2653.07991575285, + "50.0" : 2666.391896086423, + "90.0" : 2780.899937372966, + "95.0" : 2780.899937372966, + "99.0" : 2780.899937372966, + "99.9" : 2780.899937372966, + "99.99" : 2780.899937372966, + "99.999" : 2780.899937372966, + "99.9999" : 2780.899937372966, + "100.0" : 2780.899937372966 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2773.2417483443546, + 2780.899937372966, + 2775.7904882477383 + ], + [ + 2663.2819930577834, + 2653.07991575285, + 2654.1555989667613 + ], + [ + 2666.391896086423, + 2665.495887754995, + 2670.2568294434764 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 70174.19309953183, + "scoreError" : 1564.0509467698946, + "scoreConfidence" : [ + 68610.14215276192, + 71738.24404630173 + ], + "scorePercentiles" : { + "0.0" : 68930.65160154008, + "50.0" : 70571.78206598868, + "90.0" : 71019.93901817729, + "95.0" : 71019.93901817729, + "99.0" : 71019.93901817729, + "99.9" : 71019.93901817729, + "99.99" : 71019.93901817729, + "99.999" : 71019.93901817729, + "99.9999" : 71019.93901817729, + "100.0" : 71019.93901817729 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 70996.91830347097, + 71019.93901817729, + 71006.93058404124 + ], + [ + 68970.93751249161, + 68930.65160154008, + 68983.81206796458 + ], + [ + 70506.51290054324, + 70580.25384156879, + 70571.78206598868 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 351.0196860126746, + "scoreError" : 6.327176034437353, + "scoreConfidence" : [ + 344.69250997823724, + 357.3468620471119 + ], + "scorePercentiles" : { + "0.0" : 344.5603693554375, + "50.0" : 350.39200219743225, + "90.0" : 355.7240486824901, + "95.0" : 355.7240486824901, + "99.0" : 355.7240486824901, + "99.9" : 355.7240486824901, + "99.99" : 355.7240486824901, + "99.999" : 355.7240486824901, + "99.9999" : 355.7240486824901, + "100.0" : 355.7240486824901 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 355.7240486824901, + 355.236232183386, + 355.3319181912754 + ], + [ + 348.72447907602054, + 348.4251848899698, + 344.5603693554375 + ], + [ + 350.39200219743225, + 350.3541221087014, + 350.42881742935845 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 106.65909013547264, + "scoreError" : 1.4190899578645233, + "scoreConfidence" : [ + 105.24000017760811, + 108.07818009333717 + ], + "scorePercentiles" : { + "0.0" : 105.6162841290003, + "50.0" : 106.50638068901223, + "90.0" : 107.78984731739712, + "95.0" : 107.78984731739712, + "99.0" : 107.78984731739712, + "99.9" : 107.78984731739712, + "99.99" : 107.78984731739712, + "99.999" : 107.78984731739712, + "99.9999" : 107.78984731739712, + "100.0" : 107.78984731739712 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 107.5904277872302, + 107.78984731739712, + 107.70949927973304 + ], + [ + 106.506954789398, + 106.50638068901223, + 106.50478486079068 + ], + [ + 105.6162841290003, + 105.87755649908355, + 105.8300758676087 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06209317411218212, + "scoreError" : 7.538075008411679E-4, + "scoreConfidence" : [ + 0.06133936661134095, + 0.06284698161302328 + ], + "scorePercentiles" : { + "0.0" : 0.06144225748201306, + "50.0" : 0.062250828252709424, + "90.0" : 0.06256984610571628, + "95.0" : 0.06256984610571628, + "99.0" : 0.06256984610571628, + "99.9" : 0.06256984610571628, + "99.99" : 0.06256984610571628, + "99.999" : 0.06256984610571628, + "99.9999" : 0.06256984610571628, + "100.0" : 0.06256984610571628 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06239646361095166, + 0.062418272145657004, + 0.06221235583108335 + ], + [ + 0.06144225748201306, + 0.06161576037905581, + 0.06148573024188094 + ], + [ + 0.062250828252709424, + 0.06256984610571628, + 0.06244705296057151 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.7607663812243037E-4, + "scoreError" : 1.1442859251684939E-5, + "scoreConfidence" : [ + 3.646337788707454E-4, + 3.875194973741153E-4 + ], + "scorePercentiles" : { + "0.0" : 3.681143338609699E-4, + "50.0" : 3.7442910870162834E-4, + "90.0" : 3.8507081206627316E-4, + "95.0" : 3.8507081206627316E-4, + "99.0" : 3.8507081206627316E-4, + "99.9" : 3.8507081206627316E-4, + "99.99" : 3.8507081206627316E-4, + "99.999" : 3.8507081206627316E-4, + "99.9999" : 3.8507081206627316E-4, + "100.0" : 3.8507081206627316E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.8409582662134395E-4, + 3.8449133940953627E-4, + 3.8507081206627316E-4 + ], + [ + 3.690260844272774E-4, + 3.681143338609699E-4, + 3.702101250850547E-4 + ], + [ + 3.7412950073089176E-4, + 3.751226121988977E-4, + 3.7442910870162834E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014130309759608764, + "scoreError" : 1.1557199490178697E-4, + "scoreConfidence" : [ + 0.014014737764706976, + 0.014245881754510551 + ], + "scorePercentiles" : { + "0.0" : 0.014047087416772018, + "50.0" : 0.014118687416612664, + "90.0" : 0.014217589361396605, + "95.0" : 0.014217589361396605, + "99.0" : 0.014217589361396605, + "99.9" : 0.014217589361396605, + "99.99" : 0.014217589361396605, + "99.999" : 0.014217589361396605, + "99.9999" : 0.014217589361396605, + "100.0" : 0.014217589361396605 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014077196809581392, + 0.01405035927748288, + 0.014047087416772018 + ], + [ + 0.01421129386050927, + 0.014217589361396605, + 0.014214491057772673 + ], + [ + 0.014119107481913626, + 0.014116975154437756, + 0.014118687416612664 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9773896294313688, + "scoreError" : 0.010852659511471296, + "scoreConfidence" : [ + 0.9665369699198975, + 0.98824228894284 + ], + "scorePercentiles" : { + "0.0" : 0.968145494482091, + "50.0" : 0.9763926268306972, + "90.0" : 0.9898854295753736, + "95.0" : 0.9898854295753736, + "99.0" : 0.9898854295753736, + "99.9" : 0.9898854295753736, + "99.99" : 0.9898854295753736, + "99.999" : 0.9898854295753736, + "99.9999" : 0.9898854295753736, + "100.0" : 0.9898854295753736 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.980458675490196, + 0.9763926268306972, + 0.9734553186021611 + ], + [ + 0.9725973313557673, + 0.9735463582554517, + 0.968145494482091 + ], + [ + 0.9898854295753736, + 0.9820591416085633, + 0.9799662886820186 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.012999210482276655, + "scoreError" : 2.1611055986766895E-4, + "scoreConfidence" : [ + 0.012783099922408987, + 0.013215321042144323 + ], + "scorePercentiles" : { + "0.0" : 0.012919324624185454, + "50.0" : 0.013001931921219387, + "90.0" : 0.01307385693106586, + "95.0" : 0.01307385693106586, + "99.0" : 0.01307385693106586, + "99.9" : 0.01307385693106586, + "99.99" : 0.01307385693106586, + "99.999" : 0.01307385693106586, + "99.9999" : 0.01307385693106586, + "100.0" : 0.01307385693106586 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.012919324624185454, + 0.012938083570310377, + 0.012929917723875773 + ], + [ + 0.01306829977209407, + 0.01307385693106586, + 0.013065780272128397 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.700450900560987, + "scoreError" : 0.040650582191514045, + "scoreConfidence" : [ + 3.659800318369473, + 3.741101482752501 + ], + "scorePercentiles" : { + "0.0" : 3.6858584502579217, + "50.0" : 3.6987097385567482, + "90.0" : 3.7201648074349443, + "95.0" : 3.7201648074349443, + "99.0" : 3.7201648074349443, + "99.9" : 3.7201648074349443, + "99.99" : 3.7201648074349443, + "99.999" : 3.7201648074349443, + "99.9999" : 3.7201648074349443, + "100.0" : 3.7201648074349443 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.7083377094143812, + 3.7201648074349443, + 3.7109526958456973 + ], + [ + 3.689081767699115, + 3.6858584502579217, + 3.6883099727138644 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.840180921798341, + "scoreError" : 0.044513227628576325, + "scoreConfidence" : [ + 2.7956676941697647, + 2.884694149426917 + ], + "scorePercentiles" : { + "0.0" : 2.801557466946779, + "50.0" : 2.8510196391106044, + "90.0" : 2.872490500861574, + "95.0" : 2.872490500861574, + "99.0" : 2.872490500861574, + "99.9" : 2.872490500861574, + "99.99" : 2.872490500861574, + "99.999" : 2.872490500861574, + "99.9999" : 2.872490500861574, + "100.0" : 2.872490500861574 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.8067425004209934, + 2.801557466946779, + 2.8109157793704327 + ], + [ + 2.8510196391106044, + 2.8517295494724837, + 2.846561409220262 + ], + [ + 2.861186417620137, + 2.859425033161807, + 2.872490500861574 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17907202947603687, + "scoreError" : 0.00670484560821617, + "scoreConfidence" : [ + 0.1723671838678207, + 0.18577687508425303 + ], + "scorePercentiles" : { + "0.0" : 0.1755640429592177, + "50.0" : 0.1774438194722927, + "90.0" : 0.18523565140962472, + "95.0" : 0.18523565140962472, + "99.0" : 0.18523565140962472, + "99.9" : 0.18523565140962472, + "99.99" : 0.18523565140962472, + "99.999" : 0.18523565140962472, + "99.9999" : 0.18523565140962472, + "100.0" : 0.18523565140962472 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17574525320726864, + 0.1755640429592177, + 0.17574461892376367 + ], + [ + 0.18321511113553918, + 0.18432324685737458, + 0.18523565140962472 + ], + [ + 0.17765377328524987, + 0.1774438194722927, + 0.17672274803400073 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.33467355980546004, + "scoreError" : 0.015732504644345665, + "scoreConfidence" : [ + 0.3189410551611144, + 0.3504060644498057 + ], + "scorePercentiles" : { + "0.0" : 0.3225942608387097, + "50.0" : 0.33705844103272775, + "90.0" : 0.3445825397815375, + "95.0" : 0.3445825397815375, + "99.0" : 0.3445825397815375, + "99.9" : 0.3445825397815375, + "99.99" : 0.3445825397815375, + "99.999" : 0.3445825397815375, + "99.9999" : 0.3445825397815375, + "100.0" : 0.3445825397815375 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3225942608387097, + 0.3227770372151572, + 0.32293328559434237 + ], + [ + 0.3445825397815375, + 0.34353106176571624, + 0.3433423331731099 + ], + [ + 0.3383529962444174, + 0.33705844103272775, + 0.33689008260342274 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16641165219979803, + "scoreError" : 0.008301354539846898, + "scoreConfidence" : [ + 0.15811029765995113, + 0.17471300673964493 + ], + "scorePercentiles" : { + "0.0" : 0.1613107943638798, + "50.0" : 0.16515381480074648, + "90.0" : 0.17292260472756826, + "95.0" : 0.17292260472756826, + "99.0" : 0.17292260472756826, + "99.9" : 0.17292260472756826, + "99.99" : 0.17292260472756826, + "99.999" : 0.17292260472756826, + "99.9999" : 0.17292260472756826, + "100.0" : 0.17292260472756826 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17292260472756826, + 0.17262155191520948, + 0.17226494201650272 + ], + [ + 0.16135854223477208, + 0.1614882046669358, + 0.1613107943638798 + ], + [ + 0.16554833105434802, + 0.16515381480074648, + 0.16503608401821962 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.38875197801253086, + "scoreError" : 0.010133028661687969, + "scoreConfidence" : [ + 0.3786189493508429, + 0.39888500667421883 + ], + "scorePercentiles" : { + "0.0" : 0.37941510911712256, + "50.0" : 0.3914092459882583, + "90.0" : 0.3958145895111815, + "95.0" : 0.3958145895111815, + "99.0" : 0.3958145895111815, + "99.9" : 0.3958145895111815, + "99.99" : 0.3958145895111815, + "99.999" : 0.3958145895111815, + "99.9999" : 0.3958145895111815, + "100.0" : 0.3958145895111815 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.38415878153810695, + 0.37941510911712256, + 0.3798788741880342 + ], + [ + 0.3958145895111815, + 0.39277299945013944, + 0.3931043139274343 + ], + [ + 0.3917136562475519, + 0.3914092459882583, + 0.39050023214494906 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1567575782526978, + "scoreError" : 0.001756730125437472, + "scoreConfidence" : [ + 0.1550008481272603, + 0.15851430837813527 + ], + "scorePercentiles" : { + "0.0" : 0.1552836069099379, + "50.0" : 0.1568126810826068, + "90.0" : 0.15808412828214166, + "95.0" : 0.15808412828214166, + "99.0" : 0.15808412828214166, + "99.9" : 0.15808412828214166, + "99.99" : 0.15808412828214166, + "99.999" : 0.15808412828214166, + "99.9999" : 0.15808412828214166, + "100.0" : 0.15808412828214166 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1560860536296805, + 0.1552836069099379, + 0.15552143758261924 + ], + [ + 0.1580676237157399, + 0.15808412828214166, + 0.15766376098506946 + ], + [ + 0.1570153811744387, + 0.1568126810826068, + 0.156283530912046 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.048592658466308974, + "scoreError" : 0.0017968188521679121, + "scoreConfidence" : [ + 0.04679583961414106, + 0.050389477318476886 + ], + "scorePercentiles" : { + "0.0" : 0.047535836964220354, + "50.0" : 0.048176836740199735, + "90.0" : 0.05068937412245353, + "95.0" : 0.05068937412245353, + "99.0" : 0.05068937412245353, + "99.9" : 0.05068937412245353, + "99.99" : 0.05068937412245353, + "99.999" : 0.05068937412245353, + "99.9999" : 0.05068937412245353, + "100.0" : 0.05068937412245353 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04894306757471051, + 0.048111777384870005, + 0.048176836740199735 + ], + [ + 0.047619933290158525, + 0.047535836964220354, + 0.047573736302526606 + ], + [ + 0.05068937412245353, + 0.049340145975389535, + 0.04934321784225199 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9118731.258717624, + "scoreError" : 64258.13778346629, + "scoreConfidence" : [ + 9054473.120934159, + 9182989.39650109 + ], + "scorePercentiles" : { + "0.0" : 9080304.523593467, + "50.0" : 9100486.565059144, + "90.0" : 9171500.41796517, + "95.0" : 9171500.41796517, + "99.0" : 9171500.41796517, + "99.9" : 9171500.41796517, + "99.99" : 9171500.41796517, + "99.999" : 9171500.41796517, + "99.9999" : 9171500.41796517, + "100.0" : 9171500.41796517 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9169333.384051329, + 9171500.41796517, + 9156587.633119853 + ], + [ + 9100486.565059144, + 9087986.72479564, + 9093709.6 + ], + [ + 9128045.636861313, + 9080304.523593467, + 9080626.843012704 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-03-24T00:23:52Z-c46c07a77f81d0493fc0e7c93d9de49e97118281-jdk17.json b/performance-results/2025-03-24T00:23:52Z-c46c07a77f81d0493fc0e7c93d9de49e97118281-jdk17.json new file mode 100644 index 0000000000..43a8f0b979 --- /dev/null +++ b/performance-results/2025-03-24T00:23:52Z-c46c07a77f81d0493fc0e7c93d9de49e97118281-jdk17.json @@ -0,0 +1,1310 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4139790279787423, + "scoreError" : 0.01733409931536483, + "scoreConfidence" : [ + 3.3966449286633775, + 3.431313127294107 + ], + "scorePercentiles" : { + "0.0" : 3.410359353387592, + "50.0" : 3.4147105177822104, + "90.0" : 3.4161357229629568, + "95.0" : 3.4161357229629568, + "99.0" : 3.4161357229629568, + "99.9" : 3.4161357229629568, + "99.99" : 3.4161357229629568, + "99.999" : 3.4161357229629568, + "99.9999" : 3.4161357229629568, + "100.0" : 3.4161357229629568 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.410359353387592, + 3.4161357229629568 + ], + [ + 3.4135350559911077, + 3.415885979573313 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7232104134744857, + "scoreError" : 0.007629890942061581, + "scoreConfidence" : [ + 1.715580522532424, + 1.7308403044165472 + ], + "scorePercentiles" : { + "0.0" : 1.7220037289307688, + "50.0" : 1.7232692487178383, + "90.0" : 1.724299427531498, + "95.0" : 1.724299427531498, + "99.0" : 1.724299427531498, + "99.9" : 1.724299427531498, + "99.99" : 1.724299427531498, + "99.999" : 1.724299427531498, + "99.9999" : 1.724299427531498, + "100.0" : 1.724299427531498 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7220037289307688, + 1.724144873194817 + ], + [ + 1.7223936242408595, + 1.724299427531498 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8662626240049967, + "scoreError" : 0.012849636408795155, + "scoreConfidence" : [ + 0.8534129875962015, + 0.8791122604137918 + ], + "scorePercentiles" : { + "0.0" : 0.8648472759593716, + "50.0" : 0.8655491554294797, + "90.0" : 0.8691049092016552, + "95.0" : 0.8691049092016552, + "99.0" : 0.8691049092016552, + "99.9" : 0.8691049092016552, + "99.99" : 0.8691049092016552, + "99.999" : 0.8691049092016552, + "99.9999" : 0.8691049092016552, + "100.0" : 0.8691049092016552 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8649317121070363, + 0.8648472759593716 + ], + [ + 0.8661665987519231, + 0.8691049092016552 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 15.747041994645217, + "scoreError" : 0.14758109112545448, + "scoreConfidence" : [ + 15.599460903519763, + 15.894623085770672 + ], + "scorePercentiles" : { + "0.0" : 15.609608788536184, + "50.0" : 15.753115594028856, + "90.0" : 15.892679137848754, + "95.0" : 15.892679137848754, + "99.0" : 15.892679137848754, + "99.9" : 15.892679137848754, + "99.99" : 15.892679137848754, + "99.999" : 15.892679137848754, + "99.9999" : 15.892679137848754, + "100.0" : 15.892679137848754 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 15.892679137848754, + 15.840820211442846, + 15.760137568493265 + ], + [ + 15.716608944186692, + 15.750055674111344, + 15.639867067639829 + ], + [ + 15.76048496551918, + 15.753115594028856, + 15.609608788536184 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2545.4144779507083, + "scoreError" : 133.1445397106979, + "scoreConfidence" : [ + 2412.2699382400106, + 2678.559017661406 + ], + "scorePercentiles" : { + "0.0" : 2423.101821634822, + "50.0" : 2562.1716441581257, + "90.0" : 2649.288918606347, + "95.0" : 2649.288918606347, + "99.0" : 2649.288918606347, + "99.9" : 2649.288918606347, + "99.99" : 2649.288918606347, + "99.999" : 2649.288918606347, + "99.9999" : 2649.288918606347, + "100.0" : 2649.288918606347 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2637.4876233069353, + 2609.3290298838847, + 2649.288918606347 + ], + [ + 2564.6887466700787, + 2562.1716441581257, + 2515.2897354670463 + ], + [ + 2479.1384646149886, + 2468.2343172141473, + 2423.101821634822 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 70197.89601850326, + "scoreError" : 653.3580011482312, + "scoreConfidence" : [ + 69544.53801735504, + 70851.25401965149 + ], + "scorePercentiles" : { + "0.0" : 69486.97210441956, + "50.0" : 70326.68061681147, + "90.0" : 70559.23822474394, + "95.0" : 70559.23822474394, + "99.0" : 70559.23822474394, + "99.9" : 70559.23822474394, + "99.99" : 70559.23822474394, + "99.999" : 70559.23822474394, + "99.9999" : 70559.23822474394, + "100.0" : 70559.23822474394 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 70326.68061681147, + 70503.0313110003, + 70559.23822474394 + ], + [ + 70280.42396857131, + 70461.33770627339, + 70492.21472352139 + ], + [ + 69486.97210441956, + 69697.21793988864, + 69973.94757129939 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 344.5101901407003, + "scoreError" : 2.383199551240554, + "scoreConfidence" : [ + 342.1269905894597, + 346.89338969194085 + ], + "scorePercentiles" : { + "0.0" : 342.6941923456472, + "50.0" : 344.34952393825296, + "90.0" : 347.15351826154125, + "95.0" : 347.15351826154125, + "99.0" : 347.15351826154125, + "99.9" : 347.15351826154125, + "99.99" : 347.15351826154125, + "99.999" : 347.15351826154125, + "99.9999" : 347.15351826154125, + "100.0" : 347.15351826154125 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 344.34952393825296, + 342.75642153725806, + 347.15351826154125 + ], + [ + 344.46026237521187, + 345.8795032843992, + 342.6941923456472 + ], + [ + 344.2612697809226, + 343.90034476443435, + 345.13667497863463 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 106.19980969284724, + "scoreError" : 4.314449187306226, + "scoreConfidence" : [ + 101.88536050554102, + 110.51425888015346 + ], + "scorePercentiles" : { + "0.0" : 102.98445685458186, + "50.0" : 106.25756148437183, + "90.0" : 109.45660740565823, + "95.0" : 109.45660740565823, + "99.0" : 109.45660740565823, + "99.9" : 109.45660740565823, + "99.99" : 109.45660740565823, + "99.999" : 109.45660740565823, + "99.9999" : 109.45660740565823, + "100.0" : 109.45660740565823 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 109.4167165580331, + 109.45660740565823, + 108.58405853540157 + ], + [ + 103.46395059370718, + 102.98445685458186, + 103.48652507131372 + ], + [ + 106.73553070412007, + 106.25756148437183, + 105.4128800284376 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06275639899463895, + "scoreError" : 9.54564950141199E-4, + "scoreConfidence" : [ + 0.061801834044497746, + 0.06371096394478014 + ], + "scorePercentiles" : { + "0.0" : 0.06206886380451109, + "50.0" : 0.06277109492125466, + "90.0" : 0.06384064171167375, + "95.0" : 0.06384064171167375, + "99.0" : 0.06384064171167375, + "99.9" : 0.06384064171167375, + "99.99" : 0.06384064171167375, + "99.999" : 0.06384064171167375, + "99.9999" : 0.06384064171167375, + "100.0" : 0.06384064171167375 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06277109492125466, + 0.06384064171167375, + 0.0628098215095501 + ], + [ + 0.06311703809060958, + 0.062423528202599284, + 0.062465097437723306 + ], + [ + 0.06319615820904954, + 0.06206886380451109, + 0.06211534706477921 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.7162303018110915E-4, + "scoreError" : 1.3300625207700327E-5, + "scoreConfidence" : [ + 3.583224049734088E-4, + 3.849236553888095E-4 + ], + "scorePercentiles" : { + "0.0" : 3.6245800606610196E-4, + "50.0" : 3.6733737068606417E-4, + "90.0" : 3.8197260089267476E-4, + "95.0" : 3.8197260089267476E-4, + "99.0" : 3.8197260089267476E-4, + "99.9" : 3.8197260089267476E-4, + "99.99" : 3.8197260089267476E-4, + "99.999" : 3.8197260089267476E-4, + "99.9999" : 3.8197260089267476E-4, + "100.0" : 3.8197260089267476E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.7946744438874773E-4, + 3.8197260089267476E-4, + 3.801795977685541E-4 + ], + [ + 3.774281412412418E-4, + 3.6596905308952E-4, + 3.6733737068606417E-4 + ], + [ + 3.655366763432819E-4, + 3.64258381153796E-4, + 3.6245800606610196E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014576655465828222, + "scoreError" : 4.4815463271461934E-4, + "scoreConfidence" : [ + 0.014128500833113603, + 0.015024810098542842 + ], + "scorePercentiles" : { + "0.0" : 0.014191622172709856, + "50.0" : 0.014660958410302422, + "90.0" : 0.01486787987493291, + "95.0" : 0.01486787987493291, + "99.0" : 0.01486787987493291, + "99.9" : 0.01486787987493291, + "99.99" : 0.01486787987493291, + "99.999" : 0.01486787987493291, + "99.9999" : 0.01486787987493291, + "100.0" : 0.01486787987493291 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014191622172709856, + 0.014290993181850661, + 0.014229220261302128 + ], + [ + 0.014660958410302422, + 0.014729058729871167, + 0.014615897812608705 + ], + [ + 0.01486787987493291, + 0.014796878423028379, + 0.014807390325847788 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9886220481891734, + "scoreError" : 0.02202937493183751, + "scoreConfidence" : [ + 0.9665926732573359, + 1.0106514231210109 + ], + "scorePercentiles" : { + "0.0" : 0.9708414966508107, + "50.0" : 0.9914381361157926, + "90.0" : 1.0050596295477388, + "95.0" : 1.0050596295477388, + "99.0" : 1.0050596295477388, + "99.9" : 1.0050596295477388, + "99.99" : 1.0050596295477388, + "99.999" : 1.0050596295477388, + "99.9999" : 1.0050596295477388, + "100.0" : 1.0050596295477388 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9988275476428286, + 0.9798739526748971, + 1.0050596295477388 + ], + [ + 0.9914381361157926, + 0.9749231319945408, + 0.9770868427943332 + ], + [ + 0.9708414966508107, + 1.00367483410277, + 0.9958728621788488 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.013247707048733286, + "scoreError" : 5.193704451363999E-4, + "scoreConfidence" : [ + 0.012728336603596886, + 0.013767077493869686 + ], + "scorePercentiles" : { + "0.0" : 0.013023179856227536, + "50.0" : 0.013218959993194505, + "90.0" : 0.013476428963390805, + "95.0" : 0.013476428963390805, + "99.0" : 0.013476428963390805, + "99.9" : 0.013476428963390805, + "99.99" : 0.013476428963390805, + "99.999" : 0.013476428963390805, + "99.9999" : 0.013476428963390805, + "100.0" : 0.013476428963390805 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013431655164077107, + 0.013476428963390805, + 0.013309052718435748 + ], + [ + 0.013023179856227536, + 0.013117058322315264, + 0.013128867267953263 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.8007924550689083, + "scoreError" : 0.1575107709395715, + "scoreConfidence" : [ + 3.6432816841293367, + 3.95830322600848 + ], + "scorePercentiles" : { + "0.0" : 3.7105204391691395, + "50.0" : 3.810032759650752, + "90.0" : 3.8690372513534417, + "95.0" : 3.8690372513534417, + "99.0" : 3.8690372513534417, + "99.9" : 3.8690372513534417, + "99.99" : 3.8690372513534417, + "99.999" : 3.8690372513534417, + "99.9999" : 3.8690372513534417, + "100.0" : 3.8690372513534417 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.7105204391691395, + 3.7916760227445034, + 3.7700243978899772 + ], + [ + 3.828389496557001, + 3.8351071226993865, + 3.8690372513534417 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.9027731564072075, + "scoreError" : 0.07612377795801785, + "scoreConfidence" : [ + 2.8266493784491895, + 2.9788969343652254 + ], + "scorePercentiles" : { + "0.0" : 2.825844649901102, + "50.0" : 2.915686231778426, + "90.0" : 2.9708684835164836, + "95.0" : 2.9708684835164836, + "99.0" : 2.9708684835164836, + "99.9" : 2.9708684835164836, + "99.99" : 2.9708684835164836, + "99.999" : 2.9708684835164836, + "99.9999" : 2.9708684835164836, + "100.0" : 2.9708684835164836 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.915686231778426, + 2.8977852381918283, + 2.9708684835164836 + ], + [ + 2.851340196123147, + 2.876133754385965, + 2.825844649901102 + ], + [ + 2.9407795983534255, + 2.9272113388937666, + 2.9193089165207238 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17689930835873036, + "scoreError" : 0.002842059148974742, + "scoreConfidence" : [ + 0.17405724920975563, + 0.17974136750770509 + ], + "scorePercentiles" : { + "0.0" : 0.1749956751596815, + "50.0" : 0.17624560317236518, + "90.0" : 0.1805695294680582, + "95.0" : 0.1805695294680582, + "99.0" : 0.1805695294680582, + "99.9" : 0.1805695294680582, + "99.99" : 0.1805695294680582, + "99.999" : 0.1805695294680582, + "99.9999" : 0.1805695294680582, + "100.0" : 0.1805695294680582 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1756597641623777, + 0.17624560317236518, + 0.1749956751596815 + ], + [ + 0.1805695294680582, + 0.17602795509672423, + 0.1759503923462655 + ], + [ + 0.17831782509539604, + 0.17724520107761293, + 0.1770818296500921 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3354327846464433, + "scoreError" : 0.011347978196975963, + "scoreConfidence" : [ + 0.32408480644946736, + 0.3467807628434193 + ], + "scorePercentiles" : { + "0.0" : 0.3264376331320385, + "50.0" : 0.3361444103865546, + "90.0" : 0.3443870391555892, + "95.0" : 0.3443870391555892, + "99.0" : 0.3443870391555892, + "99.9" : 0.3443870391555892, + "99.99" : 0.3443870391555892, + "99.999" : 0.3443870391555892, + "99.9999" : 0.3443870391555892, + "100.0" : 0.3443870391555892 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3373253261148216, + 0.3342318498328877, + 0.3361444103865546 + ], + [ + 0.3443870391555892, + 0.34167287751546005, + 0.342488746600911 + ], + [ + 0.3264376331320385, + 0.32709297160893597, + 0.3291142074707915 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16110332563434188, + "scoreError" : 0.0020874150798940866, + "scoreConfidence" : [ + 0.1590159105544478, + 0.16319074071423595 + ], + "scorePercentiles" : { + "0.0" : 0.15933203478163888, + "50.0" : 0.1610831870298481, + "90.0" : 0.16265270313262417, + "95.0" : 0.16265270313262417, + "99.0" : 0.16265270313262417, + "99.9" : 0.16265270313262417, + "99.99" : 0.16265270313262417, + "99.999" : 0.16265270313262417, + "99.9999" : 0.16265270313262417, + "100.0" : 0.16265270313262417 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16261264577133844, + 0.15933203478163888, + 0.1594406899872449 + ], + [ + 0.1620065954120563, + 0.1610831870298481, + 0.16164427368829407 + ], + [ + 0.16265270313262417, + 0.16080782867801952, + 0.1603499722280125 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.39241547184985115, + "scoreError" : 0.004628031957858871, + "scoreConfidence" : [ + 0.38778743989199227, + 0.39704350380771003 + ], + "scorePercentiles" : { + "0.0" : 0.38753200643286184, + "50.0" : 0.3934960783032974, + "90.0" : 0.3954240305654409, + "95.0" : 0.3954240305654409, + "99.0" : 0.3954240305654409, + "99.9" : 0.3954240305654409, + "99.99" : 0.3954240305654409, + "99.999" : 0.3954240305654409, + "99.9999" : 0.3954240305654409, + "100.0" : 0.3954240305654409 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.39394333220405753, + 0.3947797881252221, + 0.3938365002756774 + ], + [ + 0.3954240305654409, + 0.3930255630011005, + 0.3934960783032974 + ], + [ + 0.39110447979975754, + 0.38859746794124506, + 0.38753200643286184 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15713051585289387, + "scoreError" : 0.0032836281079149463, + "scoreConfidence" : [ + 0.15384688774497893, + 0.1604141439608088 + ], + "scorePercentiles" : { + "0.0" : 0.15493549551475716, + "50.0" : 0.15686275267838937, + "90.0" : 0.1600880574863528, + "95.0" : 0.1600880574863528, + "99.0" : 0.1600880574863528, + "99.9" : 0.1600880574863528, + "99.99" : 0.1600880574863528, + "99.999" : 0.1600880574863528, + "99.9999" : 0.1600880574863528, + "100.0" : 0.1600880574863528 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1577168077626723, + 0.15493549551475716, + 0.1556498461275059 + ], + [ + 0.1600880574863528, + 0.15967283248974118, + 0.15846983966405198 + ], + [ + 0.15555324712232454, + 0.1552257638302496, + 0.15686275267838937 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04705066768023394, + "scoreError" : 0.001354979886918993, + "scoreConfidence" : [ + 0.04569568779331495, + 0.04840564756715294 + ], + "scorePercentiles" : { + "0.0" : 0.046198589189688624, + "50.0" : 0.04695832817738709, + "90.0" : 0.04813244350534022, + "95.0" : 0.04813244350534022, + "99.0" : 0.04813244350534022, + "99.9" : 0.04813244350534022, + "99.99" : 0.04813244350534022, + "99.999" : 0.04813244350534022, + "99.9999" : 0.04813244350534022, + "100.0" : 0.04813244350534022 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.046199114461003984, + 0.046198589189688624, + 0.04623714843789734 + ], + [ + 0.04695832817738709, + 0.04697174483905363, + 0.04676409584646608 + ], + [ + 0.04811783464051659, + 0.047876710024751884, + 0.04813244350534022 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9532333.788803102, + "scoreError" : 184675.12319489112, + "scoreConfidence" : [ + 9347658.66560821, + 9717008.911997994 + ], + "scorePercentiles" : { + "0.0" : 9399325.62781955, + "50.0" : 9531696.442857143, + "90.0" : 9684418.71732817, + "95.0" : 9684418.71732817, + "99.0" : 9684418.71732817, + "99.9" : 9684418.71732817, + "99.99" : 9684418.71732817, + "99.999" : 9684418.71732817, + "99.9999" : 9684418.71732817, + "100.0" : 9684418.71732817 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9399325.62781955, + 9531696.442857143, + 9439758.283018868 + ], + [ + 9542497.550572518, + 9446944.228517469, + 9435623.42264151 + ], + [ + 9665474.026086956, + 9645265.800385728, + 9684418.71732817 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-03-24T00:24:07Z-c46c07a77f81d0493fc0e7c93d9de49e97118281-jdk17.json b/performance-results/2025-03-24T00:24:07Z-c46c07a77f81d0493fc0e7c93d9de49e97118281-jdk17.json new file mode 100644 index 0000000000..31b6567efb --- /dev/null +++ b/performance-results/2025-03-24T00:24:07Z-c46c07a77f81d0493fc0e7c93d9de49e97118281-jdk17.json @@ -0,0 +1,1310 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.418727796332958, + "scoreError" : 0.019260305937663362, + "scoreConfidence" : [ + 3.3994674903952946, + 3.437988102270621 + ], + "scorePercentiles" : { + "0.0" : 3.4152823316089855, + "50.0" : 3.418559195614442, + "90.0" : 3.4225104624939626, + "95.0" : 3.4225104624939626, + "99.0" : 3.4225104624939626, + "99.9" : 3.4225104624939626, + "99.99" : 3.4225104624939626, + "99.999" : 3.4225104624939626, + "99.9999" : 3.4225104624939626, + "100.0" : 3.4225104624939626 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4152823316089855, + 3.418103971728598 + ], + [ + 3.4190144195002863, + 3.4225104624939626 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7267000534572148, + "scoreError" : 0.009745745154939877, + "scoreConfidence" : [ + 1.716954308302275, + 1.7364457986121546 + ], + "scorePercentiles" : { + "0.0" : 1.725070583670842, + "50.0" : 1.7265046397066905, + "90.0" : 1.7287203507446358, + "95.0" : 1.7287203507446358, + "99.0" : 1.7287203507446358, + "99.9" : 1.7287203507446358, + "99.99" : 1.7287203507446358, + "99.999" : 1.7287203507446358, + "99.9999" : 1.7287203507446358, + "100.0" : 1.7287203507446358 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7287203507446358, + 1.7265772264402828 + ], + [ + 1.725070583670842, + 1.7264320529730983 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8679407914173365, + "scoreError" : 0.006622606573662276, + "scoreConfidence" : [ + 0.8613181848436742, + 0.8745633979909988 + ], + "scorePercentiles" : { + "0.0" : 0.8669313223112551, + "50.0" : 0.8677987709768098, + "90.0" : 0.8692343014044714, + "95.0" : 0.8692343014044714, + "99.0" : 0.8692343014044714, + "99.9" : 0.8692343014044714, + "99.99" : 0.8692343014044714, + "99.999" : 0.8692343014044714, + "99.9999" : 0.8692343014044714, + "100.0" : 0.8692343014044714 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8669313223112551, + 0.8692343014044714 + ], + [ + 0.8673413586729263, + 0.8682561832806932 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.235936579563116, + "scoreError" : 0.10012301905339593, + "scoreConfidence" : [ + 16.13581356050972, + 16.33605959861651 + ], + "scorePercentiles" : { + "0.0" : 16.137368925786877, + "50.0" : 16.23306955047474, + "90.0" : 16.320767303396018, + "95.0" : 16.320767303396018, + "99.0" : 16.320767303396018, + "99.9" : 16.320767303396018, + "99.99" : 16.320767303396018, + "99.999" : 16.320767303396018, + "99.9999" : 16.320767303396018, + "100.0" : 16.320767303396018 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.137368925786877, + 16.156522429329012, + 16.224274005597668 + ], + [ + 16.23306955047474, + 16.270260500138413, + 16.229219191891904 + ], + [ + 16.29340742332964, + 16.258539886123778, + 16.320767303396018 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2693.999980775219, + "scoreError" : 143.563391004748, + "scoreConfidence" : [ + 2550.4365897704706, + 2837.563371779967 + ], + "scorePercentiles" : { + "0.0" : 2587.0134717566575, + "50.0" : 2705.156115027511, + "90.0" : 2786.233952324298, + "95.0" : 2786.233952324298, + "99.0" : 2786.233952324298, + "99.9" : 2786.233952324298, + "99.99" : 2786.233952324298, + "99.999" : 2786.233952324298, + "99.9999" : 2786.233952324298, + "100.0" : 2786.233952324298 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2785.8671292365375, + 2786.233952324298, + 2785.9989424675027 + ], + [ + 2705.156115027511, + 2701.0886255987457, + 2711.748006185997 + ], + [ + 2589.3528046902547, + 2593.5407796894633, + 2587.0134717566575 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 70073.68564851678, + "scoreError" : 1632.0955447784556, + "scoreConfidence" : [ + 68441.59010373833, + 71705.78119329523 + ], + "scorePercentiles" : { + "0.0" : 68765.72725889308, + "50.0" : 70559.97147775891, + "90.0" : 70873.8723885834, + "95.0" : 70873.8723885834, + "99.0" : 70873.8723885834, + "99.9" : 70873.8723885834, + "99.99" : 70873.8723885834, + "99.999" : 70873.8723885834, + "99.9999" : 70873.8723885834, + "100.0" : 70873.8723885834 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 70652.15947951954, + 70559.97147775891, + 70557.58478472116 + ], + [ + 70873.8723885834, + 70794.07496145777, + 70861.8622002032 + ], + [ + 68800.60238606091, + 68765.72725889308, + 68797.31589945283 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 346.4769662363869, + "scoreError" : 5.749983693062291, + "scoreConfidence" : [ + 340.7269825433246, + 352.2269499294492 + ], + "scorePercentiles" : { + "0.0" : 342.6456839432396, + "50.0" : 345.21547181686816, + "90.0" : 350.95338261651966, + "95.0" : 350.95338261651966, + "99.0" : 350.95338261651966, + "99.9" : 350.95338261651966, + "99.99" : 350.95338261651966, + "99.999" : 350.95338261651966, + "99.9999" : 350.95338261651966, + "100.0" : 350.95338261651966 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 350.81948717326736, + 350.8788328484417, + 350.95338261651966 + ], + [ + 343.53993221462224, + 342.6456839432396, + 345.7400937176836 + ], + [ + 345.21547181686816, + 344.3811516063152, + 344.1186601905246 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 108.48660478045684, + "scoreError" : 3.6159200713995125, + "scoreConfidence" : [ + 104.87068470905733, + 112.10252485185636 + ], + "scorePercentiles" : { + "0.0" : 106.35313512940456, + "50.0" : 107.62571485891694, + "90.0" : 111.58741620896292, + "95.0" : 111.58741620896292, + "99.0" : 111.58741620896292, + "99.9" : 111.58741620896292, + "99.99" : 111.58741620896292, + "99.999" : 111.58741620896292, + "99.9999" : 111.58741620896292, + "100.0" : 111.58741620896292 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 106.993872610707, + 107.63913033013222, + 107.62571485891694 + ], + [ + 106.35313512940456, + 107.01793018601509, + 106.84737908686986 + ], + [ + 110.96237137270401, + 111.35249324039887, + 111.58741620896292 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.0622361102645904, + "scoreError" : 0.0014092667087201524, + "scoreConfidence" : [ + 0.06082684355587025, + 0.06364537697331056 + ], + "scorePercentiles" : { + "0.0" : 0.06113559449297867, + "50.0" : 0.06233768628404366, + "90.0" : 0.06329307029247391, + "95.0" : 0.06329307029247391, + "99.0" : 0.06329307029247391, + "99.9" : 0.06329307029247391, + "99.99" : 0.06329307029247391, + "99.999" : 0.06329307029247391, + "99.9999" : 0.06329307029247391, + "100.0" : 0.06329307029247391 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06113559449297867, + 0.06127452007328341, + 0.061268865124343666 + ], + [ + 0.06329307029247391, + 0.06295227893083542, + 0.06318084146249005 + ], + [ + 0.06233768628404366, + 0.062332511154188974, + 0.06234962456667581 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.665468543083284E-4, + "scoreError" : 1.005729578916367E-5, + "scoreConfidence" : [ + 3.564895585191647E-4, + 3.7660415009749205E-4 + ], + "scorePercentiles" : { + "0.0" : 3.5904002448909427E-4, + "50.0" : 3.674106865832467E-4, + "90.0" : 3.7315715283631613E-4, + "95.0" : 3.7315715283631613E-4, + "99.0" : 3.7315715283631613E-4, + "99.9" : 3.7315715283631613E-4, + "99.99" : 3.7315715283631613E-4, + "99.999" : 3.7315715283631613E-4, + "99.9999" : 3.7315715283631613E-4, + "100.0" : 3.7315715283631613E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.5904002448909427E-4, + 3.593027288419463E-4, + 3.59669568734919E-4 + ], + [ + 3.6629329073931805E-4, + 3.68010703875466E-4, + 3.674106865832467E-4 + ], + [ + 3.7315715283631613E-4, + 3.7295545675339195E-4, + 3.7308207592125686E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014168876622290247, + "scoreError" : 2.180404606342525E-4, + "scoreConfidence" : [ + 0.013950836161655995, + 0.0143869170829245 + ], + "scorePercentiles" : { + "0.0" : 0.014005904332395416, + "50.0" : 0.014214103812740216, + "90.0" : 0.014365163314117767, + "95.0" : 0.014365163314117767, + "99.0" : 0.014365163314117767, + "99.9" : 0.014365163314117767, + "99.99" : 0.014365163314117767, + "99.999" : 0.014365163314117767, + "99.9999" : 0.014365163314117767, + "100.0" : 0.014365163314117767 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014248717006779458, + 0.014241400673894561, + 0.014247215099016953 + ], + [ + 0.014015916791290052, + 0.01400655825116253, + 0.014005904332395416 + ], + [ + 0.014365163314117767, + 0.014214103812740216, + 0.014174910319215287 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9883874619998374, + "scoreError" : 0.012262246983570126, + "scoreConfidence" : [ + 0.9761252150162673, + 1.0006497089834074 + ], + "scorePercentiles" : { + "0.0" : 0.9782718871172845, + "50.0" : 0.9889908523536393, + "90.0" : 1.0001254258425842, + "95.0" : 1.0001254258425842, + "99.0" : 1.0001254258425842, + "99.9" : 1.0001254258425842, + "99.99" : 1.0001254258425842, + "99.999" : 1.0001254258425842, + "99.9999" : 1.0001254258425842, + "100.0" : 1.0001254258425842 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9902935940192098, + 0.9942343288597276, + 1.0001254258425842 + ], + [ + 0.9818900094256259, + 0.9782718871172845, + 0.9801009946099569 + ], + [ + 0.9872359937808489, + 0.9889908523536393, + 0.9943440719896589 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.013229909001656678, + "scoreError" : 9.406588269167901E-4, + "scoreConfidence" : [ + 0.012289250174739887, + 0.014170567828573469 + ], + "scorePercentiles" : { + "0.0" : 0.012873240898839377, + "50.0" : 0.013235218525888437, + "90.0" : 0.013595976207632591, + "95.0" : 0.013595976207632591, + "99.0" : 0.013595976207632591, + "99.9" : 0.013595976207632591, + "99.99" : 0.013595976207632591, + "99.999" : 0.013595976207632591, + "99.9999" : 0.013595976207632591, + "100.0" : 0.013595976207632591 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.012873240898839377, + 0.012927177535904031, + 0.012980483442625505 + ], + [ + 0.013489953609151367, + 0.013512622315787199, + 0.013595976207632591 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.8953529355881122, + "scoreError" : 0.16813129815441916, + "scoreConfidence" : [ + 3.727221637433693, + 4.063484233742531 + ], + "scorePercentiles" : { + "0.0" : 3.8246030955657493, + "50.0" : 3.8941909112009157, + "90.0" : 3.9681537279936556, + "95.0" : 3.9681537279936556, + "99.0" : 3.9681537279936556, + "99.9" : 3.9681537279936556, + "99.99" : 3.9681537279936556, + "99.999" : 3.9681537279936556, + "99.9999" : 3.9681537279936556, + "100.0" : 3.9681537279936556 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.8246030955657493, + 3.8482302953846155, + 3.8541955454545453 + ], + [ + 3.9681537279936556, + 3.9341862769472855, + 3.9427486721828213 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.860606839688258, + "scoreError" : 0.04294079178434248, + "scoreConfidence" : [ + 2.8176660479039155, + 2.9035476314726 + ], + "scorePercentiles" : { + "0.0" : 2.832584204474653, + "50.0" : 2.848960992309883, + "90.0" : 2.8993197460869564, + "95.0" : 2.8993197460869564, + "99.0" : 2.8993197460869564, + "99.9" : 2.8993197460869564, + "99.99" : 2.8993197460869564, + "99.999" : 2.8993197460869564, + "99.9999" : 2.8993197460869564, + "100.0" : 2.8993197460869564 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.841267359375, + 2.853678905278174, + 2.846926069740962 + ], + [ + 2.841372784375, + 2.832584204474653, + 2.848960992309883 + ], + [ + 2.8877761952064684, + 2.8935753003472224, + 2.8993197460869564 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17612873481401406, + "scoreError" : 0.002273465359969216, + "scoreConfidence" : [ + 0.17385526945404484, + 0.17840220017398328 + ], + "scorePercentiles" : { + "0.0" : 0.17405524113203608, + "50.0" : 0.17676613815777845, + "90.0" : 0.17724810159697973, + "95.0" : 0.17724810159697973, + "99.0" : 0.17724810159697973, + "99.9" : 0.17724810159697973, + "99.99" : 0.17724810159697973, + "99.999" : 0.17724810159697973, + "99.9999" : 0.17724810159697973, + "100.0" : 0.17724810159697973 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17460966817991339, + 0.17438350551041049, + 0.17405524113203608 + ], + [ + 0.17709970664281793, + 0.17698738675822523, + 0.1767625913493831 + ], + [ + 0.17724810159697973, + 0.17724627399858206, + 0.17676613815777845 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3286495142725523, + "scoreError" : 0.00669510717019289, + "scoreConfidence" : [ + 0.3219544071023594, + 0.3353446214427452 + ], + "scorePercentiles" : { + "0.0" : 0.3232384157993406, + "50.0" : 0.3294961234596376, + "90.0" : 0.3335745540545048, + "95.0" : 0.3335745540545048, + "99.0" : 0.3335745540545048, + "99.9" : 0.3335745540545048, + "99.99" : 0.3335745540545048, + "99.999" : 0.3335745540545048, + "99.9999" : 0.3335745540545048, + "100.0" : 0.3335745540545048 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3335745540545048, + 0.33236815833554906, + 0.33235919395792485 + ], + [ + 0.3243569388278032, + 0.3236054946445329, + 0.3232384157993406 + ], + [ + 0.32962189515145524, + 0.3294961234596376, + 0.3292248542222222 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1617962695319054, + "scoreError" : 0.009564736250000632, + "scoreConfidence" : [ + 0.15223153328190478, + 0.17136100578190602 + ], + "scorePercentiles" : { + "0.0" : 0.15489851643432465, + "50.0" : 0.16205769522590263, + "90.0" : 0.16841606593351072, + "95.0" : 0.16841606593351072, + "99.0" : 0.16841606593351072, + "99.9" : 0.16841606593351072, + "99.99" : 0.16841606593351072, + "99.999" : 0.16841606593351072, + "99.9999" : 0.16841606593351072, + "100.0" : 0.16841606593351072 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16201351245038478, + 0.16205769522590263, + 0.16216430718212335 + ], + [ + 0.1681184438747205, + 0.16812965105331293, + 0.16841606593351072 + ], + [ + 0.1551939337802815, + 0.1551742998525875, + 0.15489851643432465 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3925601761045857, + "scoreError" : 0.002854200782560512, + "scoreConfidence" : [ + 0.3897059753220252, + 0.3954143768871462 + ], + "scorePercentiles" : { + "0.0" : 0.3902284047684083, + "50.0" : 0.3928132682457381, + "90.0" : 0.39562102373605507, + "95.0" : 0.39562102373605507, + "99.0" : 0.39562102373605507, + "99.9" : 0.39562102373605507, + "99.99" : 0.39562102373605507, + "99.999" : 0.39562102373605507, + "99.9999" : 0.39562102373605507, + "100.0" : 0.39562102373605507 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3928132682457381, + 0.3921554295517823, + 0.3917012223179664 + ], + [ + 0.39295643506621086, + 0.3903483630118272, + 0.3902284047684083 + ], + [ + 0.39562102373605507, + 0.39343656243606895, + 0.3937808758072137 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1590055963300603, + "scoreError" : 0.0038154826825017377, + "scoreConfidence" : [ + 0.15519011364755858, + 0.16282107901256204 + ], + "scorePercentiles" : { + "0.0" : 0.15701236564035734, + "50.0" : 0.15821260119923425, + "90.0" : 0.16385100081922893, + "95.0" : 0.16385100081922893, + "99.0" : 0.16385100081922893, + "99.9" : 0.16385100081922893, + "99.99" : 0.16385100081922893, + "99.999" : 0.16385100081922893, + "99.9999" : 0.16385100081922893, + "100.0" : 0.16385100081922893 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16385100081922893, + 0.16060318779108984, + 0.16053085958744684 + ], + [ + 0.1570874410706712, + 0.15701236564035734, + 0.1571129542340927 + ], + [ + 0.15852308593304165, + 0.15811687069537994, + 0.15821260119923425 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04709400613370748, + "scoreError" : 8.959832103309933E-4, + "scoreConfidence" : [ + 0.04619802292337649, + 0.047989989344038475 + ], + "scorePercentiles" : { + "0.0" : 0.046410384114873394, + "50.0" : 0.04702598648019525, + "90.0" : 0.0478789975917228, + "95.0" : 0.0478789975917228, + "99.0" : 0.0478789975917228, + "99.9" : 0.0478789975917228, + "99.99" : 0.0478789975917228, + "99.999" : 0.0478789975917228, + "99.9999" : 0.0478789975917228, + "100.0" : 0.0478789975917228 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04702598648019525, + 0.046662754487720885, + 0.046708876802354096 + ], + [ + 0.047046067618236646, + 0.04673500164037855, + 0.046410384114873394 + ], + [ + 0.0477683986367067, + 0.04760958783117903, + 0.0478789975917228 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9327352.777649432, + "scoreError" : 192657.07108017706, + "scoreConfidence" : [ + 9134695.706569256, + 9520009.848729609 + ], + "scorePercentiles" : { + "0.0" : 9175624.649541285, + "50.0" : 9338098.31372549, + "90.0" : 9463799.421948912, + "95.0" : 9463799.421948912, + "99.0" : 9463799.421948912, + "99.9" : 9463799.421948912, + "99.99" : 9463799.421948912, + "99.999" : 9463799.421948912, + "99.9999" : 9463799.421948912, + "100.0" : 9463799.421948912 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9368004.88857678, + 9338098.31372549, + 9322472.486486487 + ], + [ + 9198349.157169119, + 9175624.649541285, + 9193192.830882354 + ], + [ + 9433707.31856739, + 9463799.421948912, + 9452925.93194707 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-03-24T00:24:36Z-c46c07a77f81d0493fc0e7c93d9de49e97118281-jdk17.json b/performance-results/2025-03-24T00:24:36Z-c46c07a77f81d0493fc0e7c93d9de49e97118281-jdk17.json new file mode 100644 index 0000000000..fbe88ad5af --- /dev/null +++ b/performance-results/2025-03-24T00:24:36Z-c46c07a77f81d0493fc0e7c93d9de49e97118281-jdk17.json @@ -0,0 +1,1310 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.420038635731748, + "scoreError" : 0.03572612124681014, + "scoreConfidence" : [ + 3.3843125144849378, + 3.4557647569785583 + ], + "scorePercentiles" : { + "0.0" : 3.412757503952283, + "50.0" : 3.4206086449711632, + "90.0" : 3.4261797490323804, + "95.0" : 3.4261797490323804, + "99.0" : 3.4261797490323804, + "99.9" : 3.4261797490323804, + "99.99" : 3.4261797490323804, + "99.999" : 3.4261797490323804, + "99.9999" : 3.4261797490323804, + "100.0" : 3.4261797490323804 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.420208542034723, + 3.4261797490323804 + ], + [ + 3.412757503952283, + 3.421008747907604 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7269594749383836, + "scoreError" : 0.009130618232612993, + "scoreConfidence" : [ + 1.7178288567057707, + 1.7360900931709966 + ], + "scorePercentiles" : { + "0.0" : 1.7252408089036402, + "50.0" : 1.7270218836065996, + "90.0" : 1.7285533236366952, + "95.0" : 1.7285533236366952, + "99.0" : 1.7285533236366952, + "99.9" : 1.7285533236366952, + "99.99" : 1.7285533236366952, + "99.999" : 1.7285533236366952, + "99.9999" : 1.7285533236366952, + "100.0" : 1.7285533236366952 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7265281609307856, + 1.7275156062824133 + ], + [ + 1.7252408089036402, + 1.7285533236366952 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8683627355847058, + "scoreError" : 0.004424765135251617, + "scoreConfidence" : [ + 0.8639379704494542, + 0.8727875007199574 + ], + "scorePercentiles" : { + "0.0" : 0.8676182677477435, + "50.0" : 0.8683318351838458, + "90.0" : 0.8691690042233875, + "95.0" : 0.8691690042233875, + "99.0" : 0.8691690042233875, + "99.9" : 0.8691690042233875, + "99.99" : 0.8691690042233875, + "99.999" : 0.8691690042233875, + "99.9999" : 0.8691690042233875, + "100.0" : 0.8691690042233875 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8680153036900241, + 0.8691690042233875 + ], + [ + 0.8676182677477435, + 0.8686483666776675 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.055543045735995, + "scoreError" : 0.2069643928273129, + "scoreConfidence" : [ + 15.848578652908682, + 16.262507438563308 + ], + "scorePercentiles" : { + "0.0" : 15.853454930952296, + "50.0" : 16.095843976286545, + "90.0" : 16.17934655862583, + "95.0" : 16.17934655862583, + "99.0" : 16.17934655862583, + "99.9" : 16.17934655862583, + "99.99" : 16.17934655862583, + "99.999" : 16.17934655862583, + "99.9999" : 16.17934655862583, + "100.0" : 16.17934655862583 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 15.853454930952296, + 15.919691762471901, + 15.92626644855112 + ], + [ + 16.101053864799674, + 16.16745467342604, + 16.088498782754574 + ], + [ + 16.17934655862583, + 16.095843976286545, + 16.168276413755958 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2633.4585624258307, + "scoreError" : 107.03761392892255, + "scoreConfidence" : [ + 2526.4209484969083, + 2740.496176354753 + ], + "scorePercentiles" : { + "0.0" : 2549.5553016703866, + "50.0" : 2651.5276426160167, + "90.0" : 2695.661966615178, + "95.0" : 2695.661966615178, + "99.0" : 2695.661966615178, + "99.9" : 2695.661966615178, + "99.99" : 2695.661966615178, + "99.999" : 2695.661966615178, + "99.9999" : 2695.661966615178, + "100.0" : 2695.661966615178 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2552.6745350860156, + 2552.7855568633254, + 2549.5553016703866 + ], + [ + 2665.1315269714228, + 2651.5276426160167, + 2649.0604733029927 + ], + [ + 2691.478381856197, + 2693.251676850942, + 2695.661966615178 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 69931.37941176901, + "scoreError" : 1465.4758812930647, + "scoreConfidence" : [ + 68465.90353047595, + 71396.85529306208 + ], + "scorePercentiles" : { + "0.0" : 68845.18560964587, + "50.0" : 70023.56910032906, + "90.0" : 70921.12070454148, + "95.0" : 70921.12070454148, + "99.0" : 70921.12070454148, + "99.9" : 70921.12070454148, + "99.99" : 70921.12070454148, + "99.999" : 70921.12070454148, + "99.9999" : 70921.12070454148, + "100.0" : 70921.12070454148 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 68875.69735017336, + 68845.18560964587, + 68901.2495725469 + ], + [ + 70094.01325465711, + 70012.04067921391, + 70023.56910032906 + ], + [ + 70889.52196622957, + 70921.12070454148, + 70820.0164685838 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 349.19467879376697, + "scoreError" : 7.823959503486677, + "scoreConfidence" : [ + 341.3707192902803, + 357.01863829725363 + ], + "scorePercentiles" : { + "0.0" : 342.85429652799536, + "50.0" : 351.3516869295316, + "90.0" : 353.85345733628844, + "95.0" : 353.85345733628844, + "99.0" : 353.85345733628844, + "99.9" : 353.85345733628844, + "99.99" : 353.85345733628844, + "99.999" : 353.85345733628844, + "99.9999" : 353.85345733628844, + "100.0" : 353.85345733628844 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 351.3459819255283, + 351.6033818518908, + 351.3516869295316 + ], + [ + 342.85429652799536, + 343.0360144184278, + 343.3701754846237 + ], + [ + 352.1977931513615, + 353.85345733628844, + 353.13932151825475 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 107.23185794008825, + "scoreError" : 2.631478358621384, + "scoreConfidence" : [ + 104.60037958146687, + 109.86333629870963 + ], + "scorePercentiles" : { + "0.0" : 105.6072203712119, + "50.0" : 107.10883582462246, + "90.0" : 109.34753566473427, + "95.0" : 109.34753566473427, + "99.0" : 109.34753566473427, + "99.9" : 109.34753566473427, + "99.99" : 109.34753566473427, + "99.999" : 109.34753566473427, + "99.9999" : 109.34753566473427, + "100.0" : 109.34753566473427 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 105.90448525309176, + 107.10883582462246, + 107.37865546414842 + ], + [ + 108.80366786552064, + 109.29181493925394, + 109.34753566473427 + ], + [ + 105.6072203712119, + 105.91024847813217, + 105.73425760007858 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06181778714684108, + "scoreError" : 8.67739054633523E-4, + "scoreConfidence" : [ + 0.060950048092207554, + 0.0626855262014746 + ], + "scorePercentiles" : { + "0.0" : 0.061366941830923685, + "50.0" : 0.06172266934334052, + "90.0" : 0.06312104011285884, + "95.0" : 0.06312104011285884, + "99.0" : 0.06312104011285884, + "99.9" : 0.06312104011285884, + "99.99" : 0.06312104011285884, + "99.999" : 0.06312104011285884, + "99.9999" : 0.06312104011285884, + "100.0" : 0.06312104011285884 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06195911648151475, + 0.06172355798537173, + 0.06173098702437097 + ], + [ + 0.06153243771151503, + 0.06167637224233528, + 0.06172266934334052 + ], + [ + 0.06312104011285884, + 0.06152696158933878, + 0.061366941830923685 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.6857029118731886E-4, + "scoreError" : 1.5216564218543925E-5, + "scoreConfidence" : [ + 3.5335372696877494E-4, + 3.837868554058628E-4 + ], + "scorePercentiles" : { + "0.0" : 3.5672240780497004E-4, + "50.0" : 3.6874689627437875E-4, + "90.0" : 3.791402232827823E-4, + "95.0" : 3.791402232827823E-4, + "99.0" : 3.791402232827823E-4, + "99.9" : 3.791402232827823E-4, + "99.99" : 3.791402232827823E-4, + "99.999" : 3.791402232827823E-4, + "99.9999" : 3.791402232827823E-4, + "100.0" : 3.791402232827823E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.686687545112998E-4, + 3.6874689627437875E-4, + 3.6928144258397934E-4 + ], + [ + 3.5672240780497004E-4, + 3.591926452381613E-4, + 3.580368797876607E-4 + ], + [ + 3.782523123139139E-4, + 3.790910588887234E-4, + 3.791402232827823E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014149934787332199, + "scoreError" : 1.5484970065954965E-4, + "scoreConfidence" : [ + 0.013995085086672649, + 0.014304784487991749 + ], + "scorePercentiles" : { + "0.0" : 0.014058790354938164, + "50.0" : 0.014136459809273935, + "90.0" : 0.014363401301596329, + "95.0" : 0.014363401301596329, + "99.0" : 0.014363401301596329, + "99.9" : 0.014363401301596329, + "99.99" : 0.014363401301596329, + "99.999" : 0.014363401301596329, + "99.9999" : 0.014363401301596329, + "100.0" : 0.014363401301596329 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014151441471108086, + 0.014164649357216513, + 0.014363401301596329 + ], + [ + 0.014128270719925855, + 0.014136459809273935, + 0.014193550559501302 + ], + [ + 0.014060995313528198, + 0.014091854198901412, + 0.014058790354938164 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9848796345153955, + "scoreError" : 0.026365331267761083, + "scoreConfidence" : [ + 0.9585143032476344, + 1.0112449657831566 + ], + "scorePercentiles" : { + "0.0" : 0.9705371368400622, + "50.0" : 0.977281722759699, + "90.0" : 1.0084672936371886, + "95.0" : 1.0084672936371886, + "99.0" : 1.0084672936371886, + "99.9" : 1.0084672936371886, + "99.99" : 1.0084672936371886, + "99.999" : 1.0084672936371886, + "99.9999" : 1.0084672936371886, + "100.0" : 1.0084672936371886 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9727504306001362, + 0.972441956437184, + 0.9705371368400622 + ], + [ + 0.9843706345112708, + 0.971754894859586, + 0.977281722759699 + ], + [ + 1.0012740556668, + 1.0050385853266333, + 1.0084672936371886 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.01303848291506131, + "scoreError" : 7.648798660533651E-4, + "scoreConfidence" : [ + 0.012273603049007945, + 0.013803362781114676 + ], + "scorePercentiles" : { + "0.0" : 0.012721311135196195, + "50.0" : 0.01305365903752266, + "90.0" : 0.013294264663889117, + "95.0" : 0.013294264663889117, + "99.0" : 0.013294264663889117, + "99.9" : 0.013294264663889117, + "99.99" : 0.013294264663889117, + "99.999" : 0.013294264663889117, + "99.9999" : 0.013294264663889117, + "100.0" : 0.013294264663889117 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.012721311135196195, + 0.012828935289786096, + 0.012825929841347202 + ], + [ + 0.013278382785259227, + 0.013294264663889117, + 0.013282073774890027 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.6859162919508712, + "scoreError" : 0.08130077546456034, + "scoreConfidence" : [ + 3.604615516486311, + 3.7672170674154315 + ], + "scorePercentiles" : { + "0.0" : 3.6448528950437318, + "50.0" : 3.680905968346083, + "90.0" : 3.722713207589286, + "95.0" : 3.722713207589286, + "99.0" : 3.722713207589286, + "99.9" : 3.722713207589286, + "99.99" : 3.722713207589286, + "99.999" : 3.722713207589286, + "99.9999" : 3.722713207589286, + "100.0" : 3.722713207589286 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.6448528950437318, + 3.6821769646539027, + 3.6796349720382633 + ], + [ + 3.670619360968452, + 3.71550035141159, + 3.722713207589286 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.9123843056312286, + "scoreError" : 0.040828029372389635, + "scoreConfidence" : [ + 2.871556276258839, + 2.9532123350036183 + ], + "scorePercentiles" : { + "0.0" : 2.883016596137215, + "50.0" : 2.9039433644018584, + "90.0" : 2.9513215104750663, + "95.0" : 2.9513215104750663, + "99.0" : 2.9513215104750663, + "99.9" : 2.9513215104750663, + "99.99" : 2.9513215104750663, + "99.999" : 2.9513215104750663, + "99.9999" : 2.9513215104750663, + "100.0" : 2.9513215104750663 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.9101809997090484, + 2.9016431763852624, + 2.883016596137215 + ], + [ + 2.949388729283397, + 2.9513215104750663, + 2.923200353405437 + ], + [ + 2.891391844174617, + 2.9039433644018584, + 2.8973721767091543 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17631540626328382, + "scoreError" : 0.005322650101665493, + "scoreConfidence" : [ + 0.17099275616161833, + 0.1816380563649493 + ], + "scorePercentiles" : { + "0.0" : 0.17230167962921483, + "50.0" : 0.17607343552362842, + "90.0" : 0.18029872303254305, + "95.0" : 0.18029872303254305, + "99.0" : 0.18029872303254305, + "99.9" : 0.18029872303254305, + "99.99" : 0.18029872303254305, + "99.999" : 0.18029872303254305, + "99.9999" : 0.18029872303254305, + "100.0" : 0.18029872303254305 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17323904012126462, + 0.17264319178578827, + 0.17230167962921483 + ], + [ + 0.18029872303254305, + 0.1797842819646196, + 0.17992781205131433 + ], + [ + 0.17659479259376987, + 0.17607343552362842, + 0.1759756996674116 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3374518829803303, + "scoreError" : 0.009005641323680674, + "scoreConfidence" : [ + 0.3284462416566496, + 0.346457524304011 + ], + "scorePercentiles" : { + "0.0" : 0.33093121890201527, + "50.0" : 0.3372985680652995, + "90.0" : 0.34342195291895605, + "95.0" : 0.34342195291895605, + "99.0" : 0.34342195291895605, + "99.9" : 0.34342195291895605, + "99.99" : 0.34342195291895605, + "99.999" : 0.34342195291895605, + "99.9999" : 0.34342195291895605, + "100.0" : 0.34342195291895605 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3393818560374669, + 0.3372985680652995, + 0.33715946481912273 + ], + [ + 0.3309354022767887, + 0.331359524055666, + 0.33093121890201527 + ], + [ + 0.34341128602335164, + 0.34316767372430595, + 0.34342195291895605 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16313051381345262, + "scoreError" : 0.010396355099357468, + "scoreConfidence" : [ + 0.15273415871409515, + 0.17352686891281008 + ], + "scorePercentiles" : { + "0.0" : 0.15699070771911647, + "50.0" : 0.1611923607730621, + "90.0" : 0.1712437169081133, + "95.0" : 0.1712437169081133, + "99.0" : 0.1712437169081133, + "99.9" : 0.1712437169081133, + "99.99" : 0.1712437169081133, + "99.999" : 0.1712437169081133, + "99.9999" : 0.1712437169081133, + "100.0" : 0.1712437169081133 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15752309528385106, + 0.15699070771911647, + 0.15700094895988695 + ], + [ + 0.1712437169081133, + 0.17107739566154584, + 0.17081330198992228 + ], + [ + 0.16126023378968926, + 0.1610728632358863, + 0.1611923607730621 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.38568584578686127, + "scoreError" : 0.008013563016641172, + "scoreConfidence" : [ + 0.3776722827702201, + 0.39369940880350246 + ], + "scorePercentiles" : { + "0.0" : 0.38021937287555607, + "50.0" : 0.3842808693463475, + "90.0" : 0.39188927098518694, + "95.0" : 0.39188927098518694, + "99.0" : 0.39188927098518694, + "99.9" : 0.39188927098518694, + "99.99" : 0.39188927098518694, + "99.999" : 0.39188927098518694, + "99.9999" : 0.39188927098518694, + "100.0" : 0.39188927098518694 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3802239573020037, + 0.38021937287555607, + 0.38083733512319584 + ], + [ + 0.3888499179951785, + 0.39188927098518694, + 0.38913277193665124 + ], + [ + 0.3915314130060293, + 0.3842808693463475, + 0.3842077035116029 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15686664020284957, + "scoreError" : 0.004103900306174808, + "scoreConfidence" : [ + 0.15276273989667477, + 0.16097054050902437 + ], + "scorePercentiles" : { + "0.0" : 0.15334087613469088, + "50.0" : 0.15778918079113874, + "90.0" : 0.15933047987699955, + "95.0" : 0.15933047987699955, + "99.0" : 0.15933047987699955, + "99.9" : 0.15933047987699955, + "99.99" : 0.15933047987699955, + "99.999" : 0.15933047987699955, + "99.9999" : 0.15933047987699955, + "100.0" : 0.15933047987699955 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15933047987699955, + 0.1585143294973608, + 0.15778918079113874 + ], + [ + 0.15860314175601092, + 0.15883556409726965, + 0.15759307658850227 + ], + [ + 0.15443659665189258, + 0.15334087613469088, + 0.1533565164317809 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04798045376241683, + "scoreError" : 0.0016470127208893697, + "scoreConfidence" : [ + 0.04633344104152746, + 0.0496274664833062 + ], + "scorePercentiles" : { + "0.0" : 0.04644588398890886, + "50.0" : 0.048023235478015326, + "90.0" : 0.04916658521188045, + "95.0" : 0.04916658521188045, + "99.0" : 0.04916658521188045, + "99.9" : 0.04916658521188045, + "99.99" : 0.04916658521188045, + "99.999" : 0.04916658521188045, + "99.9999" : 0.04916658521188045, + "100.0" : 0.04916658521188045 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04727092483538093, + 0.04644588398890886, + 0.046728657712005385 + ], + [ + 0.04916658521188045, + 0.048825053589563315, + 0.04881958612861809 + ], + [ + 0.04790924984789035, + 0.048023235478015326, + 0.04863490706948875 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9397966.469331594, + "scoreError" : 400921.4801179857, + "scoreConfidence" : [ + 8997044.989213608, + 9798887.94944958 + ], + "scorePercentiles" : { + "0.0" : 9164177.787545787, + "50.0" : 9301691.79739777, + "90.0" : 9721944.350826045, + "95.0" : 9721944.350826045, + "99.0" : 9721944.350826045, + "99.9" : 9721944.350826045, + "99.99" : 9721944.350826045, + "99.999" : 9721944.350826045, + "99.9999" : 9721944.350826045, + "100.0" : 9721944.350826045 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9301769.69888476, + 9301691.79739777, + 9293745.372330548 + ], + [ + 9216755.062615102, + 9177969.882568806, + 9164177.787545787 + ], + [ + 9686416.676669894, + 9721944.350826045, + 9717227.595145632 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-03-24T00:25:13Z-c46c07a77f81d0493fc0e7c93d9de49e97118281-jdk17.json b/performance-results/2025-03-24T00:25:13Z-c46c07a77f81d0493fc0e7c93d9de49e97118281-jdk17.json new file mode 100644 index 0000000000..9ec78ec79a --- /dev/null +++ b/performance-results/2025-03-24T00:25:13Z-c46c07a77f81d0493fc0e7c93d9de49e97118281-jdk17.json @@ -0,0 +1,1310 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.427192512014576, + "scoreError" : 0.012873173657204301, + "scoreConfidence" : [ + 3.414319338357372, + 3.44006568567178 + ], + "scorePercentiles" : { + "0.0" : 3.4251916231698507, + "50.0" : 3.427044764180539, + "90.0" : 3.4294888965273755, + "95.0" : 3.4294888965273755, + "99.0" : 3.4294888965273755, + "99.9" : 3.4294888965273755, + "99.99" : 3.4294888965273755, + "99.999" : 3.4294888965273755, + "99.9999" : 3.4294888965273755, + "100.0" : 3.4294888965273755 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4251916231698507, + 3.4294888965273755 + ], + [ + 3.4259078290300446, + 3.4281816993310326 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.729194618855824, + "scoreError" : 0.008041480454113865, + "scoreConfidence" : [ + 1.7211531384017102, + 1.7372360993099378 + ], + "scorePercentiles" : { + "0.0" : 1.728180199312595, + "50.0" : 1.7288913442207987, + "90.0" : 1.730815587669104, + "95.0" : 1.730815587669104, + "99.0" : 1.730815587669104, + "99.9" : 1.730815587669104, + "99.99" : 1.730815587669104, + "99.999" : 1.730815587669104, + "99.9999" : 1.730815587669104, + "100.0" : 1.730815587669104 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7282568108323697, + 1.7295258776092277 + ], + [ + 1.728180199312595, + 1.730815587669104 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8689448347025848, + "scoreError" : 0.005903307335313809, + "scoreConfidence" : [ + 0.8630415273672709, + 0.8748481420378986 + ], + "scorePercentiles" : { + "0.0" : 0.8676539255997362, + "50.0" : 0.8691740741199422, + "90.0" : 0.8697772649707182, + "95.0" : 0.8697772649707182, + "99.0" : 0.8697772649707182, + "99.9" : 0.8697772649707182, + "99.99" : 0.8697772649707182, + "99.999" : 0.8697772649707182, + "99.9999" : 0.8697772649707182, + "100.0" : 0.8697772649707182 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8676539255997362, + 0.8690340804702854 + ], + [ + 0.869314067769599, + 0.8697772649707182 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.167508035118427, + "scoreError" : 0.25972430198208885, + "scoreConfidence" : [ + 15.907783733136338, + 16.427232337100516 + ], + "scorePercentiles" : { + "0.0" : 15.92809758573588, + "50.0" : 16.183659072249025, + "90.0" : 16.343217981430513, + "95.0" : 16.343217981430513, + "99.0" : 16.343217981430513, + "99.9" : 16.343217981430513, + "99.99" : 16.343217981430513, + "99.999" : 16.343217981430513, + "99.9999" : 16.343217981430513, + "100.0" : 16.343217981430513 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.197843725815492, + 16.17705961536494, + 16.183659072249025 + ], + [ + 16.310391435762632, + 16.343217981430513, + 16.34076437108 + ], + [ + 15.92809758573588, + 15.970675179208435, + 16.05586334941892 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2687.1436345801776, + "scoreError" : 18.904649497499815, + "scoreConfidence" : [ + 2668.2389850826776, + 2706.0482840776776 + ], + "scorePercentiles" : { + "0.0" : 2670.3886255919297, + "50.0" : 2684.9111243097527, + "90.0" : 2703.5474294577257, + "95.0" : 2703.5474294577257, + "99.0" : 2703.5474294577257, + "99.9" : 2703.5474294577257, + "99.99" : 2703.5474294577257, + "99.999" : 2703.5474294577257, + "99.9999" : 2703.5474294577257, + "100.0" : 2703.5474294577257 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2703.5474294577257, + 2700.7496243988994, + 2697.685683724869 + ], + [ + 2687.329405036839, + 2684.9111243097527, + 2681.400528174645 + ], + [ + 2679.5193054018728, + 2670.3886255919297, + 2678.7609851250654 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 69734.09464764553, + "scoreError" : 1969.4613868559036, + "scoreConfidence" : [ + 67764.63326078962, + 71703.55603450144 + ], + "scorePercentiles" : { + "0.0" : 68737.04196237889, + "50.0" : 69100.07053657329, + "90.0" : 71311.58539349773, + "95.0" : 71311.58539349773, + "99.0" : 71311.58539349773, + "99.9" : 71311.58539349773, + "99.99" : 71311.58539349773, + "99.999" : 71311.58539349773, + "99.9999" : 71311.58539349773, + "100.0" : 71311.58539349773 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 71238.58894866482, + 71309.06321666678, + 71311.58539349773 + ], + [ + 68737.04196237889, + 68887.45002530912, + 68811.03706522842 + ], + [ + 69073.30047654698, + 69138.71420394372, + 69100.07053657329 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 351.50220235933625, + "scoreError" : 7.756306318471352, + "scoreConfidence" : [ + 343.7458960408649, + 359.2585086778076 + ], + "scorePercentiles" : { + "0.0" : 345.4808066065005, + "50.0" : 351.31352568630047, + "90.0" : 356.91040681496656, + "95.0" : 356.91040681496656, + "99.0" : 356.91040681496656, + "99.9" : 356.91040681496656, + "99.99" : 356.91040681496656, + "99.999" : 356.91040681496656, + "99.9999" : 356.91040681496656, + "100.0" : 356.91040681496656 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 356.91040681496656, + 356.88629417444713, + 356.5931456022146 + ], + [ + 345.4808066065005, + 346.0590898633618, + 347.0960040572533 + ], + [ + 352.2717640794763, + 351.31352568630047, + 350.90878434950565 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 106.89426072041461, + "scoreError" : 3.212501268374495, + "scoreConfidence" : [ + 103.68175945204011, + 110.1067619887891 + ], + "scorePercentiles" : { + "0.0" : 104.89864582142164, + "50.0" : 106.2840255003389, + "90.0" : 109.5152093057473, + "95.0" : 109.5152093057473, + "99.0" : 109.5152093057473, + "99.9" : 109.5152093057473, + "99.99" : 109.5152093057473, + "99.999" : 109.5152093057473, + "99.9999" : 109.5152093057473, + "100.0" : 109.5152093057473 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 104.89864582142164, + 105.31981365401647, + 105.27531851739955 + ], + [ + 109.19609289827845, + 109.5152093057473, + 109.37650741372804 + ], + [ + 105.80530145136055, + 106.2840255003389, + 106.37743192144043 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06176367037071446, + "scoreError" : 0.0012202223664750805, + "scoreConfidence" : [ + 0.06054344800423938, + 0.06298389273718955 + ], + "scorePercentiles" : { + "0.0" : 0.0613146869738496, + "50.0" : 0.0613733022891862, + "90.0" : 0.06359179673142348, + "95.0" : 0.06359179673142348, + "99.0" : 0.06359179673142348, + "99.9" : 0.06359179673142348, + "99.99" : 0.06359179673142348, + "99.999" : 0.06359179673142348, + "99.9999" : 0.06359179673142348, + "100.0" : 0.06359179673142348 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06137311087516877, + 0.0613733022891862, + 0.06134540644975278 + ], + [ + 0.06186620599352887, + 0.061843810723562154, + 0.061818986511297254 + ], + [ + 0.06359179673142348, + 0.06134572678866103, + 0.0613146869738496 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.6557456403008633E-4, + "scoreError" : 1.4201606647306137E-5, + "scoreConfidence" : [ + 3.513729573827802E-4, + 3.797761706773925E-4 + ], + "scorePercentiles" : { + "0.0" : 3.552793083481791E-4, + "50.0" : 3.657273559060746E-4, + "90.0" : 3.7604188406507215E-4, + "95.0" : 3.7604188406507215E-4, + "99.0" : 3.7604188406507215E-4, + "99.9" : 3.7604188406507215E-4, + "99.99" : 3.7604188406507215E-4, + "99.999" : 3.7604188406507215E-4, + "99.9999" : 3.7604188406507215E-4, + "100.0" : 3.7604188406507215E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.655510130763393E-4, + 3.665766364791667E-4, + 3.657273559060746E-4 + ], + [ + 3.747549098404646E-4, + 3.7456665019215994E-4, + 3.7604188406507215E-4 + ], + [ + 3.5582687465080437E-4, + 3.558464437125165E-4, + 3.552793083481791E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.01478077065447956, + "scoreError" : 4.596114266672553E-4, + "scoreConfidence" : [ + 0.014321159227812304, + 0.015240382081146815 + ], + "scorePercentiles" : { + "0.0" : 0.014584980540950492, + "50.0" : 0.014609507818172522, + "90.0" : 0.015151146695958486, + "95.0" : 0.015151146695958486, + "99.0" : 0.015151146695958486, + "99.9" : 0.015151146695958486, + "99.99" : 0.015151146695958486, + "99.999" : 0.015151146695958486, + "99.9999" : 0.015151146695958486, + "100.0" : 0.015151146695958486 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.015151146695958486, + 0.015140491343534866, + 0.015144086810876953 + ], + [ + 0.014609507818172522, + 0.014589845803357664, + 0.014596098798462171 + ], + [ + 0.014597137646444033, + 0.01461364043255882, + 0.014584980540950492 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9851262027850285, + "scoreError" : 0.022089658643544983, + "scoreConfidence" : [ + 0.9630365441414835, + 1.0072158614285736 + ], + "scorePercentiles" : { + "0.0" : 0.9747190762183235, + "50.0" : 0.9791730844022325, + "90.0" : 1.01408276617319, + "95.0" : 1.01408276617319, + "99.0" : 1.01408276617319, + "99.9" : 1.01408276617319, + "99.99" : 1.01408276617319, + "99.999" : 1.01408276617319, + "99.9999" : 1.01408276617319, + "100.0" : 1.01408276617319 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9758338460187354, + 0.9761059209370425, + 0.9747190762183235 + ], + [ + 0.9823366401768173, + 0.9763997227104081, + 0.9791730844022325 + ], + [ + 0.9938331164662626, + 1.01408276617319, + 0.9936516519622454 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.012908189953084093, + "scoreError" : 5.544120422241866E-4, + "scoreConfidence" : [ + 0.012353777910859906, + 0.01346260199530828 + ], + "scorePercentiles" : { + "0.0" : 0.012679037873927696, + "50.0" : 0.012885974801918061, + "90.0" : 0.013127490649506812, + "95.0" : 0.013127490649506812, + "99.0" : 0.013127490649506812, + "99.9" : 0.013127490649506812, + "99.99" : 0.013127490649506812, + "99.999" : 0.013127490649506812, + "99.9999" : 0.013127490649506812, + "100.0" : 0.013127490649506812 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.012679037873927696, + 0.012766024883001891, + 0.012756999800995532 + ], + [ + 0.013005924720834233, + 0.013127490649506812, + 0.013113661790238401 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.6561826880524, + "scoreError" : 0.06436677310614175, + "scoreConfidence" : [ + 3.5918159149462583, + 3.720549461158542 + ], + "scorePercentiles" : { + "0.0" : 3.6185629515195368, + "50.0" : 3.6526129974433896, + "90.0" : 3.682027943298969, + "95.0" : 3.682027943298969, + "99.0" : 3.682027943298969, + "99.9" : 3.682027943298969, + "99.99" : 3.682027943298969, + "99.999" : 3.682027943298969, + "99.9999" : 3.682027943298969, + "100.0" : 3.682027943298969 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.6526484506939374, + 3.682027943298969, + 3.678807961764706 + ], + [ + 3.6185629515195368, + 3.652471276844412, + 3.6525775441928414 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.8098269224905965, + "scoreError" : 0.0682573600462391, + "scoreConfidence" : [ + 2.7415695624443575, + 2.8780842825368356 + ], + "scorePercentiles" : { + "0.0" : 2.756005176357123, + "50.0" : 2.8269731232334654, + "90.0" : 2.852774981745579, + "95.0" : 2.852774981745579, + "99.0" : 2.852774981745579, + "99.9" : 2.852774981745579, + "99.99" : 2.852774981745579, + "99.999" : 2.852774981745579, + "99.9999" : 2.852774981745579, + "100.0" : 2.852774981745579 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.852774981745579, + 2.8471311010532308, + 2.841508862215909 + ], + [ + 2.760114301048565, + 2.756005176357123, + 2.756156037475889 + ], + [ + 2.8206438959390865, + 2.8271348233465234, + 2.8269731232334654 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.182257758641677, + "scoreError" : 0.009369711322852617, + "scoreConfidence" : [ + 0.1728880473188244, + 0.19162746996452962 + ], + "scorePercentiles" : { + "0.0" : 0.17512085773574992, + "50.0" : 0.18244345578603616, + "90.0" : 0.18892104490582434, + "95.0" : 0.18892104490582434, + "99.0" : 0.18892104490582434, + "99.9" : 0.18892104490582434, + "99.99" : 0.18892104490582434, + "99.999" : 0.18892104490582434, + "99.9999" : 0.18892104490582434, + "100.0" : 0.18892104490582434 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.18892104490582434, + 0.18846615911875012, + 0.18838380496948234 + ], + [ + 0.17668158256183747, + 0.17546814056358787, + 0.17512085773574992 + ], + [ + 0.18229967321715035, + 0.18253510891667427, + 0.18244345578603616 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.33033853868194574, + "scoreError" : 0.010265857312702213, + "scoreConfidence" : [ + 0.32007268136924355, + 0.3406043959946479 + ], + "scorePercentiles" : { + "0.0" : 0.32237836437782075, + "50.0" : 0.3325730915893445, + "90.0" : 0.3368782656560552, + "95.0" : 0.3368782656560552, + "99.0" : 0.3368782656560552, + "99.9" : 0.3368782656560552, + "99.99" : 0.3368782656560552, + "99.999" : 0.3368782656560552, + "99.9999" : 0.3368782656560552, + "100.0" : 0.3368782656560552 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3368782656560552, + 0.3358404426906673, + 0.33497170506464796 + ], + [ + 0.33304267895560663, + 0.3325730915893445, + 0.3324330246659132 + ], + [ + 0.322414881290905, + 0.32237836437782075, + 0.3225143938465508 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16090177068882616, + "scoreError" : 0.005913352137785627, + "scoreConfidence" : [ + 0.15498841855104054, + 0.1668151228266118 + ], + "scorePercentiles" : { + "0.0" : 0.15638643631245602, + "50.0" : 0.16139914766216368, + "90.0" : 0.1650659744317713, + "95.0" : 0.1650659744317713, + "99.0" : 0.1650659744317713, + "99.9" : 0.1650659744317713, + "99.99" : 0.1650659744317713, + "99.999" : 0.1650659744317713, + "99.9999" : 0.1650659744317713, + "100.0" : 0.1650659744317713 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1650659744317713, + 0.16443675696785331, + 0.1646148937431069 + ], + [ + 0.1609050628801287, + 0.16174211627417998, + 0.16139914766216368 + ], + [ + 0.15649513283047214, + 0.15707041509730316, + 0.15638643631245602 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.39215436517063057, + "scoreError" : 0.00894198906358332, + "scoreConfidence" : [ + 0.3832123761070472, + 0.4010963542342139 + ], + "scorePercentiles" : { + "0.0" : 0.3839347225016317, + "50.0" : 0.3935621432900433, + "90.0" : 0.39837528426881247, + "95.0" : 0.39837528426881247, + "99.0" : 0.39837528426881247, + "99.9" : 0.39837528426881247, + "99.99" : 0.39837528426881247, + "99.999" : 0.39837528426881247, + "99.9999" : 0.39837528426881247, + "100.0" : 0.39837528426881247 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.39837528426881247, + 0.3951016906483347, + 0.3937299167683767 + ], + [ + 0.38905089678649235, + 0.3843139198339802, + 0.3839347225016317 + ], + [ + 0.3980502241372448, + 0.3935621432900433, + 0.393270488300759 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15446192003082043, + "scoreError" : 0.001081224597951432, + "scoreConfidence" : [ + 0.153380695432869, + 0.15554314462877186 + ], + "scorePercentiles" : { + "0.0" : 0.15360487676451162, + "50.0" : 0.15451793318809004, + "90.0" : 0.15524694288597377, + "95.0" : 0.15524694288597377, + "99.0" : 0.15524694288597377, + "99.9" : 0.15524694288597377, + "99.99" : 0.15524694288597377, + "99.999" : 0.15524694288597377, + "99.9999" : 0.15524694288597377, + "100.0" : 0.15524694288597377 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15498702888892332, + 0.15524694288597377, + 0.1549091697467276 + ], + [ + 0.15451793318809004, + 0.15411996120888943, + 0.15380470221012318 + ], + [ + 0.15516613101832458, + 0.15380053436582028, + 0.15360487676451162 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04748573782000606, + "scoreError" : 0.0012040196670550232, + "scoreConfidence" : [ + 0.04628171815295104, + 0.048689757487061086 + ], + "scorePercentiles" : { + "0.0" : 0.046663098938428876, + "50.0" : 0.04712490444145991, + "90.0" : 0.048372361226128514, + "95.0" : 0.048372361226128514, + "99.0" : 0.048372361226128514, + "99.9" : 0.048372361226128514, + "99.99" : 0.048372361226128514, + "99.999" : 0.048372361226128514, + "99.9999" : 0.048372361226128514, + "100.0" : 0.048372361226128514 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04778590171548717, + 0.04712490444145991, + 0.046904938836772984 + ], + [ + 0.04829784319805265, + 0.04837072604720905, + 0.048372361226128514 + ], + [ + 0.04701799494562432, + 0.04683387103089114, + 0.046663098938428876 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9317618.65213532, + "scoreError" : 293418.301524301, + "scoreConfidence" : [ + 9024200.35061102, + 9611036.95365962 + ], + "scorePercentiles" : { + "0.0" : 9093342.035454545, + "50.0" : 9337089.965485075, + "90.0" : 9534807.62726406, + "95.0" : 9534807.62726406, + "99.0" : 9534807.62726406, + "99.9" : 9534807.62726406, + "99.99" : 9534807.62726406, + "99.999" : 9534807.62726406, + "99.9999" : 9534807.62726406, + "100.0" : 9534807.62726406 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9301863.918215614, + 9338010.549953315, + 9337089.965485075 + ], + [ + 9534807.62726406, + 9507893.685361216, + 9498141.189933524 + ], + [ + 9150132.32936871, + 9097286.568181818, + 9093342.035454545 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-03-24T00:25:27Z-c46c07a77f81d0493fc0e7c93d9de49e97118281-jdk17.json b/performance-results/2025-03-24T00:25:27Z-c46c07a77f81d0493fc0e7c93d9de49e97118281-jdk17.json new file mode 100644 index 0000000000..e7a92860fd --- /dev/null +++ b/performance-results/2025-03-24T00:25:27Z-c46c07a77f81d0493fc0e7c93d9de49e97118281-jdk17.json @@ -0,0 +1,1310 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.421246302583824, + "scoreError" : 0.025733017281439678, + "scoreConfidence" : [ + 3.395513285302384, + 3.4469793198652634 + ], + "scorePercentiles" : { + "0.0" : 3.417136102719499, + "50.0" : 3.4205731276212257, + "90.0" : 3.4267028523733463, + "95.0" : 3.4267028523733463, + "99.0" : 3.4267028523733463, + "99.9" : 3.4267028523733463, + "99.99" : 3.4267028523733463, + "99.999" : 3.4267028523733463, + "99.9999" : 3.4267028523733463, + "100.0" : 3.4267028523733463 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.417136102719499, + 3.4205781955314856 + ], + [ + 3.4205680597109653, + 3.4267028523733463 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7273766517476457, + "scoreError" : 0.01233951072091223, + "scoreConfidence" : [ + 1.7150371410267333, + 1.739716162468558 + ], + "scorePercentiles" : { + "0.0" : 1.7248858281468324, + "50.0" : 1.7275784917996955, + "90.0" : 1.7294637952443586, + "95.0" : 1.7294637952443586, + "99.0" : 1.7294637952443586, + "99.9" : 1.7294637952443586, + "99.99" : 1.7294637952443586, + "99.999" : 1.7294637952443586, + "99.9999" : 1.7294637952443586, + "100.0" : 1.7294637952443586 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7271929218788888, + 1.7294637952443586 + ], + [ + 1.7248858281468324, + 1.727964061720502 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8683348226608707, + "scoreError" : 0.0037602099325063747, + "scoreConfidence" : [ + 0.8645746127283643, + 0.8720950325933771 + ], + "scorePercentiles" : { + "0.0" : 0.8678619660868055, + "50.0" : 0.8681469488116227, + "90.0" : 0.8691834269334319, + "95.0" : 0.8691834269334319, + "99.0" : 0.8691834269334319, + "99.9" : 0.8691834269334319, + "99.99" : 0.8691834269334319, + "99.999" : 0.8691834269334319, + "99.9999" : 0.8691834269334319, + "100.0" : 0.8691834269334319 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8678619660868055, + 0.8691834269334319 + ], + [ + 0.8681742930439199, + 0.8681196045793255 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.341865851698003, + "scoreError" : 0.10566306717401301, + "scoreConfidence" : [ + 16.23620278452399, + 16.447528918872017 + ], + "scorePercentiles" : { + "0.0" : 16.22303246272705, + "50.0" : 16.362295927808958, + "90.0" : 16.435421636550824, + "95.0" : 16.435421636550824, + "99.0" : 16.435421636550824, + "99.9" : 16.435421636550824, + "99.99" : 16.435421636550824, + "99.999" : 16.435421636550824, + "99.9999" : 16.435421636550824, + "100.0" : 16.435421636550824 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.35107234728992, + 16.362295927808958, + 16.435421636550824 + ], + [ + 16.378925272900975, + 16.374444545565535, + 16.367253221102832 + ], + [ + 16.281324433699563, + 16.22303246272705, + 16.303022817636357 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2723.7793282226216, + "scoreError" : 34.82246156603348, + "scoreConfidence" : [ + 2688.9568666565883, + 2758.601789788655 + ], + "scorePercentiles" : { + "0.0" : 2702.465007990573, + "50.0" : 2718.2824063648923, + "90.0" : 2752.109075671271, + "95.0" : 2752.109075671271, + "99.0" : 2752.109075671271, + "99.9" : 2752.109075671271, + "99.99" : 2752.109075671271, + "99.999" : 2752.109075671271, + "99.9999" : 2752.109075671271, + "100.0" : 2752.109075671271 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2751.25254211314, + 2745.482247982233, + 2752.109075671271 + ], + [ + 2703.1017470328934, + 2702.5273149643604, + 2702.465007990573 + ], + [ + 2718.2824063648923, + 2720.945553216911, + 2717.8480586673195 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 69969.63461352007, + "scoreError" : 1134.2174371916856, + "scoreConfidence" : [ + 68835.41717632838, + 71103.85205071176 + ], + "scorePercentiles" : { + "0.0" : 69043.0075343839, + "50.0" : 70280.94069877287, + "90.0" : 70603.5514723977, + "95.0" : 70603.5514723977, + "99.0" : 70603.5514723977, + "99.9" : 70603.5514723977, + "99.99" : 70603.5514723977, + "99.999" : 70603.5514723977, + "99.9999" : 70603.5514723977, + "100.0" : 70603.5514723977 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 70332.83724038013, + 70280.94069877287, + 70280.81855460658 + ], + [ + 70505.14309459185, + 70478.95648670508, + 70603.5514723977 + ], + [ + 69133.77056067433, + 69043.0075343839, + 69067.68587916823 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 349.43725104505324, + "scoreError" : 4.453722696756971, + "scoreConfidence" : [ + 344.98352834829626, + 353.8909737418102 + ], + "scorePercentiles" : { + "0.0" : 345.9068962532555, + "50.0" : 350.13288831364576, + "90.0" : 352.6286330072688, + "95.0" : 352.6286330072688, + "99.0" : 352.6286330072688, + "99.9" : 352.6286330072688, + "99.99" : 352.6286330072688, + "99.999" : 352.6286330072688, + "99.9999" : 352.6286330072688, + "100.0" : 352.6286330072688 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 346.2672803390126, + 346.2982345844763, + 345.9068962532555 + ], + [ + 350.13288831364576, + 350.55161549887754, + 349.3974695571367 + ], + [ + 351.77503927442575, + 351.97720257737996, + 352.6286330072688 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 106.03740194054079, + "scoreError" : 4.341780378218412, + "scoreConfidence" : [ + 101.69562156232237, + 110.3791823187592 + ], + "scorePercentiles" : { + "0.0" : 102.61722251422017, + "50.0" : 106.99671128488392, + "90.0" : 108.66695605213567, + "95.0" : 108.66695605213567, + "99.0" : 108.66695605213567, + "99.9" : 108.66695605213567, + "99.99" : 108.66695605213567, + "99.999" : 108.66695605213567, + "99.9999" : 108.66695605213567, + "100.0" : 108.66695605213567 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 107.2477674737249, + 106.99671128488392, + 106.51128399292004 + ], + [ + 102.61722251422017, + 102.78829964896627, + 102.76383751861742 + ], + [ + 108.31343183269428, + 108.66695605213567, + 108.4311071467046 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06114094780691651, + "scoreError" : 6.931905613668829E-4, + "scoreConfidence" : [ + 0.06044775724554963, + 0.06183413836828339 + ], + "scorePercentiles" : { + "0.0" : 0.06052651748890866, + "50.0" : 0.06120342482496083, + "90.0" : 0.06171405804122439, + "95.0" : 0.06171405804122439, + "99.0" : 0.06171405804122439, + "99.9" : 0.06171405804122439, + "99.99" : 0.06171405804122439, + "99.999" : 0.06171405804122439, + "99.9999" : 0.06171405804122439, + "100.0" : 0.06171405804122439 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.060785686946479046, + 0.06061288448576832, + 0.06052651748890866 + ], + [ + 0.06120342482496083, + 0.06117210848687269, + 0.06171405804122439 + ], + [ + 0.06145645012567678, + 0.061479210661568064, + 0.06131818920078977 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.558887426986108E-4, + "scoreError" : 1.1643968365827848E-5, + "scoreConfidence" : [ + 3.4424477433278296E-4, + 3.675327110644386E-4 + ], + "scorePercentiles" : { + "0.0" : 3.4989609340297815E-4, + "50.0" : 3.527937491614633E-4, + "90.0" : 3.652218515584872E-4, + "95.0" : 3.652218515584872E-4, + "99.0" : 3.652218515584872E-4, + "99.9" : 3.652218515584872E-4, + "99.99" : 3.652218515584872E-4, + "99.999" : 3.652218515584872E-4, + "99.9999" : 3.652218515584872E-4, + "100.0" : 3.652218515584872E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.6513254492621797E-4, + 3.646400005615393E-4, + 3.652218515584872E-4 + ], + [ + 3.519855166866087E-4, + 3.527937491614633E-4, + 3.530516825367461E-4 + ], + [ + 3.4989609340297815E-4, + 3.4996294116570423E-4, + 3.503143042877524E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014459886907853124, + "scoreError" : 1.751271748642364E-5, + "scoreConfidence" : [ + 0.0144423741903667, + 0.014477399625339548 + ], + "scorePercentiles" : { + "0.0" : 0.01444761801971787, + "50.0" : 0.0144585426456789, + "90.0" : 0.014479206546259053, + "95.0" : 0.014479206546259053, + "99.0" : 0.014479206546259053, + "99.9" : 0.014479206546259053, + "99.99" : 0.014479206546259053, + "99.999" : 0.014479206546259053, + "99.9999" : 0.014479206546259053, + "100.0" : 0.014479206546259053 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.0144585426456789, + 0.01444858810287856, + 0.01445240660900229 + ], + [ + 0.014471111776452883, + 0.014463550117008629, + 0.014462029081353746 + ], + [ + 0.014479206546259053, + 0.01445592927232619, + 0.01444761801971787 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9848656516090956, + "scoreError" : 0.01790359690960157, + "scoreConfidence" : [ + 0.966962054699494, + 1.0027692485186972 + ], + "scorePercentiles" : { + "0.0" : 0.9702499647812166, + "50.0" : 0.987872356910007, + "90.0" : 0.999280423361311, + "95.0" : 0.999280423361311, + "99.0" : 0.999280423361311, + "99.9" : 0.999280423361311, + "99.99" : 0.999280423361311, + "99.999" : 0.999280423361311, + "99.9999" : 0.999280423361311, + "100.0" : 0.999280423361311 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9702499647812166, + 0.9752142199902487, + 0.97071049669967 + ], + [ + 0.9902428413704327, + 0.999280423361311, + 0.9967743983853284 + ], + [ + 0.987872356910007, + 0.9849215701201497, + 0.988524592863497 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.013021840921867006, + "scoreError" : 1.9749862566405114E-4, + "scoreConfidence" : [ + 0.012824342296202955, + 0.013219339547531057 + ], + "scorePercentiles" : { + "0.0" : 0.012931413966648046, + "50.0" : 0.01299823102761962, + "90.0" : 0.013108989882703329, + "95.0" : 0.013108989882703329, + "99.0" : 0.013108989882703329, + "99.9" : 0.013108989882703329, + "99.99" : 0.013108989882703329, + "99.999" : 0.013108989882703329, + "99.9999" : 0.013108989882703329, + "100.0" : 0.013108989882703329 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.012931413966648046, + 0.013104382452609151, + 0.013108989882703329 + ], + [ + 0.013004359931858672, + 0.012992102123380572, + 0.012989797174002275 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.607023788037479, + "scoreError" : 0.07327604702535247, + "scoreConfidence" : [ + 3.5337477410121267, + 3.6802998350628315 + ], + "scorePercentiles" : { + "0.0" : 3.5660110042765503, + "50.0" : 3.6107640732839337, + "90.0" : 3.6383183745454546, + "95.0" : 3.6383183745454546, + "99.0" : 3.6383183745454546, + "99.9" : 3.6383183745454546, + "99.99" : 3.6383183745454546, + "99.999" : 3.6383183745454546, + "99.9999" : 3.6383183745454546, + "100.0" : 3.6383183745454546 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.589340019368723, + 3.6383183745454546, + 3.62694518346628 + ], + [ + 3.5660110042765503, + 3.6080095750360752, + 3.613518571531792 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.8059151286489663, + "scoreError" : 0.05752197780891353, + "scoreConfidence" : [ + 2.748393150840053, + 2.8634371064578796 + ], + "scorePercentiles" : { + "0.0" : 2.7601151989514348, + "50.0" : 2.8134174627285513, + "90.0" : 2.844721040386803, + "95.0" : 2.844721040386803, + "99.0" : 2.844721040386803, + "99.9" : 2.844721040386803, + "99.99" : 2.844721040386803, + "99.999" : 2.844721040386803, + "99.9999" : 2.844721040386803, + "100.0" : 2.844721040386803 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.84413932044356, + 2.844721040386803, + 2.8285615141402713 + ], + [ + 2.823798961038961, + 2.8089209247402414, + 2.8134174627285513 + ], + [ + 2.76110121783545, + 2.768460517575422, + 2.7601151989514348 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.19079301512188468, + "scoreError" : 0.014774377161596323, + "scoreConfidence" : [ + 0.17601863796028835, + 0.205567392283481 + ], + "scorePercentiles" : { + "0.0" : 0.1786670587268407, + "50.0" : 0.1959693705148053, + "90.0" : 0.19811789208732863, + "95.0" : 0.19811789208732863, + "99.0" : 0.19811789208732863, + "99.9" : 0.19811789208732863, + "99.99" : 0.19811789208732863, + "99.999" : 0.19811789208732863, + "99.9999" : 0.19811789208732863, + "100.0" : 0.19811789208732863 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1972381575511331, + 0.1959693705148053, + 0.19596850636880267 + ], + [ + 0.19811789208732863, + 0.19637531048228732, + 0.1961232889642864 + ], + [ + 0.17988990216042164, + 0.1786670587268407, + 0.17878764924105625 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.31952785321151783, + "scoreError" : 0.01001783873026382, + "scoreConfidence" : [ + 0.30951001448125404, + 0.3295456919417816 + ], + "scorePercentiles" : { + "0.0" : 0.31381017921360654, + "50.0" : 0.31626577435167613, + "90.0" : 0.32794699619597295, + "95.0" : 0.32794699619597295, + "99.0" : 0.32794699619597295, + "99.9" : 0.32794699619597295, + "99.99" : 0.32794699619597295, + "99.999" : 0.32794699619597295, + "99.9999" : 0.32794699619597295, + "100.0" : 0.32794699619597295 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3189972577434687, + 0.31626577435167613, + 0.31608200075858145 + ], + [ + 0.31446555177510144, + 0.3145012565965343, + 0.31381017921360654 + ], + [ + 0.3270510261307519, + 0.32663063613796706, + 0.32794699619597295 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16863322355175633, + "scoreError" : 0.0036872991180300486, + "scoreConfidence" : [ + 0.1649459244337263, + 0.17232052266978637 + ], + "scorePercentiles" : { + "0.0" : 0.16568923645099826, + "50.0" : 0.1695653306485799, + "90.0" : 0.1706155962260288, + "95.0" : 0.1706155962260288, + "99.0" : 0.1706155962260288, + "99.9" : 0.1706155962260288, + "99.99" : 0.1706155962260288, + "99.999" : 0.1706155962260288, + "99.9999" : 0.1706155962260288, + "100.0" : 0.1706155962260288 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16583173301936854, + 0.16568923645099826, + 0.16583332192428238 + ], + [ + 0.17051351466375664, + 0.1706155962260288, + 0.17053552343110503 + ], + [ + 0.17005843134087237, + 0.16905632426081518, + 0.1695653306485799 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.39274708507310296, + "scoreError" : 0.00931143808849305, + "scoreConfidence" : [ + 0.3834356469846099, + 0.402058523161596 + ], + "scorePercentiles" : { + "0.0" : 0.38599543554114557, + "50.0" : 0.39204008754116354, + "90.0" : 0.3999358855828834, + "95.0" : 0.3999358855828834, + "99.0" : 0.3999358855828834, + "99.9" : 0.3999358855828834, + "99.99" : 0.3999358855828834, + "99.999" : 0.3999358855828834, + "99.9999" : 0.3999358855828834, + "100.0" : 0.3999358855828834 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.39978432941552733, + 0.3999358855828834, + 0.3985876615648292 + ], + [ + 0.38599543554114557, + 0.38682379077054, + 0.3874426654914571 + ], + [ + 0.3922239095544399, + 0.39204008754116354, + 0.3918900001959401 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15654185959972333, + "scoreError" : 0.003324708225371492, + "scoreConfidence" : [ + 0.15321715137435185, + 0.1598665678250948 + ], + "scorePercentiles" : { + "0.0" : 0.1537966328934822, + "50.0" : 0.15711305921445404, + "90.0" : 0.15991182664385314, + "95.0" : 0.15991182664385314, + "99.0" : 0.15991182664385314, + "99.9" : 0.15991182664385314, + "99.99" : 0.15991182664385314, + "99.999" : 0.15991182664385314, + "99.9999" : 0.15991182664385314, + "100.0" : 0.15991182664385314 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15991182664385314, + 0.1574710881977797, + 0.1574142480166226 + ], + [ + 0.15711305921445404, + 0.1573238880655717, + 0.15707679514325207 + ], + [ + 0.15401986099987677, + 0.1537966328934822, + 0.1547493372226177 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04730248592662241, + "scoreError" : 0.001214882838521849, + "scoreConfidence" : [ + 0.04608760308810056, + 0.04851736876514426 + ], + "scorePercentiles" : { + "0.0" : 0.04615450604845223, + "50.0" : 0.04744312130542456, + "90.0" : 0.04815119295365029, + "95.0" : 0.04815119295365029, + "99.0" : 0.04815119295365029, + "99.9" : 0.04815119295365029, + "99.99" : 0.04815119295365029, + "99.999" : 0.04815119295365029, + "99.9999" : 0.04815119295365029, + "100.0" : 0.04815119295365029 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04669727998860601, + 0.04615450604845223, + 0.04643505562830264 + ], + [ + 0.04815119295365029, + 0.04791434695676756, + 0.04799755646589584 + ], + [ + 0.04744312130542456, + 0.04768213433305519, + 0.04724717965944741 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9214657.65577173, + "scoreError" : 324186.95975341706, + "scoreConfidence" : [ + 8890470.696018314, + 9538844.615525147 + ], + "scorePercentiles" : { + "0.0" : 9072593.251133272, + "50.0" : 9095946.824545454, + "90.0" : 9473104.0625, + "95.0" : 9473104.0625, + "99.0" : 9473104.0625, + "99.9" : 9473104.0625, + "99.99" : 9473104.0625, + "99.999" : 9473104.0625, + "99.9999" : 9473104.0625, + "100.0" : 9473104.0625 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9100846.449499546, + 9095946.824545454, + 9093544.356363636 + ], + [ + 9471608.28125, + 9470003.732007576, + 9473104.0625 + ], + [ + 9076957.367513612, + 9077314.577132486, + 9072593.251133272 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-03-24T00:26:22Z-c46c07a77f81d0493fc0e7c93d9de49e97118281-jdk17.json b/performance-results/2025-03-24T00:26:22Z-c46c07a77f81d0493fc0e7c93d9de49e97118281-jdk17.json new file mode 100644 index 0000000000..3b71828ef6 --- /dev/null +++ b/performance-results/2025-03-24T00:26:22Z-c46c07a77f81d0493fc0e7c93d9de49e97118281-jdk17.json @@ -0,0 +1,1310 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4058150783351246, + "scoreError" : 0.026452604872451217, + "scoreConfidence" : [ + 3.3793624734626735, + 3.432267683207576 + ], + "scorePercentiles" : { + "0.0" : 3.4004071794259927, + "50.0" : 3.406246718629739, + "90.0" : 3.4103596966550294, + "95.0" : 3.4103596966550294, + "99.0" : 3.4103596966550294, + "99.9" : 3.4103596966550294, + "99.99" : 3.4103596966550294, + "99.999" : 3.4103596966550294, + "99.9999" : 3.4103596966550294, + "100.0" : 3.4103596966550294 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.406232750028374, + 3.4103596966550294 + ], + [ + 3.4004071794259927, + 3.406260687231104 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7237606775531091, + "scoreError" : 0.01471389781372789, + "scoreConfidence" : [ + 1.7090467797393813, + 1.738474575366837 + ], + "scorePercentiles" : { + "0.0" : 1.7204652078126201, + "50.0" : 1.7244467307218376, + "90.0" : 1.7256840409561414, + "95.0" : 1.7256840409561414, + "99.0" : 1.7256840409561414, + "99.9" : 1.7256840409561414, + "99.99" : 1.7256840409561414, + "99.999" : 1.7256840409561414, + "99.9999" : 1.7256840409561414, + "100.0" : 1.7256840409561414 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7246099665286807, + 1.7204652078126201 + ], + [ + 1.7256840409561414, + 1.7242834949149946 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8663232166649114, + "scoreError" : 0.006686175885856252, + "scoreConfidence" : [ + 0.8596370407790551, + 0.8730093925507677 + ], + "scorePercentiles" : { + "0.0" : 0.8652181246222682, + "50.0" : 0.8663474533310827, + "90.0" : 0.8673798353752123, + "95.0" : 0.8673798353752123, + "99.0" : 0.8673798353752123, + "99.9" : 0.8673798353752123, + "99.99" : 0.8673798353752123, + "99.999" : 0.8673798353752123, + "99.9999" : 0.8673798353752123, + "100.0" : 0.8673798353752123 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8673798353752123, + 0.8670081057362332 + ], + [ + 0.865686800925932, + 0.8652181246222682 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.063146484271993, + "scoreError" : 0.09274549186336652, + "scoreConfidence" : [ + 15.970400992408626, + 16.155891976135358 + ], + "scorePercentiles" : { + "0.0" : 15.988271964073459, + "50.0" : 16.056373512006516, + "90.0" : 16.151461751402852, + "95.0" : 16.151461751402852, + "99.0" : 16.151461751402852, + "99.9" : 16.151461751402852, + "99.99" : 16.151461751402852, + "99.999" : 16.151461751402852, + "99.9999" : 16.151461751402852, + "100.0" : 16.151461751402852 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.056373512006516, + 16.074774345532692, + 16.042297273489353 + ], + [ + 16.021096192431116, + 16.005741694538813, + 15.988271964073459 + ], + [ + 16.107798059757286, + 16.151461751402852, + 16.120503565215856 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2631.4019878913555, + "scoreError" : 45.07292665333818, + "scoreConfidence" : [ + 2586.3290612380174, + 2676.4749145446935 + ], + "scorePercentiles" : { + "0.0" : 2598.1253635550966, + "50.0" : 2628.6049799406546, + "90.0" : 2670.80836297728, + "95.0" : 2670.80836297728, + "99.0" : 2670.80836297728, + "99.9" : 2670.80836297728, + "99.99" : 2670.80836297728, + "99.999" : 2670.80836297728, + "99.9999" : 2670.80836297728, + "100.0" : 2670.80836297728 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2628.363719532275, + 2634.404337259284, + 2628.6049799406546 + ], + [ + 2602.783085480924, + 2598.1253635550966, + 2603.021830794198 + ], + [ + 2670.80836297728, + 2657.0851252173516, + 2659.4210862651344 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 70139.36832003857, + "scoreError" : 1080.653635734936, + "scoreConfidence" : [ + 69058.71468430363, + 71220.02195577351 + ], + "scorePercentiles" : { + "0.0" : 69331.95951448398, + "50.0" : 70230.85843595021, + "90.0" : 70859.36155987332, + "95.0" : 70859.36155987332, + "99.0" : 70859.36155987332, + "99.9" : 70859.36155987332, + "99.99" : 70859.36155987332, + "99.999" : 70859.36155987332, + "99.9999" : 70859.36155987332, + "100.0" : 70859.36155987332 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 70230.85843595021, + 70306.19172133977, + 70212.58255702884 + ], + [ + 70778.52672038162, + 70820.40440516589, + 70859.36155987332 + ], + [ + 69338.63968738963, + 69375.79027873385, + 69331.95951448398 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 342.39493729944945, + "scoreError" : 5.38735019936265, + "scoreConfidence" : [ + 337.0075871000868, + 347.7822874988121 + ], + "scorePercentiles" : { + "0.0" : 337.26407618201983, + "50.0" : 344.3494882000147, + "90.0" : 345.3180429063327, + "95.0" : 345.3180429063327, + "99.0" : 345.3180429063327, + "99.9" : 345.3180429063327, + "99.99" : 345.3180429063327, + "99.999" : 345.3180429063327, + "99.9999" : 345.3180429063327, + "100.0" : 345.3180429063327 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 345.09902243857897, + 341.8493886510512, + 344.6666914454054 + ], + [ + 337.26407618201983, + 338.34929933870706, + 339.6471681207518 + ], + [ + 345.0112584121833, + 345.3180429063327, + 344.3494882000147 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 105.47572256516146, + "scoreError" : 3.6800047610781017, + "scoreConfidence" : [ + 101.79571780408337, + 109.15572732623956 + ], + "scorePercentiles" : { + "0.0" : 102.42778427400434, + "50.0" : 106.31243167262423, + "90.0" : 107.74689637106496, + "95.0" : 107.74689637106496, + "99.0" : 107.74689637106496, + "99.9" : 107.74689637106496, + "99.99" : 107.74689637106496, + "99.999" : 107.74689637106496, + "99.9999" : 107.74689637106496, + "100.0" : 107.74689637106496 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 107.283036063032, + 107.37412707665254, + 107.74689637106496 + ], + [ + 106.11333166047164, + 106.31243167262423, + 106.51985552590087 + ], + [ + 102.42778427400434, + 102.67053516833408, + 102.8335052743686 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06311428347152606, + "scoreError" : 0.00152037655154138, + "scoreConfidence" : [ + 0.06159390691998468, + 0.06463466002306745 + ], + "scorePercentiles" : { + "0.0" : 0.062365334173173345, + "50.0" : 0.06271125822291064, + "90.0" : 0.06517277432368142, + "95.0" : 0.06517277432368142, + "99.0" : 0.06517277432368142, + "99.9" : 0.06517277432368142, + "99.99" : 0.06517277432368142, + "99.999" : 0.06517277432368142, + "99.9999" : 0.06517277432368142, + "100.0" : 0.06517277432368142 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06270253047289417, + 0.06275191931475904, + 0.06271125822291064 + ], + [ + 0.062365334173173345, + 0.06256196170015765, + 0.06247188241063508 + ], + [ + 0.06369551286950872, + 0.06359537775601443, + 0.06517277432368142 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.8222663335657985E-4, + "scoreError" : 2.8979427134608703E-6, + "scoreConfidence" : [ + 3.79328690643119E-4, + 3.851245760700407E-4 + ], + "scorePercentiles" : { + "0.0" : 3.790968269142776E-4, + "50.0" : 3.8297120240527854E-4, + "90.0" : 3.8414170084109486E-4, + "95.0" : 3.8414170084109486E-4, + "99.0" : 3.8414170084109486E-4, + "99.9" : 3.8414170084109486E-4, + "99.99" : 3.8414170084109486E-4, + "99.999" : 3.8414170084109486E-4, + "99.9999" : 3.8414170084109486E-4, + "100.0" : 3.8414170084109486E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.790968269142776E-4, + 3.80274158956133E-4, + 3.809465855965468E-4 + ], + [ + 3.8414170084109486E-4, + 3.824734405275988E-4, + 3.8297120240527854E-4 + ], + [ + 3.8380708551126946E-4, + 3.831089772239076E-4, + 3.832197222331119E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014194196126241223, + "scoreError" : 8.231346586656076E-5, + "scoreConfidence" : [ + 0.014111882660374662, + 0.014276509592107784 + ], + "scorePercentiles" : { + "0.0" : 0.014149952206303724, + "50.0" : 0.014168512126664777, + "90.0" : 0.014269262559644757, + "95.0" : 0.014269262559644757, + "99.0" : 0.014269262559644757, + "99.9" : 0.014269262559644757, + "99.99" : 0.014269262559644757, + "99.999" : 0.014269262559644757, + "99.9999" : 0.014269262559644757, + "100.0" : 0.014269262559644757 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014149952206303724, + 0.014151971689328413, + 0.01415818948088244 + ], + [ + 0.014168512126664777, + 0.014177382997877677, + 0.014167298605955855 + ], + [ + 0.01425682910980045, + 0.014269262559644757, + 0.014248366359712928 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9976094463518428, + "scoreError" : 0.020593406679277775, + "scoreConfidence" : [ + 0.977016039672565, + 1.0182028530311205 + ], + "scorePercentiles" : { + "0.0" : 0.9861651139927029, + "50.0" : 0.9900198547668547, + "90.0" : 1.0160989425988012, + "95.0" : 1.0160989425988012, + "99.0" : 1.0160989425988012, + "99.9" : 1.0160989425988012, + "99.99" : 1.0160989425988012, + "99.999" : 1.0160989425988012, + "99.9999" : 1.0160989425988012, + "100.0" : 1.0160989425988012 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9956012011946241, + 0.989060773711799, + 0.9890333369597468 + ], + [ + 1.0111175650591446, + 1.013320355253825, + 1.0160989425988012 + ], + [ + 0.9900198547668547, + 0.9861651139927029, + 0.988067873629088 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.013280445247701916, + "scoreError" : 1.4610011076541306E-4, + "scoreConfidence" : [ + 0.013134345136936502, + 0.01342654535846733 + ], + "scorePercentiles" : { + "0.0" : 0.013238463008903915, + "50.0" : 0.013259971745728908, + "90.0" : 0.01337144344340329, + "95.0" : 0.01337144344340329, + "99.0" : 0.01337144344340329, + "99.9" : 0.01337144344340329, + "99.99" : 0.01337144344340329, + "99.999" : 0.01337144344340329, + "99.9999" : 0.01337144344340329, + "100.0" : 0.01337144344340329 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.01325390333619611, + 0.013266040155261706, + 0.013240461469816412 + ], + [ + 0.013312360072630071, + 0.01337144344340329, + 0.013238463008903915 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.8909240052175984, + "scoreError" : 0.04217030962671556, + "scoreConfidence" : [ + 3.848753695590883, + 3.933094314844314 + ], + "scorePercentiles" : { + "0.0" : 3.8692972204176335, + "50.0" : 3.8944467164305974, + "90.0" : 3.9083230546875, + "95.0" : 3.9083230546875, + "99.0" : 3.9083230546875, + "99.9" : 3.9083230546875, + "99.99" : 3.9083230546875, + "99.999" : 3.9083230546875, + "99.9999" : 3.9083230546875, + "100.0" : 3.9083230546875 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.9021358884555384, + 3.896992226635514, + 3.876894434883721 + ], + [ + 3.8692972204176335, + 3.891901206225681, + 3.9083230546875 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.9464650664152674, + "scoreError" : 0.07900631384816474, + "scoreConfidence" : [ + 2.8674587525671025, + 3.0254713802634323 + ], + "scorePercentiles" : { + "0.0" : 2.8846654577444477, + "50.0" : 2.949214712769095, + "90.0" : 3.0071091683704148, + "95.0" : 3.0071091683704148, + "99.0" : 3.0071091683704148, + "99.9" : 3.0071091683704148, + "99.99" : 3.0071091683704148, + "99.999" : 3.0071091683704148, + "99.9999" : 3.0071091683704148, + "100.0" : 3.0071091683704148 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.0030966561561563, + 3.0071091683704148, + 2.9888247429766888 + ], + [ + 2.8951925684515194, + 2.898828372173913, + 2.8846654577444477 + ], + [ + 2.9574190813128327, + 2.949214712769095, + 2.933834837782341 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17691180678475368, + "scoreError" : 0.0020375512397658494, + "scoreConfidence" : [ + 0.17487425554498784, + 0.17894935802451953 + ], + "scorePercentiles" : { + "0.0" : 0.17535436262252538, + "50.0" : 0.1772252414978645, + "90.0" : 0.1782519088089551, + "95.0" : 0.1782519088089551, + "99.0" : 0.1782519088089551, + "99.9" : 0.1782519088089551, + "99.99" : 0.1782519088089551, + "99.999" : 0.1782519088089551, + "99.9999" : 0.1782519088089551, + "100.0" : 0.1782519088089551 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1772252414978645, + 0.17715724875992064, + 0.17734751363765341 + ], + [ + 0.1782519088089551, + 0.17805553854782422, + 0.17803248316747075 + ], + [ + 0.17542131004964304, + 0.17536065397092604, + 0.17535436262252538 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.33425991649520753, + "scoreError" : 0.005110301773248331, + "scoreConfidence" : [ + 0.3291496147219592, + 0.33937021826845587 + ], + "scorePercentiles" : { + "0.0" : 0.3314547915879487, + "50.0" : 0.33275132459321866, + "90.0" : 0.338584502843987, + "95.0" : 0.338584502843987, + "99.0" : 0.338584502843987, + "99.9" : 0.338584502843987, + "99.99" : 0.338584502843987, + "99.999" : 0.338584502843987, + "99.9999" : 0.338584502843987, + "100.0" : 0.338584502843987 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.338584502843987, + 0.3381622264980387, + 0.33802885596944293 + ], + [ + 0.332660973854035, + 0.3329679401012186, + 0.33275132459321866 + ], + [ + 0.33184054337005575, + 0.3318880896389221, + 0.3314547915879487 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16033987885490203, + "scoreError" : 0.0088942834909611, + "scoreConfidence" : [ + 0.15144559536394092, + 0.16923416234586314 + ], + "scorePercentiles" : { + "0.0" : 0.15388121990890347, + "50.0" : 0.16065122100308443, + "90.0" : 0.166323342004158, + "95.0" : 0.166323342004158, + "99.0" : 0.166323342004158, + "99.9" : 0.166323342004158, + "99.99" : 0.166323342004158, + "99.999" : 0.166323342004158, + "99.9999" : 0.166323342004158, + "100.0" : 0.166323342004158 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1541098480351364, + 0.15412502709450712, + 0.15388121990890347 + ], + [ + 0.16623179028906732, + 0.166323342004158, + 0.16616231505574663 + ], + [ + 0.16094142122119223, + 0.1606327250823227, + 0.16065122100308443 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.39744495573528943, + "scoreError" : 0.005411637246195458, + "scoreConfidence" : [ + 0.39203331848909395, + 0.4028565929814849 + ], + "scorePercentiles" : { + "0.0" : 0.3940697161603026, + "50.0" : 0.39633976704185164, + "90.0" : 0.402766328567401, + "95.0" : 0.402766328567401, + "99.0" : 0.402766328567401, + "99.9" : 0.402766328567401, + "99.99" : 0.402766328567401, + "99.999" : 0.402766328567401, + "99.9999" : 0.402766328567401, + "100.0" : 0.402766328567401 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.402766328567401, + 0.3995626060012786, + 0.3994064622973081 + ], + [ + 0.3944502245888061, + 0.3940697161603026, + 0.3944233631379664 + ], + [ + 0.4007321151673011, + 0.39633976704185164, + 0.3952540186553891 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1578731358594352, + "scoreError" : 0.001429244900730236, + "scoreConfidence" : [ + 0.15644389095870495, + 0.15930238076016542 + ], + "scorePercentiles" : { + "0.0" : 0.15651093406369826, + "50.0" : 0.15804752496325447, + "90.0" : 0.15899748204973288, + "95.0" : 0.15899748204973288, + "99.0" : 0.15899748204973288, + "99.9" : 0.15899748204973288, + "99.99" : 0.15899748204973288, + "99.999" : 0.15899748204973288, + "99.9999" : 0.15899748204973288, + "100.0" : 0.15899748204973288 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15817670798139888, + 0.15885249123949613, + 0.15842256156137127 + ], + [ + 0.15899748204973288, + 0.15804752496325447, + 0.15767250805688698 + ], + [ + 0.15651093406369826, + 0.15700596079631984, + 0.157172052022758 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04795383363672171, + "scoreError" : 5.299177065546994E-4, + "scoreConfidence" : [ + 0.04742391593016701, + 0.04848375134327641 + ], + "scorePercentiles" : { + "0.0" : 0.04746444761660663, + "50.0" : 0.04800709954586042, + "90.0" : 0.04852743631837416, + "95.0" : 0.04852743631837416, + "99.0" : 0.04852743631837416, + "99.9" : 0.04852743631837416, + "99.99" : 0.04852743631837416, + "99.999" : 0.04852743631837416, + "99.9999" : 0.04852743631837416, + "100.0" : 0.04852743631837416 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.047803915034585615, + 0.04798231661172767, + 0.04801513513708167 + ], + [ + 0.0480238308625434, + 0.04800709954586042, + 0.04818131418150632 + ], + [ + 0.04852743631837416, + 0.04746444761660663, + 0.04757900742220954 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9466197.532085942, + "scoreError" : 123449.88258417205, + "scoreConfidence" : [ + 9342747.64950177, + 9589647.414670113 + ], + "scorePercentiles" : { + "0.0" : 9371300.07022472, + "50.0" : 9485310.44549763, + "90.0" : 9569203.46462715, + "95.0" : 9569203.46462715, + "99.0" : 9569203.46462715, + "99.9" : 9569203.46462715, + "99.99" : 9569203.46462715, + "99.999" : 9569203.46462715, + "99.9999" : 9569203.46462715, + "100.0" : 9569203.46462715 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9371300.07022472, + 9371471.336142322, + 9412303.88052681 + ], + [ + 9485310.44549763, + 9489903.88235294, + 9427795.868991517 + ], + [ + 9569203.46462715, + 9531204.40952381, + 9537284.43088656 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-03-24T01:13:10Z-ae7279fa86294a4250c1df7bbf056a940e80459c-jdk17.json b/performance-results/2025-03-24T01:13:10Z-ae7279fa86294a4250c1df7bbf056a940e80459c-jdk17.json new file mode 100644 index 0000000000..e2485a8d00 --- /dev/null +++ b/performance-results/2025-03-24T01:13:10Z-ae7279fa86294a4250c1df7bbf056a940e80459c-jdk17.json @@ -0,0 +1,1310 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.406454124310017, + "scoreError" : 0.018858190056667414, + "scoreConfidence" : [ + 3.3875959342533495, + 3.4253123143666846 + ], + "scorePercentiles" : { + "0.0" : 3.403381953657993, + "50.0" : 3.406207135056139, + "90.0" : 3.410020273469797, + "95.0" : 3.410020273469797, + "99.0" : 3.410020273469797, + "99.9" : 3.410020273469797, + "99.99" : 3.410020273469797, + "99.999" : 3.410020273469797, + "99.9999" : 3.410020273469797, + "100.0" : 3.410020273469797 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.403381953657993, + 3.407486239518625 + ], + [ + 3.404928030593653, + 3.410020273469797 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7214546892881701, + "scoreError" : 0.004938647272620143, + "scoreConfidence" : [ + 1.71651604201555, + 1.7263933365607902 + ], + "scorePercentiles" : { + "0.0" : 1.7204864939331292, + "50.0" : 1.7215383639780086, + "90.0" : 1.7222555352635336, + "95.0" : 1.7222555352635336, + "99.0" : 1.7222555352635336, + "99.9" : 1.7222555352635336, + "99.99" : 1.7222555352635336, + "99.999" : 1.7222555352635336, + "99.9999" : 1.7222555352635336, + "100.0" : 1.7222555352635336 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7212559407094044, + 1.7204864939331292 + ], + [ + 1.721820787246613, + 1.7222555352635336 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8668132758292565, + "scoreError" : 0.008547982869116547, + "scoreConfidence" : [ + 0.85826529296014, + 0.875361258698373 + ], + "scorePercentiles" : { + "0.0" : 0.8658233476391417, + "50.0" : 0.8663400506622068, + "90.0" : 0.8687496543534708, + "95.0" : 0.8687496543534708, + "99.0" : 0.8687496543534708, + "99.9" : 0.8687496543534708, + "99.99" : 0.8687496543534708, + "99.999" : 0.8687496543534708, + "99.9999" : 0.8687496543534708, + "100.0" : 0.8687496543534708 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8658233476391417, + 0.8661502169712597 + ], + [ + 0.8665298843531537, + 0.8687496543534708 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 15.902287964479932, + "scoreError" : 0.11396164265965075, + "scoreConfidence" : [ + 15.78832632182028, + 16.01624960713958 + ], + "scorePercentiles" : { + "0.0" : 15.80922986452746, + "50.0" : 15.920960661790467, + "90.0" : 15.97118075881037, + "95.0" : 15.97118075881037, + "99.0" : 15.97118075881037, + "99.9" : 15.97118075881037, + "99.99" : 15.97118075881037, + "99.999" : 15.97118075881037, + "99.9999" : 15.97118075881037, + "100.0" : 15.97118075881037 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 15.80922986452746, + 15.824703875481319, + 15.820446126136925 + ], + [ + 15.97118075881037, + 15.956354305652036, + 15.967698445224553 + ], + [ + 15.892708365722527, + 15.920960661790467, + 15.957309276973744 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2722.266736729774, + "scoreError" : 105.57849040404129, + "scoreConfidence" : [ + 2616.688246325733, + 2827.845227133815 + ], + "scorePercentiles" : { + "0.0" : 2636.873921470413, + "50.0" : 2760.8545369376047, + "90.0" : 2772.0616199852557, + "95.0" : 2772.0616199852557, + "99.0" : 2772.0616199852557, + "99.9" : 2772.0616199852557, + "99.99" : 2772.0616199852557, + "99.999" : 2772.0616199852557, + "99.9999" : 2772.0616199852557, + "100.0" : 2772.0616199852557 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2636.873921470413, + 2642.265641869794, + 2636.9323275347615 + ], + [ + 2765.7734690069874, + 2760.8545369376047, + 2772.0616199852557 + ], + [ + 2756.996665783692, + 2764.59089597599, + 2764.051552003467 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 69403.28294159488, + "scoreError" : 1789.5098351053073, + "scoreConfidence" : [ + 67613.77310648958, + 71192.79277670018 + ], + "scorePercentiles" : { + "0.0" : 68148.26382761766, + "50.0" : 69446.16304178763, + "90.0" : 70726.5839917201, + "95.0" : 70726.5839917201, + "99.0" : 70726.5839917201, + "99.9" : 70726.5839917201, + "99.99" : 70726.5839917201, + "99.999" : 70726.5839917201, + "99.9999" : 70726.5839917201, + "100.0" : 70726.5839917201 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 69465.85758059853, + 69446.16304178763, + 68976.76943002627 + ], + [ + 68304.00362996088, + 68148.26382761766, + 68275.46953815382 + ], + [ + 70726.5839917201, + 70682.72282740971, + 70603.71260707919 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 335.70220206197814, + "scoreError" : 15.07249257701705, + "scoreConfidence" : [ + 320.6297094849611, + 350.7746946389952 + ], + "scorePercentiles" : { + "0.0" : 327.22299189736594, + "50.0" : 332.9895061687026, + "90.0" : 347.9638389367264, + "95.0" : 347.9638389367264, + "99.0" : 347.9638389367264, + "99.9" : 347.9638389367264, + "99.99" : 347.9638389367264, + "99.999" : 347.9638389367264, + "99.9999" : 347.9638389367264, + "100.0" : 347.9638389367264 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 346.6069929006137, + 347.9638389367264, + 347.28162821148885 + ], + [ + 333.69198738799884, + 329.7415538701372, + 332.9895061687026 + ], + [ + 327.9921801088395, + 327.22299189736594, + 327.82913907593047 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 103.20240192236119, + "scoreError" : 1.7118826264673341, + "scoreConfidence" : [ + 101.49051929589386, + 104.91428454882852 + ], + "scorePercentiles" : { + "0.0" : 101.86121014089116, + "50.0" : 103.17117821314267, + "90.0" : 104.71944989338951, + "95.0" : 104.71944989338951, + "99.0" : 104.71944989338951, + "99.9" : 104.71944989338951, + "99.99" : 104.71944989338951, + "99.999" : 104.71944989338951, + "99.9999" : 104.71944989338951, + "100.0" : 104.71944989338951 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 103.14285113507162, + 103.17117821314267, + 103.41142732656795 + ], + [ + 102.26046497937386, + 101.86121014089116, + 101.98306700690846 + ], + [ + 104.00069533126559, + 104.27127327463997, + 104.71944989338951 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06280098304120152, + "scoreError" : 3.937176959420289E-4, + "scoreConfidence" : [ + 0.06240726534525949, + 0.06319470073714355 + ], + "scorePercentiles" : { + "0.0" : 0.06254160231025166, + "50.0" : 0.06279172655234555, + "90.0" : 0.06323299884917925, + "95.0" : 0.06323299884917925, + "99.0" : 0.06323299884917925, + "99.9" : 0.06323299884917925, + "99.99" : 0.06323299884917925, + "99.999" : 0.06323299884917925, + "99.9999" : 0.06323299884917925, + "100.0" : 0.06323299884917925 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06254160231025166, + 0.06256130020144389, + 0.06289950600052835 + ], + [ + 0.06279268673904444, + 0.06279172655234555, + 0.0625852339908877 + ], + [ + 0.06323299884917925, + 0.06306160496793356, + 0.06274218775919942 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.800666345175178E-4, + "scoreError" : 1.4269686166394017E-5, + "scoreConfidence" : [ + 3.657969483511238E-4, + 3.9433632068391184E-4 + ], + "scorePercentiles" : { + "0.0" : 3.683397532387197E-4, + "50.0" : 3.854766220563561E-4, + "90.0" : 3.8654012930314224E-4, + "95.0" : 3.8654012930314224E-4, + "99.0" : 3.8654012930314224E-4, + "99.9" : 3.8654012930314224E-4, + "99.99" : 3.8654012930314224E-4, + "99.999" : 3.8654012930314224E-4, + "99.9999" : 3.8654012930314224E-4, + "100.0" : 3.8654012930314224E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.859636843167263E-4, + 3.8455198181245204E-4, + 3.854766220563561E-4 + ], + [ + 3.6918629544099645E-4, + 3.6879014199807185E-4, + 3.683397532387197E-4 + ], + [ + 3.8654012930314224E-4, + 3.8552127057348224E-4, + 3.8622983191771357E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.01422155170621673, + "scoreError" : 1.222545120086124E-4, + "scoreConfidence" : [ + 0.014099297194208117, + 0.014343806218225343 + ], + "scorePercentiles" : { + "0.0" : 0.014122907994599466, + "50.0" : 0.0142476932221646, + "90.0" : 0.014300206638362132, + "95.0" : 0.014300206638362132, + "99.0" : 0.014300206638362132, + "99.9" : 0.014300206638362132, + "99.99" : 0.014300206638362132, + "99.999" : 0.014300206638362132, + "99.9999" : 0.014300206638362132, + "100.0" : 0.014300206638362132 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014255982918679112, + 0.014234981336734506, + 0.0142476932221646 + ], + [ + 0.01412348233458089, + 0.014139337159864547, + 0.014122907994599466 + ], + [ + 0.014300206638362132, + 0.01428836946243565, + 0.014281004288529646 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9803882629131864, + "scoreError" : 0.020658568420889065, + "scoreConfidence" : [ + 0.9597296944922973, + 1.0010468313340755 + ], + "scorePercentiles" : { + "0.0" : 0.9592676801918465, + "50.0" : 0.9825492621340145, + "90.0" : 0.9934468711632065, + "95.0" : 0.9934468711632065, + "99.0" : 0.9934468711632065, + "99.9" : 0.9934468711632065, + "99.99" : 0.9934468711632065, + "99.999" : 0.9934468711632065, + "99.9999" : 0.9934468711632065, + "100.0" : 0.9934468711632065 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9934468711632065, + 0.9888148557445126, + 0.9868741706137754 + ], + [ + 0.9825492621340145, + 0.9926531631761787, + 0.9820926468624177 + ], + [ + 0.9592676801918465, + 0.9635445763561037, + 0.9742511399766218 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.013139045113127988, + "scoreError" : 8.038683793137916E-4, + "scoreConfidence" : [ + 0.012335176733814197, + 0.01394291349244178 + ], + "scorePercentiles" : { + "0.0" : 0.012814005489380022, + "50.0" : 0.013142212237676986, + "90.0" : 0.013427707323033625, + "95.0" : 0.013427707323033625, + "99.0" : 0.013427707323033625, + "99.9" : 0.013427707323033625, + "99.99" : 0.013427707323033625, + "99.999" : 0.013427707323033625, + "99.9999" : 0.013427707323033625, + "100.0" : 0.013427707323033625 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013369222135175747, + 0.013397351988253483, + 0.013427707323033625 + ], + [ + 0.012814005489380022, + 0.012915202340178225, + 0.012910781402746829 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.840400281821194, + "scoreError" : 0.07710475631475237, + "scoreConfidence" : [ + 3.7632955255064418, + 3.9175050381359466 + ], + "scorePercentiles" : { + "0.0" : 3.7997022750759877, + "50.0" : 3.8363600249409693, + "90.0" : 3.8819478875096975, + "95.0" : 3.8819478875096975, + "99.0" : 3.8819478875096975, + "99.9" : 3.8819478875096975, + "99.99" : 3.8819478875096975, + "99.999" : 3.8819478875096975, + "99.9999" : 3.8819478875096975, + "100.0" : 3.8819478875096975 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.834708003834356, + 3.8819478875096975, + 3.8569279853508096 + ], + [ + 3.7997022750759877, + 3.831103493108729, + 3.8380120460475826 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.961820214803675, + "scoreError" : 0.04684169380098943, + "scoreConfidence" : [ + 2.914978521002686, + 3.0086619086046644 + ], + "scorePercentiles" : { + "0.0" : 2.9317596974494284, + "50.0" : 2.9511743021540275, + "90.0" : 2.9983626555755394, + "95.0" : 2.9983626555755394, + "99.0" : 2.9983626555755394, + "99.9" : 2.9983626555755394, + "99.99" : 2.9983626555755394, + "99.999" : 2.9983626555755394, + "99.9999" : 2.9983626555755394, + "100.0" : 2.9983626555755394 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.9317596974494284, + 2.9345205044014087, + 2.936623438344099 + ], + [ + 2.9511743021540275, + 2.947147355922216, + 2.966120393534994 + ], + [ + 2.994105714071856, + 2.9983626555755394, + 2.996567871779509 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1757288501955799, + "scoreError" : 0.00513685216512485, + "scoreConfidence" : [ + 0.17059199803045505, + 0.18086570236070476 + ], + "scorePercentiles" : { + "0.0" : 0.17125731531176683, + "50.0" : 0.17670132100576033, + "90.0" : 0.17882767461239962, + "95.0" : 0.17882767461239962, + "99.0" : 0.17882767461239962, + "99.9" : 0.17882767461239962, + "99.99" : 0.17882767461239962, + "99.999" : 0.17882767461239962, + "99.9999" : 0.17882767461239962, + "100.0" : 0.17882767461239962 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1769569301741223, + 0.17670132100576033, + 0.17669613964131106 + ], + [ + 0.17275412223815365, + 0.1714712559499314, + 0.17125731531176683 + ], + [ + 0.17882767461239962, + 0.17852007883180407, + 0.17837481399496993 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.34706825206330116, + "scoreError" : 0.001580435927439251, + "scoreConfidence" : [ + 0.34548781613586194, + 0.3486486879907404 + ], + "scorePercentiles" : { + "0.0" : 0.3460187886924328, + "50.0" : 0.34727262110636525, + "90.0" : 0.3483138171780851, + "95.0" : 0.3483138171780851, + "99.0" : 0.3483138171780851, + "99.9" : 0.3483138171780851, + "99.99" : 0.3483138171780851, + "99.999" : 0.3483138171780851, + "99.9999" : 0.3483138171780851, + "100.0" : 0.3483138171780851 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.34613291267176627, + 0.3461400510193486, + 0.3460187886924328 + ], + [ + 0.34794822761908073, + 0.34727262110636525, + 0.3476111665334214 + ], + [ + 0.3483138171780851, + 0.34620084740012463, + 0.34797583634908485 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15901443524647912, + "scoreError" : 0.006788045196272182, + "scoreConfidence" : [ + 0.15222639005020694, + 0.1658024804427513 + ], + "scorePercentiles" : { + "0.0" : 0.15484666245490158, + "50.0" : 0.15790013287121835, + "90.0" : 0.1641328795627626, + "95.0" : 0.1641328795627626, + "99.0" : 0.1641328795627626, + "99.9" : 0.1641328795627626, + "99.99" : 0.1641328795627626, + "99.999" : 0.1641328795627626, + "99.9999" : 0.1641328795627626, + "100.0" : 0.1641328795627626 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15799359083655898, + 0.1578523076935219, + 0.15790013287121835 + ], + [ + 0.1641328795627626, + 0.16412531186607582, + 0.16412967892136748 + ], + [ + 0.15502788157690758, + 0.15512147143499774, + 0.15484666245490158 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.39415298606633214, + "scoreError" : 0.0073863990684665615, + "scoreConfidence" : [ + 0.3867665869978656, + 0.4015393851347987 + ], + "scorePercentiles" : { + "0.0" : 0.387162633255904, + "50.0" : 0.3951555636780337, + "90.0" : 0.4017765369224588, + "95.0" : 0.4017765369224588, + "99.0" : 0.4017765369224588, + "99.9" : 0.4017765369224588, + "99.99" : 0.4017765369224588, + "99.999" : 0.4017765369224588, + "99.9999" : 0.4017765369224588, + "100.0" : 0.4017765369224588 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3951555636780337, + 0.387162633255904, + 0.38800434348568325 + ], + [ + 0.39662847281164476, + 0.3953628665691468, + 0.3951758637082115 + ], + [ + 0.4017765369224588, + 0.39381700567085415, + 0.39429358849505186 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15758703083047398, + "scoreError" : 0.005201091754230971, + "scoreConfidence" : [ + 0.152385939076243, + 0.16278812258470496 + ], + "scorePercentiles" : { + "0.0" : 0.15472419694273823, + "50.0" : 0.15595056361112844, + "90.0" : 0.1617285585367037, + "95.0" : 0.1617285585367037, + "99.0" : 0.1617285585367037, + "99.9" : 0.1617285585367037, + "99.99" : 0.1617285585367037, + "99.999" : 0.1617285585367037, + "99.9999" : 0.1617285585367037, + "100.0" : 0.1617285585367037 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15483804412789348, + 0.1558617654650021, + 0.15472419694273823 + ], + [ + 0.16167252702287607, + 0.1617285585367037, + 0.16159403569524117 + ], + [ + 0.15595056361112844, + 0.15604103013091578, + 0.15587255594176694 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.048128917200255104, + "scoreError" : 0.001081398938893643, + "scoreConfidence" : [ + 0.047047518261361464, + 0.049210316139148745 + ], + "scorePercentiles" : { + "0.0" : 0.04691966639610009, + "50.0" : 0.048270016783156025, + "90.0" : 0.049073969491159455, + "95.0" : 0.049073969491159455, + "99.0" : 0.049073969491159455, + "99.9" : 0.049073969491159455, + "99.99" : 0.049073969491159455, + "99.999" : 0.049073969491159455, + "99.9999" : 0.049073969491159455, + "100.0" : 0.049073969491159455 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.047598662782672434, + 0.04691966639610009, + 0.04762934602158527 + ], + [ + 0.049073969491159455, + 0.048270016783156025, + 0.048181095204598345 + ], + [ + 0.04849201205981903, + 0.04850977500036382, + 0.04848571106284152 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9451596.3953978, + "scoreError" : 178389.00774169658, + "scoreConfidence" : [ + 9273207.387656102, + 9629985.403139496 + ], + "scorePercentiles" : { + "0.0" : 9312494.095903166, + "50.0" : 9479242.483412322, + "90.0" : 9571400.162679426, + "95.0" : 9571400.162679426, + "99.0" : 9571400.162679426, + "99.9" : 9571400.162679426, + "99.99" : 9571400.162679426, + "99.999" : 9571400.162679426, + "99.9999" : 9571400.162679426, + "100.0" : 9571400.162679426 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9479242.483412322, + 9467233.308420056, + 9499272.824311491 + ], + [ + 9528669.641904762, + 9571400.162679426, + 9564784.041108986 + ], + [ + 9312494.095903166, + 9328251.902143523, + 9313019.098696461 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-03-24T01:13:31Z-ae7279fa86294a4250c1df7bbf056a940e80459c-jdk17.json b/performance-results/2025-03-24T01:13:31Z-ae7279fa86294a4250c1df7bbf056a940e80459c-jdk17.json new file mode 100644 index 0000000000..b5cdb60176 --- /dev/null +++ b/performance-results/2025-03-24T01:13:31Z-ae7279fa86294a4250c1df7bbf056a940e80459c-jdk17.json @@ -0,0 +1,1310 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.422918226767772, + "scoreError" : 0.018333149688673566, + "scoreConfidence" : [ + 3.404585077079098, + 3.4412513764564454 + ], + "scorePercentiles" : { + "0.0" : 3.419464583762408, + "50.0" : 3.422947389990944, + "90.0" : 3.426313543326791, + "95.0" : 3.426313543326791, + "99.0" : 3.426313543326791, + "99.9" : 3.426313543326791, + "99.99" : 3.426313543326791, + "99.999" : 3.426313543326791, + "99.9999" : 3.426313543326791, + "100.0" : 3.426313543326791 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.419464583762408, + 3.426313543326791 + ], + [ + 3.4223602521562295, + 3.4235345278256584 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7248233246272615, + "scoreError" : 0.023643110989649992, + "scoreConfidence" : [ + 1.7011802136376115, + 1.7484664356169115 + ], + "scorePercentiles" : { + "0.0" : 1.7201482102136298, + "50.0" : 1.7253085313214631, + "90.0" : 1.7285280256524898, + "95.0" : 1.7285280256524898, + "99.0" : 1.7285280256524898, + "99.9" : 1.7285280256524898, + "99.99" : 1.7285280256524898, + "99.999" : 1.7285280256524898, + "99.9999" : 1.7285280256524898, + "100.0" : 1.7285280256524898 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7201482102136298, + 1.723875345355189 + ], + [ + 1.7267417172877373, + 1.7285280256524898 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8691911317000947, + "scoreError" : 0.002655907669193238, + "scoreConfidence" : [ + 0.8665352240309014, + 0.8718470393692879 + ], + "scorePercentiles" : { + "0.0" : 0.8686357338501872, + "50.0" : 0.869250861572249, + "90.0" : 0.8696270698056936, + "95.0" : 0.8696270698056936, + "99.0" : 0.8696270698056936, + "99.9" : 0.8696270698056936, + "99.99" : 0.8696270698056936, + "99.999" : 0.8696270698056936, + "99.9999" : 0.8696270698056936, + "100.0" : 0.8696270698056936 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8686357338501872, + 0.8696270698056936 + ], + [ + 0.869274635006496, + 0.869227088138002 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.269713337427504, + "scoreError" : 0.14438877525995078, + "scoreConfidence" : [ + 16.125324562167553, + 16.414102112687456 + ], + "scorePercentiles" : { + "0.0" : 16.117858602831706, + "50.0" : 16.322456788864862, + "90.0" : 16.348479604511603, + "95.0" : 16.348479604511603, + "99.0" : 16.348479604511603, + "99.9" : 16.348479604511603, + "99.99" : 16.348479604511603, + "99.999" : 16.348479604511603, + "99.9999" : 16.348479604511603, + "100.0" : 16.348479604511603 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.322854104364346, + 16.335474903690017, + 16.348479604511603 + ], + [ + 16.28551807447759, + 16.322456788864862, + 16.331614273616157 + ], + [ + 16.192817675350103, + 16.117858602831706, + 16.170346009141166 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2705.9594158818363, + "scoreError" : 192.99783864660245, + "scoreConfidence" : [ + 2512.961577235234, + 2898.9572545284386 + ], + "scorePercentiles" : { + "0.0" : 2577.247939215522, + "50.0" : 2692.3021417137543, + "90.0" : 2850.8813638762285, + "95.0" : 2850.8813638762285, + "99.0" : 2850.8813638762285, + "99.9" : 2850.8813638762285, + "99.99" : 2850.8813638762285, + "99.999" : 2850.8813638762285, + "99.9999" : 2850.8813638762285, + "100.0" : 2850.8813638762285 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2692.3021417137543, + 2695.2601082938186, + 2691.307173319121 + ], + [ + 2850.8813638762285, + 2843.8230950227876, + 2838.84709036833 + ], + [ + 2577.892907020788, + 2577.247939215522, + 2586.0729241061736 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 70330.90293571194, + "scoreError" : 1814.8467265792697, + "scoreConfidence" : [ + 68516.05620913267, + 72145.74966229121 + ], + "scorePercentiles" : { + "0.0" : 69039.15347272958, + "50.0" : 70411.6312894578, + "90.0" : 71564.1567915699, + "95.0" : 71564.1567915699, + "99.0" : 71564.1567915699, + "99.9" : 71564.1567915699, + "99.99" : 71564.1567915699, + "99.999" : 71564.1567915699, + "99.9999" : 71564.1567915699, + "100.0" : 71564.1567915699 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 69039.15347272958, + 69066.18990884532, + 69044.98069845003 + ], + [ + 71510.90218062312, + 71564.1567915699, + 71545.78744063577 + ], + [ + 70349.9073863051, + 70411.6312894578, + 70445.41725279074 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 357.8932895289724, + "scoreError" : 6.778917399249856, + "scoreConfidence" : [ + 351.11437212972254, + 364.67220692822224 + ], + "scorePercentiles" : { + "0.0" : 354.3820744687182, + "50.0" : 355.97315553038175, + "90.0" : 363.8908628823784, + "95.0" : 363.8908628823784, + "99.0" : 363.8908628823784, + "99.9" : 363.8908628823784, + "99.99" : 363.8908628823784, + "99.999" : 363.8908628823784, + "99.9999" : 363.8908628823784, + "100.0" : 363.8908628823784 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 354.9125115105426, + 354.68922837188575, + 354.3820744687182 + ], + [ + 355.97315553038175, + 356.6277140587543, + 354.96717029330796 + ], + [ + 363.4166848352348, + 363.8908628823784, + 362.1802038095481 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 109.31292831463014, + "scoreError" : 1.96493773221573, + "scoreConfidence" : [ + 107.34799058241441, + 111.27786604684587 + ], + "scorePercentiles" : { + "0.0" : 107.69539614027994, + "50.0" : 109.76809662718475, + "90.0" : 110.36454561045173, + "95.0" : 110.36454561045173, + "99.0" : 110.36454561045173, + "99.9" : 110.36454561045173, + "99.99" : 110.36454561045173, + "99.999" : 110.36454561045173, + "99.9999" : 110.36454561045173, + "100.0" : 110.36454561045173 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 107.69539614027994, + 107.86202400330613, + 107.81319167511278 + ], + [ + 110.34968849825734, + 110.36069523704057, + 110.36454561045173 + ], + [ + 109.75382660904711, + 109.76809662718475, + 109.84889043099095 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06115231415443667, + "scoreError" : 2.7757492177696216E-4, + "scoreConfidence" : [ + 0.06087473923265971, + 0.061429889076213634 + ], + "scorePercentiles" : { + "0.0" : 0.06093074006080805, + "50.0" : 0.061178577077903806, + "90.0" : 0.061452698443424346, + "95.0" : 0.061452698443424346, + "99.0" : 0.061452698443424346, + "99.9" : 0.061452698443424346, + "99.99" : 0.061452698443424346, + "99.999" : 0.061452698443424346, + "99.9999" : 0.061452698443424346, + "100.0" : 0.061452698443424346 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06108022874890821, + 0.06096968443097709, + 0.06093074006080805 + ], + [ + 0.061178577077903806, + 0.0612031103474445, + 0.061452698443424346 + ], + [ + 0.06119962405600911, + 0.0613076285420013, + 0.061048535682453636 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.6351884197456766E-4, + "scoreError" : 1.1708507477707113E-5, + "scoreConfidence" : [ + 3.5181033449686053E-4, + 3.752273494522748E-4 + ], + "scorePercentiles" : { + "0.0" : 3.542770620589208E-4, + "50.0" : 3.669356435358375E-4, + "90.0" : 3.6963335624417025E-4, + "95.0" : 3.6963335624417025E-4, + "99.0" : 3.6963335624417025E-4, + "99.9" : 3.6963335624417025E-4, + "99.99" : 3.6963335624417025E-4, + "99.999" : 3.6963335624417025E-4, + "99.9999" : 3.6963335624417025E-4, + "100.0" : 3.6963335624417025E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.693484092028624E-4, + 3.6963335624417025E-4, + 3.6946049352507286E-4 + ], + [ + 3.542770620589208E-4, + 3.5438673282758176E-4, + 3.5446827063455045E-4 + ], + [ + 3.660474383407284E-4, + 3.669356435358375E-4, + 3.6711217140138446E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014040306639199382, + "scoreError" : 2.189874459994869E-4, + "scoreConfidence" : [ + 0.013821319193199894, + 0.01425929408519887 + ], + "scorePercentiles" : { + "0.0" : 0.013873872933511657, + "50.0" : 0.014066023999178553, + "90.0" : 0.014185114222814207, + "95.0" : 0.014185114222814207, + "99.0" : 0.014185114222814207, + "99.9" : 0.014185114222814207, + "99.99" : 0.014185114222814207, + "99.999" : 0.014185114222814207, + "99.9999" : 0.014185114222814207, + "100.0" : 0.014185114222814207 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013873872933511657, + 0.013874219684504072, + 0.013887816720458182 + ], + [ + 0.014062647974788746, + 0.014070673822931002, + 0.014066023999178553 + ], + [ + 0.014172631385231997, + 0.014185114222814207, + 0.014169759009376014 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9742580802486356, + "scoreError" : 0.025198240489418596, + "scoreConfidence" : [ + 0.949059839759217, + 0.9994563207380541 + ], + "scorePercentiles" : { + "0.0" : 0.9591472857964899, + "50.0" : 0.9688832565394303, + "90.0" : 0.9961906805458711, + "95.0" : 0.9961906805458711, + "99.0" : 0.9961906805458711, + "99.9" : 0.9961906805458711, + "99.99" : 0.9961906805458711, + "99.999" : 0.9961906805458711, + "99.9999" : 0.9961906805458711, + "100.0" : 0.9961906805458711 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9896558599703117, + 0.9947686386153387, + 0.9961906805458711 + ], + [ + 0.9688832565394303, + 0.9673317737473399, + 0.9690521334302326 + ], + [ + 0.9591472857964899, + 0.9638375641865844, + 0.9594555294061211 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.01304551071126541, + "scoreError" : 4.5378102190033647E-4, + "scoreConfidence" : [ + 0.012591729689365073, + 0.013499291733165745 + ], + "scorePercentiles" : { + "0.0" : 0.012846069177073887, + "50.0" : 0.0130605302303139, + "90.0" : 0.013192607064739887, + "95.0" : 0.013192607064739887, + "99.0" : 0.013192607064739887, + "99.9" : 0.013192607064739887, + "99.99" : 0.013192607064739887, + "99.999" : 0.013192607064739887, + "99.9999" : 0.013192607064739887, + "100.0" : 0.013192607064739887 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.012846069177073887, + 0.012922527678061463, + 0.012932401976023898 + ], + [ + 0.013188658484603901, + 0.013192607064739887, + 0.013190799887089414 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.6124515862232065, + "scoreError" : 0.3329195335223676, + "scoreConfidence" : [ + 3.279532052700839, + 3.945371119745574 + ], + "scorePercentiles" : { + "0.0" : 3.4783565465924897, + "50.0" : 3.6183021933966506, + "90.0" : 3.7219963913690477, + "95.0" : 3.7219963913690477, + "99.0" : 3.7219963913690477, + "99.9" : 3.7219963913690477, + "99.99" : 3.7219963913690477, + "99.999" : 3.7219963913690477, + "99.9999" : 3.7219963913690477, + "100.0" : 3.7219963913690477 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.4783565465924897, + 3.51792920745429, + 3.518397646272855 + ], + [ + 3.7198229851301114, + 3.7219963913690477, + 3.718206740520446 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.820564883208848, + "scoreError" : 0.07635244025538424, + "scoreConfidence" : [ + 2.744212442953464, + 2.896917323464232 + ], + "scorePercentiles" : { + "0.0" : 2.7563458605676496, + "50.0" : 2.8488649763600113, + "90.0" : 2.856326268989149, + "95.0" : 2.856326268989149, + "99.0" : 2.856326268989149, + "99.9" : 2.856326268989149, + "99.99" : 2.856326268989149, + "99.999" : 2.856326268989149, + "99.9999" : 2.856326268989149, + "100.0" : 2.856326268989149 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.8540345976027397, + 2.853888280171184, + 2.8488649763600113 + ], + [ + 2.856326268989149, + 2.8520386968919302, + 2.8387283894408175 + ], + [ + 2.763057338121547, + 2.7617995407346037, + 2.7563458605676496 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.18422658410785747, + "scoreError" : 0.025242427508284763, + "scoreConfidence" : [ + 0.1589841565995727, + 0.20946901161614223 + ], + "scorePercentiles" : { + "0.0" : 0.1730692323907099, + "50.0" : 0.1752739016387696, + "90.0" : 0.20461711738587768, + "95.0" : 0.20461711738587768, + "99.0" : 0.20461711738587768, + "99.9" : 0.20461711738587768, + "99.99" : 0.20461711738587768, + "99.999" : 0.20461711738587768, + "99.9999" : 0.20461711738587768, + "100.0" : 0.20461711738587768 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1732926723621051, + 0.1730692323907099, + 0.17307003277894117 + ], + [ + 0.1751855069546633, + 0.17550739095105214, + 0.1752739016387696 + ], + [ + 0.20461711738587768, + 0.2041418652295507, + 0.20388153727904748 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3313797971859773, + "scoreError" : 0.020569230998265856, + "scoreConfidence" : [ + 0.31081056618771147, + 0.3519490281842432 + ], + "scorePercentiles" : { + "0.0" : 0.3170424942616194, + "50.0" : 0.33000916014916015, + "90.0" : 0.3460290239100346, + "95.0" : 0.3460290239100346, + "99.0" : 0.3460290239100346, + "99.9" : 0.3460290239100346, + "99.99" : 0.3460290239100346, + "99.999" : 0.3460290239100346, + "99.9999" : 0.3460290239100346, + "100.0" : 0.3460290239100346 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.33180670217989977, + 0.3296485476661392, + 0.33000916014916015 + ], + [ + 0.31890494929523566, + 0.3172751786541451, + 0.3170424942616194 + ], + [ + 0.3460290239100346, + 0.34592098360372203, + 0.3457811349538398 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1549902340662419, + "scoreError" : 0.003544496616706501, + "scoreConfidence" : [ + 0.1514457374495354, + 0.1585347306829484 + ], + "scorePercentiles" : { + "0.0" : 0.15323426649913424, + "50.0" : 0.15390085390439842, + "90.0" : 0.15797860720999668, + "95.0" : 0.15797860720999668, + "99.0" : 0.15797860720999668, + "99.9" : 0.15797860720999668, + "99.99" : 0.15797860720999668, + "99.999" : 0.15797860720999668, + "99.9999" : 0.15797860720999668, + "100.0" : 0.15797860720999668 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15344080177374067, + 0.1533190904407819, + 0.15323426649913424 + ], + [ + 0.15797860720999668, + 0.15759360946167422, + 0.1577704870314275 + ], + [ + 0.15390085390439842, + 0.15396346709878064, + 0.15371092317624274 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.397097650470543, + "scoreError" : 0.024930142478511705, + "scoreConfidence" : [ + 0.3721675079920313, + 0.42202779294905474 + ], + "scorePercentiles" : { + "0.0" : 0.38140312475209764, + "50.0" : 0.39157604408943186, + "90.0" : 0.4164570443509766, + "95.0" : 0.4164570443509766, + "99.0" : 0.4164570443509766, + "99.9" : 0.4164570443509766, + "99.99" : 0.4164570443509766, + "99.999" : 0.4164570443509766, + "99.9999" : 0.4164570443509766, + "100.0" : 0.4164570443509766 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.4161600940491053, + 0.41621297852416034, + 0.4164570443509766 + ], + [ + 0.39187239076766334, + 0.39157604408943186, + 0.3909906981272237 + ], + [ + 0.3859372891710404, + 0.38326919040318874, + 0.38140312475209764 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15905829126011567, + "scoreError" : 0.00219234128808664, + "scoreConfidence" : [ + 0.15686594997202902, + 0.16125063254820232 + ], + "scorePercentiles" : { + "0.0" : 0.1576184559467894, + "50.0" : 0.15896080007947863, + "90.0" : 0.1610654456255637, + "95.0" : 0.1610654456255637, + "99.0" : 0.1610654456255637, + "99.9" : 0.1610654456255637, + "99.99" : 0.1610654456255637, + "99.999" : 0.1610654456255637, + "99.9999" : 0.1610654456255637, + "100.0" : 0.1610654456255637 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15821193833059105, + 0.1578200735433369, + 0.1576240174644957 + ], + [ + 0.16021311116985484, + 0.15896080007947863, + 0.1576184559467894 + ], + [ + 0.1610654456255637, + 0.16019364413866016, + 0.15981713504227063 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.047881073265585855, + "scoreError" : 7.391661947761921E-4, + "scoreConfidence" : [ + 0.04714190707080966, + 0.04862023946036205 + ], + "scorePercentiles" : { + "0.0" : 0.04747618604695326, + "50.0" : 0.04758646360404859, + "90.0" : 0.04868108797986584, + "95.0" : 0.04868108797986584, + "99.0" : 0.04868108797986584, + "99.9" : 0.04868108797986584, + "99.99" : 0.04868108797986584, + "99.999" : 0.04868108797986584, + "99.9999" : 0.04868108797986584, + "100.0" : 0.04868108797986584 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.047553612824073194, + 0.04753731592858094, + 0.04747618604695326 + ], + [ + 0.04868108797986584, + 0.04828521061678561, + 0.048222274048105855 + ], + [ + 0.04805520271315781, + 0.04758646360404859, + 0.04753230562870153 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9271893.135588221, + "scoreError" : 226020.91233735438, + "scoreConfidence" : [ + 9045872.223250866, + 9497914.047925577 + ], + "scorePercentiles" : { + "0.0" : 9089321.821071753, + "50.0" : 9271490.395736793, + "90.0" : 9463506.104068117, + "95.0" : 9463506.104068117, + "99.0" : 9463506.104068117, + "99.9" : 9463506.104068117, + "99.99" : 9463506.104068117, + "99.999" : 9463506.104068117, + "99.9999" : 9463506.104068117, + "100.0" : 9463506.104068117 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9463506.104068117, + 9412204.553151459, + 9399670.632518796 + ], + [ + 9271490.395736793, + 9270540.29935125, + 9273005.521779425 + ], + [ + 9148431.066727605, + 9118867.825888788, + 9089321.821071753 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-03-24T01:13:36Z-ae7279fa86294a4250c1df7bbf056a940e80459c-jdk17.json b/performance-results/2025-03-24T01:13:36Z-ae7279fa86294a4250c1df7bbf056a940e80459c-jdk17.json new file mode 100644 index 0000000000..fba2b47404 --- /dev/null +++ b/performance-results/2025-03-24T01:13:36Z-ae7279fa86294a4250c1df7bbf056a940e80459c-jdk17.json @@ -0,0 +1,1310 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4255027365084705, + "scoreError" : 0.015268297622684238, + "scoreConfidence" : [ + 3.4102344388857864, + 3.4407710341311546 + ], + "scorePercentiles" : { + "0.0" : 3.423680586656175, + "50.0" : 3.4247710163271283, + "90.0" : 3.42878832672345, + "95.0" : 3.42878832672345, + "99.0" : 3.42878832672345, + "99.9" : 3.42878832672345, + "99.99" : 3.42878832672345, + "99.999" : 3.42878832672345, + "99.9999" : 3.42878832672345, + "100.0" : 3.42878832672345 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4256547896178025, + 3.42878832672345 + ], + [ + 3.423680586656175, + 3.423887243036454 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.72787103241473, + "scoreError" : 0.015311326619137618, + "scoreConfidence" : [ + 1.7125597057955924, + 1.7431823590338675 + ], + "scorePercentiles" : { + "0.0" : 1.7258301618950143, + "50.0" : 1.72761015824926, + "90.0" : 1.7304336512653857, + "95.0" : 1.7304336512653857, + "99.0" : 1.7304336512653857, + "99.9" : 1.7304336512653857, + "99.99" : 1.7304336512653857, + "99.999" : 1.7304336512653857, + "99.9999" : 1.7304336512653857, + "100.0" : 1.7304336512653857 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.729338528385661, + 1.7304336512653857 + ], + [ + 1.7258301618950143, + 1.725881788112859 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8675124306454595, + "scoreError" : 0.005320038114788069, + "scoreConfidence" : [ + 0.8621923925306714, + 0.8728324687602476 + ], + "scorePercentiles" : { + "0.0" : 0.8666706939441462, + "50.0" : 0.8675694953743074, + "90.0" : 0.8682400378890769, + "95.0" : 0.8682400378890769, + "99.0" : 0.8682400378890769, + "99.9" : 0.8682400378890769, + "99.99" : 0.8682400378890769, + "99.999" : 0.8682400378890769, + "99.9999" : 0.8682400378890769, + "100.0" : 0.8682400378890769 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8681975610402533, + 0.8669414297083615 + ], + [ + 0.8666706939441462, + 0.8682400378890769 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.08387646024225, + "scoreError" : 0.28169323607593694, + "scoreConfidence" : [ + 15.802183224166315, + 16.36556969631819 + ], + "scorePercentiles" : { + "0.0" : 15.857648305820325, + "50.0" : 16.169853409735502, + "90.0" : 16.220922945381865, + "95.0" : 16.220922945381865, + "99.0" : 16.220922945381865, + "99.9" : 16.220922945381865, + "99.99" : 16.220922945381865, + "99.999" : 16.220922945381865, + "99.9999" : 16.220922945381865, + "100.0" : 16.220922945381865 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 15.86268753833565, + 15.857648305820325, + 15.86481780525936 + ], + [ + 16.220922945381865, + 16.214595465849875, + 16.210400315425794 + ], + [ + 16.169747624196056, + 16.184214732175867, + 16.169853409735502 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2714.00827636627, + "scoreError" : 55.61639089855765, + "scoreConfidence" : [ + 2658.391885467712, + 2769.6246672648276 + ], + "scorePercentiles" : { + "0.0" : 2667.708875949212, + "50.0" : 2717.824085599261, + "90.0" : 2754.3955765089468, + "95.0" : 2754.3955765089468, + "99.0" : 2754.3955765089468, + "99.9" : 2754.3955765089468, + "99.99" : 2754.3955765089468, + "99.999" : 2754.3955765089468, + "99.9999" : 2754.3955765089468, + "100.0" : 2754.3955765089468 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2710.520618895013, + 2717.824085599261, + 2719.7067761834132 + ], + [ + 2683.136600437227, + 2674.865175131134, + 2667.708875949212 + ], + [ + 2749.5732786152225, + 2748.3434999769956, + 2754.3955765089468 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 70426.43446172662, + "scoreError" : 903.3310026109199, + "scoreConfidence" : [ + 69523.1034591157, + 71329.76546433754 + ], + "scorePercentiles" : { + "0.0" : 69722.5379226521, + "50.0" : 70645.27630459232, + "90.0" : 70965.6169677315, + "95.0" : 70965.6169677315, + "99.0" : 70965.6169677315, + "99.9" : 70965.6169677315, + "99.99" : 70965.6169677315, + "99.999" : 70965.6169677315, + "99.9999" : 70965.6169677315, + "100.0" : 70965.6169677315 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 69722.5379226521, + 69731.8772056881, + 69731.03011934547 + ], + [ + 70564.19048055039, + 70645.27630459232, + 70728.42014552624 + ], + [ + 70965.6169677315, + 70872.53267611962, + 70876.42833333378 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 347.15213022456425, + "scoreError" : 5.601239292143671, + "scoreConfidence" : [ + 341.5508909324206, + 352.7533695167079 + ], + "scorePercentiles" : { + "0.0" : 342.43002863553767, + "50.0" : 348.0046593211147, + "90.0" : 350.7291616178739, + "95.0" : 350.7291616178739, + "99.0" : 350.7291616178739, + "99.9" : 350.7291616178739, + "99.99" : 350.7291616178739, + "99.999" : 350.7291616178739, + "99.9999" : 350.7291616178739, + "100.0" : 350.7291616178739 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 350.6492554423494, + 350.7291616178739, + 349.088136414228 + ], + [ + 348.0046593211147, + 349.4400643546579, + 347.65661947655303 + ], + [ + 342.93217357156874, + 343.43907318719454, + 342.43002863553767 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 103.225095253805, + "scoreError" : 2.632840318025602, + "scoreConfidence" : [ + 100.5922549357794, + 105.8579355718306 + ], + "scorePercentiles" : { + "0.0" : 101.82354108992503, + "50.0" : 102.27286704928098, + "90.0" : 105.37862607434907, + "95.0" : 105.37862607434907, + "99.0" : 105.37862607434907, + "99.9" : 105.37862607434907, + "99.99" : 105.37862607434907, + "99.999" : 105.37862607434907, + "99.9999" : 105.37862607434907, + "100.0" : 105.37862607434907 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 101.82354108992503, + 102.14092633561962, + 102.25810535530064 + ], + [ + 105.21616990044764, + 105.31650086545383, + 105.37862607434907 + ], + [ + 102.26552728272861, + 102.35359333113948, + 102.27286704928098 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06230045880514185, + "scoreError" : 7.518182294873389E-4, + "scoreConfidence" : [ + 0.06154864057565451, + 0.06305227703462919 + ], + "scorePercentiles" : { + "0.0" : 0.06176947449890361, + "50.0" : 0.06223176112687626, + "90.0" : 0.06286822427938264, + "95.0" : 0.06286822427938264, + "99.0" : 0.06286822427938264, + "99.9" : 0.06286822427938264, + "99.99" : 0.06286822427938264, + "99.999" : 0.06286822427938264, + "99.9999" : 0.06286822427938264, + "100.0" : 0.06286822427938264 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06281667806351919, + 0.06284513343681657, + 0.06286822427938264 + ], + [ + 0.06177516175562145, + 0.0619247579401693, + 0.06176947449890361 + ], + [ + 0.06223176112687626, + 0.062192614485705226, + 0.06228032365928242 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.784185944753912E-4, + "scoreError" : 2.9961168533700172E-5, + "scoreConfidence" : [ + 3.4845742594169103E-4, + 4.083797630090914E-4 + ], + "scorePercentiles" : { + "0.0" : 3.5462576541199346E-4, + "50.0" : 3.8776968823675393E-4, + "90.0" : 3.932338892053513E-4, + "95.0" : 3.932338892053513E-4, + "99.0" : 3.932338892053513E-4, + "99.9" : 3.932338892053513E-4, + "99.99" : 3.932338892053513E-4, + "99.999" : 3.932338892053513E-4, + "99.9999" : 3.932338892053513E-4, + "100.0" : 3.932338892053513E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.932338892053513E-4, + 3.921218514055642E-4, + 3.9255882731871754E-4 + ], + [ + 3.8776968823675393E-4, + 3.8844496690490987E-4, + 3.871850316723476E-4 + ], + [ + 3.548904501436881E-4, + 3.549368799791953E-4, + 3.5462576541199346E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014112566362291336, + "scoreError" : 1.1457189642839478E-4, + "scoreConfidence" : [ + 0.013997994465862942, + 0.01422713825871973 + ], + "scorePercentiles" : { + "0.0" : 0.014037298399628298, + "50.0" : 0.014102882472316397, + "90.0" : 0.014198602709345268, + "95.0" : 0.014198602709345268, + "99.0" : 0.014198602709345268, + "99.9" : 0.014198602709345268, + "99.99" : 0.014198602709345268, + "99.999" : 0.014198602709345268, + "99.9999" : 0.014198602709345268, + "100.0" : 0.014198602709345268 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.01419368768628965, + 0.01419327041108878, + 0.014198602709345268 + ], + [ + 0.014111649840610857, + 0.014102882472316397, + 0.014096726636716178 + ], + [ + 0.014038897584779789, + 0.014040081519846797, + 0.014037298399628298 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.98631598312936, + "scoreError" : 0.008020690408102148, + "scoreConfidence" : [ + 0.9782952927212578, + 0.9943366735374621 + ], + "scorePercentiles" : { + "0.0" : 0.978657759761229, + "50.0" : 0.9860868756655492, + "90.0" : 0.9935871373075013, + "95.0" : 0.9935871373075013, + "99.0" : 0.9935871373075013, + "99.9" : 0.9935871373075013, + "99.99" : 0.9935871373075013, + "99.999" : 0.9935871373075013, + "99.9999" : 0.9935871373075013, + "100.0" : 0.9935871373075013 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9887167659911024, + 0.9916675884977689, + 0.9851070933806146 + ], + [ + 0.9855722197693899, + 0.9869512607322609, + 0.9860868756655492 + ], + [ + 0.978657759761229, + 0.9804971470588235, + 0.9935871373075013 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.01313144176204755, + "scoreError" : 5.18352424928154E-4, + "scoreConfidence" : [ + 0.012613089337119396, + 0.013649794186975706 + ], + "scorePercentiles" : { + "0.0" : 0.012891570798741814, + "50.0" : 0.013147115764235705, + "90.0" : 0.013308197912812965, + "95.0" : 0.013308197912812965, + "99.0" : 0.013308197912812965, + "99.9" : 0.013308197912812965, + "99.99" : 0.013308197912812965, + "99.999" : 0.013308197912812965, + "99.9999" : 0.013308197912812965, + "100.0" : 0.013308197912812965 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013296880921925651, + 0.013308197912812965, + 0.013281904583173956 + ], + [ + 0.012891570798741814, + 0.012997769410333461, + 0.013012326945297454 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.7079852049983484, + "scoreError" : 0.11627454463127139, + "scoreConfidence" : [ + 3.591710660367077, + 3.82425974962962 + ], + "scorePercentiles" : { + "0.0" : 3.6668081752199413, + "50.0" : 3.695892137459865, + "90.0" : 3.7589851232156275, + "95.0" : 3.7589851232156275, + "99.0" : 3.7589851232156275, + "99.9" : 3.7589851232156275, + "99.99" : 3.7589851232156275, + "99.999" : 3.7589851232156275, + "99.9999" : 3.7589851232156275, + "100.0" : 3.7589851232156275 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.6668081752199413, + 3.6728324199706313, + 3.6832431259204714 + ], + [ + 3.7085411489992586, + 3.7589851232156275, + 3.7575012366641625 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.8926147839484724, + "scoreError" : 0.09645934758523785, + "scoreConfidence" : [ + 2.7961554363632346, + 2.98907413153371 + ], + "scorePercentiles" : { + "0.0" : 2.8026243536004483, + "50.0" : 2.921494793456033, + "90.0" : 2.9457562176730487, + "95.0" : 2.9457562176730487, + "99.0" : 2.9457562176730487, + "99.9" : 2.9457562176730487, + "99.99" : 2.9457562176730487, + "99.999" : 2.9457562176730487, + "99.9999" : 2.9457562176730487, + "100.0" : 2.9457562176730487 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.9457562176730487, + 2.93675267498532, + 2.921494793456033 + ], + [ + 2.9296250128881076, + 2.927352605209248, + 2.920907433995327 + ], + [ + 2.823672700169396, + 2.825347263559322, + 2.8026243536004483 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.18133326474609845, + "scoreError" : 0.01346855229269323, + "scoreConfidence" : [ + 0.16786471245340523, + 0.19480181703879168 + ], + "scorePercentiles" : { + "0.0" : 0.1740499499269006, + "50.0" : 0.17767172076041574, + "90.0" : 0.1920147274821912, + "95.0" : 0.1920147274821912, + "99.0" : 0.1920147274821912, + "99.9" : 0.1920147274821912, + "99.99" : 0.1920147274821912, + "99.999" : 0.1920147274821912, + "99.9999" : 0.1920147274821912, + "100.0" : 0.1920147274821912 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17821891932207015, + 0.17765134902559912, + 0.17767172076041574 + ], + [ + 0.1743843624315558, + 0.17456054072406088, + 0.1740499499269006 + ], + [ + 0.1920147274821912, + 0.19182560413949207, + 0.19162220890260026 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3367788147831052, + "scoreError" : 0.02374465315352348, + "scoreConfidence" : [ + 0.3130341616295817, + 0.36052346793662865 + ], + "scorePercentiles" : { + "0.0" : 0.32071956720438727, + "50.0" : 0.33412888810184105, + "90.0" : 0.35441121898146505, + "95.0" : 0.35441121898146505, + "99.0" : 0.35441121898146505, + "99.9" : 0.35441121898146505, + "99.99" : 0.35441121898146505, + "99.999" : 0.35441121898146505, + "99.9999" : 0.35441121898146505, + "100.0" : 0.35441121898146505 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.35441121898146505, + 0.3540245686975608, + 0.35409223429643794 + ], + [ + 0.32071956720438727, + 0.32220562051744694, + 0.3226218893118689 + ], + [ + 0.33409698326206066, + 0.33470836267487786, + 0.33412888810184105 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16858839828710112, + "scoreError" : 0.010531615699214387, + "scoreConfidence" : [ + 0.15805678258788675, + 0.1791200139863155 + ], + "scorePercentiles" : { + "0.0" : 0.16052026189826482, + "50.0" : 0.17016409602164442, + "90.0" : 0.17525053695979811, + "95.0" : 0.17525053695979811, + "99.0" : 0.17525053695979811, + "99.9" : 0.17525053695979811, + "99.99" : 0.17525053695979811, + "99.999" : 0.17525053695979811, + "99.9999" : 0.17525053695979811, + "100.0" : 0.17525053695979811 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17016409602164442, + 0.17025412281866625, + 0.17014017352320676 + ], + [ + 0.17525053695979811, + 0.17473462677569848, + 0.17468118482741754 + ], + [ + 0.16098750687401397, + 0.16052026189826482, + 0.16056307488519958 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.39153306316745484, + "scoreError" : 0.011987780396202052, + "scoreConfidence" : [ + 0.37954528277125277, + 0.4035208435636569 + ], + "scorePercentiles" : { + "0.0" : 0.3824763335883118, + "50.0" : 0.3891833180261519, + "90.0" : 0.405713951357053, + "95.0" : 0.405713951357053, + "99.0" : 0.405713951357053, + "99.9" : 0.405713951357053, + "99.99" : 0.405713951357053, + "99.999" : 0.405713951357053, + "99.9999" : 0.405713951357053, + "100.0" : 0.405713951357053 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.405713951357053, + 0.39427057364768964, + 0.39585323267228756 + ], + [ + 0.3959599306303453, + 0.3891833180261519, + 0.3883369830304442 + ], + [ + 0.3868123861834217, + 0.38519085937138897, + 0.3824763335883118 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15836425098734164, + "scoreError" : 0.001008748099331414, + "scoreConfidence" : [ + 0.15735550288801023, + 0.15937299908667305 + ], + "scorePercentiles" : { + "0.0" : 0.1578140798838512, + "50.0" : 0.15816451689942587, + "90.0" : 0.159676068308105, + "95.0" : 0.159676068308105, + "99.0" : 0.159676068308105, + "99.9" : 0.159676068308105, + "99.99" : 0.159676068308105, + "99.999" : 0.159676068308105, + "99.9999" : 0.159676068308105, + "100.0" : 0.159676068308105 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15865113410435802, + 0.15809743934675036, + 0.15790347873869037 + ], + [ + 0.15876646168256942, + 0.159676068308105, + 0.1583807269876465 + ], + [ + 0.1578140798838512, + 0.15782435293467797, + 0.15816451689942587 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04791337412082488, + "scoreError" : 6.092732015952206E-4, + "scoreConfidence" : [ + 0.04730410091922966, + 0.0485226473224201 + ], + "scorePercentiles" : { + "0.0" : 0.04742956409538896, + "50.0" : 0.04789460816111497, + "90.0" : 0.04834787348491808, + "95.0" : 0.04834787348491808, + "99.0" : 0.04834787348491808, + "99.9" : 0.04834787348491808, + "99.99" : 0.04834787348491808, + "99.999" : 0.04834787348491808, + "99.9999" : 0.04834787348491808, + "100.0" : 0.04834787348491808 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04790588642123165, + 0.04789460816111497, + 0.047890905550952774 + ], + [ + 0.0483252757449235, + 0.048341155593475967, + 0.04834787348491808 + ], + [ + 0.04753277148452354, + 0.04755232655089445, + 0.04742956409538896 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9462755.68721248, + "scoreError" : 319695.88956154167, + "scoreConfidence" : [ + 9143059.797650939, + 9782451.576774022 + ], + "scorePercentiles" : { + "0.0" : 9210562.837016575, + "50.0" : 9569353.49043977, + "90.0" : 9645247.50819672, + "95.0" : 9645247.50819672, + "99.0" : 9645247.50819672, + "99.9" : 9645247.50819672, + "99.99" : 9645247.50819672, + "99.999" : 9645247.50819672, + "99.9999" : 9645247.50819672, + "100.0" : 9645247.50819672 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9609886.60518732, + 9569353.49043977, + 9552628.962750716 + ], + [ + 9645247.50819672, + 9577503.71291866, + 9575471.54354067 + ], + [ + 9212506.072744016, + 9211640.452117864, + 9210562.837016575 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-03-24T01:14:33Z-ae7279fa86294a4250c1df7bbf056a940e80459c-jdk17.json b/performance-results/2025-03-24T01:14:33Z-ae7279fa86294a4250c1df7bbf056a940e80459c-jdk17.json new file mode 100644 index 0000000000..ad9d1d5a8c --- /dev/null +++ b/performance-results/2025-03-24T01:14:33Z-ae7279fa86294a4250c1df7bbf056a940e80459c-jdk17.json @@ -0,0 +1,1310 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.40858461951776, + "scoreError" : 0.02823504274507638, + "scoreConfidence" : [ + 3.3803495767726837, + 3.4368196622628364 + ], + "scorePercentiles" : { + "0.0" : 3.403842617984939, + "50.0" : 3.408227397148522, + "90.0" : 3.414041065789058, + "95.0" : 3.414041065789058, + "99.0" : 3.414041065789058, + "99.9" : 3.414041065789058, + "99.99" : 3.414041065789058, + "99.999" : 3.414041065789058, + "99.9999" : 3.414041065789058, + "100.0" : 3.414041065789058 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.403842617984939, + 3.409770199303155 + ], + [ + 3.406684594993889, + 3.414041065789058 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.719980936295944, + "scoreError" : 0.023474343074217335, + "scoreConfidence" : [ + 1.6965065932217267, + 1.7434552793701612 + ], + "scorePercentiles" : { + "0.0" : 1.7165348324954257, + "50.0" : 1.7198702033470656, + "90.0" : 1.7236485059942186, + "95.0" : 1.7236485059942186, + "99.0" : 1.7236485059942186, + "99.9" : 1.7236485059942186, + "99.99" : 1.7236485059942186, + "99.999" : 1.7236485059942186, + "99.9999" : 1.7236485059942186, + "100.0" : 1.7236485059942186 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.722538337715663, + 1.7236485059942186 + ], + [ + 1.7172020689784684, + 1.7165348324954257 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8662508137633711, + "scoreError" : 0.006600936431906626, + "scoreConfidence" : [ + 0.8596498773314645, + 0.8728517501952777 + ], + "scorePercentiles" : { + "0.0" : 0.8649383265860422, + "50.0" : 0.8664958062991177, + "90.0" : 0.8670733158692063, + "95.0" : 0.8670733158692063, + "99.0" : 0.8670733158692063, + "99.9" : 0.8670733158692063, + "99.99" : 0.8670733158692063, + "99.999" : 0.8670733158692063, + "99.9999" : 0.8670733158692063, + "100.0" : 0.8670733158692063 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8670486287680078, + 0.8670733158692063 + ], + [ + 0.8649383265860422, + 0.8659429838302277 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 15.77838375496337, + "scoreError" : 0.236087536028889, + "scoreConfidence" : [ + 15.542296218934482, + 16.014471290992258 + ], + "scorePercentiles" : { + "0.0" : 15.5961961951466, + "50.0" : 15.711442912088485, + "90.0" : 15.972625063204788, + "95.0" : 15.972625063204788, + "99.0" : 15.972625063204788, + "99.9" : 15.972625063204788, + "99.99" : 15.972625063204788, + "99.999" : 15.972625063204788, + "99.9999" : 15.972625063204788, + "100.0" : 15.972625063204788 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 15.923619257367257, + 15.688122136687152, + 15.861394961333474 + ], + [ + 15.917691639008215, + 15.972625063204788, + 15.700576098794429 + ], + [ + 15.63378553103995, + 15.5961961951466, + 15.711442912088485 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2568.2740998550807, + "scoreError" : 97.78617105196564, + "scoreConfidence" : [ + 2470.487928803115, + 2666.0602709070463 + ], + "scorePercentiles" : { + "0.0" : 2475.227524256153, + "50.0" : 2577.6124597652006, + "90.0" : 2636.058733746114, + "95.0" : 2636.058733746114, + "99.0" : 2636.058733746114, + "99.9" : 2636.058733746114, + "99.99" : 2636.058733746114, + "99.999" : 2636.058733746114, + "99.9999" : 2636.058733746114, + "100.0" : 2636.058733746114 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2510.514525115231, + 2475.227524256153, + 2512.7676390395122 + ], + [ + 2618.47099094829, + 2552.117579354896, + 2612.291342265198 + ], + [ + 2636.058733746114, + 2577.6124597652006, + 2619.406104205128 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 69829.0263668477, + "scoreError" : 1060.1346840457486, + "scoreConfidence" : [ + 68768.89168280194, + 70889.16105089345 + ], + "scorePercentiles" : { + "0.0" : 68925.80132472458, + "50.0" : 69768.77289161518, + "90.0" : 70700.90064854718, + "95.0" : 70700.90064854718, + "99.0" : 70700.90064854718, + "99.9" : 70700.90064854718, + "99.99" : 70700.90064854718, + "99.999" : 70700.90064854718, + "99.9999" : 70700.90064854718, + "100.0" : 70700.90064854718 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 69506.85659733678, + 70028.64672895106, + 69768.77289161518 + ], + [ + 70700.90064854718, + 70253.3941584423, + 70621.94107476607 + ], + [ + 69600.20646558938, + 68925.80132472458, + 69054.71741165676 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 342.9282095584336, + "scoreError" : 2.6303078428595033, + "scoreConfidence" : [ + 340.2979017155741, + 345.5585174012931 + ], + "scorePercentiles" : { + "0.0" : 339.7323315026931, + "50.0" : 343.5420116887202, + "90.0" : 345.02858681117044, + "95.0" : 345.02858681117044, + "99.0" : 345.02858681117044, + "99.9" : 345.02858681117044, + "99.99" : 345.02858681117044, + "99.999" : 345.02858681117044, + "99.9999" : 345.02858681117044, + "100.0" : 345.02858681117044 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 345.02858681117044, + 343.5420116887202, + 342.0739074233191 + ], + [ + 343.5761532037889, + 341.92689876445934, + 339.7323315026931 + ], + [ + 342.55961907210377, + 344.2673861390148, + 343.6469914206324 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 106.48756562624698, + "scoreError" : 1.0958141946055548, + "scoreConfidence" : [ + 105.39175143164142, + 107.58337982085253 + ], + "scorePercentiles" : { + "0.0" : 105.49245380830173, + "50.0" : 106.5276062463189, + "90.0" : 107.65841429984553, + "95.0" : 107.65841429984553, + "99.0" : 107.65841429984553, + "99.9" : 107.65841429984553, + "99.99" : 107.65841429984553, + "99.999" : 107.65841429984553, + "99.9999" : 107.65841429984553, + "100.0" : 107.65841429984553 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 105.77795669889201, + 106.85071095308024, + 106.68181660710022 + ], + [ + 106.35814726073099, + 105.49245380830173, + 106.93707535894518 + ], + [ + 106.5276062463189, + 106.1039094030079, + 107.65841429984553 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06297848004678867, + "scoreError" : 5.894937036759589E-4, + "scoreConfidence" : [ + 0.06238898634311271, + 0.06356797375046463 + ], + "scorePercentiles" : { + "0.0" : 0.06252654531244138, + "50.0" : 0.06302387430044368, + "90.0" : 0.06367914714722364, + "95.0" : 0.06367914714722364, + "99.0" : 0.06367914714722364, + "99.9" : 0.06367914714722364, + "99.99" : 0.06367914714722364, + "99.999" : 0.06367914714722364, + "99.9999" : 0.06367914714722364, + "100.0" : 0.06367914714722364 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06319152964594221, + 0.06269488202250713, + 0.06314516624675595 + ], + [ + 0.06302387430044368, + 0.062759557803704, + 0.06308125920342147 + ], + [ + 0.06367914714722364, + 0.06270435873865852, + 0.06252654531244138 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.761317551796573E-4, + "scoreError" : 1.2845499363296883E-5, + "scoreConfidence" : [ + 3.632862558163604E-4, + 3.889772545429542E-4 + ], + "scorePercentiles" : { + "0.0" : 3.654097590578796E-4, + "50.0" : 3.7901738871717514E-4, + "90.0" : 3.834261705410972E-4, + "95.0" : 3.834261705410972E-4, + "99.0" : 3.834261705410972E-4, + "99.9" : 3.834261705410972E-4, + "99.99" : 3.834261705410972E-4, + "99.999" : 3.834261705410972E-4, + "99.9999" : 3.834261705410972E-4, + "100.0" : 3.834261705410972E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.7850269643764254E-4, + 3.7901738871717514E-4, + 3.834261705410972E-4 + ], + [ + 3.6558843802575615E-4, + 3.677787138036308E-4, + 3.654097590578796E-4 + ], + [ + 3.828899716507752E-4, + 3.796131917762167E-4, + 3.829594666067419E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014172803140729643, + "scoreError" : 1.0782891474152387E-4, + "scoreConfidence" : [ + 0.014064974225988118, + 0.014280632055471167 + ], + "scorePercentiles" : { + "0.0" : 0.014081310722784686, + "50.0" : 0.01416622602502008, + "90.0" : 0.014286797526133748, + "95.0" : 0.014286797526133748, + "99.0" : 0.014286797526133748, + "99.9" : 0.014286797526133748, + "99.99" : 0.014286797526133748, + "99.999" : 0.014286797526133748, + "99.9999" : 0.014286797526133748, + "100.0" : 0.014286797526133748 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014178331408884037, + 0.014115230361415172, + 0.014081310722784686 + ], + [ + 0.01416622602502008, + 0.014132456071226682, + 0.014158328896641263 + ], + [ + 0.014286797526133748, + 0.014185009923713932, + 0.014251537330747185 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9905397184409652, + "scoreError" : 0.02238876384346547, + "scoreConfidence" : [ + 0.9681509545974998, + 1.0129284822844307 + ], + "scorePercentiles" : { + "0.0" : 0.9773580523846755, + "50.0" : 0.9843310696850394, + "90.0" : 1.0116134580214444, + "95.0" : 1.0116134580214444, + "99.0" : 1.0116134580214444, + "99.9" : 1.0116134580214444, + "99.99" : 1.0116134580214444, + "99.999" : 1.0116134580214444, + "99.9999" : 1.0116134580214444, + "100.0" : 1.0116134580214444 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9831717689736532, + 0.9843310696850394, + 0.9784792103512376 + ], + [ + 1.010704397877716, + 1.0116134580214444, + 0.9998777521495701 + ], + [ + 0.9773580523846755, + 0.9853596882451473, + 0.9839620682802046 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.013155411922502263, + "scoreError" : 2.795852915008635E-4, + "scoreConfidence" : [ + 0.012875826631001399, + 0.013434997214003127 + ], + "scorePercentiles" : { + "0.0" : 0.013002453662963657, + "50.0" : 0.01316711428100242, + "90.0" : 0.01327616876247929, + "95.0" : 0.01327616876247929, + "99.0" : 0.01327616876247929, + "99.9" : 0.01327616876247929, + "99.99" : 0.01327616876247929, + "99.999" : 0.01327616876247929, + "99.9999" : 0.01327616876247929, + "100.0" : 0.01327616876247929 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013121031901689159, + 0.013219664486364297, + 0.01327616876247929 + ], + [ + 0.013002453662963657, + 0.013099956061201498, + 0.013213196660315682 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.750332902092968, + "scoreError" : 0.1674325694384914, + "scoreConfidence" : [ + 3.582900332654477, + 3.9177654715314594 + ], + "scorePercentiles" : { + "0.0" : 3.659013118507681, + "50.0" : 3.746797678884942, + "90.0" : 3.840637273425499, + "95.0" : 3.840637273425499, + "99.0" : 3.840637273425499, + "99.9" : 3.840637273425499, + "99.99" : 3.840637273425499, + "99.999" : 3.840637273425499, + "99.9999" : 3.840637273425499, + "100.0" : 3.840637273425499 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.840637273425499, + 3.751801334583646, + 3.779107640483384 + ], + [ + 3.659013118507681, + 3.7296440223713647, + 3.741794023186238 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.8548886386460897, + "scoreError" : 0.03636649593192445, + "scoreConfidence" : [ + 2.818522142714165, + 2.891255134578014 + ], + "scorePercentiles" : { + "0.0" : 2.8271100124364046, + "50.0" : 2.8555864614505997, + "90.0" : 2.880886245391705, + "95.0" : 2.880886245391705, + "99.0" : 2.880886245391705, + "99.9" : 2.880886245391705, + "99.99" : 2.880886245391705, + "99.999" : 2.880886245391705, + "99.9999" : 2.880886245391705, + "100.0" : 2.880886245391705 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.868786039586919, + 2.880886245391705, + 2.8482905326117915 + ], + [ + 2.827418055414193, + 2.8798364851713214, + 2.8555864614505997 + ], + [ + 2.871456194946885, + 2.8271100124364046, + 2.834627720804989 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17971936084685597, + "scoreError" : 0.016517911751403654, + "scoreConfidence" : [ + 0.1632014490954523, + 0.19623727259825963 + ], + "scorePercentiles" : { + "0.0" : 0.16987528725283685, + "50.0" : 0.17653581038713437, + "90.0" : 0.19261740506182826, + "95.0" : 0.19261740506182826, + "99.0" : 0.19261740506182826, + "99.9" : 0.19261740506182826, + "99.99" : 0.19261740506182826, + "99.999" : 0.19261740506182826, + "99.9999" : 0.19261740506182826, + "100.0" : 0.19261740506182826 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.19216519448501154, + 0.19261740506182826, + 0.19231822860494635 + ], + [ + 0.17595648287086726, + 0.1765369575793952, + 0.17653581038713437 + ], + [ + 0.16987528725283685, + 0.17103812304166383, + 0.17043075833802002 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.33498656189355885, + "scoreError" : 0.00339606700371187, + "scoreConfidence" : [ + 0.331590494889847, + 0.3383826288972707 + ], + "scorePercentiles" : { + "0.0" : 0.3326694837829746, + "50.0" : 0.3347886653610525, + "90.0" : 0.33945752532247114, + "95.0" : 0.33945752532247114, + "99.0" : 0.33945752532247114, + "99.9" : 0.33945752532247114, + "99.99" : 0.33945752532247114, + "99.999" : 0.33945752532247114, + "99.9999" : 0.33945752532247114, + "100.0" : 0.33945752532247114 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3366052745296038, + 0.3343679756921225, + 0.33945752532247114 + ], + [ + 0.33349957656906554, + 0.33495701289523044, + 0.3349827138311057 + ], + [ + 0.3347886653610525, + 0.3326694837829746, + 0.33355082905840366 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16055367098210246, + "scoreError" : 0.010627721830330528, + "scoreConfidence" : [ + 0.14992594915177193, + 0.171181392812433 + ], + "scorePercentiles" : { + "0.0" : 0.15152957390711416, + "50.0" : 0.1632057275353331, + "90.0" : 0.16693598417467947, + "95.0" : 0.16693598417467947, + "99.0" : 0.16693598417467947, + "99.9" : 0.16693598417467947, + "99.99" : 0.16693598417467947, + "99.999" : 0.16693598417467947, + "99.9999" : 0.16693598417467947, + "100.0" : 0.16693598417467947 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1535686558915217, + 0.15192134652487657, + 0.15152957390711416 + ], + [ + 0.16276372596474667, + 0.1632057275353331, + 0.1637623504298698 + ], + [ + 0.16609101062964007, + 0.16693598417467947, + 0.16520466378114054 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.39828964003913936, + "scoreError" : 0.00934466580815901, + "scoreConfidence" : [ + 0.38894497423098034, + 0.4076343058472984 + ], + "scorePercentiles" : { + "0.0" : 0.3920836011918764, + "50.0" : 0.3969977016673283, + "90.0" : 0.40858754435137895, + "95.0" : 0.40858754435137895, + "99.0" : 0.40858754435137895, + "99.9" : 0.40858754435137895, + "99.99" : 0.40858754435137895, + "99.999" : 0.40858754435137895, + "99.9999" : 0.40858754435137895, + "100.0" : 0.40858754435137895 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3922899960379727, + 0.3920836011918764, + 0.39326324503519605 + ], + [ + 0.40858754435137895, + 0.3969044770201619, + 0.3969977016673283 + ], + [ + 0.4036797789932588, + 0.4003199688563308, + 0.40048044719875053 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16041917557422003, + "scoreError" : 0.001737144665873153, + "scoreConfidence" : [ + 0.15868203090834687, + 0.1621563202400932 + ], + "scorePercentiles" : { + "0.0" : 0.15906686147165489, + "50.0" : 0.16033186659077792, + "90.0" : 0.1626990494265029, + "95.0" : 0.1626990494265029, + "99.0" : 0.1626990494265029, + "99.9" : 0.1626990494265029, + "99.99" : 0.1626990494265029, + "99.999" : 0.1626990494265029, + "99.9999" : 0.1626990494265029, + "100.0" : 0.1626990494265029 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1626990494265029, + 0.16033186659077792, + 0.16045412686926386 + ], + [ + 0.1595371675648098, + 0.16000919154212934, + 0.15906686147165489 + ], + [ + 0.16053158194076572, + 0.16107567585851426, + 0.16006705890356143 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04807424698073026, + "scoreError" : 5.436220780624052E-4, + "scoreConfidence" : [ + 0.04753062490266786, + 0.048617869058792666 + ], + "scorePercentiles" : { + "0.0" : 0.04746269952775339, + "50.0" : 0.048026309701617975, + "90.0" : 0.048588726259887666, + "95.0" : 0.048588726259887666, + "99.0" : 0.048588726259887666, + "99.9" : 0.048588726259887666, + "99.99" : 0.048588726259887666, + "99.999" : 0.048588726259887666, + "99.9999" : 0.048588726259887666, + "100.0" : 0.048588726259887666 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.048350908289173405, + 0.048588726259887666, + 0.048329807225189085 + ], + [ + 0.0480161819836171, + 0.047919599771906116, + 0.04746269952775339 + ], + [ + 0.04790992621054094, + 0.048026309701617975, + 0.048064063856886746 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9676391.013650784, + "scoreError" : 287328.6480368536, + "scoreConfidence" : [ + 9389062.36561393, + 9963719.661687639 + ], + "scorePercentiles" : { + "0.0" : 9478153.125, + "50.0" : 9586281.842911877, + "90.0" : 9966990.433266932, + "95.0" : 9966990.433266932, + "99.0" : 9966990.433266932, + "99.9" : 9966990.433266932, + "99.99" : 9966990.433266932, + "99.999" : 9966990.433266932, + "99.9999" : 9966990.433266932, + "100.0" : 9966990.433266932 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9558136.078319008, + 9557984.59503343, + 9478153.125 + ], + [ + 9966990.433266932, + 9883363.479249012, + 9822402.113837095 + ], + [ + 9586281.842911877, + 9579493.921455938, + 9654713.533783784 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-03-24T01:14:54Z-ae7279fa86294a4250c1df7bbf056a940e80459c-jdk17.json b/performance-results/2025-03-24T01:14:54Z-ae7279fa86294a4250c1df7bbf056a940e80459c-jdk17.json new file mode 100644 index 0000000000..c247dd7f92 --- /dev/null +++ b/performance-results/2025-03-24T01:14:54Z-ae7279fa86294a4250c1df7bbf056a940e80459c-jdk17.json @@ -0,0 +1,1310 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.416841228362352, + "scoreError" : 0.046224539933131144, + "scoreConfidence" : [ + 3.370616688429221, + 3.463065768295483 + ], + "scorePercentiles" : { + "0.0" : 3.4104833073322536, + "50.0" : 3.4149070097262744, + "90.0" : 3.4270675866646054, + "95.0" : 3.4270675866646054, + "99.0" : 3.4270675866646054, + "99.9" : 3.4270675866646054, + "99.99" : 3.4270675866646054, + "99.999" : 3.4270675866646054, + "99.9999" : 3.4270675866646054, + "100.0" : 3.4270675866646054 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4104833073322536, + 3.415622928858356 + ], + [ + 3.414191090594193, + 3.4270675866646054 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7256805880386656, + "scoreError" : 0.008670416239197185, + "scoreConfidence" : [ + 1.7170101717994684, + 1.734351004277863 + ], + "scorePercentiles" : { + "0.0" : 1.7238767187983217, + "50.0" : 1.7258640396415021, + "90.0" : 1.7271175540733374, + "95.0" : 1.7271175540733374, + "99.0" : 1.7271175540733374, + "99.9" : 1.7271175540733374, + "99.99" : 1.7271175540733374, + "99.999" : 1.7271175540733374, + "99.9999" : 1.7271175540733374, + "100.0" : 1.7271175540733374 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7257779960512811, + 1.7238767187983217 + ], + [ + 1.725950083231723, + 1.7271175540733374 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8668202231331765, + "scoreError" : 0.004831866423434959, + "scoreConfidence" : [ + 0.8619883567097416, + 0.8716520895566114 + ], + "scorePercentiles" : { + "0.0" : 0.866215610918664, + "50.0" : 0.8666131123079148, + "90.0" : 0.8678390569982123, + "95.0" : 0.8678390569982123, + "99.0" : 0.8678390569982123, + "99.9" : 0.8678390569982123, + "99.99" : 0.8678390569982123, + "99.999" : 0.8678390569982123, + "99.9999" : 0.8678390569982123, + "100.0" : 0.8678390569982123 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8663065488930909, + 0.8678390569982123 + ], + [ + 0.866215610918664, + 0.8669196757227386 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.31640431452635, + "scoreError" : 0.3186289582091417, + "scoreConfidence" : [ + 15.997775356317206, + 16.63503327273549 + ], + "scorePercentiles" : { + "0.0" : 16.01931994704482, + "50.0" : 16.40630490278462, + "90.0" : 16.49237024973776, + "95.0" : 16.49237024973776, + "99.0" : 16.49237024973776, + "99.9" : 16.49237024973776, + "99.99" : 16.49237024973776, + "99.999" : 16.49237024973776, + "99.9999" : 16.49237024973776, + "100.0" : 16.49237024973776 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.40630490278462, + 16.401037480073782, + 16.411364862887655 + ], + [ + 16.01931994704482, + 16.08726384861906, + 16.099568628269374 + ], + [ + 16.452416990458655, + 16.49237024973776, + 16.47799192086142 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2809.778181329612, + "scoreError" : 90.87641938701525, + "scoreConfidence" : [ + 2718.9017619425967, + 2900.654600716627 + ], + "scorePercentiles" : { + "0.0" : 2751.543366182571, + "50.0" : 2799.350960371689, + "90.0" : 2882.7440630130905, + "95.0" : 2882.7440630130905, + "99.0" : 2882.7440630130905, + "99.9" : 2882.7440630130905, + "99.99" : 2882.7440630130905, + "99.999" : 2882.7440630130905, + "99.9999" : 2882.7440630130905, + "100.0" : 2882.7440630130905 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2751.543366182571, + 2754.397261861922, + 2753.9996216878067 + ], + [ + 2873.0058513045706, + 2882.7440630130905, + 2874.397658886027 + ], + [ + 2799.6827906200256, + 2798.8820580388037, + 2799.350960371689 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 69538.89231546373, + "scoreError" : 2700.454110688654, + "scoreConfidence" : [ + 66838.43820477507, + 72239.34642615239 + ], + "scorePercentiles" : { + "0.0" : 67053.05858762588, + "50.0" : 70502.74638799811, + "90.0" : 70713.11228173104, + "95.0" : 70713.11228173104, + "99.0" : 70713.11228173104, + "99.9" : 70713.11228173104, + "99.99" : 70713.11228173104, + "99.999" : 70713.11228173104, + "99.9999" : 70713.11228173104, + "100.0" : 70713.11228173104 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 67586.91728942825, + 67053.05858762588, + 67587.19740878949 + ], + [ + 70692.91981659395, + 70713.11228173104, + 70694.96634571847 + ], + [ + 70502.74638799811, + 70522.83979766157, + 70496.2729236268 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 353.46608040287845, + "scoreError" : 2.1052187242826883, + "scoreConfidence" : [ + 351.36086167859577, + 355.5712991271611 + ], + "scorePercentiles" : { + "0.0" : 351.46498132968077, + "50.0" : 353.7673749359021, + "90.0" : 355.081588309483, + "95.0" : 355.081588309483, + "99.0" : 355.081588309483, + "99.9" : 355.081588309483, + "99.99" : 355.081588309483, + "99.999" : 355.081588309483, + "99.9999" : 355.081588309483, + "100.0" : 355.081588309483 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 354.89802732725707, + 355.081588309483, + 353.87855531342655 + ], + [ + 354.1289425757435, + 353.7673749359021, + 351.46498132968077 + ], + [ + 352.1390732144776, + 352.2742231087273, + 353.5619575112081 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 108.22875395145122, + "scoreError" : 2.2268608546616937, + "scoreConfidence" : [ + 106.00189309678953, + 110.45561480611292 + ], + "scorePercentiles" : { + "0.0" : 106.86010819192902, + "50.0" : 107.79288461324526, + "90.0" : 110.04883231120205, + "95.0" : 110.04883231120205, + "99.0" : 110.04883231120205, + "99.9" : 110.04883231120205, + "99.99" : 110.04883231120205, + "99.999" : 110.04883231120205, + "99.9999" : 110.04883231120205, + "100.0" : 110.04883231120205 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 106.9151305341687, + 106.86010819192902, + 106.9410451235742 + ], + [ + 109.80234788582067, + 109.83710038953076, + 110.04883231120205 + ], + [ + 108.0859766767882, + 107.79288461324526, + 107.77535983680224 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.061717211018078616, + "scoreError" : 7.746341957989277E-4, + "scoreConfidence" : [ + 0.06094257682227969, + 0.062491845213877545 + ], + "scorePercentiles" : { + "0.0" : 0.06129506386838944, + "50.0" : 0.061503650343801126, + "90.0" : 0.06238190136302673, + "95.0" : 0.06238190136302673, + "99.0" : 0.06238190136302673, + "99.9" : 0.06238190136302673, + "99.99" : 0.06238190136302673, + "99.999" : 0.06238190136302673, + "99.9999" : 0.06238190136302673, + "100.0" : 0.06238190136302673 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06140399041496273, + 0.06129506386838944, + 0.061410989824367476 + ], + [ + 0.062216737816600406, + 0.062367104588288855, + 0.06238190136302673 + ], + [ + 0.06135302896443406, + 0.06152243197883663, + 0.061503650343801126 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.594316967390262E-4, + "scoreError" : 2.025210075568485E-5, + "scoreConfidence" : [ + 3.3917959598334135E-4, + 3.79683797494711E-4 + ], + "scorePercentiles" : { + "0.0" : 3.451150199006584E-4, + "50.0" : 3.5978557142412557E-4, + "90.0" : 3.738151868826466E-4, + "95.0" : 3.738151868826466E-4, + "99.0" : 3.738151868826466E-4, + "99.9" : 3.738151868826466E-4, + "99.99" : 3.738151868826466E-4, + "99.999" : 3.738151868826466E-4, + "99.9999" : 3.738151868826466E-4, + "100.0" : 3.738151868826466E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.5978557142412557E-4, + 3.5895190739054946E-4, + 3.5982580568855865E-4 + ], + [ + 3.451150199006584E-4, + 3.455401107623804E-4, + 3.4577895015172963E-4 + ], + [ + 3.728989930124733E-4, + 3.738151868826466E-4, + 3.731737254381133E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014191966644421385, + "scoreError" : 2.1829014589974747E-4, + "scoreConfidence" : [ + 0.013973676498521638, + 0.014410256790321131 + ], + "scorePercentiles" : { + "0.0" : 0.014034512911592084, + "50.0" : 0.014199062441074573, + "90.0" : 0.014338884630605725, + "95.0" : 0.014338884630605725, + "99.0" : 0.014338884630605725, + "99.9" : 0.014338884630605725, + "99.99" : 0.014338884630605725, + "99.999" : 0.014338884630605725, + "99.9999" : 0.014338884630605725, + "100.0" : 0.014338884630605725 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014034512911592084, + 0.014036816928473472, + 0.014044025110419842 + ], + [ + 0.014203260520230885, + 0.014199062441074573, + 0.014195771940384105 + ], + [ + 0.014338884630605725, + 0.014338267550563345, + 0.01433709776644841 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9925031145812194, + "scoreError" : 0.042226353185113495, + "scoreConfidence" : [ + 0.950276761396106, + 1.034729467766333 + ], + "scorePercentiles" : { + "0.0" : 0.9630525597072419, + "50.0" : 0.9913075222045995, + "90.0" : 1.0285787390723027, + "95.0" : 1.0285787390723027, + "99.0" : 1.0285787390723027, + "99.9" : 1.0285787390723027, + "99.99" : 1.0285787390723027, + "99.999" : 1.0285787390723027, + "99.9999" : 1.0285787390723027, + "100.0" : 1.0285787390723027 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9906748670629024, + 0.9913075222045995, + 0.9914711291761673 + ], + [ + 0.9630525597072419, + 0.9650835647558387, + 0.9655797285893598 + ], + [ + 1.0129199996961409, + 1.023859920966421, + 1.0285787390723027 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.013059418001820743, + "scoreError" : 2.515838452231582E-4, + "scoreConfidence" : [ + 0.012807834156597584, + 0.013311001847043901 + ], + "scorePercentiles" : { + "0.0" : 0.012981688982469987, + "50.0" : 0.013024948595270976, + "90.0" : 0.013170221643917884, + "95.0" : 0.013170221643917884, + "99.0" : 0.013170221643917884, + "99.9" : 0.013170221643917884, + "99.99" : 0.013170221643917884, + "99.999" : 0.013170221643917884, + "99.9999" : 0.013170221643917884, + "100.0" : 0.013170221643917884 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013056340266081757, + 0.013169372862338977, + 0.013170221643917884 + ], + [ + 0.012985327331655668, + 0.012981688982469987, + 0.012993556924460197 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.6592788291395366, + "scoreError" : 0.050967515054031964, + "scoreConfidence" : [ + 3.6083113140855048, + 3.7102463441935685 + ], + "scorePercentiles" : { + "0.0" : 3.623741924637681, + "50.0" : 3.664233986813187, + "90.0" : 3.6741932277736957, + "95.0" : 3.6741932277736957, + "99.0" : 3.6741932277736957, + "99.9" : 3.6741932277736957, + "99.99" : 3.6741932277736957, + "99.999" : 3.6741932277736957, + "99.9999" : 3.6741932277736957, + "100.0" : 3.6741932277736957 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.665116643223443, + 3.6633513304029304, + 3.6592315215801023 + ], + [ + 3.623741924637681, + 3.670038327219369, + 3.6741932277736957 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.816428854728746, + "scoreError" : 0.06208714333215352, + "scoreConfidence" : [ + 2.7543417113965925, + 2.8785159980609 + ], + "scorePercentiles" : { + "0.0" : 2.765137873652198, + "50.0" : 2.8340587007650893, + "90.0" : 2.8525728069024527, + "95.0" : 2.8525728069024527, + "99.0" : 2.8525728069024527, + "99.9" : 2.8525728069024527, + "99.99" : 2.8525728069024527, + "99.999" : 2.8525728069024527, + "99.9999" : 2.8525728069024527, + "100.0" : 2.8525728069024527 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.8513465621436715, + 2.8525728069024527, + 2.8419214063654445 + ], + [ + 2.834123484839898, + 2.8340587007650893, + 2.8287812502828054 + ], + [ + 2.7730404374826727, + 2.766877170124481, + 2.765137873652198 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1793954246557457, + "scoreError" : 0.015718117464958145, + "scoreConfidence" : [ + 0.16367730719078755, + 0.19511354212070386 + ], + "scorePercentiles" : { + "0.0" : 0.17193095985489307, + "50.0" : 0.1741289254744907, + "90.0" : 0.19208350172870808, + "95.0" : 0.19208350172870808, + "99.0" : 0.19208350172870808, + "99.9" : 0.19208350172870808, + "99.99" : 0.19208350172870808, + "99.999" : 0.19208350172870808, + "99.9999" : 0.19208350172870808, + "100.0" : 0.19208350172870808 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.19208350172870808, + 0.19167580244570948, + 0.1917056374511157 + ], + [ + 0.1741670207600404, + 0.17371442937794224, + 0.1741289254744907 + ], + [ + 0.17308442873461757, + 0.17193095985489307, + 0.1720681160741939 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3310067074422411, + "scoreError" : 0.005286940810887437, + "scoreConfidence" : [ + 0.32571976663135366, + 0.3362936482531285 + ], + "scorePercentiles" : { + "0.0" : 0.3272692564060608, + "50.0" : 0.3299537344925432, + "90.0" : 0.33597765600537544, + "95.0" : 0.33597765600537544, + "99.0" : 0.33597765600537544, + "99.9" : 0.33597765600537544, + "99.99" : 0.33597765600537544, + "99.999" : 0.33597765600537544, + "99.9999" : 0.33597765600537544, + "100.0" : 0.33597765600537544 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.33105885374251004, + 0.32922863973662553, + 0.3299537344925432 + ], + [ + 0.33597765600537544, + 0.33463009536556804, + 0.3340892610496776 + ], + [ + 0.32880638031827447, + 0.32804648986353496, + 0.3272692564060608 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1655695332101355, + "scoreError" : 0.0014940467802612104, + "scoreConfidence" : [ + 0.1640754864298743, + 0.16706357999039673 + ], + "scorePercentiles" : { + "0.0" : 0.1643908343634929, + "50.0" : 0.16573519637382125, + "90.0" : 0.16663853021945976, + "95.0" : 0.16663853021945976, + "99.0" : 0.16663853021945976, + "99.9" : 0.16663853021945976, + "99.99" : 0.16663853021945976, + "99.999" : 0.16663853021945976, + "99.9999" : 0.16663853021945976, + "100.0" : 0.16663853021945976 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16573519637382125, + 0.16486172864255333, + 0.16493741781296387 + ], + [ + 0.1658688282302206, + 0.16462066344016987, + 0.1643908343634929 + ], + [ + 0.1664890851077999, + 0.16658351470073796, + 0.16663853021945976 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3880358277948496, + "scoreError" : 0.015062129870327713, + "scoreConfidence" : [ + 0.37297369792452184, + 0.4030979576651773 + ], + "scorePercentiles" : { + "0.0" : 0.3791764736862061, + "50.0" : 0.3846368117235278, + "90.0" : 0.40354941443041037, + "95.0" : 0.40354941443041037, + "99.0" : 0.40354941443041037, + "99.9" : 0.40354941443041037, + "99.99" : 0.40354941443041037, + "99.999" : 0.40354941443041037, + "99.9999" : 0.40354941443041037, + "100.0" : 0.40354941443041037 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.38075618664331407, + 0.3798244570625546, + 0.3791764736862061 + ], + [ + 0.38515324564782005, + 0.3846368117235278, + 0.3846282916153846 + ], + [ + 0.40354941443041037, + 0.3971281042808355, + 0.397469465063593 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15783876494082616, + "scoreError" : 0.0036673927342274586, + "scoreConfidence" : [ + 0.1541713722065987, + 0.1615061576750536 + ], + "scorePercentiles" : { + "0.0" : 0.1556568356914935, + "50.0" : 0.15700002814933434, + "90.0" : 0.1620545456254355, + "95.0" : 0.1620545456254355, + "99.0" : 0.1620545456254355, + "99.9" : 0.1620545456254355, + "99.99" : 0.1620545456254355, + "99.999" : 0.1620545456254355, + "99.9999" : 0.1620545456254355, + "100.0" : 0.1620545456254355 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15700002814933434, + 0.15577499482841878, + 0.1556568356914935 + ], + [ + 0.15725884702237738, + 0.1567389933544403, + 0.15655110679733242 + ], + [ + 0.1620545456254355, + 0.15990778622255625, + 0.159605746776047 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04759487313143161, + "scoreError" : 5.249458188152128E-4, + "scoreConfidence" : [ + 0.047069927312616396, + 0.04811981895024683 + ], + "scorePercentiles" : { + "0.0" : 0.0471997846347726, + "50.0" : 0.04748367897265933, + "90.0" : 0.048040983771942464, + "95.0" : 0.048040983771942464, + "99.0" : 0.048040983771942464, + "99.9" : 0.048040983771942464, + "99.99" : 0.048040983771942464, + "99.999" : 0.048040983771942464, + "99.9999" : 0.048040983771942464, + "100.0" : 0.048040983771942464 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.048040983771942464, + 0.047442269875608435, + 0.04746866217460649 + ], + [ + 0.04795914089221827, + 0.04756065644603612, + 0.04748367897265933 + ], + [ + 0.04794581715666532, + 0.047252864258375465, + 0.0471997846347726 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9273198.347081004, + "scoreError" : 151405.44321916296, + "scoreConfidence" : [ + 9121792.903861841, + 9424603.790300166 + ], + "scorePercentiles" : { + "0.0" : 9155483.271729186, + "50.0" : 9294069.286245354, + "90.0" : 9361522.364826942, + "95.0" : 9361522.364826942, + "99.0" : 9361522.364826942, + "99.9" : 9361522.364826942, + "99.99" : 9361522.364826942, + "99.999" : 9361522.364826942, + "99.9999" : 9361522.364826942, + "100.0" : 9361522.364826942 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9159622.364468865, + 9161932.124542125, + 9155483.271729186 + ], + [ + 9338092.402427638, + 9294069.286245354, + 9278606.829313543 + ], + [ + 9350569.692523364, + 9358886.787652012, + 9361522.364826942 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-03-24T01:15:42Z-ae7279fa86294a4250c1df7bbf056a940e80459c-jdk17.json b/performance-results/2025-03-24T01:15:42Z-ae7279fa86294a4250c1df7bbf056a940e80459c-jdk17.json new file mode 100644 index 0000000000..347a362b1b --- /dev/null +++ b/performance-results/2025-03-24T01:15:42Z-ae7279fa86294a4250c1df7bbf056a940e80459c-jdk17.json @@ -0,0 +1,1310 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.423985031790188, + "scoreError" : 0.020585678001601503, + "scoreConfidence" : [ + 3.4033993537885863, + 3.4445707097917895 + ], + "scorePercentiles" : { + "0.0" : 3.4193836164754052, + "50.0" : 3.425190782059619, + "90.0" : 3.4261749465661073, + "95.0" : 3.4261749465661073, + "99.0" : 3.4261749465661073, + "99.9" : 3.4261749465661073, + "99.99" : 3.4261749465661073, + "99.999" : 3.4261749465661073, + "99.9999" : 3.4261749465661073, + "100.0" : 3.4261749465661073 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4193836164754052, + 3.4261749465661073 + ], + [ + 3.4243051172951176, + 3.4260764468241205 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7287797917121857, + "scoreError" : 0.007600411881287742, + "scoreConfidence" : [ + 1.7211793798308979, + 1.7363802035934734 + ], + "scorePercentiles" : { + "0.0" : 1.7276067282125074, + "50.0" : 1.728753700082378, + "90.0" : 1.7300050384714796, + "95.0" : 1.7300050384714796, + "99.0" : 1.7300050384714796, + "99.9" : 1.7300050384714796, + "99.99" : 1.7300050384714796, + "99.999" : 1.7300050384714796, + "99.9999" : 1.7300050384714796, + "100.0" : 1.7300050384714796 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7276067282125074, + 1.729551031146016 + ], + [ + 1.7279563690187403, + 1.7300050384714796 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8680077673242658, + "scoreError" : 0.001730336967352543, + "scoreConfidence" : [ + 0.8662774303569132, + 0.8697381042916184 + ], + "scorePercentiles" : { + "0.0" : 0.8676148794980105, + "50.0" : 0.868100694296265, + "90.0" : 0.8682148012065225, + "95.0" : 0.8682148012065225, + "99.0" : 0.8682148012065225, + "99.9" : 0.8682148012065225, + "99.99" : 0.8682148012065225, + "99.999" : 0.8682148012065225, + "99.9999" : 0.8682148012065225, + "100.0" : 0.8682148012065225 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8676148794980105, + 0.8682148012065225 + ], + [ + 0.8680832284714595, + 0.8681181601210705 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.38240461990315, + "scoreError" : 0.12334786222297711, + "scoreConfidence" : [ + 16.25905675768017, + 16.505752482126127 + ], + "scorePercentiles" : { + "0.0" : 16.276350464015767, + "50.0" : 16.405246368329045, + "90.0" : 16.491374585997335, + "95.0" : 16.491374585997335, + "99.0" : 16.491374585997335, + "99.9" : 16.491374585997335, + "99.99" : 16.491374585997335, + "99.999" : 16.491374585997335, + "99.9999" : 16.491374585997335, + "100.0" : 16.491374585997335 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.276350464015767, + 16.28949960657584, + 16.309277751841147 + ], + [ + 16.405246368329045, + 16.4140186013479, + 16.491374585997335 + ], + [ + 16.435045435937738, + 16.418812751229037, + 16.402016013854535 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2708.5653430356538, + "scoreError" : 91.70865496219062, + "scoreConfidence" : [ + 2616.8566880734634, + 2800.273997997844 + ], + "scorePercentiles" : { + "0.0" : 2655.382188812315, + "50.0" : 2683.8756391544052, + "90.0" : 2780.8420757077465, + "95.0" : 2780.8420757077465, + "99.0" : 2780.8420757077465, + "99.9" : 2780.8420757077465, + "99.99" : 2780.8420757077465, + "99.999" : 2780.8420757077465, + "99.9999" : 2780.8420757077465, + "100.0" : 2780.8420757077465 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2778.394621699917, + 2780.6211412089756, + 2780.8420757077465 + ], + [ + 2681.688877607523, + 2683.8756391544052, + 2686.991378749153 + ], + [ + 2669.7043469811665, + 2655.382188812315, + 2659.5878173996875 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 69453.92527304837, + "scoreError" : 1521.0238725110248, + "scoreConfidence" : [ + 67932.90140053735, + 70974.9491455594 + ], + "scorePercentiles" : { + "0.0" : 68693.4254198043, + "50.0" : 68981.39786361123, + "90.0" : 70688.90214143042, + "95.0" : 70688.90214143042, + "99.0" : 70688.90214143042, + "99.9" : 70688.90214143042, + "99.99" : 70688.90214143042, + "99.999" : 70688.90214143042, + "99.9999" : 70688.90214143042, + "100.0" : 70688.90214143042 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 68981.39786361123, + 68965.05800560681, + 68981.99555956059 + ], + [ + 70626.75144783205, + 70688.90214143042, + 70640.85183648426 + ], + [ + 68693.4254198043, + 68759.7918936698, + 68747.15328943594 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 356.10407851079464, + "scoreError" : 6.498936628587323, + "scoreConfidence" : [ + 349.6051418822073, + 362.60301513938197 + ], + "scorePercentiles" : { + "0.0" : 350.9120636475959, + "50.0" : 355.3428972137064, + "90.0" : 361.4061321659956, + "95.0" : 361.4061321659956, + "99.0" : 361.4061321659956, + "99.9" : 361.4061321659956, + "99.99" : 361.4061321659956, + "99.999" : 361.4061321659956, + "99.9999" : 361.4061321659956, + "100.0" : 361.4061321659956 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 354.25636836864624, + 354.82855651204625, + 351.4684689201288 + ], + [ + 360.4932364258982, + 360.36491162891963, + 361.4061321659956 + ], + [ + 355.8640717142149, + 355.3428972137064, + 350.9120636475959 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 107.31669412956369, + "scoreError" : 3.5778548693793955, + "scoreConfidence" : [ + 103.73883926018429, + 110.89454899894308 + ], + "scorePercentiles" : { + "0.0" : 105.79308903472088, + "50.0" : 105.93376479703352, + "90.0" : 110.34952243173072, + "95.0" : 110.34952243173072, + "99.0" : 110.34952243173072, + "99.9" : 110.34952243173072, + "99.99" : 110.34952243173072, + "99.999" : 110.34952243173072, + "99.9999" : 110.34952243173072, + "100.0" : 110.34952243173072 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 109.77252022787577, + 110.31612729927951, + 110.34952243173072 + ], + [ + 106.03328503402605, + 105.87577646935003, + 105.79308903472088 + ], + [ + 105.87219204411367, + 105.90396982794302, + 105.93376479703352 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06119980136377835, + "scoreError" : 8.618213928725673E-4, + "scoreConfidence" : [ + 0.060337979970905786, + 0.06206162275665092 + ], + "scorePercentiles" : { + "0.0" : 0.06066733146885389, + "50.0" : 0.06089297250114173, + "90.0" : 0.061862555115650385, + "95.0" : 0.061862555115650385, + "99.0" : 0.061862555115650385, + "99.9" : 0.061862555115650385, + "99.99" : 0.061862555115650385, + "99.999" : 0.061862555115650385, + "99.9999" : 0.061862555115650385, + "100.0" : 0.061862555115650385 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06178237913394827, + 0.061862555115650385, + 0.06185610631664894 + ], + [ + 0.06089089902575656, + 0.06089297250114173, + 0.06134222386549055 + ], + [ + 0.06074345491377582, + 0.0607602899327391, + 0.06066733146885389 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.714779192655463E-4, + "scoreError" : 1.623245467441315E-5, + "scoreConfidence" : [ + 3.552454645911331E-4, + 3.8771037393995944E-4 + ], + "scorePercentiles" : { + "0.0" : 3.584074242444118E-4, + "50.0" : 3.7633382446846465E-4, + "90.0" : 3.7957460862137523E-4, + "95.0" : 3.7957460862137523E-4, + "99.0" : 3.7957460862137523E-4, + "99.9" : 3.7957460862137523E-4, + "99.99" : 3.7957460862137523E-4, + "99.999" : 3.7957460862137523E-4, + "99.9999" : 3.7957460862137523E-4, + "100.0" : 3.7957460862137523E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.7924316070034667E-4, + 3.7957460862137523E-4, + 3.7955198229060557E-4 + ], + [ + 3.593466223899345E-4, + 3.5847276303743996E-4, + 3.584074242444118E-4 + ], + [ + 3.7633382446846465E-4, + 3.766252124611751E-4, + 3.7574567517616273E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014355010333514245, + "scoreError" : 4.1067815151196995E-4, + "scoreConfidence" : [ + 0.013944332182002275, + 0.014765688485026216 + ], + "scorePercentiles" : { + "0.0" : 0.014026616836784073, + "50.0" : 0.014459461475396798, + "90.0" : 0.01459370264405256, + "95.0" : 0.01459370264405256, + "99.0" : 0.01459370264405256, + "99.9" : 0.01459370264405256, + "99.99" : 0.01459370264405256, + "99.999" : 0.01459370264405256, + "99.9999" : 0.01459370264405256, + "100.0" : 0.01459370264405256 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014453072907829299, + 0.01459370264405256, + 0.014459461475396798 + ], + [ + 0.014026616836784073, + 0.014033903854924926, + 0.01404158894438352 + ], + [ + 0.014542850651003227, + 0.014528971946336417, + 0.01451492374091739 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9771543281961408, + "scoreError" : 0.02185627742500379, + "scoreConfidence" : [ + 0.955298050771137, + 0.9990106056211445 + ], + "scorePercentiles" : { + "0.0" : 0.9627037857142857, + "50.0" : 0.974022056199474, + "90.0" : 0.9980891943113772, + "95.0" : 0.9980891943113772, + "99.0" : 0.9980891943113772, + "99.9" : 0.9980891943113772, + "99.99" : 0.9980891943113772, + "99.999" : 0.9980891943113772, + "99.9999" : 0.9980891943113772, + "100.0" : 0.9980891943113772 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9669437919164572, + 0.9627037857142857, + 0.963355748579135 + ], + [ + 0.991817503818308, + 0.9980891943113772, + 0.989932828152841 + ], + [ + 0.974022056199474, + 0.9732893321654501, + 0.9742347129079396 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.012885614874331264, + "scoreError" : 5.050071426909742E-4, + "scoreConfidence" : [ + 0.01238060773164029, + 0.013390622017022237 + ], + "scorePercentiles" : { + "0.0" : 0.012721508086860284, + "50.0" : 0.012853246073407367, + "90.0" : 0.013082793771193537, + "95.0" : 0.013082793771193537, + "99.0" : 0.013082793771193537, + "99.9" : 0.013082793771193537, + "99.99" : 0.013082793771193537, + "99.999" : 0.013082793771193537, + "99.9999" : 0.013082793771193537, + "100.0" : 0.013082793771193537 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.012979090677596537, + 0.013082793771193537, + 0.013077631711922834 + ], + [ + 0.012727401469218198, + 0.012721508086860284, + 0.01272526352919619 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.6305832853859683, + "scoreError" : 0.07908803946707522, + "scoreConfidence" : [ + 3.551495245918893, + 3.7096713248530437 + ], + "scorePercentiles" : { + "0.0" : 3.5858967541218636, + "50.0" : 3.6275817135425212, + "90.0" : 3.661791859443631, + "95.0" : 3.661791859443631, + "99.0" : 3.661791859443631, + "99.9" : 3.661791859443631, + "99.99" : 3.661791859443631, + "99.999" : 3.661791859443631, + "99.9999" : 3.661791859443631, + "100.0" : 3.661791859443631 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.5858967541218636, + 3.620618655571635, + 3.624266738405797 + ], + [ + 3.630896688679245, + 3.6600290160936355, + 3.661791859443631 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.8635983475617643, + "scoreError" : 0.05318319058426944, + "scoreConfidence" : [ + 2.810415156977495, + 2.916781538146034 + ], + "scorePercentiles" : { + "0.0" : 2.814156100168824, + "50.0" : 2.8762246813344836, + "90.0" : 2.8928681952560025, + "95.0" : 2.8928681952560025, + "99.0" : 2.8928681952560025, + "99.9" : 2.8928681952560025, + "99.99" : 2.8928681952560025, + "99.999" : 2.8928681952560025, + "99.9999" : 2.8928681952560025, + "100.0" : 2.8928681952560025 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.8762246813344836, + 2.8830864364370137, + 2.8709831374856485 + ], + [ + 2.830178765138653, + 2.8240756487859966, + 2.814156100168824 + ], + [ + 2.8894638145044786, + 2.8913483489447818, + 2.8928681952560025 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17460592529590413, + "scoreError" : 0.007290842462030162, + "scoreConfidence" : [ + 0.16731508283387397, + 0.18189676775793429 + ], + "scorePercentiles" : { + "0.0" : 0.16902718518330714, + "50.0" : 0.17527733757492903, + "90.0" : 0.1789688415627181, + "95.0" : 0.1789688415627181, + "99.0" : 0.1789688415627181, + "99.9" : 0.1789688415627181, + "99.99" : 0.1789688415627181, + "99.999" : 0.1789688415627181, + "99.9999" : 0.1789688415627181, + "100.0" : 0.1789688415627181 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17740387072911123, + 0.1752745377618088, + 0.17527733757492903 + ], + [ + 0.16919842399837576, + 0.16908881285719116, + 0.16902718518330714 + ], + [ + 0.1789688415627181, + 0.17867402992728118, + 0.17854028806841513 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.32594856915486825, + "scoreError" : 0.006512483666661735, + "scoreConfidence" : [ + 0.3194360854882065, + 0.33246105282153 + ], + "scorePercentiles" : { + "0.0" : 0.32274181687913506, + "50.0" : 0.32294927724850636, + "90.0" : 0.3315308010542368, + "95.0" : 0.3315308010542368, + "99.0" : 0.3315308010542368, + "99.9" : 0.3315308010542368, + "99.99" : 0.3315308010542368, + "99.999" : 0.3315308010542368, + "99.9999" : 0.3315308010542368, + "100.0" : 0.3315308010542368 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3266327356937549, + 0.32294927724850636, + 0.32284441984116735 + ], + [ + 0.33064299758637794, + 0.3315308010542368, + 0.33034233406005353 + ], + [ + 0.3229322670584816, + 0.32292047297210025, + 0.32274181687913506 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16163972415380565, + "scoreError" : 0.007092012523861331, + "scoreConfidence" : [ + 0.15454771162994432, + 0.16873173667766697 + ], + "scorePercentiles" : { + "0.0" : 0.15710679449192483, + "50.0" : 0.16063566504963536, + "90.0" : 0.16717027942159812, + "95.0" : 0.16717027942159812, + "99.0" : 0.16717027942159812, + "99.9" : 0.16717027942159812, + "99.99" : 0.16717027942159812, + "99.999" : 0.16717027942159812, + "99.9999" : 0.16717027942159812, + "100.0" : 0.16717027942159812 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16096042670894428, + 0.16060938489335733, + 0.16063566504963536 + ], + [ + 0.15735056534600497, + 0.15741520246190657, + 0.15710679449192483 + ], + [ + 0.16711328819705554, + 0.16717027942159812, + 0.16639591081382385 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3908731216705499, + "scoreError" : 0.008318461719991843, + "scoreConfidence" : [ + 0.38255465995055804, + 0.3991915833905417 + ], + "scorePercentiles" : { + "0.0" : 0.3850710142472083, + "50.0" : 0.39186429463166145, + "90.0" : 0.39874439389952154, + "95.0" : 0.39874439389952154, + "99.0" : 0.39874439389952154, + "99.9" : 0.39874439389952154, + "99.99" : 0.39874439389952154, + "99.999" : 0.39874439389952154, + "99.9999" : 0.39874439389952154, + "100.0" : 0.39874439389952154 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.39874439389952154, + 0.3877659189220628, + 0.386286415868356 + ], + [ + 0.39493609237391886, + 0.3853260085153932, + 0.3850710142472083 + ], + [ + 0.39510388317332384, + 0.3927600734035033, + 0.39186429463166145 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1586786249037039, + "scoreError" : 0.0034100905503789674, + "scoreConfidence" : [ + 0.15526853435332494, + 0.16208871545408288 + ], + "scorePercentiles" : { + "0.0" : 0.15661870924496094, + "50.0" : 0.1578523135339058, + "90.0" : 0.16217684937238494, + "95.0" : 0.16217684937238494, + "99.0" : 0.16217684937238494, + "99.9" : 0.16217684937238494, + "99.99" : 0.16217684937238494, + "99.999" : 0.16217684937238494, + "99.9999" : 0.16217684937238494, + "100.0" : 0.16217684937238494 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15877473223358313, + 0.1578523135339058, + 0.15726137488598838 + ], + [ + 0.16217684937238494, + 0.16083772981536285, + 0.16052423554906337 + ], + [ + 0.15739435946549987, + 0.15666732003258604, + 0.15661870924496094 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04705562194714075, + "scoreError" : 0.001724178194025406, + "scoreConfidence" : [ + 0.04533144375311534, + 0.04877980014116615 + ], + "scorePercentiles" : { + "0.0" : 0.04576418512315, + "50.0" : 0.047069235799412586, + "90.0" : 0.048249880785691195, + "95.0" : 0.048249880785691195, + "99.0" : 0.048249880785691195, + "99.9" : 0.048249880785691195, + "99.99" : 0.048249880785691195, + "99.999" : 0.048249880785691195, + "99.9999" : 0.048249880785691195, + "100.0" : 0.048249880785691195 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.047069235799412586, + 0.04717382480446822, + 0.046859601845300296 + ], + [ + 0.048249880785691195, + 0.048244426864980386, + 0.048241332310631276 + ], + [ + 0.04600872909506655, + 0.04588938089556622, + 0.04576418512315 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9393487.11191537, + "scoreError" : 76117.81686439089, + "scoreConfidence" : [ + 9317369.295050979, + 9469604.928779762 + ], + "scorePercentiles" : { + "0.0" : 9326570.458527492, + "50.0" : 9421905.214689266, + "90.0" : 9427197.699340245, + "95.0" : 9427197.699340245, + "99.0" : 9427197.699340245, + "99.9" : 9427197.699340245, + "99.99" : 9427197.699340245, + "99.999" : 9427197.699340245, + "99.9999" : 9427197.699340245, + "100.0" : 9427197.699340245 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9423936.029190207, + 9422548.15913371, + 9421905.214689266 + ], + [ + 9331684.680037314, + 9341840.24089636, + 9326570.458527492 + ], + [ + 9427197.699340245, + 9420696.956685498, + 9425004.56873823 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-03-24T01:16:10Z-ae7279fa86294a4250c1df7bbf056a940e80459c-jdk17.json b/performance-results/2025-03-24T01:16:10Z-ae7279fa86294a4250c1df7bbf056a940e80459c-jdk17.json new file mode 100644 index 0000000000..2a0b401278 --- /dev/null +++ b/performance-results/2025-03-24T01:16:10Z-ae7279fa86294a4250c1df7bbf056a940e80459c-jdk17.json @@ -0,0 +1,1310 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.426145151023948, + "scoreError" : 0.013210663115301039, + "scoreConfidence" : [ + 3.412934487908647, + 3.439355814139249 + ], + "scorePercentiles" : { + "0.0" : 3.4234322248782174, + "50.0" : 3.426652794233978, + "90.0" : 3.427842790749618, + "95.0" : 3.427842790749618, + "99.0" : 3.427842790749618, + "99.9" : 3.427842790749618, + "99.99" : 3.427842790749618, + "99.999" : 3.427842790749618, + "99.9999" : 3.427842790749618, + "100.0" : 3.427842790749618 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4275964386075892, + 3.427842790749618 + ], + [ + 3.4234322248782174, + 3.4257091498603667 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.729128204255764, + "scoreError" : 0.007766170352462106, + "scoreConfidence" : [ + 1.721362033903302, + 1.7368943746082262 + ], + "scorePercentiles" : { + "0.0" : 1.7279808848819176, + "50.0" : 1.7290426231590101, + "90.0" : 1.7304466858231178, + "95.0" : 1.7304466858231178, + "99.0" : 1.7304466858231178, + "99.9" : 1.7304466858231178, + "99.99" : 1.7304466858231178, + "99.999" : 1.7304466858231178, + "99.9999" : 1.7304466858231178, + "100.0" : 1.7304466858231178 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7282477158561975, + 1.7298375304618228 + ], + [ + 1.7279808848819176, + 1.7304466858231178 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8683695224465093, + "scoreError" : 0.0022479338394988647, + "scoreConfidence" : [ + 0.8661215886070105, + 0.8706174562860082 + ], + "scorePercentiles" : { + "0.0" : 0.8679904677398708, + "50.0" : 0.8683417491104126, + "90.0" : 0.8688041238253417, + "95.0" : 0.8688041238253417, + "99.0" : 0.8688041238253417, + "99.9" : 0.8688041238253417, + "99.99" : 0.8688041238253417, + "99.999" : 0.8688041238253417, + "99.9999" : 0.8688041238253417, + "100.0" : 0.8688041238253417 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8682214628124686, + 0.8684620354083565 + ], + [ + 0.8679904677398708, + 0.8688041238253417 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.240687874378818, + "scoreError" : 0.14206130369424322, + "scoreConfidence" : [ + 16.098626570684573, + 16.382749178073063 + ], + "scorePercentiles" : { + "0.0" : 16.102134406564456, + "50.0" : 16.20890091093278, + "90.0" : 16.34498291737838, + "95.0" : 16.34498291737838, + "99.0" : 16.34498291737838, + "99.9" : 16.34498291737838, + "99.99" : 16.34498291737838, + "99.999" : 16.34498291737838, + "99.9999" : 16.34498291737838, + "100.0" : 16.34498291737838 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.33512895649821, + 16.342082271169485, + 16.34498291737838 + ], + [ + 16.20890091093278, + 16.201763368385475, + 16.204084508361756 + ], + [ + 16.102134406564456, + 16.177766103475452, + 16.24934742664334 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2768.9873500346007, + "scoreError" : 104.42207140117078, + "scoreConfidence" : [ + 2664.56527863343, + 2873.4094214357715 + ], + "scorePercentiles" : { + "0.0" : 2685.5244079379963, + "50.0" : 2795.830847084459, + "90.0" : 2824.7859522281055, + "95.0" : 2824.7859522281055, + "99.0" : 2824.7859522281055, + "99.9" : 2824.7859522281055, + "99.99" : 2824.7859522281055, + "99.999" : 2824.7859522281055, + "99.9999" : 2824.7859522281055, + "100.0" : 2824.7859522281055 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2687.576466737567, + 2685.5244079379963, + 2691.1189811657555 + ], + [ + 2824.4863505006483, + 2824.7859522281055, + 2824.782033862034 + ], + [ + 2790.6171435181855, + 2796.1639672766546, + 2795.830847084459 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 69477.58904509427, + "scoreError" : 2033.1449142317103, + "scoreConfidence" : [ + 67444.44413086255, + 71510.73395932598 + ], + "scorePercentiles" : { + "0.0" : 68354.45274228718, + "50.0" : 68850.00819272888, + "90.0" : 71104.42582085764, + "95.0" : 71104.42582085764, + "99.0" : 71104.42582085764, + "99.9" : 71104.42582085764, + "99.99" : 71104.42582085764, + "99.999" : 71104.42582085764, + "99.9999" : 71104.42582085764, + "100.0" : 71104.42582085764 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 68845.9116730038, + 68850.00819272888, + 68933.08606569297 + ], + [ + 68354.45274228718, + 68569.71784579945, + 68527.59360154229 + ], + [ + 71069.65064660512, + 71043.45481733108, + 71104.42582085764 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 353.43246559746035, + "scoreError" : 5.017815172324881, + "scoreConfidence" : [ + 348.41465042513545, + 358.45028076978525 + ], + "scorePercentiles" : { + "0.0" : 348.49531796540316, + "50.0" : 352.22740012108295, + "90.0" : 357.6247499948426, + "95.0" : 357.6247499948426, + "99.0" : 357.6247499948426, + "99.9" : 357.6247499948426, + "99.99" : 357.6247499948426, + "99.999" : 357.6247499948426, + "99.9999" : 357.6247499948426, + "100.0" : 357.6247499948426 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 351.5264560603956, + 352.22740012108295, + 348.49531796540316 + ], + [ + 356.42376106443544, + 356.8220207221888, + 357.6247499948426 + ], + [ + 352.2169543217317, + 351.9050707919133, + 353.6504593351496 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 108.90948380386186, + "scoreError" : 3.918996971616842, + "scoreConfidence" : [ + 104.99048683224501, + 112.82848077547871 + ], + "scorePercentiles" : { + "0.0" : 105.69252450514203, + "50.0" : 109.97755758368027, + "90.0" : 111.12718275777527, + "95.0" : 111.12718275777527, + "99.0" : 111.12718275777527, + "99.9" : 111.12718275777527, + "99.99" : 111.12718275777527, + "99.999" : 111.12718275777527, + "99.9999" : 111.12718275777527, + "100.0" : 111.12718275777527 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 109.97755758368027, + 110.15002579246816, + 109.55958182687034 + ], + [ + 110.62620785006521, + 111.11818071668289, + 111.12718275777527 + ], + [ + 105.69252450514203, + 105.96696635595293, + 105.96712684611965 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.061097025447483445, + "scoreError" : 0.0011606211932044168, + "scoreConfidence" : [ + 0.05993640425427903, + 0.062257646640687864 + ], + "scorePercentiles" : { + "0.0" : 0.06035415747290153, + "50.0" : 0.06096801351030039, + "90.0" : 0.06199666086385081, + "95.0" : 0.06199666086385081, + "99.0" : 0.06199666086385081, + "99.9" : 0.06199666086385081, + "99.99" : 0.06199666086385081, + "99.999" : 0.06199666086385081, + "99.9999" : 0.06199666086385081, + "100.0" : 0.06199666086385081 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06199666086385081, + 0.061894619520075266, + 0.061959236395516704 + ], + [ + 0.06036282408083686, + 0.06035415747290153, + 0.06040292525837023 + ], + [ + 0.06096801351030039, + 0.06101391860841128, + 0.06092087331708803 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.578972828265755E-4, + "scoreError" : 5.7237137478910345E-6, + "scoreConfidence" : [ + 3.5217356907868446E-4, + 3.6362099657446655E-4 + ], + "scorePercentiles" : { + "0.0" : 3.549562143708115E-4, + "50.0" : 3.5624617220250085E-4, + "90.0" : 3.6339893810142566E-4, + "95.0" : 3.6339893810142566E-4, + "99.0" : 3.6339893810142566E-4, + "99.9" : 3.6339893810142566E-4, + "99.99" : 3.6339893810142566E-4, + "99.999" : 3.6339893810142566E-4, + "99.9999" : 3.6339893810142566E-4, + "100.0" : 3.6339893810142566E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.6191391529543857E-4, + 3.6339893810142566E-4, + 3.617474791706142E-4 + ], + [ + 3.563956431412455E-4, + 3.549562143708115E-4, + 3.553836690005984E-4 + ], + [ + 3.5512751742728077E-4, + 3.5590599672926385E-4, + 3.5624617220250085E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014230959816322204, + "scoreError" : 3.529362494757639E-4, + "scoreConfidence" : [ + 0.01387802356684644, + 0.014583896065797968 + ], + "scorePercentiles" : { + "0.0" : 0.014070434197529822, + "50.0" : 0.014109343967413465, + "90.0" : 0.014518360081650312, + "95.0" : 0.014518360081650312, + "99.0" : 0.014518360081650312, + "99.9" : 0.014518360081650312, + "99.99" : 0.014518360081650312, + "99.999" : 0.014518360081650312, + "99.9999" : 0.014518360081650312, + "100.0" : 0.014518360081650312 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014070434197529822, + 0.014071993049926826, + 0.01409282296653415 + ], + [ + 0.014109343967413465, + 0.014115185616529233, + 0.01408806176698895 + ], + [ + 0.014518360081650312, + 0.014509509125652376, + 0.014502927574674702 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9697289381301906, + "scoreError" : 0.00528362052375522, + "scoreConfidence" : [ + 0.9644453176064354, + 0.9750125586539458 + ], + "scorePercentiles" : { + "0.0" : 0.9641568281912842, + "50.0" : 0.9692605071719326, + "90.0" : 0.9739204806194001, + "95.0" : 0.9739204806194001, + "99.0" : 0.9739204806194001, + "99.9" : 0.9739204806194001, + "99.99" : 0.9739204806194001, + "99.999" : 0.9739204806194001, + "99.9999" : 0.9739204806194001, + "100.0" : 0.9739204806194001 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9677952521049066, + 0.9674707717906549, + 0.9706912509948559 + ], + [ + 0.9641568281912842, + 0.9739204806194001, + 0.9733063868613139 + ], + [ + 0.9722907940890531, + 0.9692605071719326, + 0.9686681713483146 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.013101354791376594, + "scoreError" : 4.999515490779988E-4, + "scoreConfidence" : [ + 0.012601403242298595, + 0.013601306340454592 + ], + "scorePercentiles" : { + "0.0" : 0.012865263901217797, + "50.0" : 0.013119884615840766, + "90.0" : 0.013265388737961957, + "95.0" : 0.013265388737961957, + "99.0" : 0.013265388737961957, + "99.9" : 0.013265388737961957, + "99.99" : 0.013265388737961957, + "99.999" : 0.013265388737961957, + "99.9999" : 0.013265388737961957, + "100.0" : 0.013265388737961957 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.012865263901217797, + 0.012979990903828231, + 0.012984937465915287 + ], + [ + 0.013257715973570058, + 0.013265388737961957, + 0.013254831765766244 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.5684094461451203, + "scoreError" : 0.06843728423472582, + "scoreConfidence" : [ + 3.4999721619103945, + 3.636846730379846 + ], + "scorePercentiles" : { + "0.0" : 3.5270711086036672, + "50.0" : 3.5678580502980344, + "90.0" : 3.595799877785766, + "95.0" : 3.595799877785766, + "99.0" : 3.595799877785766, + "99.9" : 3.595799877785766, + "99.99" : 3.595799877785766, + "99.999" : 3.595799877785766, + "99.9999" : 3.595799877785766, + "100.0" : 3.595799877785766 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.5617510263532766, + 3.595799877785766, + 3.5901185635319455 + ], + [ + 3.5270711086036672, + 3.5666760649072753, + 3.569040035688794 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.8218470565413725, + "scoreError" : 0.058995670696254006, + "scoreConfidence" : [ + 2.7628513858451185, + 2.8808427272376265 + ], + "scorePercentiles" : { + "0.0" : 2.7884896799553944, + "50.0" : 2.812975501265823, + "90.0" : 2.8689687375215147, + "95.0" : 2.8689687375215147, + "99.0" : 2.8689687375215147, + "99.9" : 2.8689687375215147, + "99.99" : 2.8689687375215147, + "99.999" : 2.8689687375215147, + "99.9999" : 2.8689687375215147, + "100.0" : 2.8689687375215147 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.866157445558739, + 2.8689687375215147, + 2.865885706876791 + ], + [ + 2.7884896799553944, + 2.7952312970933484, + 2.788916612660346 + ], + [ + 2.8146177188291586, + 2.812975501265823, + 2.7953808091112355 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17479665863226598, + "scoreError" : 0.0036510964053856694, + "scoreConfidence" : [ + 0.17114556222688032, + 0.17844775503765165 + ], + "scorePercentiles" : { + "0.0" : 0.17170469753266598, + "50.0" : 0.1757618755800056, + "90.0" : 0.17690241083337757, + "95.0" : 0.17690241083337757, + "99.0" : 0.17690241083337757, + "99.9" : 0.17690241083337757, + "99.99" : 0.17690241083337757, + "99.999" : 0.17690241083337757, + "99.9999" : 0.17690241083337757, + "100.0" : 0.17690241083337757 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17690241083337757, + 0.17658258348636813, + 0.17661318091907738 + ], + [ + 0.1757618755800056, + 0.1759331799405359, + 0.17544330049122808 + ], + [ + 0.1724683128503182, + 0.17170469753266598, + 0.171760386056817 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3246266612392709, + "scoreError" : 0.019924162165017714, + "scoreConfidence" : [ + 0.30470249907425323, + 0.3445508234042886 + ], + "scorePercentiles" : { + "0.0" : 0.31273289608155863, + "50.0" : 0.3212355564549806, + "90.0" : 0.3402318470043888, + "95.0" : 0.3402318470043888, + "99.0" : 0.3402318470043888, + "99.9" : 0.3402318470043888, + "99.99" : 0.3402318470043888, + "99.999" : 0.3402318470043888, + "99.9999" : 0.3402318470043888, + "100.0" : 0.3402318470043888 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3220469740435399, + 0.3212355564549806, + 0.32113408535371374 + ], + [ + 0.3128711308700685, + 0.3127965790247412, + 0.31273289608155863 + ], + [ + 0.3402318470043888, + 0.3399265549134913, + 0.3386643274069559 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1609434612920892, + "scoreError" : 0.005787544780688637, + "scoreConfidence" : [ + 0.15515591651140057, + 0.16673100607277783 + ], + "scorePercentiles" : { + "0.0" : 0.157457594693749, + "50.0" : 0.15970487859526966, + "90.0" : 0.16554137850320316, + "95.0" : 0.16554137850320316, + "99.0" : 0.16554137850320316, + "99.9" : 0.16554137850320316, + "99.99" : 0.16554137850320316, + "99.999" : 0.16554137850320316, + "99.9999" : 0.16554137850320316, + "100.0" : 0.16554137850320316 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15970487859526966, + 0.15976183559127072, + 0.1596239163421019 + ], + [ + 0.16554137850320316, + 0.16528086764511438, + 0.16534963091320953 + ], + [ + 0.15787519901172978, + 0.1578958503331544, + 0.157457594693749 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.38969563839387505, + "scoreError" : 0.01257371231763372, + "scoreConfidence" : [ + 0.37712192607624134, + 0.40226935071150877 + ], + "scorePercentiles" : { + "0.0" : 0.38017483816149633, + "50.0" : 0.3889050955510617, + "90.0" : 0.40367623961571064, + "95.0" : 0.40367623961571064, + "99.0" : 0.40367623961571064, + "99.9" : 0.40367623961571064, + "99.99" : 0.40367623961571064, + "99.999" : 0.40367623961571064, + "99.9999" : 0.40367623961571064, + "100.0" : 0.40367623961571064 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3834444588190184, + 0.38162887341627233, + 0.38017483816149633 + ], + [ + 0.40367623961571064, + 0.39445489649731774, + 0.39294918110731264 + ], + [ + 0.3941998362568489, + 0.3878273261198371, + 0.3889050955510617 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15826806224850987, + "scoreError" : 0.002061095263214545, + "scoreConfidence" : [ + 0.15620696698529532, + 0.1603291575117244 + ], + "scorePercentiles" : { + "0.0" : 0.15657704847497964, + "50.0" : 0.15863054351929698, + "90.0" : 0.1598088950396318, + "95.0" : 0.1598088950396318, + "99.0" : 0.1598088950396318, + "99.9" : 0.1598088950396318, + "99.99" : 0.1598088950396318, + "99.999" : 0.1598088950396318, + "99.9999" : 0.1598088950396318, + "100.0" : 0.1598088950396318 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1598088950396318, + 0.1592978537840292, + 0.15920936771635993 + ], + [ + 0.15691187307788865, + 0.15657704847497964, + 0.15667079597048364 + ], + [ + 0.15878778983470682, + 0.15863054351929698, + 0.15851839281921218 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.048150610010993106, + "scoreError" : 0.001506079249802445, + "scoreConfidence" : [ + 0.04664453076119066, + 0.04965668926079555 + ], + "scorePercentiles" : { + "0.0" : 0.04693892552782028, + "50.0" : 0.04831327972558398, + "90.0" : 0.04916321137915607, + "95.0" : 0.04916321137915607, + "99.0" : 0.04916321137915607, + "99.9" : 0.04916321137915607, + "99.99" : 0.04916321137915607, + "99.999" : 0.04916321137915607, + "99.9999" : 0.04916321137915607, + "100.0" : 0.04916321137915607 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.048350991471009165, + 0.04831327972558398, + 0.048275269739509914 + ], + [ + 0.04721030312243299, + 0.04699559927439858, + 0.04693892552782028 + ], + [ + 0.04916321137915607, + 0.049058127318573605, + 0.049049782540453314 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9279650.608622259, + "scoreError" : 462029.7659555513, + "scoreConfidence" : [ + 8817620.842666708, + 9741680.37457781 + ], + "scorePercentiles" : { + "0.0" : 8933317.997321429, + "50.0" : 9321904.258154707, + "90.0" : 9607548.77137368, + "95.0" : 9607548.77137368, + "99.0" : 9607548.77137368, + "99.9" : 9607548.77137368, + "99.99" : 9607548.77137368, + "99.999" : 9607548.77137368, + "99.9999" : 9607548.77137368, + "100.0" : 9607548.77137368 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 8953302.709937332, + 8933317.997321429, + 8941444.654155497 + ], + [ + 9314768.808193669, + 9321904.258154707, + 9337448.018674137 + ], + [ + 9607548.77137368, + 9554760.581661891, + 9552359.678127985 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-03-31T23:20:48Z-cd99d17c3d8134fcfa8ca0ab4f2283c99b1370e7-jdk17.json b/performance-results/2025-03-31T23:20:48Z-cd99d17c3d8134fcfa8ca0ab4f2283c99b1370e7-jdk17.json new file mode 100644 index 0000000000..ac01ce7b4f --- /dev/null +++ b/performance-results/2025-03-31T23:20:48Z-cd99d17c3d8134fcfa8ca0ab4f2283c99b1370e7-jdk17.json @@ -0,0 +1,1310 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4095002146992455, + "scoreError" : 0.025505340753752086, + "scoreConfidence" : [ + 3.3839948739454933, + 3.4350055554529977 + ], + "scorePercentiles" : { + "0.0" : 3.404163195746615, + "50.0" : 3.4102788182455352, + "90.0" : 3.4132800265592973, + "95.0" : 3.4132800265592973, + "99.0" : 3.4132800265592973, + "99.9" : 3.4132800265592973, + "99.99" : 3.4132800265592973, + "99.999" : 3.4132800265592973, + "99.9999" : 3.4132800265592973, + "100.0" : 3.4132800265592973 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4132800265592973, + 3.411452008475927 + ], + [ + 3.404163195746615, + 3.4091056280151433 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7245578519058582, + "scoreError" : 0.024912795202235074, + "scoreConfidence" : [ + 1.6996450567036232, + 1.7494706471080932 + ], + "scorePercentiles" : { + "0.0" : 1.7211598482106032, + "50.0" : 1.7235201540372407, + "90.0" : 1.7300312513383473, + "95.0" : 1.7300312513383473, + "99.0" : 1.7300312513383473, + "99.9" : 1.7300312513383473, + "99.99" : 1.7300312513383473, + "99.999" : 1.7300312513383473, + "99.9999" : 1.7300312513383473, + "100.0" : 1.7300312513383473 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7211598482106032, + 1.7228377141578146 + ], + [ + 1.7242025939166667, + 1.7300312513383473 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8653820156363996, + "scoreError" : 0.010780862871240771, + "scoreConfidence" : [ + 0.8546011527651588, + 0.8761628785076404 + ], + "scorePercentiles" : { + "0.0" : 0.8629236869657826, + "50.0" : 0.8659809453132804, + "90.0" : 0.8666424849532549, + "95.0" : 0.8666424849532549, + "99.0" : 0.8666424849532549, + "99.9" : 0.8666424849532549, + "99.99" : 0.8666424849532549, + "99.999" : 0.8666424849532549, + "99.9999" : 0.8666424849532549, + "100.0" : 0.8666424849532549 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8659980265177031, + 0.8659638641088577 + ], + [ + 0.8629236869657826, + 0.8666424849532549 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 15.845427151308781, + "scoreError" : 0.23528497239241766, + "scoreConfidence" : [ + 15.610142178916364, + 16.0807121237012 + ], + "scorePercentiles" : { + "0.0" : 15.685382986452229, + "50.0" : 15.794741526952283, + "90.0" : 16.05433497503823, + "95.0" : 16.05433497503823, + "99.0" : 16.05433497503823, + "99.9" : 16.05433497503823, + "99.99" : 16.05433497503823, + "99.999" : 16.05433497503823, + "99.9999" : 16.05433497503823, + "100.0" : 16.05433497503823 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 15.705963889103662, + 15.983985656350747, + 15.907397863104613 + ], + [ + 15.794741526952283, + 15.685382986452229, + 15.783258404085283 + ], + [ + 15.707878097947686, + 16.05433497503823, + 15.985900962744292 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2618.6331027609417, + "scoreError" : 164.53393097173048, + "scoreConfidence" : [ + 2454.099171789211, + 2783.1670337326723 + ], + "scorePercentiles" : { + "0.0" : 2526.588483782207, + "50.0" : 2574.4482466906097, + "90.0" : 2779.116655176981, + "95.0" : 2779.116655176981, + "99.0" : 2779.116655176981, + "99.9" : 2779.116655176981, + "99.99" : 2779.116655176981, + "99.999" : 2779.116655176981, + "99.9999" : 2779.116655176981, + "100.0" : 2779.116655176981 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2574.4482466906097, + 2567.169496959159, + 2583.5862751102313 + ], + [ + 2691.7266850893725, + 2759.1161944439864, + 2779.116655176981 + ], + [ + 2526.588483782207, + 2550.387208827728, + 2535.558678768202 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 70548.16913826618, + "scoreError" : 244.49656136443414, + "scoreConfidence" : [ + 70303.67257690175, + 70792.66569963061 + ], + "scorePercentiles" : { + "0.0" : 70333.39038528103, + "50.0" : 70574.58948612705, + "90.0" : 70727.34078165884, + "95.0" : 70727.34078165884, + "99.0" : 70727.34078165884, + "99.9" : 70727.34078165884, + "99.99" : 70727.34078165884, + "99.999" : 70727.34078165884, + "99.9999" : 70727.34078165884, + "100.0" : 70727.34078165884 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 70727.34078165884, + 70333.39038528103, + 70469.07400113309 + ], + [ + 70446.7874393602, + 70574.58948612705, + 70377.48010235681 + ], + [ + 70686.9996314109, + 70637.21329216441, + 70680.64712490341 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 333.90502579287846, + "scoreError" : 10.48452847769103, + "scoreConfidence" : [ + 323.42049731518745, + 344.3895542705695 + ], + "scorePercentiles" : { + "0.0" : 323.7340712326594, + "50.0" : 332.554273388344, + "90.0" : 344.35325070599015, + "95.0" : 344.35325070599015, + "99.0" : 344.35325070599015, + "99.9" : 344.35325070599015, + "99.99" : 344.35325070599015, + "99.999" : 344.35325070599015, + "99.9999" : 344.35325070599015, + "100.0" : 344.35325070599015 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 323.7340712326594, + 330.9442044287599, + 332.554273388344 + ], + [ + 344.35325070599015, + 341.53721675036223, + 330.2777034476568 + ], + [ + 337.1697350039635, + 332.963429061658, + 331.611348116512 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 105.14950954869005, + "scoreError" : 4.836651540160923, + "scoreConfidence" : [ + 100.31285800852912, + 109.98616108885098 + ], + "scorePercentiles" : { + "0.0" : 100.91133191706817, + "50.0" : 106.59798299070972, + "90.0" : 108.39761451537689, + "95.0" : 108.39761451537689, + "99.0" : 108.39761451537689, + "99.9" : 108.39761451537689, + "99.99" : 108.39761451537689, + "99.999" : 108.39761451537689, + "99.9999" : 108.39761451537689, + "100.0" : 108.39761451537689 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 101.27462527804794, + 100.91133191706817, + 102.60138617565751 + ], + [ + 106.59798299070972, + 104.85781049140613, + 106.73497928138285 + ], + [ + 108.39761451537689, + 108.05399948905632, + 106.91585579950491 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.0635880857287969, + "scoreError" : 0.0011326306299092221, + "scoreConfidence" : [ + 0.062455455098887676, + 0.06472071635870612 + ], + "scorePercentiles" : { + "0.0" : 0.062470017516351305, + "50.0" : 0.0637208354944978, + "90.0" : 0.06454115485794684, + "95.0" : 0.06454115485794684, + "99.0" : 0.06454115485794684, + "99.9" : 0.06454115485794684, + "99.99" : 0.06454115485794684, + "99.999" : 0.06454115485794684, + "99.9999" : 0.06454115485794684, + "100.0" : 0.06454115485794684 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.062470017516351305, + 0.06317745563438563, + 0.06288347814522062 + ], + [ + 0.06391383142340362, + 0.06341452927486604, + 0.0637208354944978 + ], + [ + 0.06437003169535384, + 0.06380143751714634, + 0.06454115485794684 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.731061859869773E-4, + "scoreError" : 7.774255833409394E-6, + "scoreConfidence" : [ + 3.6533193015356787E-4, + 3.808804418203867E-4 + ], + "scorePercentiles" : { + "0.0" : 3.6551122994718863E-4, + "50.0" : 3.755504457892557E-4, + "90.0" : 3.7857010140567406E-4, + "95.0" : 3.7857010140567406E-4, + "99.0" : 3.7857010140567406E-4, + "99.9" : 3.7857010140567406E-4, + "99.99" : 3.7857010140567406E-4, + "99.999" : 3.7857010140567406E-4, + "99.9999" : 3.7857010140567406E-4, + "100.0" : 3.7857010140567406E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.757933912683506E-4, + 3.76255239570355E-4, + 3.7088208784642214E-4 + ], + [ + 3.7857010140567406E-4, + 3.755504457892557E-4, + 3.770222975377734E-4 + ], + [ + 3.71370276442085E-4, + 3.670006040756906E-4, + 3.6551122994718863E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014464432942230857, + "scoreError" : 3.773796000125417E-4, + "scoreConfidence" : [ + 0.014087053342218315, + 0.014841812542243399 + ], + "scorePercentiles" : { + "0.0" : 0.01420708790665494, + "50.0" : 0.014423894288491884, + "90.0" : 0.01477697409632679, + "95.0" : 0.01477697409632679, + "99.0" : 0.01477697409632679, + "99.9" : 0.01477697409632679, + "99.99" : 0.01477697409632679, + "99.999" : 0.01477697409632679, + "99.9999" : 0.01477697409632679, + "100.0" : 0.01477697409632679 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014423894288491884, + 0.014402292067465215, + 0.014473567330947153 + ], + [ + 0.01474985725411184, + 0.014677930232216797, + 0.01477697409632679 + ], + [ + 0.01420708790665494, + 0.014254813051832719, + 0.014213480252030371 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 1.0010298916700413, + "scoreError" : 0.015481496915640302, + "scoreConfidence" : [ + 0.985548394754401, + 1.0165113885856816 + ], + "scorePercentiles" : { + "0.0" : 0.991348368259318, + "50.0" : 0.9985827688467299, + "90.0" : 1.022128904333606, + "95.0" : 1.022128904333606, + "99.0" : 1.022128904333606, + "99.9" : 1.022128904333606, + "99.99" : 1.022128904333606, + "99.999" : 1.022128904333606, + "99.9999" : 1.022128904333606, + "100.0" : 1.022128904333606 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9941657343672333, + 0.9980671982035928, + 0.991348368259318 + ], + [ + 0.9985827688467299, + 1.0013906113336004, + 1.022128904333606 + ], + [ + 1.005601708396179, + 1.0039356745306696, + 0.9940480567594433 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.012962170975303838, + "scoreError" : 3.677345354410526E-4, + "scoreConfidence" : [ + 0.012594436439862786, + 0.01332990551074489 + ], + "scorePercentiles" : { + "0.0" : 0.012833838495399187, + "50.0" : 0.012916732160113319, + "90.0" : 0.01318912247864082, + "95.0" : 0.01318912247864082, + "99.0" : 0.01318912247864082, + "99.9" : 0.01318912247864082, + "99.99" : 0.01318912247864082, + "99.999" : 0.01318912247864082, + "99.9999" : 0.01318912247864082, + "100.0" : 0.01318912247864082 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.012908908054701438, + 0.01318912247864082, + 0.01304114794828526 + ], + [ + 0.012833838495399187, + 0.012875452609271113, + 0.012924556265525201 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.9034817930410655, + "scoreError" : 0.22224119148390883, + "scoreConfidence" : [ + 3.681240601557157, + 4.125722984524974 + ], + "scorePercentiles" : { + "0.0" : 3.7797827596371882, + "50.0" : 3.8966766567625974, + "90.0" : 3.991222782122905, + "95.0" : 3.991222782122905, + "99.0" : 3.991222782122905, + "99.9" : 3.991222782122905, + "99.99" : 3.991222782122905, + "99.999" : 3.991222782122905, + "99.9999" : 3.991222782122905, + "100.0" : 3.991222782122905 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.7797827596371882, + 3.868858556071152, + 3.900277293291732 + ], + [ + 3.893076020233463, + 3.9876733468899523, + 3.991222782122905 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.9975317276163223, + "scoreError" : 0.10471051985244478, + "scoreConfidence" : [ + 2.8928212077638773, + 3.102242247468767 + ], + "scorePercentiles" : { + "0.0" : 2.902337391468369, + "50.0" : 3.0179460974652987, + "90.0" : 3.090146808773556, + "95.0" : 3.090146808773556, + "99.0" : 3.090146808773556, + "99.9" : 3.090146808773556, + "99.99" : 3.090146808773556, + "99.999" : 3.090146808773556, + "99.9999" : 3.090146808773556, + "100.0" : 3.090146808773556 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.052372484894721, + 3.0179460974652987, + 3.090146808773556 + ], + [ + 2.997661714028777, + 2.902337391468369, + 2.909984528658714 + ], + [ + 3.0189954114095987, + 2.963754678222222, + 3.0245864336256427 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17330625960990392, + "scoreError" : 0.0066047385708272064, + "scoreConfidence" : [ + 0.1667015210390767, + 0.17991099818073114 + ], + "scorePercentiles" : { + "0.0" : 0.1698520789965351, + "50.0" : 0.17148525901982303, + "90.0" : 0.17856710444083354, + "95.0" : 0.17856710444083354, + "99.0" : 0.17856710444083354, + "99.9" : 0.17856710444083354, + "99.99" : 0.17856710444083354, + "99.999" : 0.17856710444083354, + "99.9999" : 0.17856710444083354, + "100.0" : 0.17856710444083354 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17148525901982303, + 0.17180318619753637, + 0.17054395748418233 + ], + [ + 0.17856710444083354, + 0.17850592938488452, + 0.17838055207720163 + ], + [ + 0.17040596131890604, + 0.17021230756923286, + 0.1698520789965351 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3292259542440874, + "scoreError" : 0.012091801546312187, + "scoreConfidence" : [ + 0.31713415269777523, + 0.3413177557903996 + ], + "scorePercentiles" : { + "0.0" : 0.3221258255113545, + "50.0" : 0.3256091559274574, + "90.0" : 0.33965986006385435, + "95.0" : 0.33965986006385435, + "99.0" : 0.33965986006385435, + "99.9" : 0.33965986006385435, + "99.99" : 0.33965986006385435, + "99.999" : 0.33965986006385435, + "99.9999" : 0.33965986006385435, + "100.0" : 0.33965986006385435 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3256091559274574, + 0.32656926765070865, + 0.3250800603972304 + ], + [ + 0.33965986006385435, + 0.33829378360001355, + 0.33800826975596565 + ], + [ + 0.3221258255113545, + 0.32344406209974774, + 0.3242433031904546 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.164591468070587, + "scoreError" : 0.010540941826718983, + "scoreConfidence" : [ + 0.154050526243868, + 0.175132409897306 + ], + "scorePercentiles" : { + "0.0" : 0.15646001839943674, + "50.0" : 0.16499985348468849, + "90.0" : 0.1718761545296736, + "95.0" : 0.1718761545296736, + "99.0" : 0.1718761545296736, + "99.9" : 0.1718761545296736, + "99.99" : 0.1718761545296736, + "99.999" : 0.1718761545296736, + "99.9999" : 0.1718761545296736, + "100.0" : 0.1718761545296736 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16499985348468849, + 0.16565805920453228, + 0.16446735321689362 + ], + [ + 0.17158116838529244, + 0.1712827279562894, + 0.1718761545296736 + ], + [ + 0.15763110239435066, + 0.15646001839943674, + 0.15736677506412577 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.39030310779049593, + "scoreError" : 0.0062346041971935336, + "scoreConfidence" : [ + 0.3840685035933024, + 0.39653771198768945 + ], + "scorePercentiles" : { + "0.0" : 0.3861410541740675, + "50.0" : 0.38990841648471614, + "90.0" : 0.3984212686454183, + "95.0" : 0.3984212686454183, + "99.0" : 0.3984212686454183, + "99.9" : 0.3984212686454183, + "99.99" : 0.3984212686454183, + "99.999" : 0.3984212686454183, + "99.9999" : 0.3984212686454183, + "100.0" : 0.3984212686454183 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.38856887371774945, + 0.38621954667284597, + 0.3861410541740675 + ], + [ + 0.3902935326854779, + 0.38990841648471614, + 0.389275338030362 + ], + [ + 0.3984212686454183, + 0.39248510859497643, + 0.39141483110884967 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15973932982259292, + "scoreError" : 0.004125870217414085, + "scoreConfidence" : [ + 0.15561345960517883, + 0.16386520004000701 + ], + "scorePercentiles" : { + "0.0" : 0.15601926915876185, + "50.0" : 0.1600415154837161, + "90.0" : 0.16276038462289638, + "95.0" : 0.16276038462289638, + "99.0" : 0.16276038462289638, + "99.9" : 0.16276038462289638, + "99.99" : 0.16276038462289638, + "99.999" : 0.16276038462289638, + "99.9999" : 0.16276038462289638, + "100.0" : 0.16276038462289638 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16039395408032334, + 0.1600415154837161, + 0.1600059933438935 + ], + [ + 0.1571330822098614, + 0.15717875150495889, + 0.15601926915876185 + ], + [ + 0.16276038462289638, + 0.16258213159049895, + 0.16153888640842567 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04749754239285639, + "scoreError" : 6.638648530745888E-4, + "scoreConfidence" : [ + 0.0468336775397818, + 0.04816140724593098 + ], + "scorePercentiles" : { + "0.0" : 0.04688907084816175, + "50.0" : 0.04767168074233331, + "90.0" : 0.04789557901240481, + "95.0" : 0.04789557901240481, + "99.0" : 0.04789557901240481, + "99.9" : 0.04789557901240481, + "99.99" : 0.04789557901240481, + "99.999" : 0.04789557901240481, + "99.9999" : 0.04789557901240481, + "100.0" : 0.04789557901240481 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.046991556753302285, + 0.04688907084816175, + 0.04708833516975091 + ], + [ + 0.047696189976295295, + 0.04767168074233331, + 0.04775386363592952 + ], + [ + 0.04789557901240481, + 0.047608589495784316, + 0.04788301590174531 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9596764.60533551, + "scoreError" : 238953.03479679223, + "scoreConfidence" : [ + 9357811.570538716, + 9835717.640132302 + ], + "scorePercentiles" : { + "0.0" : 9416117.540921919, + "50.0" : 9583250.818007663, + "90.0" : 9791073.728962818, + "95.0" : 9791073.728962818, + "99.0" : 9791073.728962818, + "99.9" : 9791073.728962818, + "99.99" : 9791073.728962818, + "99.999" : 9791073.728962818, + "99.9999" : 9791073.728962818, + "100.0" : 9791073.728962818 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9583250.818007663, + 9601638.153550863, + 9492654.818785578 + ], + [ + 9515580.683158897, + 9452075.962192817, + 9416117.540921919 + ], + [ + 9759589.867317073, + 9758899.875121951, + 9791073.728962818 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-04-01T21:33:42Z-12273f47d604fd8003c1cb1a2a8924e8f7626f89-jdk17.json b/performance-results/2025-04-01T21:33:42Z-12273f47d604fd8003c1cb1a2a8924e8f7626f89-jdk17.json new file mode 100644 index 0000000000..93c7bd839e --- /dev/null +++ b/performance-results/2025-04-01T21:33:42Z-12273f47d604fd8003c1cb1a2a8924e8f7626f89-jdk17.json @@ -0,0 +1,1310 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.420985462330865, + "scoreError" : 0.021308159867503323, + "scoreConfidence" : [ + 3.399677302463362, + 3.442293622198368 + ], + "scorePercentiles" : { + "0.0" : 3.418007258992135, + "50.0" : 3.420373229961676, + "90.0" : 3.425188130407973, + "95.0" : 3.425188130407973, + "99.0" : 3.425188130407973, + "99.9" : 3.425188130407973, + "99.99" : 3.425188130407973, + "99.999" : 3.425188130407973, + "99.9999" : 3.425188130407973, + "100.0" : 3.425188130407973 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.418007258992135, + 3.42200693473186 + ], + [ + 3.4187395251914925, + 3.425188130407973 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7259211816186313, + "scoreError" : 0.011219628682282887, + "scoreConfidence" : [ + 1.7147015529363483, + 1.7371408103009143 + ], + "scorePercentiles" : { + "0.0" : 1.7240481148983835, + "50.0" : 1.7259595429086452, + "90.0" : 1.727717525758852, + "95.0" : 1.727717525758852, + "99.0" : 1.727717525758852, + "99.9" : 1.727717525758852, + "99.99" : 1.727717525758852, + "99.999" : 1.727717525758852, + "99.9999" : 1.727717525758852, + "100.0" : 1.727717525758852 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.724885876907566, + 1.7270332089097247 + ], + [ + 1.7240481148983835, + 1.727717525758852 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8674466325046533, + "scoreError" : 0.007705896262075907, + "scoreConfidence" : [ + 0.8597407362425773, + 0.8751525287667292 + ], + "scorePercentiles" : { + "0.0" : 0.8666059785196016, + "50.0" : 0.866992153998527, + "90.0" : 0.8691962435019575, + "95.0" : 0.8691962435019575, + "99.0" : 0.8691962435019575, + "99.9" : 0.8691962435019575, + "99.99" : 0.8691962435019575, + "99.999" : 0.8691962435019575, + "99.9999" : 0.8691962435019575, + "100.0" : 0.8691962435019575 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8667857553889012, + 0.8691962435019575 + ], + [ + 0.8666059785196016, + 0.8671985526081527 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.154507473954208, + "scoreError" : 0.3032032937894869, + "scoreConfidence" : [ + 15.851304180164721, + 16.457710767743695 + ], + "scorePercentiles" : { + "0.0" : 15.883888547322103, + "50.0" : 16.237351237284106, + "90.0" : 16.350840322494335, + "95.0" : 16.350840322494335, + "99.0" : 16.350840322494335, + "99.9" : 16.350840322494335, + "99.99" : 16.350840322494335, + "99.999" : 16.350840322494335, + "99.9999" : 16.350840322494335, + "100.0" : 16.350840322494335 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.217804435983428, + 16.350840322494335, + 16.237351237284106 + ], + [ + 15.902125351212634, + 15.977259361703576, + 15.883888547322103 + ], + [ + 16.276565741155228, + 16.272309984981842, + 16.272422283450616 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2644.344808486787, + "scoreError" : 86.02528562254417, + "scoreConfidence" : [ + 2558.3195228642426, + 2730.370094109331 + ], + "scorePercentiles" : { + "0.0" : 2586.8209241778127, + "50.0" : 2637.5472685222603, + "90.0" : 2708.2319955639605, + "95.0" : 2708.2319955639605, + "99.0" : 2708.2319955639605, + "99.9" : 2708.2319955639605, + "99.99" : 2708.2319955639605, + "99.999" : 2708.2319955639605, + "99.9999" : 2708.2319955639605, + "100.0" : 2708.2319955639605 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2637.5472685222603, + 2634.608120991165, + 2640.9078602226705 + ], + [ + 2707.3095209289977, + 2703.7568171125213, + 2708.2319955639605 + ], + [ + 2587.4985780982424, + 2592.4221907634533, + 2586.8209241778127 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 70325.77067177565, + "scoreError" : 1291.3849307178716, + "scoreConfidence" : [ + 69034.38574105778, + 71617.15560249353 + ], + "scorePercentiles" : { + "0.0" : 69322.45195764846, + "50.0" : 70592.4237150667, + "90.0" : 71095.16711300776, + "95.0" : 71095.16711300776, + "99.0" : 71095.16711300776, + "99.9" : 71095.16711300776, + "99.99" : 71095.16711300776, + "99.999" : 71095.16711300776, + "99.9999" : 71095.16711300776, + "100.0" : 71095.16711300776 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 70613.44484999884, + 70468.08939852084, + 70592.4237150667 + ], + [ + 71073.30799444801, + 71049.2033306343, + 71095.16711300776 + ], + [ + 69354.70219205428, + 69322.45195764846, + 69363.1454946017 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 340.7577166349173, + "scoreError" : 13.198336746781516, + "scoreConfidence" : [ + 327.55937988813577, + 353.95605338169884 + ], + "scorePercentiles" : { + "0.0" : 330.78040096354056, + "50.0" : 341.8254902127628, + "90.0" : 349.35471838817614, + "95.0" : 349.35471838817614, + "99.0" : 349.35471838817614, + "99.9" : 349.35471838817614, + "99.99" : 349.35471838817614, + "99.999" : 349.35471838817614, + "99.9999" : 349.35471838817614, + "100.0" : 349.35471838817614 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 349.31589625960527, + 349.35471838817614, + 349.2481281662378 + ], + [ + 330.78040096354056, + 331.33226859378885, + 331.6847680735642 + ], + [ + 342.2954285076341, + 341.8254902127628, + 340.98235054894616 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 108.89965983414605, + "scoreError" : 1.0234192467503809, + "scoreConfidence" : [ + 107.87624058739567, + 109.92307908089643 + ], + "scorePercentiles" : { + "0.0" : 108.37603229365496, + "50.0" : 108.5505522600155, + "90.0" : 109.83768561008253, + "95.0" : 109.83768561008253, + "99.0" : 109.83768561008253, + "99.9" : 109.83768561008253, + "99.99" : 109.83768561008253, + "99.999" : 109.83768561008253, + "99.9999" : 109.83768561008253, + "100.0" : 109.83768561008253 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 108.37603229365496, + 108.5505522600155, + 108.56280243220073 + ], + [ + 109.55591592645746, + 109.83768561008253, + 109.71555007594219 + ], + [ + 108.48281995549353, + 108.4905998536738, + 108.52498009979388 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06272724120605161, + "scoreError" : 0.0022162873271655403, + "scoreConfidence" : [ + 0.06051095387888607, + 0.06494352853321715 + ], + "scorePercentiles" : { + "0.0" : 0.06136190240535068, + "50.0" : 0.06223583766694465, + "90.0" : 0.06464186464858017, + "95.0" : 0.06464186464858017, + "99.0" : 0.06464186464858017, + "99.9" : 0.06464186464858017, + "99.99" : 0.06464186464858017, + "99.999" : 0.06464186464858017, + "99.9999" : 0.06464186464858017, + "100.0" : 0.06464186464858017 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.0640337739962861, + 0.06457937539311984, + 0.06464186464858017 + ], + [ + 0.06165480211595847, + 0.06136190240535068, + 0.061548181982680625 + ], + [ + 0.06226324983967474, + 0.06223583766694465, + 0.062226182805869105 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.710390379094124E-4, + "scoreError" : 1.1928445832262768E-5, + "scoreConfidence" : [ + 3.591105920771496E-4, + 3.829674837416752E-4 + ], + "scorePercentiles" : { + "0.0" : 3.626336021150838E-4, + "50.0" : 3.705256004146279E-4, + "90.0" : 3.799144246528192E-4, + "95.0" : 3.799144246528192E-4, + "99.0" : 3.799144246528192E-4, + "99.9" : 3.799144246528192E-4, + "99.99" : 3.799144246528192E-4, + "99.999" : 3.799144246528192E-4, + "99.9999" : 3.799144246528192E-4, + "100.0" : 3.799144246528192E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.799144246528192E-4, + 3.793384301920466E-4, + 3.7943793885042047E-4 + ], + [ + 3.626336021150838E-4, + 3.6448350332461536E-4, + 3.62749219272948E-4 + ], + [ + 3.70708421954848E-4, + 3.705256004146279E-4, + 3.695602004073025E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014321677295737002, + "scoreError" : 4.099545398900902E-4, + "scoreConfidence" : [ + 0.013911722755846912, + 0.014731631835627092 + ], + "scorePercentiles" : { + "0.0" : 0.014128172541091303, + "50.0" : 0.014189505785698575, + "90.0" : 0.014654304488123552, + "95.0" : 0.014654304488123552, + "99.0" : 0.014654304488123552, + "99.9" : 0.014654304488123552, + "99.99" : 0.014654304488123552, + "99.999" : 0.014654304488123552, + "99.9999" : 0.014654304488123552, + "100.0" : 0.014654304488123552 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014189505785698575, + 0.014186176067956552, + 0.014195022822474986 + ], + [ + 0.014128172541091303, + 0.014130851554584623, + 0.014130318505141966 + ], + [ + 0.014640681621466511, + 0.01464006227509494, + 0.014654304488123552 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 1.058156856583621, + "scoreError" : 0.15887940561407896, + "scoreConfidence" : [ + 0.899277450969542, + 1.2170362621977 + ], + "scorePercentiles" : { + "0.0" : 0.9879297991702065, + "50.0" : 1.0016554988982371, + "90.0" : 1.18968641232453, + "95.0" : 1.18968641232453, + "99.0" : 1.18968641232453, + "99.9" : 1.18968641232453, + "99.99" : 1.18968641232453, + "99.999" : 1.18968641232453, + "99.9999" : 1.18968641232453, + "100.0" : 1.18968641232453 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 1.18968641232453, + 1.1785333975960406, + 1.183730490530303 + ], + [ + 1.0016554988982371, + 1.0042734961839728, + 0.9910632743038351 + ], + [ + 0.9879297991702065, + 0.9945502313276977, + 0.9919891089177661 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.01328452052372637, + "scoreError" : 9.392093654110593E-4, + "scoreConfidence" : [ + 0.012345311158315312, + 0.01422372988913743 + ], + "scorePercentiles" : { + "0.0" : 0.012975986001863305, + "50.0" : 0.013256764035906334, + "90.0" : 0.01362551115901114, + "95.0" : 0.01362551115901114, + "99.0" : 0.01362551115901114, + "99.9" : 0.01362551115901114, + "99.99" : 0.01362551115901114, + "99.999" : 0.01362551115901114, + "99.9999" : 0.01362551115901114, + "100.0" : 0.01362551115901114 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.01362551115901114, + 0.013530204566610382, + 0.013610755139983395 + ], + [ + 0.012975986001863305, + 0.012983323505202288, + 0.012981342769687702 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.8199575825224277, + "scoreError" : 0.05323858201215984, + "scoreConfidence" : [ + 3.766719000510268, + 3.8731961645345874 + ], + "scorePercentiles" : { + "0.0" : 3.796875929384966, + "50.0" : 3.819544478009818, + "90.0" : 3.8509473918398767, + "95.0" : 3.8509473918398767, + "99.0" : 3.8509473918398767, + "99.9" : 3.8509473918398767, + "99.99" : 3.8509473918398767, + "99.999" : 3.8509473918398767, + "99.9999" : 3.8509473918398767, + "100.0" : 3.8509473918398767 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.8140265087719296, + 3.8509473918398767, + 3.8269707582249426 + ], + [ + 3.796875929384966, + 3.8058624596651445, + 3.8250624472477064 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.901999271654215, + "scoreError" : 0.06511539595555306, + "scoreConfidence" : [ + 2.836883875698662, + 2.9671146676097684 + ], + "scorePercentiles" : { + "0.0" : 2.863777385738832, + "50.0" : 2.8855375709751874, + "90.0" : 2.9610254289520426, + "95.0" : 2.9610254289520426, + "99.0" : 2.9610254289520426, + "99.9" : 2.9610254289520426, + "99.99" : 2.9610254289520426, + "99.999" : 2.9610254289520426, + "99.9999" : 2.9610254289520426, + "100.0" : 2.9610254289520426 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.863777385738832, + 2.873600486494253, + 2.8855375709751874 + ], + [ + 2.8745960767461916, + 2.871018776406429, + 2.8936733446180556 + ], + [ + 2.9540984152392205, + 2.9610254289520426, + 2.9406659597177303 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.18278995623871602, + "scoreError" : 0.01646910130162921, + "scoreConfidence" : [ + 0.16632085493708682, + 0.19925905754034523 + ], + "scorePercentiles" : { + "0.0" : 0.17524887399891348, + "50.0" : 0.17712125903294368, + "90.0" : 0.1963312424658879, + "95.0" : 0.1963312424658879, + "99.0" : 0.1963312424658879, + "99.9" : 0.1963312424658879, + "99.99" : 0.1963312424658879, + "99.999" : 0.1963312424658879, + "99.9999" : 0.1963312424658879, + "100.0" : 0.1963312424658879 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17712125903294368, + 0.17764719309683263, + 0.17682571326519786 + ], + [ + 0.1963312424658879, + 0.19568520027786473, + 0.19540450698555992 + ], + [ + 0.17527204134534494, + 0.17557357567989887, + 0.17524887399891348 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3232566254882523, + "scoreError" : 0.02282913570582237, + "scoreConfidence" : [ + 0.30042748978242995, + 0.34608576119407464 + ], + "scorePercentiles" : { + "0.0" : 0.3092274280148423, + "50.0" : 0.3201938921298668, + "90.0" : 0.3405121527853446, + "95.0" : 0.3405121527853446, + "99.0" : 0.3405121527853446, + "99.9" : 0.3405121527853446, + "99.99" : 0.3405121527853446, + "99.999" : 0.3405121527853446, + "99.9999" : 0.3405121527853446, + "100.0" : 0.3405121527853446 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.32029835740823775, + 0.31994934137445613, + 0.3201938921298668 + ], + [ + 0.3405121527853446, + 0.3400584822157236, + 0.34022206205559147 + ], + [ + 0.3092274280148423, + 0.30933073147947665, + 0.30951718193073136 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1657651871890437, + "scoreError" : 0.007932720842646653, + "scoreConfidence" : [ + 0.15783246634639705, + 0.17369790803169036 + ], + "scorePercentiles" : { + "0.0" : 0.1593353740320576, + "50.0" : 0.16877857649659922, + "90.0" : 0.16972019656495027, + "95.0" : 0.16972019656495027, + "99.0" : 0.16972019656495027, + "99.9" : 0.16972019656495027, + "99.99" : 0.16972019656495027, + "99.999" : 0.16972019656495027, + "99.9999" : 0.16972019656495027, + "100.0" : 0.16972019656495027 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16877857649659922, + 0.16808839190506605, + 0.16972019656495027 + ], + [ + 0.1593642279485586, + 0.15979414727877025, + 0.1593353740320576 + ], + [ + 0.1687985193099723, + 0.16892914557924255, + 0.16907810558617659 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3922519583598169, + "scoreError" : 0.00540791058135611, + "scoreConfidence" : [ + 0.3868440477784608, + 0.397659868941173 + ], + "scorePercentiles" : { + "0.0" : 0.38899327481717755, + "50.0" : 0.3920643285372643, + "90.0" : 0.39907136154674966, + "95.0" : 0.39907136154674966, + "99.0" : 0.39907136154674966, + "99.9" : 0.39907136154674966, + "99.99" : 0.39907136154674966, + "99.999" : 0.39907136154674966, + "99.9999" : 0.39907136154674966, + "100.0" : 0.39907136154674966 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3941107479703634, + 0.39320674989187276, + 0.39292061883619506 + ], + [ + 0.39907136154674966, + 0.3920643285372643, + 0.3918314238304208 + ], + [ + 0.38903332743328406, + 0.38899327481717755, + 0.38903579237502434 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15861264541642875, + "scoreError" : 0.003450571682714868, + "scoreConfidence" : [ + 0.15516207373371388, + 0.16206321709914362 + ], + "scorePercentiles" : { + "0.0" : 0.15590977652359644, + "50.0" : 0.15834482064761302, + "90.0" : 0.1617350184858728, + "95.0" : 0.1617350184858728, + "99.0" : 0.1617350184858728, + "99.9" : 0.1617350184858728, + "99.99" : 0.1617350184858728, + "99.999" : 0.1617350184858728, + "99.9999" : 0.1617350184858728, + "100.0" : 0.1617350184858728 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.160611737548785, + 0.15831396635901657, + 0.15834482064761302 + ], + [ + 0.1566366366299104, + 0.15627956014314962, + 0.15590977652359644 + ], + [ + 0.1617350184858728, + 0.16011737287647107, + 0.15956491953344396 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.047483792777320843, + "scoreError" : 3.9679518207553995E-4, + "scoreConfidence" : [ + 0.0470869975952453, + 0.047880587959396384 + ], + "scorePercentiles" : { + "0.0" : 0.04715763853285422, + "50.0" : 0.047544488575204914, + "90.0" : 0.047805480103640816, + "95.0" : 0.047805480103640816, + "99.0" : 0.047805480103640816, + "99.9" : 0.047805480103640816, + "99.99" : 0.047805480103640816, + "99.999" : 0.047805480103640816, + "99.9999" : 0.047805480103640816, + "100.0" : 0.047805480103640816 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.047805480103640816, + 0.0477210462219762, + 0.04757783843280919 + ], + [ + 0.04722691685832621, + 0.04715763853285422, + 0.04722577149684536 + ], + [ + 0.04766301272586019, + 0.047544488575204914, + 0.04743194204837049 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9409975.270078996, + "scoreError" : 266484.5794582535, + "scoreConfidence" : [ + 9143490.690620743, + 9676459.84953725 + ], + "scorePercentiles" : { + "0.0" : 9229127.362546125, + "50.0" : 9368682.052434457, + "90.0" : 9608553.345821325, + "95.0" : 9608553.345821325, + "99.0" : 9608553.345821325, + "99.9" : 9608553.345821325, + "99.99" : 9608553.345821325, + "99.999" : 9608553.345821325, + "99.9999" : 9608553.345821325, + "100.0" : 9608553.345821325 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9229127.362546125, + 9258536.712303422, + 9247606.292051757 + ], + [ + 9608553.345821325, + 9604708.076775432, + 9604726.285988484 + ], + [ + 9404343.094924811, + 9363494.20786517, + 9368682.052434457 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-04-01T22:24:13Z-dff69a4069ce12440d48b3d0bdd6cc1c10d6b6b0-jdk17.json b/performance-results/2025-04-01T22:24:13Z-dff69a4069ce12440d48b3d0bdd6cc1c10d6b6b0-jdk17.json new file mode 100644 index 0000000000..cc683602ae --- /dev/null +++ b/performance-results/2025-04-01T22:24:13Z-dff69a4069ce12440d48b3d0bdd6cc1c10d6b6b0-jdk17.json @@ -0,0 +1,1310 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4194744891916873, + "scoreError" : 0.02554187101683565, + "scoreConfidence" : [ + 3.3939326181748517, + 3.445016360208523 + ], + "scorePercentiles" : { + "0.0" : 3.415566520359219, + "50.0" : 3.4189396043971776, + "90.0" : 3.4244522276131746, + "95.0" : 3.4244522276131746, + "99.0" : 3.4244522276131746, + "99.9" : 3.4244522276131746, + "99.99" : 3.4244522276131746, + "99.999" : 3.4244522276131746, + "99.9999" : 3.4244522276131746, + "100.0" : 3.4244522276131746 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4171721747963577, + 3.4244522276131746 + ], + [ + 3.415566520359219, + 3.4207070339979975 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7266663105789197, + "scoreError" : 0.00869904524406742, + "scoreConfidence" : [ + 1.7179672653348523, + 1.7353653558229871 + ], + "scorePercentiles" : { + "0.0" : 1.724945010664874, + "50.0" : 1.7267529382479703, + "90.0" : 1.7282143551548643, + "95.0" : 1.7282143551548643, + "99.0" : 1.7282143551548643, + "99.9" : 1.7282143551548643, + "99.99" : 1.7282143551548643, + "99.999" : 1.7282143551548643, + "99.9999" : 1.7282143551548643, + "100.0" : 1.7282143551548643 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.724945010664874, + 1.7265763975379063 + ], + [ + 1.726929478958034, + 1.7282143551548643 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8628031120549917, + "scoreError" : 0.0767462701324756, + "scoreConfidence" : [ + 0.7860568419225161, + 0.9395493821874673 + ], + "scorePercentiles" : { + "0.0" : 0.8451682861185522, + "50.0" : 0.867492884671893, + "90.0" : 0.8710583927576289, + "95.0" : 0.8710583927576289, + "99.0" : 0.8710583927576289, + "99.9" : 0.8710583927576289, + "99.99" : 0.8710583927576289, + "99.999" : 0.8710583927576289, + "99.9999" : 0.8710583927576289, + "100.0" : 0.8710583927576289 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8673623407164245, + 0.8676234286273615 + ], + [ + 0.8710583927576289, + 0.8451682861185522 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.31392561301447, + "scoreError" : 0.1312391844802445, + "scoreConfidence" : [ + 16.182686428534225, + 16.445164797494712 + ], + "scorePercentiles" : { + "0.0" : 16.21093971066763, + "50.0" : 16.302884394353885, + "90.0" : 16.46017338456293, + "95.0" : 16.46017338456293, + "99.0" : 16.46017338456293, + "99.9" : 16.46017338456293, + "99.99" : 16.46017338456293, + "99.999" : 16.46017338456293, + "99.9999" : 16.46017338456293, + "100.0" : 16.46017338456293 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.335544036726933, + 16.3881504707433, + 16.338990592960965 + ], + [ + 16.46017338456293, + 16.300954823858877, + 16.302884394353885 + ], + [ + 16.250290632880514, + 16.23740247037521, + 16.21093971066763 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2756.9992365127205, + "scoreError" : 113.15020257290064, + "scoreConfidence" : [ + 2643.84903393982, + 2870.149439085621 + ], + "scorePercentiles" : { + "0.0" : 2698.7491764529773, + "50.0" : 2720.6434970594128, + "90.0" : 2847.352513628344, + "95.0" : 2847.352513628344, + "99.0" : 2847.352513628344, + "99.9" : 2847.352513628344, + "99.99" : 2847.352513628344, + "99.999" : 2847.352513628344, + "99.9999" : 2847.352513628344, + "100.0" : 2847.352513628344 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2708.7644589191254, + 2720.6434970594128, + 2722.404526193519 + ], + [ + 2710.1717555299124, + 2698.7491764529773, + 2713.328570944813 + ], + [ + 2846.681855022229, + 2847.352513628344, + 2844.896774864152 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 69904.38873607699, + "scoreError" : 1519.5438025687874, + "scoreConfidence" : [ + 68384.8449335082, + 71423.93253864578 + ], + "scorePercentiles" : { + "0.0" : 68682.559730696, + "50.0" : 70478.32467330323, + "90.0" : 70580.13042248992, + "95.0" : 70580.13042248992, + "99.0" : 70580.13042248992, + "99.9" : 70580.13042248992, + "99.99" : 70580.13042248992, + "99.999" : 70580.13042248992, + "99.9999" : 70580.13042248992, + "100.0" : 70580.13042248992 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 68682.559730696, + 68708.866932472, + 68707.26495938459 + ], + [ + 70518.02892766449, + 70457.87631837883, + 70478.32467330323 + ], + [ + 70508.3088102308, + 70498.13785007298, + 70580.13042248992 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 350.97170890665683, + "scoreError" : 8.839750478157988, + "scoreConfidence" : [ + 342.1319584284988, + 359.81145938481484 + ], + "scorePercentiles" : { + "0.0" : 344.2073326740012, + "50.0" : 350.7670243218901, + "90.0" : 357.7030520279713, + "95.0" : 357.7030520279713, + "99.0" : 357.7030520279713, + "99.9" : 357.7030520279713, + "99.99" : 357.7030520279713, + "99.999" : 357.7030520279713, + "99.9999" : 357.7030520279713, + "100.0" : 357.7030520279713 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 356.5023818760904, + 356.86336793959464, + 357.7030520279713 + ], + [ + 344.51655037432863, + 344.2073326740012, + 346.18135193755194 + ], + [ + 351.4179954510821, + 350.7670243218901, + 350.58632355740076 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 107.13558739995234, + "scoreError" : 0.9471044773107464, + "scoreConfidence" : [ + 106.1884829226416, + 108.08269187726309 + ], + "scorePercentiles" : { + "0.0" : 106.41150472365675, + "50.0" : 106.98591081143343, + "90.0" : 108.05644484593567, + "95.0" : 108.05644484593567, + "99.0" : 108.05644484593567, + "99.9" : 108.05644484593567, + "99.99" : 108.05644484593567, + "99.999" : 108.05644484593567, + "99.9999" : 108.05644484593567, + "100.0" : 108.05644484593567 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 108.05644484593567, + 106.98591081143343, + 106.86280167853995 + ], + [ + 107.3278838833463, + 107.63659682409566, + 107.66812717658092 + ], + [ + 106.62162483191045, + 106.41150472365675, + 106.64939182407181 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06116770333920915, + "scoreError" : 4.8614906962900385E-4, + "scoreConfidence" : [ + 0.06068155426958015, + 0.06165385240883815 + ], + "scorePercentiles" : { + "0.0" : 0.060782978586450445, + "50.0" : 0.061090301025083386, + "90.0" : 0.06161584813121542, + "95.0" : 0.06161584813121542, + "99.0" : 0.06161584813121542, + "99.9" : 0.06161584813121542, + "99.99" : 0.06161584813121542, + "99.999" : 0.06161584813121542, + "99.9999" : 0.06161584813121542, + "100.0" : 0.06161584813121542 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06153806217731365, + 0.06138916308364743, + 0.06161584813121542 + ], + [ + 0.061090301025083386, + 0.06104354878525211, + 0.061186428299589445 + ], + [ + 0.06095554725825328, + 0.06090745270607725, + 0.060782978586450445 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.695521446448638E-4, + "scoreError" : 2.8262222982506193E-5, + "scoreConfidence" : [ + 3.412899216623576E-4, + 3.9781436762737E-4 + ], + "scorePercentiles" : { + "0.0" : 3.5000887232047905E-4, + "50.0" : 3.6917912816374846E-4, + "90.0" : 3.8959380126631364E-4, + "95.0" : 3.8959380126631364E-4, + "99.0" : 3.8959380126631364E-4, + "99.9" : 3.8959380126631364E-4, + "99.99" : 3.8959380126631364E-4, + "99.999" : 3.8959380126631364E-4, + "99.9999" : 3.8959380126631364E-4, + "100.0" : 3.8959380126631364E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.5046645867463925E-4, + 3.5000887232047905E-4, + 3.5024093424695045E-4 + ], + [ + 3.8959380126631364E-4, + 3.8892023345357696E-4, + 3.886819629837889E-4 + ], + [ + 3.700855260474804E-4, + 3.6917912816374846E-4, + 3.687923846467969E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014166576121955722, + "scoreError" : 2.1144263631359052E-4, + "scoreConfidence" : [ + 0.01395513348564213, + 0.014378018758269313 + ], + "scorePercentiles" : { + "0.0" : 0.014046923717671385, + "50.0" : 0.014122111461491641, + "90.0" : 0.01439731619304848, + "95.0" : 0.01439731619304848, + "99.0" : 0.01439731619304848, + "99.9" : 0.01439731619304848, + "99.99" : 0.01439731619304848, + "99.999" : 0.01439731619304848, + "99.9999" : 0.01439731619304848, + "100.0" : 0.01439731619304848 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.01439731619304848, + 0.014281812945140039, + 0.014289442321377029 + ], + [ + 0.014058839168851619, + 0.014046923717671385, + 0.014048392538699385 + ], + [ + 0.01413298399034446, + 0.014122111461491641, + 0.01412136276097747 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9740776945547436, + "scoreError" : 0.009058175914346716, + "scoreConfidence" : [ + 0.9650195186403968, + 0.9831358704690903 + ], + "scorePercentiles" : { + "0.0" : 0.9649532202817445, + "50.0" : 0.9764470310486233, + "90.0" : 0.979412945255117, + "95.0" : 0.979412945255117, + "99.0" : 0.979412945255117, + "99.9" : 0.979412945255117, + "99.99" : 0.979412945255117, + "99.999" : 0.979412945255117, + "99.9999" : 0.979412945255117, + "100.0" : 0.979412945255117 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9791201020168396, + 0.9764470310486233, + 0.9716871637193937 + ], + [ + 0.9707747388856532, + 0.9649532202817445, + 0.9679974266769916 + ], + [ + 0.979412945255117, + 0.9793519523063363, + 0.9769546708019927 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.013012135619588671, + "scoreError" : 3.106285482246328E-4, + "scoreConfidence" : [ + 0.012701507071364039, + 0.013322764167813304 + ], + "scorePercentiles" : { + "0.0" : 0.012917852429793061, + "50.0" : 0.012971381308933288, + "90.0" : 0.013147150097681156, + "95.0" : 0.013147150097681156, + "99.0" : 0.013147150097681156, + "99.9" : 0.013147150097681156, + "99.99" : 0.013147150097681156, + "99.999" : 0.013147150097681156, + "99.9999" : 0.013147150097681156, + "100.0" : 0.013147150097681156 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.012917852429793061, + 0.012919215704208975, + 0.012924454169714609 + ], + [ + 0.013018308448151966, + 0.013145832867982269, + 0.013147150097681156 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.632083144066653, + "scoreError" : 0.07389883297062878, + "scoreConfidence" : [ + 3.5581843110960243, + 3.7059819770372817 + ], + "scorePercentiles" : { + "0.0" : 3.590731975592247, + "50.0" : 3.6395454342607834, + "90.0" : 3.6549121504747992, + "95.0" : 3.6549121504747992, + "99.0" : 3.6549121504747992, + "99.9" : 3.6549121504747992, + "99.99" : 3.6549121504747992, + "99.999" : 3.6549121504747992, + "99.9999" : 3.6549121504747992, + "100.0" : 3.6549121504747992 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.6517999656934306, + 3.6549121504747992, + 3.6541691212563916 + ], + [ + 3.590731975592247, + 3.613594748554913, + 3.627290902828136 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.814660377440884, + "scoreError" : 0.024490734182133617, + "scoreConfidence" : [ + 2.7901696432587504, + 2.8391511116230173 + ], + "scorePercentiles" : { + "0.0" : 2.797245694825175, + "50.0" : 2.8061119545454547, + "90.0" : 2.8349407777777778, + "95.0" : 2.8349407777777778, + "99.0" : 2.8349407777777778, + "99.9" : 2.8349407777777778, + "99.99" : 2.8349407777777778, + "99.999" : 2.8349407777777778, + "99.9999" : 2.8349407777777778, + "100.0" : 2.8349407777777778 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.8255445700564974, + 2.8261645255721954, + 2.8051827203366058 + ], + [ + 2.8037174272497896, + 2.797245694825175, + 2.8016132535014004 + ], + [ + 2.8349407777777778, + 2.831422473103058, + 2.8061119545454547 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.18077341062741054, + "scoreError" : 0.014353792857067442, + "scoreConfidence" : [ + 0.1664196177703431, + 0.19512720348447798 + ], + "scorePercentiles" : { + "0.0" : 0.17193353889930024, + "50.0" : 0.1785189516405441, + "90.0" : 0.19204514456905822, + "95.0" : 0.19204514456905822, + "99.0" : 0.19204514456905822, + "99.9" : 0.19204514456905822, + "99.99" : 0.19204514456905822, + "99.999" : 0.19204514456905822, + "99.9999" : 0.19204514456905822, + "100.0" : 0.19204514456905822 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.19204514456905822, + 0.19126840104047127, + 0.19137153131757725 + ], + [ + 0.17851557071707813, + 0.17853092246581212, + 0.1785189516405441 + ], + [ + 0.17207392991603002, + 0.17193353889930024, + 0.17270270508082344 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3255786312013808, + "scoreError" : 0.006781671949494997, + "scoreConfidence" : [ + 0.31879695925188584, + 0.3323603031508758 + ], + "scorePercentiles" : { + "0.0" : 0.3198157626083341, + "50.0" : 0.32745385523903076, + "90.0" : 0.32982301777704487, + "95.0" : 0.32982301777704487, + "99.0" : 0.32982301777704487, + "99.9" : 0.32982301777704487, + "99.99" : 0.32982301777704487, + "99.999" : 0.32982301777704487, + "99.9999" : 0.32982301777704487, + "100.0" : 0.32982301777704487 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.32040968607221815, + 0.3207289064143682, + 0.3198157626083341 + ], + [ + 0.32693975477311366, + 0.32745385523903076, + 0.3277725755162242 + ], + [ + 0.32982301777704487, + 0.32863060256325993, + 0.3286335198488334 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16520958330540386, + "scoreError" : 0.003904719990913554, + "scoreConfidence" : [ + 0.16130486331449032, + 0.1691143032963174 + ], + "scorePercentiles" : { + "0.0" : 0.1623530315934735, + "50.0" : 0.1654880534015125, + "90.0" : 0.16782697615211628, + "95.0" : 0.16782697615211628, + "99.0" : 0.16782697615211628, + "99.9" : 0.16782697615211628, + "99.99" : 0.16782697615211628, + "99.999" : 0.16782697615211628, + "99.9999" : 0.16782697615211628, + "100.0" : 0.16782697615211628 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16251762683438156, + 0.1623530315934735, + 0.16235577231548529 + ], + [ + 0.16781707266319854, + 0.16782697615211628, + 0.16760257225220393 + ], + [ + 0.16563840416404413, + 0.1652867403722191, + 0.1654880534015125 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3928930526593304, + "scoreError" : 0.0025513234074087984, + "scoreConfidence" : [ + 0.39034172925192157, + 0.3954443760667392 + ], + "scorePercentiles" : { + "0.0" : 0.3907715779766324, + "50.0" : 0.392861043134944, + "90.0" : 0.39614403272064647, + "95.0" : 0.39614403272064647, + "99.0" : 0.39614403272064647, + "99.9" : 0.39614403272064647, + "99.99" : 0.39614403272064647, + "99.999" : 0.39614403272064647, + "99.9999" : 0.39614403272064647, + "100.0" : 0.39614403272064647 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3937948602087025, + 0.3928797329692779, + 0.3920452974360985 + ], + [ + 0.39313111813035617, + 0.3915590486687549, + 0.3907715779766324 + ], + [ + 0.39614403272064647, + 0.392861043134944, + 0.3928507626885607 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15668086807705478, + "scoreError" : 0.0026468715335953544, + "scoreConfidence" : [ + 0.15403399654345942, + 0.15932773961065014 + ], + "scorePercentiles" : { + "0.0" : 0.15500656603890567, + "50.0" : 0.15602657285507, + "90.0" : 0.1587486827634378, + "95.0" : 0.1587486827634378, + "99.0" : 0.1587486827634378, + "99.9" : 0.1587486827634378, + "99.99" : 0.1587486827634378, + "99.999" : 0.1587486827634378, + "99.9999" : 0.1587486827634378, + "100.0" : 0.1587486827634378 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1564891541844016, + 0.15550979076602495, + 0.15500656603890567 + ], + [ + 0.15869252295412348, + 0.1586838797683275, + 0.1587486827634378 + ], + [ + 0.15602657285507, + 0.15557162095519603, + 0.15539902240800596 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.047155284663097694, + "scoreError" : 4.936480783222632E-4, + "scoreConfidence" : [ + 0.04666163658477543, + 0.04764893274141996 + ], + "scorePercentiles" : { + "0.0" : 0.04676411413981285, + "50.0" : 0.047194693460316864, + "90.0" : 0.04768852778055957, + "95.0" : 0.04768852778055957, + "99.0" : 0.04768852778055957, + "99.9" : 0.04768852778055957, + "99.99" : 0.04768852778055957, + "99.999" : 0.04768852778055957, + "99.9999" : 0.04768852778055957, + "100.0" : 0.04768852778055957 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04768852778055957, + 0.047379118801701835, + 0.047233946125687834 + ], + [ + 0.047268657425789375, + 0.04714530012776209, + 0.047194693460316864 + ], + [ + 0.04693128750703961, + 0.04679191659920923, + 0.04676411413981285 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9336798.090218965, + "scoreError" : 189887.07302217573, + "scoreConfidence" : [ + 9146911.01719679, + 9526685.16324114 + ], + "scorePercentiles" : { + "0.0" : 9185498.928374656, + "50.0" : 9326856.899347624, + "90.0" : 9472147.553977273, + "95.0" : 9472147.553977273, + "99.0" : 9472147.553977273, + "99.9" : 9472147.553977273, + "99.99" : 9472147.553977273, + "99.999" : 9472147.553977273, + "99.9999" : 9472147.553977273, + "100.0" : 9472147.553977273 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9224735.104147466, + 9185498.928374656, + 9203164.059797607 + ], + [ + 9472147.553977273, + 9452682.468809074, + 9455593.06899811 + ], + [ + 9388428.242964353, + 9326856.899347624, + 9322076.48555452 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-04-02T00:54:25Z-14343b248c8e4c4f6f5e3567656bf546701169c7-jdk17.json b/performance-results/2025-04-02T00:54:25Z-14343b248c8e4c4f6f5e3567656bf546701169c7-jdk17.json new file mode 100644 index 0000000000..46a74f75af --- /dev/null +++ b/performance-results/2025-04-02T00:54:25Z-14343b248c8e4c4f6f5e3567656bf546701169c7-jdk17.json @@ -0,0 +1,1310 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.421526384634706, + "scoreError" : 0.024204253048581707, + "scoreConfidence" : [ + 3.397322131586124, + 3.4457306376832877 + ], + "scorePercentiles" : { + "0.0" : 3.4173147730655797, + "50.0" : 3.421193313876114, + "90.0" : 3.426404137721016, + "95.0" : 3.426404137721016, + "99.0" : 3.426404137721016, + "99.9" : 3.426404137721016, + "99.99" : 3.426404137721016, + "99.999" : 3.426404137721016, + "99.9999" : 3.426404137721016, + "100.0" : 3.426404137721016 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.420782629000279, + 3.426404137721016 + ], + [ + 3.4173147730655797, + 3.4216039987519493 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7283454988973057, + "scoreError" : 0.0025880343464985893, + "scoreConfidence" : [ + 1.7257574645508071, + 1.7309335332438043 + ], + "scorePercentiles" : { + "0.0" : 1.7279527704336943, + "50.0" : 1.7282621497493265, + "90.0" : 1.728904925656876, + "95.0" : 1.728904925656876, + "99.0" : 1.728904925656876, + "99.9" : 1.728904925656876, + "99.99" : 1.728904925656876, + "99.999" : 1.728904925656876, + "99.9999" : 1.728904925656876, + "100.0" : 1.728904925656876 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7279527704336943, + 1.7282545511010183 + ], + [ + 1.7282697483976346, + 1.728904925656876 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8691224272889502, + "scoreError" : 0.0033289897328440546, + "scoreConfidence" : [ + 0.8657934375561062, + 0.8724514170217942 + ], + "scorePercentiles" : { + "0.0" : 0.8686308534225845, + "50.0" : 0.869010981659937, + "90.0" : 0.8698368924133419, + "95.0" : 0.8698368924133419, + "99.0" : 0.8698368924133419, + "99.9" : 0.8698368924133419, + "99.99" : 0.8698368924133419, + "99.999" : 0.8698368924133419, + "99.9999" : 0.8698368924133419, + "100.0" : 0.8698368924133419 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8686308534225845, + 0.869109060504571 + ], + [ + 0.868912902815303, + 0.8698368924133419 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.309649787987688, + "scoreError" : 0.07794437405308531, + "scoreConfidence" : [ + 16.231705413934602, + 16.387594162040774 + ], + "scorePercentiles" : { + "0.0" : 16.26765662772302, + "50.0" : 16.28656758905185, + "90.0" : 16.38712193348276, + "95.0" : 16.38712193348276, + "99.0" : 16.38712193348276, + "99.9" : 16.38712193348276, + "99.99" : 16.38712193348276, + "99.999" : 16.38712193348276, + "99.9999" : 16.38712193348276, + "100.0" : 16.38712193348276 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.28656758905185, + 16.273200002371972, + 16.299111445359156 + ], + [ + 16.366013192165212, + 16.3540962884704, + 16.38712193348276 + ], + [ + 16.26765662772302, + 16.26851464142473, + 16.28456637184009 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2712.6069740459716, + "scoreError" : 11.038642078368325, + "scoreConfidence" : [ + 2701.568331967603, + 2723.64561612434 + ], + "scorePercentiles" : { + "0.0" : 2703.8693752278577, + "50.0" : 2711.819323271369, + "90.0" : 2722.840900870486, + "95.0" : 2722.840900870486, + "99.0" : 2722.840900870486, + "99.9" : 2722.840900870486, + "99.99" : 2722.840900870486, + "99.999" : 2722.840900870486, + "99.9999" : 2722.840900870486, + "100.0" : 2722.840900870486 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2711.6700217383127, + 2712.519688484181, + 2711.819323271369 + ], + [ + 2722.840900870486, + 2713.2880055354126, + 2722.7197608423567 + ], + [ + 2703.8693752278577, + 2708.9476508866146, + 2705.7880395571538 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 70977.29311251568, + "scoreError" : 253.57898466017767, + "scoreConfidence" : [ + 70723.71412785549, + 71230.87209717586 + ], + "scorePercentiles" : { + "0.0" : 70751.37602239971, + "50.0" : 70921.36587253957, + "90.0" : 71183.33947884571, + "95.0" : 71183.33947884571, + "99.0" : 71183.33947884571, + "99.9" : 71183.33947884571, + "99.99" : 71183.33947884571, + "99.999" : 71183.33947884571, + "99.9999" : 71183.33947884571, + "100.0" : 71183.33947884571 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 70913.88389465859, + 70969.59237313575, + 70921.36587253957 + ], + [ + 70844.70664555264, + 70751.37602239971, + 70911.93988780752 + ], + [ + 71158.56853347426, + 71140.86530422738, + 71183.33947884571 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 350.31244511380766, + "scoreError" : 6.666002229820555, + "scoreConfidence" : [ + 343.6464428839871, + 356.9784473436282 + ], + "scorePercentiles" : { + "0.0" : 345.20414333375453, + "50.0" : 350.5234018035162, + "90.0" : 355.26663651937116, + "95.0" : 355.26663651937116, + "99.0" : 355.26663651937116, + "99.9" : 355.26663651937116, + "99.99" : 355.26663651937116, + "99.999" : 355.26663651937116, + "99.9999" : 355.26663651937116, + "100.0" : 355.26663651937116 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 354.0198481362827, + 354.58181399517474, + 355.26663651937116 + ], + [ + 350.5234018035162, + 350.38433326530674, + 351.37866449831887 + ], + [ + 345.20414333375453, + 345.84513014838336, + 345.6080343241608 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 104.87761273102751, + "scoreError" : 2.104556922800753, + "scoreConfidence" : [ + 102.77305580822676, + 106.98216965382827 + ], + "scorePercentiles" : { + "0.0" : 103.59739904226069, + "50.0" : 104.47823668180365, + "90.0" : 106.64228593068609, + "95.0" : 106.64228593068609, + "99.0" : 106.64228593068609, + "99.9" : 106.64228593068609, + "99.99" : 106.64228593068609, + "99.999" : 106.64228593068609, + "99.9999" : 106.64228593068609, + "100.0" : 106.64228593068609 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 103.59739904226069, + 103.72012032272589, + 103.6785773206504 + ], + [ + 104.57502425284017, + 104.47823668180365, + 104.42984806950203 + ], + [ + 106.64228593068609, + 106.3804639830908, + 106.39655897568788 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.061408572434368404, + "scoreError" : 4.563862938090769E-4, + "scoreConfidence" : [ + 0.06095218614055933, + 0.06186495872817748 + ], + "scorePercentiles" : { + "0.0" : 0.06097075857086242, + "50.0" : 0.061388873282667684, + "90.0" : 0.06178538960661835, + "95.0" : 0.06178538960661835, + "99.0" : 0.06178538960661835, + "99.9" : 0.06178538960661835, + "99.99" : 0.06178538960661835, + "99.999" : 0.06178538960661835, + "99.9999" : 0.06178538960661835, + "100.0" : 0.06178538960661835 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06097075857086242, + 0.061146214680974656, + 0.0612855844349249 + ], + [ + 0.061388873282667684, + 0.06155373061392818, + 0.06124024126422281 + ], + [ + 0.06178538960661835, + 0.061691854335031895, + 0.06161450512008478 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.7316652617251883E-4, + "scoreError" : 8.119757313773042E-6, + "scoreConfidence" : [ + 3.6504676885874577E-4, + 3.812862834862919E-4 + ], + "scorePercentiles" : { + "0.0" : 3.667738323748724E-4, + "50.0" : 3.752289794739548E-4, + "90.0" : 3.778600239409276E-4, + "95.0" : 3.778600239409276E-4, + "99.0" : 3.778600239409276E-4, + "99.9" : 3.778600239409276E-4, + "99.99" : 3.778600239409276E-4, + "99.999" : 3.778600239409276E-4, + "99.9999" : 3.778600239409276E-4, + "100.0" : 3.778600239409276E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.668491935524401E-4, + 3.667738323748724E-4, + 3.6701340072654664E-4 + ], + [ + 3.778600239409276E-4, + 3.7740688490455637E-4, + 3.7720805236979543E-4 + ], + [ + 3.754190644322722E-4, + 3.7473930377730384E-4, + 3.752289794739548E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014008341450335656, + "scoreError" : 1.4498033977860858E-4, + "scoreConfidence" : [ + 0.013863361110557047, + 0.014153321790114266 + ], + "scorePercentiles" : { + "0.0" : 0.013880233651371766, + "50.0" : 0.013988460148024223, + "90.0" : 0.014114319541008596, + "95.0" : 0.014114319541008596, + "99.0" : 0.014114319541008596, + "99.9" : 0.014114319541008596, + "99.99" : 0.014114319541008596, + "99.999" : 0.014114319541008596, + "99.9999" : 0.014114319541008596, + "100.0" : 0.014114319541008596 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014114319541008596, + 0.014112022618451226, + 0.014106586750966642 + ], + [ + 0.013912293381858856, + 0.013880233651371766, + 0.013970244557602174 + ], + [ + 0.013988460148024223, + 0.014002486228898102, + 0.01398842617483931 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9778241649362742, + "scoreError" : 0.004838244956807494, + "scoreConfidence" : [ + 0.9729859199794667, + 0.9826624098930817 + ], + "scorePercentiles" : { + "0.0" : 0.9736546614740531, + "50.0" : 0.9773280237467018, + "90.0" : 0.9821452236299352, + "95.0" : 0.9821452236299352, + "99.0" : 0.9821452236299352, + "99.9" : 0.9821452236299352, + "99.99" : 0.9821452236299352, + "99.999" : 0.9821452236299352, + "99.9999" : 0.9821452236299352, + "100.0" : 0.9821452236299352 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9749890558642879, + 0.9736546614740531, + 0.9772415279976546 + ], + [ + 0.9773280237467018, + 0.9776727197184476, + 0.9762410675517376 + ], + [ + 0.9819867925176747, + 0.9821452236299352, + 0.9791584119259767 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.012869722100222638, + "scoreError" : 3.8966084585346096E-4, + "scoreConfidence" : [ + 0.012480061254369177, + 0.013259382946076098 + ], + "scorePercentiles" : { + "0.0" : 0.012669512538736168, + "50.0" : 0.012853368862123522, + "90.0" : 0.013023504013752508, + "95.0" : 0.013023504013752508, + "99.0" : 0.013023504013752508, + "99.9" : 0.013023504013752508, + "99.99" : 0.013023504013752508, + "99.999" : 0.013023504013752508, + "99.9999" : 0.013023504013752508, + "100.0" : 0.013023504013752508 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.012900479146832615, + 0.013020436614143498, + 0.013023504013752508 + ], + [ + 0.012669512538736168, + 0.0127981417104566, + 0.012806258577414431 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.5468241771900515, + "scoreError" : 0.21376380574191445, + "scoreConfidence" : [ + 3.333060371448137, + 3.760587982931966 + ], + "scorePercentiles" : { + "0.0" : 3.453652321132597, + "50.0" : 3.551183448477694, + "90.0" : 3.61925639146165, + "95.0" : 3.61925639146165, + "99.0" : 3.61925639146165, + "99.9" : 3.61925639146165, + "99.99" : 3.61925639146165, + "99.999" : 3.61925639146165, + "99.9999" : 3.61925639146165, + "100.0" : 3.61925639146165 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.453652321132597, + 3.4880539741980474, + 3.4936314308659218 + ], + [ + 3.6176154793926245, + 3.61925639146165, + 3.608735466089466 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.8304880688757925, + "scoreError" : 0.07599696860642481, + "scoreConfidence" : [ + 2.7544911002693677, + 2.9064850374822173 + ], + "scorePercentiles" : { + "0.0" : 2.780787323324993, + "50.0" : 2.814811319729806, + "90.0" : 2.8892461886192953, + "95.0" : 2.8892461886192953, + "99.0" : 2.8892461886192953, + "99.9" : 2.8892461886192953, + "99.99" : 2.8892461886192953, + "99.999" : 2.8892461886192953, + "99.9999" : 2.8892461886192953, + "100.0" : 2.8892461886192953 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.8892461886192953, + 2.8884606503032053, + 2.887350749133949 + ], + [ + 2.793379465083799, + 2.7882133852801783, + 2.780787323324993 + ], + [ + 2.8192035718714767, + 2.814811319729806, + 2.812939966535433 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17450209716197213, + "scoreError" : 0.005812830363912847, + "scoreConfidence" : [ + 0.1686892667980593, + 0.18031492752588496 + ], + "scorePercentiles" : { + "0.0" : 0.170191207610749, + "50.0" : 0.1748316288921135, + "90.0" : 0.17852150263312924, + "95.0" : 0.17852150263312924, + "99.0" : 0.17852150263312924, + "99.9" : 0.17852150263312924, + "99.99" : 0.17852150263312924, + "99.999" : 0.17852150263312924, + "99.9999" : 0.17852150263312924, + "100.0" : 0.17852150263312924 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17498419680134386, + 0.1748316288921135, + 0.17469628181611727 + ], + [ + 0.17852150263312924, + 0.17834503670281068, + 0.17807120077281954 + ], + [ + 0.1706394429731759, + 0.170191207610749, + 0.1702383762554901 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.33112232276848347, + "scoreError" : 0.01408401635978298, + "scoreConfidence" : [ + 0.3170383064087005, + 0.3452063391282664 + ], + "scorePercentiles" : { + "0.0" : 0.3189610034765413, + "50.0" : 0.33347466086434574, + "90.0" : 0.33958328683486705, + "95.0" : 0.33958328683486705, + "99.0" : 0.33958328683486705, + "99.9" : 0.33958328683486705, + "99.99" : 0.33958328683486705, + "99.999" : 0.33958328683486705, + "99.9999" : 0.33958328683486705, + "100.0" : 0.33958328683486705 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3213060990553913, + 0.3212401773209123, + 0.3189610034765413 + ], + [ + 0.3333820681090812, + 0.3337180653073483, + 0.33347466086434574 + ], + [ + 0.33958328683486705, + 0.3391921009734423, + 0.3392434429744216 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15903038363523334, + "scoreError" : 0.0032727032804364393, + "scoreConfidence" : [ + 0.1557576803547969, + 0.16230308691566978 + ], + "scorePercentiles" : { + "0.0" : 0.1568177738748628, + "50.0" : 0.15869251267931953, + "90.0" : 0.16177639883523418, + "95.0" : 0.16177639883523418, + "99.0" : 0.16177639883523418, + "99.9" : 0.16177639883523418, + "99.99" : 0.16177639883523418, + "99.999" : 0.16177639883523418, + "99.9999" : 0.16177639883523418, + "100.0" : 0.16177639883523418 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15893024055179428, + 0.1585677964830495, + 0.15869251267931953 + ], + [ + 0.15714625532316107, + 0.15691627485132356, + 0.1568177738748628 + ], + [ + 0.16131501726029165, + 0.16111118285806347, + 0.16177639883523418 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.39920263185700916, + "scoreError" : 0.01508577615443086, + "scoreConfidence" : [ + 0.3841168557025783, + 0.41428840801144 + ], + "scorePercentiles" : { + "0.0" : 0.3892273552718639, + "50.0" : 0.3956107737558351, + "90.0" : 0.4115906599991769, + "95.0" : 0.4115906599991769, + "99.0" : 0.4115906599991769, + "99.9" : 0.4115906599991769, + "99.99" : 0.4115906599991769, + "99.999" : 0.4115906599991769, + "99.9999" : 0.4115906599991769, + "100.0" : 0.4115906599991769 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.39916488715922244, + 0.394366896561243, + 0.3937410017324199 + ], + [ + 0.4115906599991769, + 0.4101335106016487, + 0.40964308319678844 + ], + [ + 0.3956107737558351, + 0.3893455184348842, + 0.3892273552718639 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15671659954710748, + "scoreError" : 0.002376152157258202, + "scoreConfidence" : [ + 0.15434044738984928, + 0.15909275170436568 + ], + "scorePercentiles" : { + "0.0" : 0.15505241405668568, + "50.0" : 0.1567589684761651, + "90.0" : 0.15864113097069973, + "95.0" : 0.15864113097069973, + "99.0" : 0.15864113097069973, + "99.9" : 0.15864113097069973, + "99.99" : 0.15864113097069973, + "99.999" : 0.15864113097069973, + "99.9999" : 0.15864113097069973, + "100.0" : 0.15864113097069973 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15712338663859474, + 0.1567589684761651, + 0.15637328781410767 + ], + [ + 0.15864113097069973, + 0.15834399254215817, + 0.15792437585079672 + ], + [ + 0.15505241405668568, + 0.15506374830596517, + 0.15516809126879452 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.046883255194173766, + "scoreError" : 9.061111451677109E-4, + "scoreConfidence" : [ + 0.045977144049006054, + 0.04778936633934148 + ], + "scorePercentiles" : { + "0.0" : 0.046237800306090364, + "50.0" : 0.046795298544688814, + "90.0" : 0.04808867215992152, + "95.0" : 0.04808867215992152, + "99.0" : 0.04808867215992152, + "99.9" : 0.04808867215992152, + "99.99" : 0.04808867215992152, + "99.999" : 0.04808867215992152, + "99.9999" : 0.04808867215992152, + "100.0" : 0.04808867215992152 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.046750469346061786, + 0.046892388873518806, + 0.047285378485471784 + ], + [ + 0.046619141515195306, + 0.04643861545641564, + 0.046237800306090364 + ], + [ + 0.04808867215992152, + 0.046795298544688814, + 0.04684153206019982 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9241780.57363828, + "scoreError" : 265931.63507504837, + "scoreConfidence" : [ + 8975848.938563233, + 9507712.208713328 + ], + "scorePercentiles" : { + "0.0" : 9038273.207768744, + "50.0" : 9277086.333951762, + "90.0" : 9444023.251180358, + "95.0" : 9444023.251180358, + "99.0" : 9444023.251180358, + "99.9" : 9444023.251180358, + "99.99" : 9444023.251180358, + "99.999" : 9444023.251180358, + "99.9999" : 9444023.251180358, + "100.0" : 9444023.251180358 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9444023.251180358, + 9391734.985915493, + 9381496.035647279 + ], + [ + 9278744.134508349, + 9262558.790740741, + 9277086.333951762 + ], + [ + 9061707.098731885, + 9040401.32429991, + 9038273.207768744 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-04-02T23:08:02Z-5a0354109936c23ea8738604500215b1936cbd6f-jdk17.json b/performance-results/2025-04-02T23:08:02Z-5a0354109936c23ea8738604500215b1936cbd6f-jdk17.json new file mode 100644 index 0000000000..41be86bf29 --- /dev/null +++ b/performance-results/2025-04-02T23:08:02Z-5a0354109936c23ea8738604500215b1936cbd6f-jdk17.json @@ -0,0 +1,1310 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.424479155837928, + "scoreError" : 0.011075372549510833, + "scoreConfidence" : [ + 3.4134037832884174, + 3.435554528387439 + ], + "scorePercentiles" : { + "0.0" : 3.4222286409542613, + "50.0" : 3.424837405471688, + "90.0" : 3.426013171454075, + "95.0" : 3.426013171454075, + "99.0" : 3.426013171454075, + "99.9" : 3.426013171454075, + "99.99" : 3.426013171454075, + "99.999" : 3.426013171454075, + "99.9999" : 3.426013171454075, + "100.0" : 3.426013171454075 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.426013171454075, + 3.4255917004773675 + ], + [ + 3.4222286409542613, + 3.4240831104660083 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.730114924834354, + "scoreError" : 0.015068036624339469, + "scoreConfidence" : [ + 1.7150468882100145, + 1.7451829614586933 + ], + "scorePercentiles" : { + "0.0" : 1.7278191249827204, + "50.0" : 1.7300845809684677, + "90.0" : 1.7324714124177591, + "95.0" : 1.7324714124177591, + "99.0" : 1.7324714124177591, + "99.9" : 1.7324714124177591, + "99.99" : 1.7324714124177591, + "99.999" : 1.7324714124177591, + "99.9999" : 1.7324714124177591, + "100.0" : 1.7324714124177591 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7278191249827204, + 1.7317408171276252 + ], + [ + 1.7284283448093105, + 1.7324714124177591 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8681857109496245, + "scoreError" : 0.0035043749820760526, + "scoreConfidence" : [ + 0.8646813359675485, + 0.8716900859317005 + ], + "scorePercentiles" : { + "0.0" : 0.8676305266413037, + "50.0" : 0.8682075476996174, + "90.0" : 0.8686972217579596, + "95.0" : 0.8686972217579596, + "99.0" : 0.8686972217579596, + "99.9" : 0.8686972217579596, + "99.99" : 0.8686972217579596, + "99.999" : 0.8686972217579596, + "99.9999" : 0.8686972217579596, + "100.0" : 0.8686972217579596 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8678129209888844, + 0.8686021744103505 + ], + [ + 0.8676305266413037, + 0.8686972217579596 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.387280261757567, + "scoreError" : 0.10028607635809765, + "scoreConfidence" : [ + 16.286994185399468, + 16.487566338115666 + ], + "scorePercentiles" : { + "0.0" : 16.299881227884125, + "50.0" : 16.410224457562155, + "90.0" : 16.457636875301638, + "95.0" : 16.457636875301638, + "99.0" : 16.457636875301638, + "99.9" : 16.457636875301638, + "99.99" : 16.457636875301638, + "99.999" : 16.457636875301638, + "99.9999" : 16.457636875301638, + "100.0" : 16.457636875301638 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.299881227884125, + 16.328028210173624, + 16.30546147881785 + ], + [ + 16.457636875301638, + 16.429821212221743, + 16.410224457562155 + ], + [ + 16.412175542163634, + 16.436125687636725, + 16.406167664056625 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2642.0682457066564, + "scoreError" : 114.34022799708357, + "scoreConfidence" : [ + 2527.7280177095727, + 2756.40847370374 + ], + "scorePercentiles" : { + "0.0" : 2555.2046983574915, + "50.0" : 2659.7345801498823, + "90.0" : 2713.6502722405826, + "95.0" : 2713.6502722405826, + "99.0" : 2713.6502722405826, + "99.9" : 2713.6502722405826, + "99.99" : 2713.6502722405826, + "99.999" : 2713.6502722405826, + "99.9999" : 2713.6502722405826, + "100.0" : 2713.6502722405826 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2706.2844882940467, + 2712.2668309135865, + 2713.6502722405826 + ], + [ + 2555.3276391760605, + 2555.2046983574915, + 2558.8986334792153 + ], + [ + 2661.411687999915, + 2655.8353807491285, + 2659.7345801498823 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 69729.45525114956, + "scoreError" : 2962.4156855070937, + "scoreConfidence" : [ + 66767.03956564247, + 72691.87093665665 + ], + "scorePercentiles" : { + "0.0" : 67361.01966300381, + "50.0" : 70738.98053842774, + "90.0" : 71080.73631929721, + "95.0" : 71080.73631929721, + "99.0" : 71080.73631929721, + "99.9" : 71080.73631929721, + "99.99" : 71080.73631929721, + "99.999" : 71080.73631929721, + "99.9999" : 71080.73631929721, + "100.0" : 71080.73631929721 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 67411.41767701558, + 67361.01966300381, + 67389.57797458366 + ], + [ + 71080.73631929721, + 71053.29571140243, + 71079.39665194794 + ], + [ + 70705.69662773378, + 70744.97609693388, + 70738.98053842774 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 353.94580919495104, + "scoreError" : 10.159825623076115, + "scoreConfidence" : [ + 343.7859835718749, + 364.10563481802717 + ], + "scorePercentiles" : { + "0.0" : 347.0369763846074, + "50.0" : 353.17931736004226, + "90.0" : 361.39092290805024, + "95.0" : 361.39092290805024, + "99.0" : 361.39092290805024, + "99.9" : 361.39092290805024, + "99.99" : 361.39092290805024, + "99.999" : 361.39092290805024, + "99.9999" : 361.39092290805024, + "100.0" : 361.39092290805024 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 347.3977135026078, + 347.69793010856546, + 347.0369763846074 + ], + [ + 361.2079659440757, + 361.21748163628587, + 361.39092290805024 + ], + [ + 353.2714724807457, + 353.17931736004226, + 353.11250242957925 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 107.68682541606691, + "scoreError" : 2.1175975242501184, + "scoreConfidence" : [ + 105.5692278918168, + 109.80442294031702 + ], + "scorePercentiles" : { + "0.0" : 106.26146297343669, + "50.0" : 107.34763854854604, + "90.0" : 109.36109832163555, + "95.0" : 109.36109832163555, + "99.0" : 109.36109832163555, + "99.9" : 109.36109832163555, + "99.99" : 109.36109832163555, + "99.999" : 109.36109832163555, + "99.9999" : 109.36109832163555, + "100.0" : 109.36109832163555 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 109.19339810163474, + 109.30825077522033, + 109.36109832163555 + ], + [ + 107.00354599780425, + 106.4757245889034, + 106.26146297343669 + ], + [ + 106.74918851780693, + 107.34763854854604, + 107.48112091961424 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06162681252669893, + "scoreError" : 3.3686119708431755E-4, + "scoreConfidence" : [ + 0.061289951329614616, + 0.061963673723783246 + ], + "scorePercentiles" : { + "0.0" : 0.061328496562593905, + "50.0" : 0.061681442692720474, + "90.0" : 0.06197374492597344, + "95.0" : 0.06197374492597344, + "99.0" : 0.06197374492597344, + "99.9" : 0.06197374492597344, + "99.99" : 0.06197374492597344, + "99.999" : 0.06197374492597344, + "99.9999" : 0.06197374492597344, + "100.0" : 0.06197374492597344 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06197374492597344, + 0.061568095189134614, + 0.061681442692720474 + ], + [ + 0.061702634419482816, + 0.06179707055900928, + 0.06169649623656577 + ], + [ + 0.061328496562593905, + 0.06142226142128862, + 0.061471070733521434 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.601361537296343E-4, + "scoreError" : 1.3735303553208745E-5, + "scoreConfidence" : [ + 3.464008501764256E-4, + 3.7387145728284306E-4 + ], + "scorePercentiles" : { + "0.0" : 3.5257102726447045E-4, + "50.0" : 3.563742360272379E-4, + "90.0" : 3.711108373662132E-4, + "95.0" : 3.711108373662132E-4, + "99.0" : 3.711108373662132E-4, + "99.9" : 3.711108373662132E-4, + "99.99" : 3.711108373662132E-4, + "99.999" : 3.711108373662132E-4, + "99.9999" : 3.711108373662132E-4, + "100.0" : 3.711108373662132E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.7094360919965913E-4, + 3.7054810797679537E-4, + 3.711108373662132E-4 + ], + [ + 3.564217083170926E-4, + 3.561934064597772E-4, + 3.563742360272379E-4 + ], + [ + 3.5417943252750647E-4, + 3.5257102726447045E-4, + 3.5288301842795726E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014064441341060416, + "scoreError" : 1.2119529604295307E-4, + "scoreConfidence" : [ + 0.013943246045017463, + 0.01418563663710337 + ], + "scorePercentiles" : { + "0.0" : 0.01398626967601172, + "50.0" : 0.0140487007086081, + "90.0" : 0.014176805886422469, + "95.0" : 0.014176805886422469, + "99.0" : 0.014176805886422469, + "99.9" : 0.014176805886422469, + "99.99" : 0.014176805886422469, + "99.999" : 0.014176805886422469, + "99.9999" : 0.014176805886422469, + "100.0" : 0.014176805886422469 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013999763167326047, + 0.013999175775825382, + 0.01398626967601172 + ], + [ + 0.014029347007575757, + 0.0140487007086081, + 0.01405117447410611 + ], + [ + 0.014176805886422469, + 0.014143796568194129, + 0.014144938805474027 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 1.009089933464979, + "scoreError" : 0.01145814597855419, + "scoreConfidence" : [ + 0.9976317874864248, + 1.020548079443533 + ], + "scorePercentiles" : { + "0.0" : 1.0003654717415225, + "50.0" : 1.0087827143433528, + "90.0" : 1.0205102271428572, + "95.0" : 1.0205102271428572, + "99.0" : 1.0205102271428572, + "99.9" : 1.0205102271428572, + "99.99" : 1.0205102271428572, + "99.999" : 1.0205102271428572, + "99.9999" : 1.0205102271428572, + "100.0" : 1.0205102271428572 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 1.0153699043557722, + 1.0152101648563598, + 1.0087827143433528 + ], + [ + 1.0026712928614396, + 1.0003654717415225, + 1.0058263027255356 + ], + [ + 1.0031070592718885, + 1.0099662638860836, + 1.0205102271428572 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.013063078195670041, + "scoreError" : 3.172213737715068E-4, + "scoreConfidence" : [ + 0.012745856821898535, + 0.013380299569441548 + ], + "scorePercentiles" : { + "0.0" : 0.012905051156776511, + "50.0" : 0.013051076766829785, + "90.0" : 0.013247707986805675, + "95.0" : 0.013247707986805675, + "99.0" : 0.013247707986805675, + "99.9" : 0.013247707986805675, + "99.99" : 0.013247707986805675, + "99.999" : 0.013247707986805675, + "99.9999" : 0.013247707986805675, + "100.0" : 0.013247707986805675 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013015171863042652, + 0.013247707986805675, + 0.013039056843488737 + ], + [ + 0.012905051156776511, + 0.013063096690170833, + 0.013108384633735837 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.972506567178479, + "scoreError" : 0.19669975350394048, + "scoreConfidence" : [ + 3.7758068136745386, + 4.169206320682419 + ], + "scorePercentiles" : { + "0.0" : 3.865339341576507, + "50.0" : 3.980264222581429, + "90.0" : 4.068455570382425, + "95.0" : 4.068455570382425, + "99.0" : 4.068455570382425, + "99.9" : 4.068455570382425, + "99.99" : 4.068455570382425, + "99.999" : 4.068455570382425, + "99.9999" : 4.068455570382425, + "100.0" : 4.068455570382425 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 4.068455570382425, + 3.9299753731343285, + 3.9963807795527155 + ], + [ + 4.010740672814755, + 3.865339341576507, + 3.9641476656101426 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.158331899464004, + "scoreError" : 0.04410759724726521, + "scoreConfidence" : [ + 3.114224302216739, + 3.2024394967112695 + ], + "scorePercentiles" : { + "0.0" : 3.1209627138845555, + "50.0" : 3.151894622439332, + "90.0" : 3.205059529958347, + "95.0" : 3.205059529958347, + "99.0" : 3.205059529958347, + "99.9" : 3.205059529958347, + "99.99" : 3.205059529958347, + "99.999" : 3.205059529958347, + "99.9999" : 3.205059529958347, + "100.0" : 3.205059529958347 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.205059529958347, + 3.151894622439332, + 3.1209627138845555 + ], + [ + 3.1614530736409607, + 3.1490925138539043, + 3.1931810312899107 + ], + [ + 3.138146982428616, + 3.159927334913112, + 3.1452692927672956 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17926628376468318, + "scoreError" : 0.0041338115424907305, + "scoreConfidence" : [ + 0.17513247222219244, + 0.1834000953071739 + ], + "scorePercentiles" : { + "0.0" : 0.17606456009788904, + "50.0" : 0.17991486069481677, + "90.0" : 0.1824510914962325, + "95.0" : 0.1824510914962325, + "99.0" : 0.1824510914962325, + "99.9" : 0.1824510914962325, + "99.99" : 0.1824510914962325, + "99.999" : 0.1824510914962325, + "99.9999" : 0.1824510914962325, + "100.0" : 0.1824510914962325 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1762438778308454, + 0.17617481822666173, + 0.17606456009788904 + ], + [ + 0.18154535195338029, + 0.1824510914962325, + 0.18063986376445088 + ], + [ + 0.17991486069481677, + 0.1799070998992552, + 0.18045502991861703 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.33563272825190205, + "scoreError" : 0.009558237070581397, + "scoreConfidence" : [ + 0.32607449118132065, + 0.34519096532248345 + ], + "scorePercentiles" : { + "0.0" : 0.3284607007160218, + "50.0" : 0.33644188396581887, + "90.0" : 0.3440445917363333, + "95.0" : 0.3440445917363333, + "99.0" : 0.3440445917363333, + "99.9" : 0.3440445917363333, + "99.99" : 0.3440445917363333, + "99.999" : 0.3440445917363333, + "99.9999" : 0.3440445917363333, + "100.0" : 0.3440445917363333 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.329211396694759, + 0.32936281339129864, + 0.3284607007160218 + ], + [ + 0.3413116095904437, + 0.3403381569615084, + 0.3440445917363333 + ], + [ + 0.33644188396581887, + 0.3350542349984923, + 0.3364691662124424 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16489447994355155, + "scoreError" : 0.012856772971821528, + "scoreConfidence" : [ + 0.15203770697173002, + 0.17775125291537308 + ], + "scorePercentiles" : { + "0.0" : 0.1552361662216703, + "50.0" : 0.16498882176796673, + "90.0" : 0.17424424524323948, + "95.0" : 0.17424424524323948, + "99.0" : 0.17424424524323948, + "99.9" : 0.17424424524323948, + "99.99" : 0.17424424524323948, + "99.999" : 0.17424424524323948, + "99.9999" : 0.17424424524323948, + "100.0" : 0.17424424524323948 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16498882176796673, + 0.1665575346346663, + 0.16489984001714927 + ], + [ + 0.1552361662216703, + 0.15588410461092406, + 0.15634531709452487 + ], + [ + 0.17229772164504403, + 0.17424424524323948, + 0.1735965682567788 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3875551586103285, + "scoreError" : 0.0063050988879517446, + "scoreConfidence" : [ + 0.3812500597223768, + 0.39386025749828024 + ], + "scorePercentiles" : { + "0.0" : 0.38285499134762635, + "50.0" : 0.385947726409633, + "90.0" : 0.39251833351650506, + "95.0" : 0.39251833351650506, + "99.0" : 0.39251833351650506, + "99.9" : 0.39251833351650506, + "99.99" : 0.39251833351650506, + "99.999" : 0.39251833351650506, + "99.9999" : 0.39251833351650506, + "100.0" : 0.39251833351650506 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.385947726409633, + 0.3845023914564749, + 0.38541915674259064 + ], + [ + 0.39251833351650506, + 0.39210625470514426, + 0.39240598979792035 + ], + [ + 0.38285499134762635, + 0.3868541281237911, + 0.3853874553932714 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1597276282520068, + "scoreError" : 0.0046269221140336735, + "scoreConfidence" : [ + 0.1551007061379731, + 0.16435455036604046 + ], + "scorePercentiles" : { + "0.0" : 0.1554737507501438, + "50.0" : 0.1615286003876595, + "90.0" : 0.1617219838281907, + "95.0" : 0.1617219838281907, + "99.0" : 0.1617219838281907, + "99.9" : 0.1617219838281907, + "99.99" : 0.1617219838281907, + "99.999" : 0.1617219838281907, + "99.9999" : 0.1617219838281907, + "100.0" : 0.1617219838281907 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16165860842224378, + 0.1617219838281907, + 0.1615286003876595 + ], + [ + 0.15625568347942936, + 0.15650595923126281, + 0.1554737507501438 + ], + [ + 0.1615476022486794, + 0.16123468213404704, + 0.16162178378640463 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04761128317096445, + "scoreError" : 3.479280769183812E-4, + "scoreConfidence" : [ + 0.04726335509404607, + 0.04795921124788283 + ], + "scorePercentiles" : { + "0.0" : 0.04738616306773758, + "50.0" : 0.047527383797194026, + "90.0" : 0.047924545537323164, + "95.0" : 0.047924545537323164, + "99.0" : 0.047924545537323164, + "99.9" : 0.047924545537323164, + "99.99" : 0.047924545537323164, + "99.999" : 0.047924545537323164, + "99.9999" : 0.047924545537323164, + "100.0" : 0.047924545537323164 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.047924545537323164, + 0.047923508297830535, + 0.04775109323280267 + ], + [ + 0.04747591117377846, + 0.047487881058774925, + 0.04738616306773758 + ], + [ + 0.047604741071853605, + 0.04742032130138513, + 0.047527383797194026 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 1.0398962932366718E7, + "scoreError" : 351179.03066771803, + "scoreConfidence" : [ + 1.0047783901699E7, + 1.0750141963034436E7 + ], + "scorePercentiles" : { + "0.0" : 9973581.754735792, + "50.0" : 1.0443271703549061E7, + "90.0" : 1.0618271176220806E7, + "95.0" : 1.0618271176220806E7, + "99.0" : 1.0618271176220806E7, + "99.9" : 1.0618271176220806E7, + "99.99" : 1.0618271176220806E7, + "99.999" : 1.0618271176220806E7, + "99.9999" : 1.0618271176220806E7, + "100.0" : 1.0618271176220806E7 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 1.0368837321243523E7, + 1.0231072242331289E7, + 1.028341827954779E7 + ], + [ + 1.0542553845100105E7, + 9973581.754735792, + 1.0552821065400844E7 + ], + [ + 1.0618271176220806E7, + 1.0443271703549061E7, + 1.0576839003171246E7 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-04-03T02:51:35Z-e98ca21274456df314a2574b48271e4f236d2970-jdk17.json b/performance-results/2025-04-03T02:51:35Z-e98ca21274456df314a2574b48271e4f236d2970-jdk17.json new file mode 100644 index 0000000000..e7e3fde930 --- /dev/null +++ b/performance-results/2025-04-03T02:51:35Z-e98ca21274456df314a2574b48271e4f236d2970-jdk17.json @@ -0,0 +1,1310 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.412009068804363, + "scoreError" : 0.027147540536237486, + "scoreConfidence" : [ + 3.3848615282681256, + 3.4391566093406003 + ], + "scorePercentiles" : { + "0.0" : 3.406407858797982, + "50.0" : 3.412581318388711, + "90.0" : 3.416465779642049, + "95.0" : 3.416465779642049, + "99.0" : 3.416465779642049, + "99.9" : 3.416465779642049, + "99.99" : 3.416465779642049, + "99.999" : 3.416465779642049, + "99.9999" : 3.416465779642049, + "100.0" : 3.416465779642049 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.411854248718382, + 3.416465779642049 + ], + [ + 3.406407858797982, + 3.41330838805904 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7247825532086658, + "scoreError" : 0.008412192988375613, + "scoreConfidence" : [ + 1.7163703602202902, + 1.7331947461970414 + ], + "scorePercentiles" : { + "0.0" : 1.7232151056048182, + "50.0" : 1.7247590010147462, + "90.0" : 1.7263971052003526, + "95.0" : 1.7263971052003526, + "99.0" : 1.7263971052003526, + "99.9" : 1.7263971052003526, + "99.99" : 1.7263971052003526, + "99.999" : 1.7263971052003526, + "99.9999" : 1.7263971052003526, + "100.0" : 1.7263971052003526 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7232151056048182, + 1.7263971052003526 + ], + [ + 1.7246609185990969, + 1.7248570834303953 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8665645873428459, + "scoreError" : 0.007980730163315616, + "scoreConfidence" : [ + 0.8585838571795303, + 0.8745453175061615 + ], + "scorePercentiles" : { + "0.0" : 0.8652048329749016, + "50.0" : 0.8665310283763555, + "90.0" : 0.8679914596437709, + "95.0" : 0.8679914596437709, + "99.0" : 0.8679914596437709, + "99.9" : 0.8679914596437709, + "99.99" : 0.8679914596437709, + "99.999" : 0.8679914596437709, + "99.9999" : 0.8679914596437709, + "100.0" : 0.8679914596437709 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8671178524031105, + 0.8679914596437709 + ], + [ + 0.8652048329749016, + 0.8659442043496006 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.190306505865994, + "scoreError" : 0.19886222794442865, + "scoreConfidence" : [ + 15.991444277921566, + 16.389168733810422 + ], + "scorePercentiles" : { + "0.0" : 16.00356710808966, + "50.0" : 16.19719540512624, + "90.0" : 16.338223872579796, + "95.0" : 16.338223872579796, + "99.0" : 16.338223872579796, + "99.9" : 16.338223872579796, + "99.99" : 16.338223872579796, + "99.999" : 16.338223872579796, + "99.9999" : 16.338223872579796, + "100.0" : 16.338223872579796 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.263091004643808, + 16.332625869940873, + 16.338223872579796 + ], + [ + 16.20694779720255, + 16.19719540512624, + 16.18695691399324 + ], + [ + 16.163126086734835, + 16.00356710808966, + 16.02102449448297 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2652.1374561733314, + "scoreError" : 149.48652867483324, + "scoreConfidence" : [ + 2502.6509274984983, + 2801.6239848481646 + ], + "scorePercentiles" : { + "0.0" : 2572.313124395027, + "50.0" : 2615.4625094289067, + "90.0" : 2776.2508648496128, + "95.0" : 2776.2508648496128, + "99.0" : 2776.2508648496128, + "99.9" : 2776.2508648496128, + "99.99" : 2776.2508648496128, + "99.999" : 2776.2508648496128, + "99.9999" : 2776.2508648496128, + "100.0" : 2776.2508648496128 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2572.327591862452, + 2573.670192282608, + 2572.313124395027 + ], + [ + 2763.3332028422533, + 2776.2508648496128, + 2764.5264619939276 + ], + [ + 2617.16311033585, + 2614.190047569343, + 2615.4625094289067 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 69244.53393821999, + "scoreError" : 2238.7153835897343, + "scoreConfidence" : [ + 67005.81855463026, + 71483.24932180972 + ], + "scorePercentiles" : { + "0.0" : 68283.01701912875, + "50.0" : 68404.88908740183, + "90.0" : 71025.63666207869, + "95.0" : 71025.63666207869, + "99.0" : 71025.63666207869, + "99.9" : 71025.63666207869, + "99.99" : 71025.63666207869, + "99.999" : 71025.63666207869, + "99.9999" : 71025.63666207869, + "100.0" : 71025.63666207869 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 68283.01701912875, + 68299.08646909134, + 68346.94205609483 + ], + [ + 68410.80512801414, + 68396.52696193331, + 68404.88908740183 + ], + [ + 71020.59502416776, + 71025.63666207869, + 71013.30703606934 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 352.0495439106279, + "scoreError" : 5.688087554984918, + "scoreConfidence" : [ + 346.361456355643, + 357.7376314656128 + ], + "scorePercentiles" : { + "0.0" : 347.5038937323927, + "50.0" : 352.6586337417818, + "90.0" : 355.9543623081089, + "95.0" : 355.9543623081089, + "99.0" : 355.9543623081089, + "99.9" : 355.9543623081089, + "99.99" : 355.9543623081089, + "99.999" : 355.9543623081089, + "99.9999" : 355.9543623081089, + "100.0" : 355.9543623081089 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 355.36606065776704, + 355.9543623081089, + 355.44739687765446 + ], + [ + 353.3104547724866, + 352.6586337417818, + 352.0106775017903 + ], + [ + 348.08547373181875, + 348.1089418718505, + 347.5038937323927 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 107.97197788613875, + "scoreError" : 2.7303080728968436, + "scoreConfidence" : [ + 105.2416698132419, + 110.70228595903559 + ], + "scorePercentiles" : { + "0.0" : 105.82762260516864, + "50.0" : 108.34243905974502, + "90.0" : 109.89787443224124, + "95.0" : 109.89787443224124, + "99.0" : 109.89787443224124, + "99.9" : 109.89787443224124, + "99.99" : 109.89787443224124, + "99.999" : 109.89787443224124, + "99.9999" : 109.89787443224124, + "100.0" : 109.89787443224124 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 109.24278780414237, + 109.77494855538254, + 109.89787443224124 + ], + [ + 108.25668688929966, + 108.34243905974502, + 108.35487959785104 + ], + [ + 105.99650175505398, + 105.82762260516864, + 106.05406027636413 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06264234939734833, + "scoreError" : 0.001940503038725499, + "scoreConfidence" : [ + 0.06070184635862284, + 0.06458285243607384 + ], + "scorePercentiles" : { + "0.0" : 0.061487347325639305, + "50.0" : 0.06224014973548267, + "90.0" : 0.0643154368235226, + "95.0" : 0.0643154368235226, + "99.0" : 0.0643154368235226, + "99.9" : 0.0643154368235226, + "99.99" : 0.0643154368235226, + "99.999" : 0.0643154368235226, + "99.9999" : 0.0643154368235226, + "100.0" : 0.0643154368235226 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06234369102198837, + 0.062147674374957274, + 0.06224014973548267 + ], + [ + 0.06389407033371457, + 0.0643154368235226, + 0.06415574181545232 + ], + [ + 0.06163425568567026, + 0.0615627774597077, + 0.061487347325639305 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.693017818862823E-4, + "scoreError" : 1.4251241076151806E-5, + "scoreConfidence" : [ + 3.550505408101305E-4, + 3.8355302296243406E-4 + ], + "scorePercentiles" : { + "0.0" : 3.581285258168051E-4, + "50.0" : 3.7241348116836534E-4, + "90.0" : 3.774987506762271E-4, + "95.0" : 3.774987506762271E-4, + "99.0" : 3.774987506762271E-4, + "99.9" : 3.774987506762271E-4, + "99.99" : 3.774987506762271E-4, + "99.999" : 3.774987506762271E-4, + "99.9999" : 3.774987506762271E-4, + "100.0" : 3.774987506762271E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.7728784066109127E-4, + 3.7661322860138834E-4, + 3.774987506762271E-4 + ], + [ + 3.581285258168051E-4, + 3.5816292636233426E-4, + 3.5870577075242295E-4 + ], + [ + 3.7241348116836534E-4, + 3.7278464199828296E-4, + 3.721208709396231E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014251813348747193, + "scoreError" : 2.4133152936300968E-4, + "scoreConfidence" : [ + 0.014010481819384184, + 0.014493144878110202 + ], + "scorePercentiles" : { + "0.0" : 0.014109882265792994, + "50.0" : 0.014200063186653244, + "90.0" : 0.01444335340454787, + "95.0" : 0.01444335340454787, + "99.0" : 0.01444335340454787, + "99.9" : 0.01444335340454787, + "99.99" : 0.01444335340454787, + "99.999" : 0.01444335340454787, + "99.9999" : 0.01444335340454787, + "100.0" : 0.01444335340454787 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014433382154187222, + 0.014433030841594948, + 0.01444335340454787 + ], + [ + 0.014115376225199589, + 0.014109882265792994, + 0.014123692329094866 + ], + [ + 0.014207825716136768, + 0.014199714015517262, + 0.014200063186653244 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9922482637732131, + "scoreError" : 0.04060752324069984, + "scoreConfidence" : [ + 0.9516407405325132, + 1.032855787013913 + ], + "scorePercentiles" : { + "0.0" : 0.9736791512024146, + "50.0" : 0.9777998899100508, + "90.0" : 1.0262624400205234, + "95.0" : 1.0262624400205234, + "99.0" : 1.0262624400205234, + "99.9" : 1.0262624400205234, + "99.99" : 1.0262624400205234, + "99.999" : 1.0262624400205234, + "99.9999" : 1.0262624400205234, + "100.0" : 1.0262624400205234 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 1.0262624400205234, + 1.0246107202868853, + 1.0222336996831238 + ], + [ + 0.976044982920164, + 0.9750917759360375, + 0.9736791512024146 + ], + [ + 0.9752420151160522, + 0.9777998899100508, + 0.9792696988836663 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.013020478890194788, + "scoreError" : 7.333534194251844E-4, + "scoreConfidence" : [ + 0.012287125470769603, + 0.013753832309619973 + ], + "scorePercentiles" : { + "0.0" : 0.012776612812060816, + "50.0" : 0.013020479729130969, + "90.0" : 0.013262022369869371, + "95.0" : 0.013262022369869371, + "99.0" : 0.013262022369869371, + "99.9" : 0.013262022369869371, + "99.99" : 0.013262022369869371, + "99.999" : 0.013262022369869371, + "99.9999" : 0.013262022369869371, + "100.0" : 0.013262022369869371 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013262022369869371, + 0.013255514599294823, + 0.013260036602118372 + ], + [ + 0.012785444858967114, + 0.012776612812060816, + 0.012783242098858227 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.6823549127759994, + "scoreError" : 0.12037344013443266, + "scoreConfidence" : [ + 3.5619814726415666, + 3.802728352910432 + ], + "scorePercentiles" : { + "0.0" : 3.6239961630434783, + "50.0" : 3.674330386428005, + "90.0" : 3.7354224331590737, + "95.0" : 3.7354224331590737, + "99.0" : 3.7354224331590737, + "99.9" : 3.7354224331590737, + "99.99" : 3.7354224331590737, + "99.999" : 3.7354224331590737, + "99.9999" : 3.7354224331590737, + "100.0" : 3.7354224331590737 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.6239961630434783, + 3.6654824945054947, + 3.6578229041697146 + ], + [ + 3.6831782783505154, + 3.7354224331590737, + 3.72822720342772 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.830217610770232, + "scoreError" : 0.02941764690765332, + "scoreConfidence" : [ + 2.8007999638625787, + 2.859635257677885 + ], + "scorePercentiles" : { + "0.0" : 2.8059439887766553, + "50.0" : 2.8304837555178266, + "90.0" : 2.8638871964490265, + "95.0" : 2.8638871964490265, + "99.0" : 2.8638871964490265, + "99.9" : 2.8638871964490265, + "99.99" : 2.8638871964490265, + "99.999" : 2.8638871964490265, + "99.9999" : 2.8638871964490265, + "100.0" : 2.8638871964490265 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.8059439887766553, + 2.80763629365525, + 2.8274634690415605 + ], + [ + 2.8266450850763145, + 2.8334196541076486, + 2.8638871964490265 + ], + [ + 2.8327837142452563, + 2.8304837555178266, + 2.8436953400625535 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1753886762344773, + "scoreError" : 0.0030167678177013334, + "scoreConfidence" : [ + 0.17237190841677597, + 0.17840544405217862 + ], + "scorePercentiles" : { + "0.0" : 0.1728514556469734, + "50.0" : 0.17628545656465944, + "90.0" : 0.17697612007574418, + "95.0" : 0.17697612007574418, + "99.0" : 0.17697612007574418, + "99.9" : 0.17697612007574418, + "99.99" : 0.17697612007574418, + "99.999" : 0.17697612007574418, + "99.9999" : 0.17697612007574418, + "100.0" : 0.17697612007574418 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17323752276270657, + 0.17297506889453929, + 0.1728514556469734 + ], + [ + 0.17697612007574418, + 0.17628545656465944, + 0.1761608011520778 + ], + [ + 0.17683352849640147, + 0.17655357137056196, + 0.1766245611466318 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3252011556337465, + "scoreError" : 0.011613804722758634, + "scoreConfidence" : [ + 0.3135873509109879, + 0.33681496035650516 + ], + "scorePercentiles" : { + "0.0" : 0.31793855517756653, + "50.0" : 0.32358584517068434, + "90.0" : 0.3339527306061112, + "95.0" : 0.3339527306061112, + "99.0" : 0.3339527306061112, + "99.9" : 0.3339527306061112, + "99.99" : 0.3339527306061112, + "99.999" : 0.3339527306061112, + "99.9999" : 0.3339527306061112, + "100.0" : 0.3339527306061112 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.32359638985244626, + 0.32337204507679873, + 0.32358584517068434 + ], + [ + 0.333943945167969, + 0.33376095434216674, + 0.3339527306061112 + ], + [ + 0.3185725668822274, + 0.31793855517756653, + 0.318087368427749 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16379379419542822, + "scoreError" : 0.011142070500678086, + "scoreConfidence" : [ + 0.15265172369475014, + 0.1749358646961063 + ], + "scorePercentiles" : { + "0.0" : 0.15917055110064143, + "50.0" : 0.15955122844105493, + "90.0" : 0.1727546144039249, + "95.0" : 0.1727546144039249, + "99.0" : 0.1727546144039249, + "99.9" : 0.1727546144039249, + "99.99" : 0.1727546144039249, + "99.999" : 0.1727546144039249, + "99.9999" : 0.1727546144039249, + "100.0" : 0.1727546144039249 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15958058684134938, + 0.15917055110064143, + 0.15917860239717305 + ], + [ + 0.1727546144039249, + 0.17259759036227756, + 0.17254379072415757 + ], + [ + 0.15955122844105493, + 0.15929815637892858, + 0.15946902710934635 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.38991118899124244, + "scoreError" : 0.01124237080592444, + "scoreConfidence" : [ + 0.378668818185318, + 0.4011535597971669 + ], + "scorePercentiles" : { + "0.0" : 0.38210326390799326, + "50.0" : 0.39018023211080766, + "90.0" : 0.39966706621907844, + "95.0" : 0.39966706621907844, + "99.0" : 0.39966706621907844, + "99.9" : 0.39966706621907844, + "99.99" : 0.39966706621907844, + "99.999" : 0.39966706621907844, + "99.9999" : 0.39966706621907844, + "100.0" : 0.39966706621907844 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.39966706621907844, + 0.39717512927439536, + 0.39558205047468353 + ], + [ + 0.38210326390799326, + 0.38233665801345773, + 0.38222272790857664 + ], + [ + 0.3904339530316636, + 0.39018023211080766, + 0.3894996199805258 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15684870185149255, + "scoreError" : 0.0037258751961398227, + "scoreConfidence" : [ + 0.15312282665535273, + 0.16057457704763237 + ], + "scorePercentiles" : { + "0.0" : 0.15480540073375748, + "50.0" : 0.1556524699052096, + "90.0" : 0.15974400097442532, + "95.0" : 0.15974400097442532, + "99.0" : 0.15974400097442532, + "99.9" : 0.15974400097442532, + "99.99" : 0.15974400097442532, + "99.999" : 0.15974400097442532, + "99.9999" : 0.15974400097442532, + "100.0" : 0.15974400097442532 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1597275829925888, + 0.15974400097442532, + 0.159548770716998 + ], + [ + 0.15493251851392806, + 0.15480540073375748, + 0.1548956253620607 + ], + [ + 0.15698526397915294, + 0.1556524699052096, + 0.15534668348531216 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04782230709382967, + "scoreError" : 0.0017082561348700006, + "scoreConfidence" : [ + 0.046114050958959665, + 0.04953056322869967 + ], + "scorePercentiles" : { + "0.0" : 0.04707639163183068, + "50.0" : 0.04721573866013211, + "90.0" : 0.04920717646943044, + "95.0" : 0.04920717646943044, + "99.0" : 0.04920717646943044, + "99.9" : 0.04920717646943044, + "99.99" : 0.04920717646943044, + "99.999" : 0.04920717646943044, + "99.9999" : 0.04920717646943044, + "100.0" : 0.04920717646943044 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04721573866013211, + 0.04707639163183068, + 0.047087921274932665 + ], + [ + 0.04726264621172378, + 0.047139337894786464, + 0.047093677427406215 + ], + [ + 0.0491894079390064, + 0.0491284663352182, + 0.04920717646943044 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9281569.0026659, + "scoreError" : 115612.17714641236, + "scoreConfidence" : [ + 9165956.825519487, + 9397181.179812312 + ], + "scorePercentiles" : { + "0.0" : 9196106.576286765, + "50.0" : 9263902.401851851, + "90.0" : 9365629.605805244, + "95.0" : 9365629.605805244, + "99.0" : 9365629.605805244, + "99.9" : 9365629.605805244, + "99.99" : 9365629.605805244, + "99.999" : 9365629.605805244, + "99.9999" : 9365629.605805244, + "100.0" : 9365629.605805244 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9310784.226046512, + 9263902.401851851, + 9258585.227567067 + ], + [ + 9361236.768942937, + 9365629.605805244, + 9355414.256314313 + ], + [ + 9218562.90046083, + 9203899.060717572, + 9196106.576286765 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-04-03T02:52:17Z-e98ca21274456df314a2574b48271e4f236d2970-jdk17.json b/performance-results/2025-04-03T02:52:17Z-e98ca21274456df314a2574b48271e4f236d2970-jdk17.json new file mode 100644 index 0000000000..fe3a7e2f75 --- /dev/null +++ b/performance-results/2025-04-03T02:52:17Z-e98ca21274456df314a2574b48271e4f236d2970-jdk17.json @@ -0,0 +1,1310 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.403194491531668, + "scoreError" : 0.0054344602373101285, + "scoreConfidence" : [ + 3.3977600312943577, + 3.408628951768978 + ], + "scorePercentiles" : { + "0.0" : 3.40204038330392, + "50.0" : 3.403455956648364, + "90.0" : 3.4038256695260225, + "95.0" : 3.4038256695260225, + "99.0" : 3.4038256695260225, + "99.9" : 3.4038256695260225, + "99.99" : 3.4038256695260225, + "99.999" : 3.4038256695260225, + "99.9999" : 3.4038256695260225, + "100.0" : 3.4038256695260225 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4038256695260225, + 3.403812822654316 + ], + [ + 3.403099090642413, + 3.40204038330392 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7219424259297373, + "scoreError" : 0.013541201269863041, + "scoreConfidence" : [ + 1.7084012246598743, + 1.7354836271996004 + ], + "scorePercentiles" : { + "0.0" : 1.7197695025152795, + "50.0" : 1.7218632263632574, + "90.0" : 1.7242737484771553, + "95.0" : 1.7242737484771553, + "99.0" : 1.7242737484771553, + "99.9" : 1.7242737484771553, + "99.99" : 1.7242737484771553, + "99.999" : 1.7242737484771553, + "99.9999" : 1.7242737484771553, + "100.0" : 1.7242737484771553 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7197695025152795, + 1.7242737484771553 + ], + [ + 1.7206375929853883, + 1.7230888597411262 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8640697627505329, + "scoreError" : 0.014770242609452224, + "scoreConfidence" : [ + 0.8492995201410807, + 0.8788400053599852 + ], + "scorePercentiles" : { + "0.0" : 0.8624312182679136, + "50.0" : 0.8632019184962488, + "90.0" : 0.8674439957417209, + "95.0" : 0.8674439957417209, + "99.0" : 0.8674439957417209, + "99.9" : 0.8674439957417209, + "99.99" : 0.8674439957417209, + "99.999" : 0.8674439957417209, + "99.9999" : 0.8674439957417209, + "100.0" : 0.8674439957417209 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8624312182679136, + 0.8634219709025568 + ], + [ + 0.8629818660899409, + 0.8674439957417209 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 15.9436319756992, + "scoreError" : 0.09563035262704961, + "scoreConfidence" : [ + 15.84800162307215, + 16.03926232832625 + ], + "scorePercentiles" : { + "0.0" : 15.84638395040122, + "50.0" : 15.959992832909032, + "90.0" : 16.02254842355818, + "95.0" : 16.02254842355818, + "99.0" : 16.02254842355818, + "99.9" : 16.02254842355818, + "99.99" : 16.02254842355818, + "99.999" : 16.02254842355818, + "99.9999" : 16.02254842355818, + "100.0" : 16.02254842355818 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.02254842355818, + 15.987810841814806, + 15.991277618896921 + ], + [ + 15.912647622226181, + 15.879334862745797, + 15.84638395040122 + ], + [ + 15.928670625550126, + 15.964021003190537, + 15.959992832909032 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2640.280594719942, + "scoreError" : 163.1601437194584, + "scoreConfidence" : [ + 2477.1204510004836, + 2803.440738439401 + ], + "scorePercentiles" : { + "0.0" : 2532.8517014134386, + "50.0" : 2628.7413437275936, + "90.0" : 2765.5166739080864, + "95.0" : 2765.5166739080864, + "99.0" : 2765.5166739080864, + "99.9" : 2765.5166739080864, + "99.99" : 2765.5166739080864, + "99.999" : 2765.5166739080864, + "99.9999" : 2765.5166739080864, + "100.0" : 2765.5166739080864 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2628.7413437275936, + 2624.102851090245, + 2631.2151456928896 + ], + [ + 2747.292980003622, + 2760.780272754581, + 2765.5166739080864 + ], + [ + 2536.3386188386053, + 2532.8517014134386, + 2535.6857650504176 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 70561.7075536086, + "scoreError" : 675.1940634943425, + "scoreConfidence" : [ + 69886.51349011426, + 71236.90161710295 + ], + "scorePercentiles" : { + "0.0" : 70054.20588415946, + "50.0" : 70598.37075600476, + "90.0" : 71032.91635748415, + "95.0" : 71032.91635748415, + "99.0" : 71032.91635748415, + "99.9" : 71032.91635748415, + "99.99" : 71032.91635748415, + "99.999" : 71032.91635748415, + "99.9999" : 71032.91635748415, + "100.0" : 71032.91635748415 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 70634.05122592344, + 70598.37075600476, + 70573.16509122771 + ], + [ + 70977.18073904366, + 71032.91635748415, + 70999.40010834833 + ], + [ + 70063.63182051902, + 70054.20588415946, + 70122.4459997669 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 337.49420084887447, + "scoreError" : 9.469080745548057, + "scoreConfidence" : [ + 328.0251201033264, + 346.96328159442254 + ], + "scorePercentiles" : { + "0.0" : 330.2899132159104, + "50.0" : 339.15051295464735, + "90.0" : 344.43838779117556, + "95.0" : 344.43838779117556, + "99.0" : 344.43838779117556, + "99.9" : 344.43838779117556, + "99.99" : 344.43838779117556, + "99.999" : 344.43838779117556, + "99.9999" : 344.43838779117556, + "100.0" : 344.43838779117556 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 330.386498161057, + 330.47431679190134, + 330.2899132159104 + ], + [ + 341.3405225744992, + 342.95327223940876, + 344.43838779117556 + ], + [ + 338.54115541959317, + 339.15051295464735, + 339.8732284916776 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 105.33461889685323, + "scoreError" : 5.416508050150125, + "scoreConfidence" : [ + 99.9181108467031, + 110.75112694700336 + ], + "scorePercentiles" : { + "0.0" : 100.52179981974373, + "50.0" : 107.24703425038527, + "90.0" : 107.99725413741437, + "95.0" : 107.99725413741437, + "99.0" : 107.99725413741437, + "99.9" : 107.99725413741437, + "99.99" : 107.99725413741437, + "99.999" : 107.99725413741437, + "99.9999" : 107.99725413741437, + "100.0" : 107.99725413741437 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 106.86967319741898, + 107.24703425038527, + 107.35165090978742 + ], + [ + 107.99725413741437, + 107.84506179509498, + 107.47085951287897 + ], + [ + 101.69064834493503, + 100.52179981974373, + 101.01758810402046 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06268900704606982, + "scoreError" : 0.001163791376921044, + "scoreConfidence" : [ + 0.06152521566914877, + 0.06385279842299087 + ], + "scorePercentiles" : { + "0.0" : 0.06172657346287506, + "50.0" : 0.06306495052626931, + "90.0" : 0.06333138844979798, + "95.0" : 0.06333138844979798, + "99.0" : 0.06333138844979798, + "99.9" : 0.06333138844979798, + "99.99" : 0.06333138844979798, + "99.999" : 0.06333138844979798, + "99.9999" : 0.06333138844979798, + "100.0" : 0.06333138844979798 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06176310465626177, + 0.06172657346287506, + 0.06184468065776942 + ], + [ + 0.06320055288221502, + 0.06314213385319653, + 0.06292492596997269 + ], + [ + 0.06320275295627058, + 0.06306495052626931, + 0.06333138844979798 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.7481237278850056E-4, + "scoreError" : 1.1980570626435157E-5, + "scoreConfidence" : [ + 3.6283180216206543E-4, + 3.867929434149357E-4 + ], + "scorePercentiles" : { + "0.0" : 3.6409876203927915E-4, + "50.0" : 3.7933416066346235E-4, + "90.0" : 3.8019052370467216E-4, + "95.0" : 3.8019052370467216E-4, + "99.0" : 3.8019052370467216E-4, + "99.9" : 3.8019052370467216E-4, + "99.99" : 3.8019052370467216E-4, + "99.999" : 3.8019052370467216E-4, + "99.9999" : 3.8019052370467216E-4, + "100.0" : 3.8019052370467216E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.6570256780549384E-4, + 3.6409876203927915E-4, + 3.663767519349152E-4 + ], + [ + 3.8019052370467216E-4, + 3.8017008019173117E-4, + 3.7933416066346235E-4 + ], + [ + 3.797582444148515E-4, + 3.7767420023679903E-4, + 3.800060641053006E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014098005962349182, + "scoreError" : 2.050573003153203E-5, + "scoreConfidence" : [ + 0.01407750023231765, + 0.014118511692380714 + ], + "scorePercentiles" : { + "0.0" : 0.014083777860870986, + "50.0" : 0.014098247163116069, + "90.0" : 0.01412190544660648, + "95.0" : 0.01412190544660648, + "99.0" : 0.01412190544660648, + "99.9" : 0.01412190544660648, + "99.99" : 0.01412190544660648, + "99.999" : 0.01412190544660648, + "99.9999" : 0.01412190544660648, + "100.0" : 0.01412190544660648 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014083777860870986, + 0.014092198276262962, + 0.014087036303267731 + ], + [ + 0.01412190544660648, + 0.014103096767051113, + 0.014105937445252077 + ], + [ + 0.014086103755592116, + 0.014098247163116069, + 0.014103750643123096 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9900720714208604, + "scoreError" : 0.032398284485443664, + "scoreConfidence" : [ + 0.9576737869354167, + 1.022470355906304 + ], + "scorePercentiles" : { + "0.0" : 0.9747853510088703, + "50.0" : 0.9790084789035732, + "90.0" : 1.0185325541297485, + "95.0" : 1.0185325541297485, + "99.0" : 1.0185325541297485, + "99.9" : 1.0185325541297485, + "99.99" : 1.0185325541297485, + "99.999" : 1.0185325541297485, + "99.9999" : 1.0185325541297485, + "100.0" : 1.0185325541297485 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 1.0146146674444556, + 1.013647100851409, + 1.0185325541297485 + ], + [ + 0.9802752494608901, + 0.9790084789035732, + 0.9757974534100888 + ], + [ + 0.9747853510088703, + 0.978946785238841, + 0.9750410023398655 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.013014100910331693, + "scoreError" : 2.3206391521088976E-4, + "scoreConfidence" : [ + 0.012782036995120804, + 0.013246164825542582 + ], + "scorePercentiles" : { + "0.0" : 0.012868733088318561, + "50.0" : 0.013027448912159054, + "90.0" : 0.013099782038014646, + "95.0" : 0.013099782038014646, + "99.0" : 0.013099782038014646, + "99.9" : 0.013099782038014646, + "99.99" : 0.013099782038014646, + "99.999" : 0.013099782038014646, + "99.9999" : 0.013099782038014646, + "100.0" : 0.013099782038014646 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.012868733088318561, + 0.013014096830110695, + 0.013040800994207413 + ], + [ + 0.012983094574488803, + 0.013078097936850035, + 0.013099782038014646 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.803681758942895, + "scoreError" : 0.058068017082038216, + "scoreConfidence" : [ + 3.745613741860857, + 3.861749776024933 + ], + "scorePercentiles" : { + "0.0" : 3.7688745960813868, + "50.0" : 3.8028532290171775, + "90.0" : 3.828712826952527, + "95.0" : 3.828712826952527, + "99.0" : 3.828712826952527, + "99.9" : 3.828712826952527, + "99.99" : 3.828712826952527, + "99.999" : 3.828712826952527, + "99.9999" : 3.828712826952527, + "100.0" : 3.828712826952527 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.7688745960813868, + 3.7987889476082004, + 3.8001995714285712 + ], + [ + 3.8055068866057837, + 3.8200077249809015, + 3.828712826952527 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.922983171605901, + "scoreError" : 0.06878756494659564, + "scoreConfidence" : [ + 2.8541956066593053, + 2.9917707365524966 + ], + "scorePercentiles" : { + "0.0" : 2.882975975208994, + "50.0" : 2.899830810089881, + "90.0" : 2.991555425067305, + "95.0" : 2.991555425067305, + "99.0" : 2.991555425067305, + "99.9" : 2.991555425067305, + "99.99" : 2.991555425067305, + "99.999" : 2.991555425067305, + "99.9999" : 2.991555425067305, + "100.0" : 2.991555425067305 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.8932728536303154, + 2.882975975208994, + 2.911509500727802 + ], + [ + 2.9790622302651175, + 2.991555425067305, + 2.955098183751846 + ], + [ + 2.899830810089881, + 2.8976569843568947, + 2.895886581354951 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1752739306467576, + "scoreError" : 0.0067926352926449335, + "scoreConfidence" : [ + 0.16848129535411266, + 0.1820665659394025 + ], + "scorePercentiles" : { + "0.0" : 0.16931798284853206, + "50.0" : 0.17703718935330254, + "90.0" : 0.179263765438738, + "95.0" : 0.179263765438738, + "99.0" : 0.179263765438738, + "99.9" : 0.179263765438738, + "99.99" : 0.179263765438738, + "99.999" : 0.179263765438738, + "99.9999" : 0.179263765438738, + "100.0" : 0.179263765438738 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17127871834001301, + 0.16931798284853206, + 0.16951058001525554 + ], + [ + 0.179263765438738, + 0.17873609151027703, + 0.17824298643590475 + ], + [ + 0.17700606642948175, + 0.17703718935330254, + 0.17707199544931385 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3311272051006344, + "scoreError" : 0.02574131802826179, + "scoreConfidence" : [ + 0.30538588707237263, + 0.3568685231288962 + ], + "scorePercentiles" : { + "0.0" : 0.32002414304457744, + "50.0" : 0.3214951376583296, + "90.0" : 0.35274181238095237, + "95.0" : 0.35274181238095237, + "99.0" : 0.35274181238095237, + "99.9" : 0.35274181238095237, + "99.99" : 0.35274181238095237, + "99.999" : 0.35274181238095237, + "99.9999" : 0.35274181238095237, + "100.0" : 0.35274181238095237 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3225040451818885, + 0.3214951376583296, + 0.32122822893578745 + ], + [ + 0.32008386182504883, + 0.3202712323853446, + 0.32002414304457744 + ], + [ + 0.35274181238095237, + 0.35085857753841837, + 0.35093780695536214 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1573598302291365, + "scoreError" : 0.0033830824565148298, + "scoreConfidence" : [ + 0.15397674777262166, + 0.16074291268565133 + ], + "scorePercentiles" : { + "0.0" : 0.15461272411447302, + "50.0" : 0.15828907844627, + "90.0" : 0.1594421173947704, + "95.0" : 0.1594421173947704, + "99.0" : 0.1594421173947704, + "99.9" : 0.1594421173947704, + "99.99" : 0.1594421173947704, + "99.999" : 0.1594421173947704, + "99.9999" : 0.1594421173947704, + "100.0" : 0.1594421173947704 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15461272411447302, + 0.15493705184060486, + 0.15469718323432957 + ], + [ + 0.1586219272265842, + 0.1594421173947704, + 0.15929977722377978 + ], + [ + 0.158008010443988, + 0.15828907844627, + 0.15833060213742875 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3929055482587191, + "scoreError" : 0.008874881668847938, + "scoreConfidence" : [ + 0.3840306665898712, + 0.401780429927567 + ], + "scorePercentiles" : { + "0.0" : 0.3861855186329407, + "50.0" : 0.3916299738789896, + "90.0" : 0.39987236290935263, + "95.0" : 0.39987236290935263, + "99.0" : 0.39987236290935263, + "99.9" : 0.39987236290935263, + "99.99" : 0.39987236290935263, + "99.999" : 0.39987236290935263, + "99.9999" : 0.39987236290935263, + "100.0" : 0.39987236290935263 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.39418789096929324, + 0.3916299738789896, + 0.391009796019706 + ], + [ + 0.3995561204203124, + 0.39987236290935263, + 0.39806413752885916 + ], + [ + 0.38798272721629484, + 0.3876614067527232, + 0.3861855186329407 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15638411625309134, + "scoreError" : 0.0038605736119067847, + "scoreConfidence" : [ + 0.15252354264118456, + 0.16024468986499812 + ], + "scorePercentiles" : { + "0.0" : 0.15314811026371405, + "50.0" : 0.15670415334712298, + "90.0" : 0.159883718659568, + "95.0" : 0.159883718659568, + "99.0" : 0.159883718659568, + "99.9" : 0.159883718659568, + "99.99" : 0.159883718659568, + "99.999" : 0.159883718659568, + "99.9999" : 0.159883718659568, + "100.0" : 0.159883718659568 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1566501469187631, + 0.15670415334712298, + 0.1567198383613597 + ], + [ + 0.1547686963506361, + 0.15314811026371405, + 0.15320902544735873 + ], + [ + 0.159883718659568, + 0.15830709884438815, + 0.15806625808491132 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04731102617255678, + "scoreError" : 5.494062501007604E-4, + "scoreConfidence" : [ + 0.04676161992245602, + 0.04786043242265754 + ], + "scorePercentiles" : { + "0.0" : 0.04687650850095393, + "50.0" : 0.04743667847350695, + "90.0" : 0.047676395332538736, + "95.0" : 0.047676395332538736, + "99.0" : 0.047676395332538736, + "99.9" : 0.047676395332538736, + "99.99" : 0.047676395332538736, + "99.999" : 0.047676395332538736, + "99.9999" : 0.047676395332538736, + "100.0" : 0.047676395332538736 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04749636832506115, + 0.04743667847350695, + 0.04734048231150498 + ], + [ + 0.04691541189661886, + 0.04689057975486013, + 0.04687650850095393 + ], + [ + 0.047676395332538736, + 0.047574515204567076, + 0.04759229575339923 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9441197.85305533, + "scoreError" : 304521.42768585624, + "scoreConfidence" : [ + 9136676.425369473, + 9745719.280741187 + ], + "scorePercentiles" : { + "0.0" : 9249209.369685767, + "50.0" : 9358704.228250701, + "90.0" : 9681377.27589545, + "95.0" : 9681377.27589545, + "99.0" : 9681377.27589545, + "99.9" : 9681377.27589545, + "99.99" : 9681377.27589545, + "99.999" : 9681377.27589545, + "99.9999" : 9681377.27589545, + "100.0" : 9681377.27589545 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9409813.65098777, + 9358704.228250701, + 9353099.48317757 + ], + [ + 9675122.80754352, + 9664841.801932367, + 9681377.27589545 + ], + [ + 9318771.304469274, + 9259840.755555555, + 9249209.369685767 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-04-03T02:52:33Z-e98ca21274456df314a2574b48271e4f236d2970-jdk17.json b/performance-results/2025-04-03T02:52:33Z-e98ca21274456df314a2574b48271e4f236d2970-jdk17.json new file mode 100644 index 0000000000..43c4405b48 --- /dev/null +++ b/performance-results/2025-04-03T02:52:33Z-e98ca21274456df314a2574b48271e4f236d2970-jdk17.json @@ -0,0 +1,1310 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4156356646292396, + "scoreError" : 0.013598054926190144, + "scoreConfidence" : [ + 3.4020376097030494, + 3.42923371955543 + ], + "scorePercentiles" : { + "0.0" : 3.4130888415653047, + "50.0" : 3.415786695895449, + "90.0" : 3.4178804251607553, + "95.0" : 3.4178804251607553, + "99.0" : 3.4178804251607553, + "99.9" : 3.4178804251607553, + "99.99" : 3.4178804251607553, + "99.999" : 3.4178804251607553, + "99.9999" : 3.4178804251607553, + "100.0" : 3.4178804251607553 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4148610786856364, + 3.4178804251607553 + ], + [ + 3.4130888415653047, + 3.4167123131052617 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7253259788610695, + "scoreError" : 0.008555086625644845, + "scoreConfidence" : [ + 1.7167708922354248, + 1.7338810654867143 + ], + "scorePercentiles" : { + "0.0" : 1.7241059127032126, + "50.0" : 1.7252574282825233, + "90.0" : 1.726683146176019, + "95.0" : 1.726683146176019, + "99.0" : 1.726683146176019, + "99.9" : 1.726683146176019, + "99.99" : 1.726683146176019, + "99.999" : 1.726683146176019, + "99.9999" : 1.726683146176019, + "100.0" : 1.726683146176019 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7241059127032126, + 1.726683146176019 + ], + [ + 1.7242780552173471, + 1.7262368013476994 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8680284206920243, + "scoreError" : 0.0038235580345896383, + "scoreConfidence" : [ + 0.8642048626574347, + 0.871851978726614 + ], + "scorePercentiles" : { + "0.0" : 0.8672392519716291, + "50.0" : 0.8681156014545766, + "90.0" : 0.8686432278873151, + "95.0" : 0.8686432278873151, + "99.0" : 0.8686432278873151, + "99.9" : 0.8686432278873151, + "99.99" : 0.8686432278873151, + "99.999" : 0.8686432278873151, + "99.9999" : 0.8686432278873151, + "100.0" : 0.8686432278873151 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8682466548186853, + 0.8679845480904678 + ], + [ + 0.8672392519716291, + 0.8686432278873151 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.266398884740102, + "scoreError" : 0.12089071736767489, + "scoreConfidence" : [ + 16.145508167372427, + 16.387289602107778 + ], + "scorePercentiles" : { + "0.0" : 16.16215887190314, + "50.0" : 16.2909633020778, + "90.0" : 16.35367633567486, + "95.0" : 16.35367633567486, + "99.0" : 16.35367633567486, + "99.9" : 16.35367633567486, + "99.99" : 16.35367633567486, + "99.999" : 16.35367633567486, + "99.9999" : 16.35367633567486, + "100.0" : 16.35367633567486 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.30206765152038, + 16.2909633020778, + 16.35367633567486 + ], + [ + 16.286595407788486, + 16.32141250450957, + 16.319740312132282 + ], + [ + 16.181694193122404, + 16.16215887190314, + 16.17928138393201 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2708.4379672756168, + "scoreError" : 52.77435647527872, + "scoreConfidence" : [ + 2655.663610800338, + 2761.2123237508954 + ], + "scorePercentiles" : { + "0.0" : 2678.8808548562843, + "50.0" : 2690.720282550591, + "90.0" : 2759.421890618881, + "95.0" : 2759.421890618881, + "99.0" : 2759.421890618881, + "99.9" : 2759.421890618881, + "99.99" : 2759.421890618881, + "99.999" : 2759.421890618881, + "99.9999" : 2759.421890618881, + "100.0" : 2759.421890618881 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2678.8808548562843, + 2680.4724669738675, + 2683.5451766372953 + ], + [ + 2733.344157571987, + 2759.421890618881, + 2750.126719125809 + ], + [ + 2709.4928928539957, + 2690.720282550591, + 2689.9372642918393 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 71058.98757792657, + "scoreError" : 822.5121592927409, + "scoreConfidence" : [ + 70236.47541863383, + 71881.49973721932 + ], + "scorePercentiles" : { + "0.0" : 70334.4708128567, + "50.0" : 71230.61338609025, + "90.0" : 71513.68980710543, + "95.0" : 71513.68980710543, + "99.0" : 71513.68980710543, + "99.9" : 71513.68980710543, + "99.99" : 71513.68980710543, + "99.999" : 71513.68980710543, + "99.9999" : 71513.68980710543, + "100.0" : 71513.68980710543 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 71368.81270009922, + 71230.61338609025, + 71190.58903098464 + ], + [ + 70334.4708128567, + 70389.2239357189, + 70557.90033738017 + ], + [ + 71513.68980710543, + 71475.07240288406, + 71470.51578821983 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 353.8880754496758, + "scoreError" : 2.8872515097664553, + "scoreConfidence" : [ + 351.00082393990937, + 356.7753269594422 + ], + "scorePercentiles" : { + "0.0" : 350.7947815417503, + "50.0" : 354.64335969623687, + "90.0" : 355.8222124963307, + "95.0" : 355.8222124963307, + "99.0" : 355.8222124963307, + "99.9" : 355.8222124963307, + "99.99" : 355.8222124963307, + "99.999" : 355.8222124963307, + "99.9999" : 355.8222124963307, + "100.0" : 355.8222124963307 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 355.56970556775656, + 355.8222124963307, + 354.9352269121157 + ], + [ + 354.6486608825263, + 353.1706551915284, + 354.64335969623687 + ], + [ + 350.7947815417503, + 353.6826154737699, + 351.7254612850681 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 107.725544877288, + "scoreError" : 1.8828817446497361, + "scoreConfidence" : [ + 105.84266313263826, + 109.60842662193774 + ], + "scorePercentiles" : { + "0.0" : 106.20111805060321, + "50.0" : 108.05817565088162, + "90.0" : 108.91316264233733, + "95.0" : 108.91316264233733, + "99.0" : 108.91316264233733, + "99.9" : 108.91316264233733, + "99.99" : 108.91316264233733, + "99.999" : 108.91316264233733, + "99.9999" : 108.91316264233733, + "100.0" : 108.91316264233733 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 108.08754446696082, + 107.92893729958848, + 108.05817565088162 + ], + [ + 108.91316264233733, + 108.80524904880716, + 108.7959124505325 + ], + [ + 106.51012019955222, + 106.22968408632865, + 106.20111805060321 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06139367548232111, + "scoreError" : 3.540999759717375E-4, + "scoreConfidence" : [ + 0.06103957550634937, + 0.061747775458292846 + ], + "scorePercentiles" : { + "0.0" : 0.06110012819854828, + "50.0" : 0.061308202516047156, + "90.0" : 0.061741893811702385, + "95.0" : 0.061741893811702385, + "99.0" : 0.061741893811702385, + "99.9" : 0.061741893811702385, + "99.99" : 0.061741893811702385, + "99.999" : 0.061741893811702385, + "99.9999" : 0.061741893811702385, + "100.0" : 0.061741893811702385 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.061263466611938835, + 0.06129953820738525, + 0.06110012819854828 + ], + [ + 0.061741893811702385, + 0.06153386918050137, + 0.06166293546437777 + ], + [ + 0.061243678443693196, + 0.06138936690669564, + 0.061308202516047156 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.694689698392999E-4, + "scoreError" : 9.255300635961062E-6, + "scoreConfidence" : [ + 3.602136692033388E-4, + 3.7872427047526094E-4 + ], + "scorePercentiles" : { + "0.0" : 3.6217798291792163E-4, + "50.0" : 3.7218480085890395E-4, + "90.0" : 3.7506734062791447E-4, + "95.0" : 3.7506734062791447E-4, + "99.0" : 3.7506734062791447E-4, + "99.9" : 3.7506734062791447E-4, + "99.99" : 3.7506734062791447E-4, + "99.999" : 3.7506734062791447E-4, + "99.9999" : 3.7506734062791447E-4, + "100.0" : 3.7506734062791447E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.622063955463637E-4, + 3.6227118109386175E-4, + 3.6217798291792163E-4 + ], + [ + 3.7320771985383417E-4, + 3.7278784840373975E-4, + 3.7506734062791447E-4 + ], + [ + 3.7218480085890395E-4, + 3.719860773868182E-4, + 3.733313818643414E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014185911212594595, + "scoreError" : 3.2603556268247393E-4, + "scoreConfidence" : [ + 0.013859875649912121, + 0.01451194677527707 + ], + "scorePercentiles" : { + "0.0" : 0.014013460115357451, + "50.0" : 0.014108437662597841, + "90.0" : 0.014442271787354495, + "95.0" : 0.014442271787354495, + "99.0" : 0.014442271787354495, + "99.9" : 0.014442271787354495, + "99.99" : 0.014442271787354495, + "99.999" : 0.014442271787354495, + "99.9999" : 0.014442271787354495, + "100.0" : 0.014442271787354495 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014110861143644116, + 0.014108437662597841, + 0.014073766856660334 + ], + [ + 0.014013460115357451, + 0.014017406076755624, + 0.014028585135753145 + ], + [ + 0.014441690347867277, + 0.014442271787354495, + 0.014436721787361084 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 1.000218969280612, + "scoreError" : 0.028304821762359534, + "scoreConfidence" : [ + 0.9719141475182526, + 1.0285237910429716 + ], + "scorePercentiles" : { + "0.0" : 0.971517003011463, + "50.0" : 1.006556415601409, + "90.0" : 1.0175622131664632, + "95.0" : 1.0175622131664632, + "99.0" : 1.0175622131664632, + "99.9" : 1.0175622131664632, + "99.99" : 1.0175622131664632, + "99.999" : 1.0175622131664632, + "99.9999" : 1.0175622131664632, + "100.0" : 1.0175622131664632 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9864229748471098, + 0.9793540111644305, + 0.971517003011463 + ], + [ + 1.0175622131664632, + 1.0142364593306288, + 1.0141052803690935 + ], + [ + 1.0029004894705174, + 1.006556415601409, + 1.0093158765643924 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.013081022622499473, + "scoreError" : 3.378864151227627E-4, + "scoreConfidence" : [ + 0.01274313620737671, + 0.013418909037622237 + ], + "scorePercentiles" : { + "0.0" : 0.012912455037290306, + "50.0" : 0.013086725894439325, + "90.0" : 0.013221848698075737, + "95.0" : 0.013221848698075737, + "99.0" : 0.013221848698075737, + "99.9" : 0.013221848698075737, + "99.99" : 0.013221848698075737, + "99.999" : 0.013221848698075737, + "99.9999" : 0.013221848698075737, + "100.0" : 0.013221848698075737 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013221848698075737, + 0.013161446690900669, + 0.013169755604253201 + ], + [ + 0.012912455037290306, + 0.013008624606498946, + 0.013012005097977983 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.6645016367361083, + "scoreError" : 0.13736673724963294, + "scoreConfidence" : [ + 3.5271348994864753, + 3.8018683739857413 + ], + "scorePercentiles" : { + "0.0" : 3.6035412175792505, + "50.0" : 3.6690025230107586, + "90.0" : 3.720898994791667, + "95.0" : 3.720898994791667, + "99.0" : 3.720898994791667, + "99.9" : 3.720898994791667, + "99.99" : 3.720898994791667, + "99.999" : 3.720898994791667, + "99.9999" : 3.720898994791667, + "100.0" : 3.720898994791667 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.6035412175792505, + 3.638543946909091, + 3.6223095568428674 + ], + [ + 3.720898994791667, + 3.699461099112426, + 3.702255005181347 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.8352983613756226, + "scoreError" : 0.08666946035359768, + "scoreConfidence" : [ + 2.748628901022025, + 2.92196782172922 + ], + "scorePercentiles" : { + "0.0" : 2.765421011611833, + "50.0" : 2.8449870605802046, + "90.0" : 2.8918537652500724, + "95.0" : 2.8918537652500724, + "99.0" : 2.8918537652500724, + "99.9" : 2.8918537652500724, + "99.99" : 2.8918537652500724, + "99.999" : 2.8918537652500724, + "99.9999" : 2.8918537652500724, + "100.0" : 2.8918537652500724 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.835161081632653, + 2.8449870605802046, + 2.855578256996002 + ], + [ + 2.7817287532684283, + 2.768810570598007, + 2.765421011611833 + ], + [ + 2.8824682089337177, + 2.8918537652500724, + 2.8916765435096847 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17668539768407285, + "scoreError" : 0.0038052870787773085, + "scoreConfidence" : [ + 0.17288011060529554, + 0.18049068476285016 + ], + "scorePercentiles" : { + "0.0" : 0.17355092122663612, + "50.0" : 0.1777485684322787, + "90.0" : 0.17866238191628106, + "95.0" : 0.17866238191628106, + "99.0" : 0.17866238191628106, + "99.9" : 0.17866238191628106, + "99.99" : 0.17866238191628106, + "99.999" : 0.17866238191628106, + "99.9999" : 0.17866238191628106, + "100.0" : 0.17866238191628106 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17391668427826087, + 0.17365871248220052, + 0.17355092122663612 + ], + [ + 0.1777485684322787, + 0.17777599557349072, + 0.17773426860392785 + ], + [ + 0.17863249555214175, + 0.17866238191628106, + 0.17848855109143805 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.32587688199055964, + "scoreError" : 0.019338886180817538, + "scoreConfidence" : [ + 0.3065379958097421, + 0.34521576817137717 + ], + "scorePercentiles" : { + "0.0" : 0.3141145466453072, + "50.0" : 0.32231344068069745, + "90.0" : 0.3408148210074296, + "95.0" : 0.3408148210074296, + "99.0" : 0.3408148210074296, + "99.9" : 0.3408148210074296, + "99.99" : 0.3408148210074296, + "99.999" : 0.3408148210074296, + "99.9999" : 0.3408148210074296, + "100.0" : 0.3408148210074296 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3235398579054644, + 0.32227414531098936, + 0.32231344068069745 + ], + [ + 0.3408148210074296, + 0.34049507483827035, + 0.3400488105617519 + ], + [ + 0.3141145466453072, + 0.31483124140536456, + 0.3144599995597623 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1623926354338566, + "scoreError" : 0.012456786224923444, + "scoreConfidence" : [ + 0.14993584920893316, + 0.17484942165878004 + ], + "scorePercentiles" : { + "0.0" : 0.1533380093227226, + "50.0" : 0.16319451313685174, + "90.0" : 0.17073326242914702, + "95.0" : 0.17073326242914702, + "99.0" : 0.17073326242914702, + "99.9" : 0.17073326242914702, + "99.99" : 0.17073326242914702, + "99.999" : 0.17073326242914702, + "99.9999" : 0.17073326242914702, + "100.0" : 0.17073326242914702 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15338722272838826, + 0.15366977726043396, + 0.1533380093227226 + ], + [ + 0.16311651067577929, + 0.1632495087255334, + 0.16319451313685174 + ], + [ + 0.17073326242914702, + 0.17037008702318687, + 0.17047482760266616 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.39736623534599325, + "scoreError" : 0.0072331898616597515, + "scoreConfidence" : [ + 0.3901330454843335, + 0.404599425207653 + ], + "scorePercentiles" : { + "0.0" : 0.39367914727186837, + "50.0" : 0.3956107970567292, + "90.0" : 0.40649457729360594, + "95.0" : 0.40649457729360594, + "99.0" : 0.40649457729360594, + "99.9" : 0.40649457729360594, + "99.99" : 0.40649457729360594, + "99.999" : 0.40649457729360594, + "99.9999" : 0.40649457729360594, + "100.0" : 0.40649457729360594 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3956107970567292, + 0.39441284527706566, + 0.3941601015726617 + ], + [ + 0.40649457729360594, + 0.39985587800879646, + 0.400734263273893 + ], + [ + 0.39739873168017803, + 0.3939497766791412, + 0.39367914727186837 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15825399365071202, + "scoreError" : 0.0013317635767325676, + "scoreConfidence" : [ + 0.15692223007397946, + 0.15958575722744459 + ], + "scorePercentiles" : { + "0.0" : 0.15673044195595956, + "50.0" : 0.1583845141196408, + "90.0" : 0.1593887585470426, + "95.0" : 0.1593887585470426, + "99.0" : 0.1593887585470426, + "99.9" : 0.1593887585470426, + "99.99" : 0.1593887585470426, + "99.999" : 0.1593887585470426, + "99.9999" : 0.1593887585470426, + "100.0" : 0.1593887585470426 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1583845141196408, + 0.15735447831696878, + 0.15673044195595956 + ], + [ + 0.15894453801039465, + 0.1582970085161617, + 0.15822979096518988 + ], + [ + 0.1593887585470426, + 0.1585478360180106, + 0.15840857640703956 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04790902474190342, + "scoreError" : 9.884302829136805E-4, + "scoreConfidence" : [ + 0.046920594458989745, + 0.0488974550248171 + ], + "scorePercentiles" : { + "0.0" : 0.04700120233216146, + "50.0" : 0.048178018003912006, + "90.0" : 0.04842747581320794, + "95.0" : 0.04842747581320794, + "99.0" : 0.04842747581320794, + "99.9" : 0.04842747581320794, + "99.99" : 0.04842747581320794, + "99.999" : 0.04842747581320794, + "99.9999" : 0.04842747581320794, + "100.0" : 0.04842747581320794 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.047425067774184065, + 0.0470235094445202, + 0.04700120233216146 + ], + [ + 0.04842747581320794, + 0.04839052659746921, + 0.04833344739220586 + ], + [ + 0.04817166911375088, + 0.048178018003912006, + 0.04823030620571908 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9340768.943235474, + "scoreError" : 334580.2702463491, + "scoreConfidence" : [ + 9006188.672989124, + 9675349.213481823 + ], + "scorePercentiles" : { + "0.0" : 9167080.854262145, + "50.0" : 9249256.829944547, + "90.0" : 9604620.571976967, + "95.0" : 9604620.571976967, + "99.0" : 9604620.571976967, + "99.9" : 9604620.571976967, + "99.99" : 9604620.571976967, + "99.999" : 9604620.571976967, + "99.9999" : 9604620.571976967, + "100.0" : 9604620.571976967 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9603299.714971209, + 9604620.571976967, + 9599769.868522072 + ], + [ + 9176881.251376146, + 9171812.810265811, + 9167080.854262145 + ], + [ + 9250278.53789279, + 9243920.049907578, + 9249256.829944547 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-04-03T03:21:08Z-9099f7a1b442ee3cec5e62c9ac2172649b0e9303-jdk17.json b/performance-results/2025-04-03T03:21:08Z-9099f7a1b442ee3cec5e62c9ac2172649b0e9303-jdk17.json new file mode 100644 index 0000000000..3968fb62a0 --- /dev/null +++ b/performance-results/2025-04-03T03:21:08Z-9099f7a1b442ee3cec5e62c9ac2172649b0e9303-jdk17.json @@ -0,0 +1,1310 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4206904700900105, + "scoreError" : 0.02183667760750563, + "scoreConfidence" : [ + 3.398853792482505, + 3.442527147697516 + ], + "scorePercentiles" : { + "0.0" : 3.4169173445120937, + "50.0" : 3.4204712443645153, + "90.0" : 3.4249020471189184, + "95.0" : 3.4249020471189184, + "99.0" : 3.4249020471189184, + "99.9" : 3.4249020471189184, + "99.99" : 3.4249020471189184, + "99.999" : 3.4249020471189184, + "99.9999" : 3.4249020471189184, + "100.0" : 3.4249020471189184 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4169173445120937, + 3.42151719244912 + ], + [ + 3.4194252962799103, + 3.4249020471189184 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7252335363338895, + "scoreError" : 0.008307105083911945, + "scoreConfidence" : [ + 1.7169264312499777, + 1.7335406414178014 + ], + "scorePercentiles" : { + "0.0" : 1.7239610059033839, + "50.0" : 1.7249873882714315, + "90.0" : 1.7269983628893113, + "95.0" : 1.7269983628893113, + "99.0" : 1.7269983628893113, + "99.9" : 1.7269983628893113, + "99.99" : 1.7269983628893113, + "99.999" : 1.7269983628893113, + "99.9999" : 1.7269983628893113, + "100.0" : 1.7269983628893113 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.725213956729067, + 1.7269983628893113 + ], + [ + 1.7239610059033839, + 1.7247608198137958 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8684343770623647, + "scoreError" : 0.007317786949523727, + "scoreConfidence" : [ + 0.861116590112841, + 0.8757521640118884 + ], + "scorePercentiles" : { + "0.0" : 0.867179793041212, + "50.0" : 0.8684535805333289, + "90.0" : 0.8696505541415892, + "95.0" : 0.8696505541415892, + "99.0" : 0.8696505541415892, + "99.9" : 0.8696505541415892, + "99.99" : 0.8696505541415892, + "99.999" : 0.8696505541415892, + "99.9999" : 0.8696505541415892, + "100.0" : 0.8696505541415892 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.867179793041212, + 0.8690834321319288 + ], + [ + 0.867823728934729, + 0.8696505541415892 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.17909126766679, + "scoreError" : 0.2559768985488164, + "scoreConfidence" : [ + 15.923114369117975, + 16.435068166215608 + ], + "scorePercentiles" : { + "0.0" : 15.95867060528112, + "50.0" : 16.219606732032062, + "90.0" : 16.34178668248754, + "95.0" : 16.34178668248754, + "99.0" : 16.34178668248754, + "99.9" : 16.34178668248754, + "99.99" : 16.34178668248754, + "99.999" : 16.34178668248754, + "99.9999" : 16.34178668248754, + "100.0" : 16.34178668248754 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.33268306277049, + 16.34178668248754, + 16.317455598781788 + ], + [ + 16.222099039014896, + 16.21617211413328, + 16.219606732032062 + ], + [ + 15.998538550283158, + 16.0048090242168, + 15.95867060528112 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2741.393458861405, + "scoreError" : 128.33119256683457, + "scoreConfidence" : [ + 2613.0622662945707, + 2869.7246514282397 + ], + "scorePercentiles" : { + "0.0" : 2652.278337073892, + "50.0" : 2734.203485973766, + "90.0" : 2835.992818278071, + "95.0" : 2835.992818278071, + "99.0" : 2835.992818278071, + "99.9" : 2835.992818278071, + "99.99" : 2835.992818278071, + "99.999" : 2835.992818278071, + "99.9999" : 2835.992818278071, + "100.0" : 2835.992818278071 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2661.1713934815975, + 2657.433088914789, + 2652.278337073892 + ], + [ + 2832.7345846544295, + 2829.543160848537, + 2835.992818278071 + ], + [ + 2737.992023875842, + 2731.192236651723, + 2734.203485973766 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 69626.51006344466, + "scoreError" : 1442.2282000666273, + "scoreConfidence" : [ + 68184.28186337803, + 71068.73826351129 + ], + "scorePercentiles" : { + "0.0" : 68747.77960524686, + "50.0" : 69415.45501954913, + "90.0" : 70718.66289611543, + "95.0" : 70718.66289611543, + "99.0" : 70718.66289611543, + "99.9" : 70718.66289611543, + "99.99" : 70718.66289611543, + "99.999" : 70718.66289611543, + "99.9999" : 70718.66289611543, + "100.0" : 70718.66289611543 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 69508.20422837307, + 69329.92052768177, + 69415.45501954913 + ], + [ + 68759.44810168311, + 68766.27396576387, + 68747.77960524686 + ], + [ + 70718.66289611543, + 70696.14519876917, + 70696.7010278194 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 354.62313474254336, + "scoreError" : 7.606529656984937, + "scoreConfidence" : [ + 347.0166050855584, + 362.2296643995283 + ], + "scorePercentiles" : { + "0.0" : 349.0330227618401, + "50.0" : 354.7798397775166, + "90.0" : 359.74298642059154, + "95.0" : 359.74298642059154, + "99.0" : 359.74298642059154, + "99.9" : 359.74298642059154, + "99.99" : 359.74298642059154, + "99.999" : 359.74298642059154, + "99.9999" : 359.74298642059154, + "100.0" : 359.74298642059154 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 359.23653220898484, + 358.78449189912214, + 359.74298642059154 + ], + [ + 349.12833515981123, + 349.0330227618401, + 349.0772965711547 + ], + [ + 354.7798397775166, + 354.58012610305406, + 357.245581780815 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 107.85075131510806, + "scoreError" : 2.625356711099751, + "scoreConfidence" : [ + 105.2253946040083, + 110.47610802620781 + ], + "scorePercentiles" : { + "0.0" : 106.59276942871568, + "50.0" : 107.03915029820716, + "90.0" : 109.93824920257076, + "95.0" : 109.93824920257076, + "99.0" : 109.93824920257076, + "99.9" : 109.93824920257076, + "99.99" : 109.93824920257076, + "99.999" : 109.93824920257076, + "99.9999" : 109.93824920257076, + "100.0" : 109.93824920257076 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 106.64717439112054, + 106.74946925270864, + 106.74222649575631 + ], + [ + 106.59276942871568, + 107.03915029820716, + 107.12172718231646 + ], + [ + 109.92123791555389, + 109.93824920257076, + 109.90475766902303 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06159594570780158, + "scoreError" : 8.981845003630485E-4, + "scoreConfidence" : [ + 0.060697761207438534, + 0.062494130208164626 + ], + "scorePercentiles" : { + "0.0" : 0.061129065987737714, + "50.0" : 0.06128236699738327, + "90.0" : 0.062467338455580126, + "95.0" : 0.062467338455580126, + "99.0" : 0.062467338455580126, + "99.9" : 0.062467338455580126, + "99.99" : 0.062467338455580126, + "99.999" : 0.062467338455580126, + "99.9999" : 0.062467338455580126, + "100.0" : 0.062467338455580126 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06209102383642957, + 0.06232024442865689, + 0.062467338455580126 + ], + [ + 0.06126727419097916, + 0.06119005713219277, + 0.061129065987737714 + ], + [ + 0.061336540454007375, + 0.06128236699738327, + 0.0612795998872473 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.696119107404097E-4, + "scoreError" : 9.97721816459628E-6, + "scoreConfidence" : [ + 3.596346925758134E-4, + 3.79589128905006E-4 + ], + "scorePercentiles" : { + "0.0" : 3.626888560288343E-4, + "50.0" : 3.686331515365253E-4, + "90.0" : 3.773193622138792E-4, + "95.0" : 3.773193622138792E-4, + "99.0" : 3.773193622138792E-4, + "99.9" : 3.773193622138792E-4, + "99.99" : 3.773193622138792E-4, + "99.999" : 3.773193622138792E-4, + "99.9999" : 3.773193622138792E-4, + "100.0" : 3.773193622138792E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.7698920463475277E-4, + 3.773193622138792E-4, + 3.762850259338338E-4 + ], + [ + 3.626888560288343E-4, + 3.637296742969206E-4, + 3.63402454815387E-4 + ], + [ + 3.6888732463155117E-4, + 3.686331515365253E-4, + 3.685721425720028E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.01429124971939135, + "scoreError" : 4.7653081770894496E-4, + "scoreConfidence" : [ + 0.013814718901682404, + 0.014767780537100294 + ], + "scorePercentiles" : { + "0.0" : 0.014011771877022926, + "50.0" : 0.014203055541826094, + "90.0" : 0.014662239724822296, + "95.0" : 0.014662239724822296, + "99.0" : 0.014662239724822296, + "99.9" : 0.014662239724822296, + "99.99" : 0.014662239724822296, + "99.999" : 0.014662239724822296, + "99.9999" : 0.014662239724822296, + "100.0" : 0.014662239724822296 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.0142007654630245, + 0.014205766461443175, + 0.014203055541826094 + ], + [ + 0.014025981748205747, + 0.014011771877022926, + 0.014013038340596667 + ], + [ + 0.01464161089498721, + 0.01465701742259353, + 0.014662239724822296 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9781382338333438, + "scoreError" : 0.01588711632877792, + "scoreConfidence" : [ + 0.9622511175045658, + 0.9940253501621217 + ], + "scorePercentiles" : { + "0.0" : 0.9687070489151491, + "50.0" : 0.9749398667381556, + "90.0" : 0.9923944358440012, + "95.0" : 0.9923944358440012, + "99.0" : 0.9923944358440012, + "99.9" : 0.9923944358440012, + "99.99" : 0.9923944358440012, + "99.999" : 0.9923944358440012, + "99.9999" : 0.9923944358440012, + "100.0" : 0.9923944358440012 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9905149994057052, + 0.9877674571315685, + 0.9923944358440012 + ], + [ + 0.9687070489151491, + 0.9702613015426409, + 0.9690745838178294 + ], + [ + 0.9750571266575663, + 0.9749398667381556, + 0.9745272844474762 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.012951543349691617, + "scoreError" : 7.17908173353132E-5, + "scoreConfidence" : [ + 0.012879752532356304, + 0.01302333416702693 + ], + "scorePercentiles" : { + "0.0" : 0.012927962256345552, + "50.0" : 0.012945963688038627, + "90.0" : 0.012992789849235263, + "95.0" : 0.012992789849235263, + "99.0" : 0.012992789849235263, + "99.9" : 0.012992789849235263, + "99.99" : 0.012992789849235263, + "99.999" : 0.012992789849235263, + "99.9999" : 0.012992789849235263, + "100.0" : 0.012992789849235263 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.01293589796652265, + 0.012929136678630163, + 0.012927962256345552 + ], + [ + 0.012992789849235263, + 0.012956029409554606, + 0.012967443937861459 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.6448004708793054, + "scoreError" : 0.23658004422340556, + "scoreConfidence" : [ + 3.4082204266559, + 3.8813805151027108 + ], + "scorePercentiles" : { + "0.0" : 3.5409849886765747, + "50.0" : 3.650745095226265, + "90.0" : 3.722874720982143, + "95.0" : 3.722874720982143, + "99.0" : 3.722874720982143, + "99.9" : 3.722874720982143, + "99.99" : 3.722874720982143, + "99.999" : 3.722874720982143, + "99.9999" : 3.722874720982143, + "100.0" : 3.722874720982143 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.7169321567607727, + 3.722874720982143, + 3.7216814717261903 + ], + [ + 3.5409849886765747, + 3.5817714534383955, + 3.5845580336917564 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.792517699935429, + "scoreError" : 0.02652058118597728, + "scoreConfidence" : [ + 2.7659971187494516, + 2.819038281121406 + ], + "scorePercentiles" : { + "0.0" : 2.7707105880886425, + "50.0" : 2.791919388051368, + "90.0" : 2.811218851602024, + "95.0" : 2.811218851602024, + "99.0" : 2.811218851602024, + "99.9" : 2.811218851602024, + "99.99" : 2.811218851602024, + "99.999" : 2.811218851602024, + "99.9999" : 2.811218851602024, + "100.0" : 2.811218851602024 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.8110501843732436, + 2.811218851602024, + 2.8094077328651688 + ], + [ + 2.771137926018288, + 2.7707105880886425, + 2.7836048469245758 + ], + [ + 2.791919388051368, + 2.792374098548297, + 2.791235682947251 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1742432157856465, + "scoreError" : 0.004875078290119533, + "scoreConfidence" : [ + 0.16936813749552695, + 0.17911829407576604 + ], + "scorePercentiles" : { + "0.0" : 0.17208208915388984, + "50.0" : 0.17246391856514615, + "90.0" : 0.17818732172766474, + "95.0" : 0.17818732172766474, + "99.0" : 0.17818732172766474, + "99.9" : 0.17818732172766474, + "99.99" : 0.17818732172766474, + "99.999" : 0.17818732172766474, + "99.9999" : 0.17818732172766474, + "100.0" : 0.17818732172766474 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17262994255036337, + 0.1722843506761995, + 0.17215549340655556 + ], + [ + 0.1722585692803252, + 0.17208208915388984, + 0.17246391856514615 + ], + [ + 0.17818732172766474, + 0.17799467089689053, + 0.17813258581378363 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3333449063182734, + "scoreError" : 0.005905235020739848, + "scoreConfidence" : [ + 0.32743967129753354, + 0.33925014133901327 + ], + "scorePercentiles" : { + "0.0" : 0.329350732446318, + "50.0" : 0.33232254492888474, + "90.0" : 0.33807079141311697, + "95.0" : 0.33807079141311697, + "99.0" : 0.33807079141311697, + "99.9" : 0.33807079141311697, + "99.99" : 0.33807079141311697, + "99.999" : 0.33807079141311697, + "99.9999" : 0.33807079141311697, + "100.0" : 0.33807079141311697 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3301769634508716, + 0.329350732446318, + 0.32948116519504483 + ], + [ + 0.33404202852657244, + 0.33232254492888474, + 0.33195924776763486 + ], + [ + 0.33807079141311697, + 0.33732083306348243, + 0.3373798500725347 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16205925527522547, + "scoreError" : 0.005801548356563951, + "scoreConfidence" : [ + 0.1562577069186615, + 0.16786080363178943 + ], + "scorePercentiles" : { + "0.0" : 0.15775786740810854, + "50.0" : 0.162711726244712, + "90.0" : 0.16611034483904188, + "95.0" : 0.16611034483904188, + "99.0" : 0.16611034483904188, + "99.9" : 0.16611034483904188, + "99.99" : 0.16611034483904188, + "99.999" : 0.16611034483904188, + "99.9999" : 0.16611034483904188, + "100.0" : 0.16611034483904188 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15784430243863942, + 0.15775786740810854, + 0.1578714414309169 + ], + [ + 0.16611034483904188, + 0.1653657661931771, + 0.16567923764475886 + ], + [ + 0.16281569179922176, + 0.162711726244712, + 0.1623769194784529 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.38844540306756375, + "scoreError" : 0.007554763837641979, + "scoreConfidence" : [ + 0.3808906392299218, + 0.39600016690520573 + ], + "scorePercentiles" : { + "0.0" : 0.38233104985471783, + "50.0" : 0.38763725885727573, + "90.0" : 0.3965965093793377, + "95.0" : 0.3965965093793377, + "99.0" : 0.3965965093793377, + "99.9" : 0.3965965093793377, + "99.99" : 0.3965965093793377, + "99.999" : 0.3965965093793377, + "99.9999" : 0.3965965093793377, + "100.0" : 0.3965965093793377 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3913939590215264, + 0.3826024790343561, + 0.38233104985471783 + ], + [ + 0.39190607030607044, + 0.38736799585528353, + 0.38763725885727573 + ], + [ + 0.3965965093793377, + 0.38878835813700335, + 0.38738494716250244 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15717731845538507, + "scoreError" : 0.0025445160448387513, + "scoreConfidence" : [ + 0.15463280241054633, + 0.1597218345002238 + ], + "scorePercentiles" : { + "0.0" : 0.15498779949474598, + "50.0" : 0.1574507210334892, + "90.0" : 0.15957643376896932, + "95.0" : 0.15957643376896932, + "99.0" : 0.15957643376896932, + "99.9" : 0.15957643376896932, + "99.99" : 0.15957643376896932, + "99.999" : 0.15957643376896932, + "99.9999" : 0.15957643376896932, + "100.0" : 0.15957643376896932 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15595670473472442, + 0.1553044715721141, + 0.15498779949474598 + ], + [ + 0.15957643376896932, + 0.15827448316794074, + 0.15837715270343036 + ], + [ + 0.15745232445326154, + 0.1574507210334892, + 0.15721577516978996 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04712556397907962, + "scoreError" : 0.0015890684722958284, + "scoreConfidence" : [ + 0.04553649550678379, + 0.048714632451375445 + ], + "scorePercentiles" : { + "0.0" : 0.045865031742610134, + "50.0" : 0.047629415089756474, + "90.0" : 0.048132523928707226, + "95.0" : 0.048132523928707226, + "99.0" : 0.048132523928707226, + "99.9" : 0.048132523928707226, + "99.99" : 0.048132523928707226, + "99.999" : 0.048132523928707226, + "99.9999" : 0.048132523928707226, + "100.0" : 0.048132523928707226 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.047704076315776923, + 0.04758969826585194, + 0.047651035980787376 + ], + [ + 0.045865031742610134, + 0.04587505893929455, + 0.04590735107926219 + ], + [ + 0.048132523928707226, + 0.04777588446966982, + 0.047629415089756474 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9287425.275754306, + "scoreError" : 673064.5173172944, + "scoreConfidence" : [ + 8614360.758437011, + 9960489.793071602 + ], + "scorePercentiles" : { + "0.0" : 8931976.855357142, + "50.0" : 9097843.042727273, + "90.0" : 9823178.722276742, + "95.0" : 9823178.722276742, + "99.0" : 9823178.722276742, + "99.9" : 9823178.722276742, + "99.99" : 9823178.722276742, + "99.999" : 9823178.722276742, + "99.9999" : 9823178.722276742, + "100.0" : 9823178.722276742 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9798666.694417238, + 9815992.58390579, + 9823178.722276742 + ], + [ + 9135345.167123288, + 9097843.042727273, + 9086959.946412353 + ], + [ + 8957876.223813787, + 8938988.245755138, + 8931976.855357142 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-04-03T04:18:38Z-bfd7b46570071ef5cb5edd7377fbc51fb477ee3d-jdk17.json b/performance-results/2025-04-03T04:18:38Z-bfd7b46570071ef5cb5edd7377fbc51fb477ee3d-jdk17.json new file mode 100644 index 0000000000..0fe671611f --- /dev/null +++ b/performance-results/2025-04-03T04:18:38Z-bfd7b46570071ef5cb5edd7377fbc51fb477ee3d-jdk17.json @@ -0,0 +1,1310 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4069670399174807, + "scoreError" : 0.01377711284446077, + "scoreConfidence" : [ + 3.39318992707302, + 3.4207441527619413 + ], + "scorePercentiles" : { + "0.0" : 3.4045192638077895, + "50.0" : 3.4072206524360227, + "90.0" : 3.408907590990087, + "95.0" : 3.408907590990087, + "99.0" : 3.408907590990087, + "99.9" : 3.408907590990087, + "99.99" : 3.408907590990087, + "99.999" : 3.408907590990087, + "99.9999" : 3.408907590990087, + "100.0" : 3.408907590990087 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4045192638077895, + 3.4085900660281925 + ], + [ + 3.405851238843853, + 3.408907590990087 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.719648412053527, + "scoreError" : 0.02809970741527712, + "scoreConfidence" : [ + 1.6915487046382498, + 1.747748119468804 + ], + "scorePercentiles" : { + "0.0" : 1.7142389493573933, + "50.0" : 1.7197343077505653, + "90.0" : 1.724886083355584, + "95.0" : 1.724886083355584, + "99.0" : 1.724886083355584, + "99.9" : 1.724886083355584, + "99.99" : 1.724886083355584, + "99.999" : 1.724886083355584, + "99.9999" : 1.724886083355584, + "100.0" : 1.724886083355584 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7198267502215996, + 1.724886083355584 + ], + [ + 1.7142389493573933, + 1.719641865279531 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8662654811505468, + "scoreError" : 0.00672456953410522, + "scoreConfidence" : [ + 0.8595409116164415, + 0.8729900506846521 + ], + "scorePercentiles" : { + "0.0" : 0.8653473559404564, + "50.0" : 0.8660314345774419, + "90.0" : 0.8676516995068471, + "95.0" : 0.8676516995068471, + "99.0" : 0.8676516995068471, + "99.9" : 0.8676516995068471, + "99.99" : 0.8676516995068471, + "99.999" : 0.8676516995068471, + "99.9999" : 0.8676516995068471, + "100.0" : 0.8676516995068471 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8653473559404564, + 0.8664642452472594 + ], + [ + 0.8655986239076244, + 0.8676516995068471 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 15.881613268860953, + "scoreError" : 0.16972371039592618, + "scoreConfidence" : [ + 15.711889558465026, + 16.051336979256877 + ], + "scorePercentiles" : { + "0.0" : 15.742701283030245, + "50.0" : 15.901656590162244, + "90.0" : 15.99973571476549, + "95.0" : 15.99973571476549, + "99.0" : 15.99973571476549, + "99.9" : 15.99973571476549, + "99.99" : 15.99973571476549, + "99.999" : 15.99973571476549, + "99.9999" : 15.99973571476549, + "100.0" : 15.99973571476549 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 15.935344863973986, + 15.972098879330911, + 15.901656590162244 + ], + [ + 15.757391679403302, + 15.871936389357284, + 15.773600580677298 + ], + [ + 15.742701283030245, + 15.980053439047829, + 15.99973571476549 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2573.939325064266, + "scoreError" : 66.9181072449432, + "scoreConfidence" : [ + 2507.021217819323, + 2640.8574323092093 + ], + "scorePercentiles" : { + "0.0" : 2515.2229208854337, + "50.0" : 2569.4866319365015, + "90.0" : 2639.1359506980743, + "95.0" : 2639.1359506980743, + "99.0" : 2639.1359506980743, + "99.9" : 2639.1359506980743, + "99.99" : 2639.1359506980743, + "99.999" : 2639.1359506980743, + "99.9999" : 2639.1359506980743, + "100.0" : 2639.1359506980743 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2560.1238720819943, + 2515.2229208854337, + 2554.682790491716 + ], + [ + 2569.4866319365015, + 2607.02742513819, + 2586.839165945245 + ], + [ + 2527.5210870802625, + 2605.414081320981, + 2639.1359506980743 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 68846.59384431818, + "scoreError" : 1148.764589611738, + "scoreConfidence" : [ + 67697.82925470645, + 69995.35843392991 + ], + "scorePercentiles" : { + "0.0" : 68007.01410414431, + "50.0" : 68771.41539379892, + "90.0" : 69848.51628355683, + "95.0" : 69848.51628355683, + "99.0" : 69848.51628355683, + "99.9" : 69848.51628355683, + "99.99" : 69848.51628355683, + "99.999" : 69848.51628355683, + "99.9999" : 69848.51628355683, + "100.0" : 69848.51628355683 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 69523.41353028912, + 69848.51628355683, + 69556.08312562345 + ], + [ + 68007.01410414431, + 68771.41539379892, + 69007.79544421007 + ], + [ + 68034.56775354304, + 68574.90101325582, + 68295.63795044218 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 342.9326843032323, + "scoreError" : 5.632654178479563, + "scoreConfidence" : [ + 337.3000301247527, + 348.5653384817119 + ], + "scorePercentiles" : { + "0.0" : 338.22134638914224, + "50.0" : 342.65657276820275, + "90.0" : 348.7118127353454, + "95.0" : 348.7118127353454, + "99.0" : 348.7118127353454, + "99.9" : 348.7118127353454, + "99.99" : 348.7118127353454, + "99.999" : 348.7118127353454, + "99.9999" : 348.7118127353454, + "100.0" : 348.7118127353454 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 346.2396737614174, + 344.4937949433161, + 348.7118127353454 + ], + [ + 338.22134638914224, + 339.50568888443763, + 344.2246711810125 + ], + [ + 342.65657276820275, + 340.39185850752824, + 341.9487395586887 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 104.41664466797751, + "scoreError" : 3.4239410559884464, + "scoreConfidence" : [ + 100.99270361198906, + 107.84058572396596 + ], + "scorePercentiles" : { + "0.0" : 101.34074595436566, + "50.0" : 105.26679530526971, + "90.0" : 106.52285125107282, + "95.0" : 106.52285125107282, + "99.0" : 106.52285125107282, + "99.9" : 106.52285125107282, + "99.99" : 106.52285125107282, + "99.999" : 106.52285125107282, + "99.9999" : 106.52285125107282, + "100.0" : 106.52285125107282 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 102.03512173310942, + 101.34074595436566, + 102.14607145041818 + ], + [ + 105.99328845197857, + 106.09573198089387, + 104.36496507781024 + ], + [ + 105.26679530526971, + 105.98423080687914, + 106.52285125107282 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06291601396860064, + "scoreError" : 0.0010268130772880873, + "scoreConfidence" : [ + 0.06188920089131255, + 0.06394282704588873 + ], + "scorePercentiles" : { + "0.0" : 0.06190691776395209, + "50.0" : 0.06296611601329824, + "90.0" : 0.0638439230946027, + "95.0" : 0.0638439230946027, + "99.0" : 0.0638439230946027, + "99.9" : 0.0638439230946027, + "99.99" : 0.0638439230946027, + "99.999" : 0.0638439230946027, + "99.9999" : 0.0638439230946027, + "100.0" : 0.0638439230946027 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06264503327653603, + 0.06243686636905691, + 0.06332339414394447 + ], + [ + 0.06244408786981879, + 0.06190691776395209, + 0.0638439230946027 + ], + [ + 0.06317183357022381, + 0.06296611601329824, + 0.06350595361597276 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.772918445712037E-4, + "scoreError" : 1.3750074525357626E-5, + "scoreConfidence" : [ + 3.635417700458461E-4, + 3.910419190965613E-4 + ], + "scorePercentiles" : { + "0.0" : 3.67455808549216E-4, + "50.0" : 3.758903578714715E-4, + "90.0" : 3.898184364874329E-4, + "95.0" : 3.898184364874329E-4, + "99.0" : 3.898184364874329E-4, + "99.9" : 3.898184364874329E-4, + "99.99" : 3.898184364874329E-4, + "99.999" : 3.898184364874329E-4, + "99.9999" : 3.898184364874329E-4, + "100.0" : 3.898184364874329E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.822310819920716E-4, + 3.8398533949458825E-4, + 3.898184364874329E-4 + ], + [ + 3.7456247794088814E-4, + 3.758903578714715E-4, + 3.844980090532881E-4 + ], + [ + 3.684198426518969E-4, + 3.6876524709997987E-4, + 3.67455808549216E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014692487168159126, + "scoreError" : 1.0890921120123715E-4, + "scoreConfidence" : [ + 0.014583577956957888, + 0.014801396379360364 + ], + "scorePercentiles" : { + "0.0" : 0.014623069662020972, + "50.0" : 0.014686299765904265, + "90.0" : 0.01481580967669291, + "95.0" : 0.01481580967669291, + "99.0" : 0.01481580967669291, + "99.9" : 0.01481580967669291, + "99.99" : 0.01481580967669291, + "99.999" : 0.01481580967669291, + "99.9999" : 0.01481580967669291, + "100.0" : 0.01481580967669291 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.01481580967669291, + 0.014761402142737998, + 0.01471955471785874 + ], + [ + 0.014686299765904265, + 0.014623069662020972, + 0.01464070584084271 + ], + [ + 0.014698066747505035, + 0.014626562814467248, + 0.014660913145402247 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.991542696406702, + "scoreError" : 0.023328699477302327, + "scoreConfidence" : [ + 0.9682139969293997, + 1.0148713958840043 + ], + "scorePercentiles" : { + "0.0" : 0.9696445302501454, + "50.0" : 0.9992563994804157, + "90.0" : 1.0060960282696176, + "95.0" : 1.0060960282696176, + "99.0" : 1.0060960282696176, + "99.9" : 1.0060960282696176, + "99.99" : 1.0060960282696176, + "99.999" : 1.0060960282696176, + "99.9999" : 1.0060960282696176, + "100.0" : 1.0060960282696176 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9999140340965903, + 0.9992563994804157, + 0.9996002698650674 + ], + [ + 1.001559894241362, + 1.0060960282696176, + 0.9970750286141575 + ], + [ + 0.9696445302501454, + 0.9763279108659573, + 0.9744101719770047 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.013056361858015402, + "scoreError" : 9.322779867712266E-4, + "scoreConfidence" : [ + 0.012124083871244177, + 0.013988639844786628 + ], + "scorePercentiles" : { + "0.0" : 0.01265293295628519, + "50.0" : 0.013073918976377876, + "90.0" : 0.013424728910260541, + "95.0" : 0.013424728910260541, + "99.0" : 0.013424728910260541, + "99.9" : 0.013424728910260541, + "99.99" : 0.013424728910260541, + "99.999" : 0.013424728910260541, + "99.9999" : 0.013424728910260541, + "100.0" : 0.013424728910260541 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.01265293295628519, + 0.012762067769615975, + 0.01287342819259179 + ], + [ + 0.013274409760163962, + 0.013424728910260541, + 0.013350603559174955 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.7533453814696007, + "scoreError" : 0.07221931908733174, + "scoreConfidence" : [ + 3.681126062382269, + 3.8255647005569324 + ], + "scorePercentiles" : { + "0.0" : 3.715878045319465, + "50.0" : 3.7647120831820504, + "90.0" : 3.7759736120754717, + "95.0" : 3.7759736120754717, + "99.0" : 3.7759736120754717, + "99.9" : 3.7759736120754717, + "99.99" : 3.7759736120754717, + "99.999" : 3.7759736120754717, + "99.9999" : 3.7759736120754717, + "100.0" : 3.7759736120754717 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.7583392802404205, + 3.715878045319465, + 3.726707458271237 + ], + [ + 3.7710848861236803, + 3.7720890067873305, + 3.7759736120754717 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.889554648811101, + "scoreError" : 0.10180974707315243, + "scoreConfidence" : [ + 2.7877449017379483, + 2.9913643958842533 + ], + "scorePercentiles" : { + "0.0" : 2.8047336149747615, + "50.0" : 2.9016337911227152, + "90.0" : 2.970081754083754, + "95.0" : 2.970081754083754, + "99.0" : 2.970081754083754, + "99.9" : 2.970081754083754, + "99.99" : 2.970081754083754, + "99.999" : 2.970081754083754, + "99.9999" : 2.970081754083754, + "100.0" : 2.970081754083754 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.970081754083754, + 2.9444875981748604, + 2.90051821287703 + ], + [ + 2.8047336149747615, + 2.8152427427526034, + 2.822288823927765 + ], + [ + 2.9185109804493727, + 2.9284943209370424, + 2.9016337911227152 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1805457075975223, + "scoreError" : 0.0032906053591940008, + "scoreConfidence" : [ + 0.1772551022383283, + 0.18383631295671632 + ], + "scorePercentiles" : { + "0.0" : 0.1789229324936036, + "50.0" : 0.1797346438469419, + "90.0" : 0.18514838317410945, + "95.0" : 0.18514838317410945, + "99.0" : 0.18514838317410945, + "99.9" : 0.18514838317410945, + "99.99" : 0.18514838317410945, + "99.999" : 0.18514838317410945, + "99.9999" : 0.18514838317410945, + "100.0" : 0.18514838317410945 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.18514838317410945, + 0.18192817100858683, + 0.18085476485694651 + ], + [ + 0.1797346438469419, + 0.17923391680108972, + 0.18011414041280935 + ], + [ + 0.1789229324936036, + 0.17933638023420548, + 0.1796380355494081 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.33802979936950583, + "scoreError" : 0.007790846575675005, + "scoreConfidence" : [ + 0.3302389527938308, + 0.34582064594518086 + ], + "scorePercentiles" : { + "0.0" : 0.33224624904481875, + "50.0" : 0.3363953684405275, + "90.0" : 0.3439181182681065, + "95.0" : 0.3439181182681065, + "99.0" : 0.3439181182681065, + "99.9" : 0.3439181182681065, + "99.99" : 0.3439181182681065, + "99.999" : 0.3439181182681065, + "99.9999" : 0.3439181182681065, + "100.0" : 0.3439181182681065 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3363953684405275, + 0.3355822697651007, + 0.33907762964093174 + ], + [ + 0.3438371653142621, + 0.3439181182681065, + 0.34326591658943467 + ], + [ + 0.33389524587646074, + 0.3340502313859104, + 0.33224624904481875 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16610825006196098, + "scoreError" : 0.005481242770670671, + "scoreConfidence" : [ + 0.1606270072912903, + 0.17158949283263164 + ], + "scorePercentiles" : { + "0.0" : 0.16116178712671833, + "50.0" : 0.16686997396876252, + "90.0" : 0.16965193444847826, + "95.0" : 0.16965193444847826, + "99.0" : 0.16965193444847826, + "99.9" : 0.16965193444847826, + "99.99" : 0.16965193444847826, + "99.999" : 0.16965193444847826, + "99.9999" : 0.16965193444847826, + "100.0" : 0.16965193444847826 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16686997396876252, + 0.1677147124744239, + 0.1665400422502373 + ], + [ + 0.16275387152529133, + 0.16116178712671833, + 0.16213362620989316 + ], + [ + 0.16965193444847826, + 0.1692971778936498, + 0.16885112466019417 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3900476853359935, + "scoreError" : 0.013179482989262305, + "scoreConfidence" : [ + 0.3768682023467312, + 0.4032271683252558 + ], + "scorePercentiles" : { + "0.0" : 0.378498379168086, + "50.0" : 0.39198960250078396, + "90.0" : 0.401988626281304, + "95.0" : 0.401988626281304, + "99.0" : 0.401988626281304, + "99.9" : 0.401988626281304, + "99.99" : 0.401988626281304, + "99.999" : 0.401988626281304, + "99.9999" : 0.401988626281304, + "100.0" : 0.401988626281304 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.39413079210184054, + 0.378498379168086, + 0.37850229889103365 + ], + [ + 0.401988626281304, + 0.39198960250078396, + 0.3924206083032491 + ], + [ + 0.39697791433448454, + 0.38790818863460047, + 0.38801275780855937 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1558497393759247, + "scoreError" : 0.005886044703965503, + "scoreConfidence" : [ + 0.1499636946719592, + 0.1617357840798902 + ], + "scorePercentiles" : { + "0.0" : 0.1525339157870653, + "50.0" : 0.15429124798654612, + "90.0" : 0.16052009594054478, + "95.0" : 0.16052009594054478, + "99.0" : 0.16052009594054478, + "99.9" : 0.16052009594054478, + "99.99" : 0.16052009594054478, + "99.999" : 0.16052009594054478, + "99.9999" : 0.16052009594054478, + "100.0" : 0.16052009594054478 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15263621707343134, + 0.15287506503195034, + 0.1525339157870653 + ], + [ + 0.16052009594054478, + 0.1603939217617245, + 0.16025259234331682 + ], + [ + 0.15504192820155038, + 0.15429124798654612, + 0.1541026702571926 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.046866688633485816, + "scoreError" : 4.7205703256350144E-4, + "scoreConfidence" : [ + 0.04639463160092232, + 0.047338745666049314 + ], + "scorePercentiles" : { + "0.0" : 0.0465004971821031, + "50.0" : 0.04677862280611481, + "90.0" : 0.047195328475420975, + "95.0" : 0.047195328475420975, + "99.0" : 0.047195328475420975, + "99.9" : 0.047195328475420975, + "99.99" : 0.047195328475420975, + "99.999" : 0.047195328475420975, + "99.9999" : 0.047195328475420975, + "100.0" : 0.047195328475420975 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04677862280611481, + 0.0465004971821031, + 0.04658195166248987 + ], + [ + 0.047106999882234345, + 0.04674651273349414, + 0.046599830365755344 + ], + [ + 0.04717519188221475, + 0.04711526271154499, + 0.047195328475420975 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9274065.194162289, + "scoreError" : 255674.20191399023, + "scoreConfidence" : [ + 9018390.992248299, + 9529739.396076279 + ], + "scorePercentiles" : { + "0.0" : 9054173.222624434, + "50.0" : 9343782.669467786, + "90.0" : 9467276.662251655, + "95.0" : 9467276.662251655, + "99.0" : 9467276.662251655, + "99.9" : 9467276.662251655, + "99.99" : 9467276.662251655, + "99.999" : 9467276.662251655, + "99.9999" : 9467276.662251655, + "100.0" : 9467276.662251655 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9370335.287453184, + 9343782.669467786, + 9419851.420507995 + ], + [ + 9199186.877757354, + 9373907.444236176, + 9467276.662251655 + ], + [ + 9054173.222624434, + 9103496.834394904, + 9134576.328767123 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-04-03T04:19:02Z-bfd7b46570071ef5cb5edd7377fbc51fb477ee3d-jdk17.json b/performance-results/2025-04-03T04:19:02Z-bfd7b46570071ef5cb5edd7377fbc51fb477ee3d-jdk17.json new file mode 100644 index 0000000000..4f6416e5a3 --- /dev/null +++ b/performance-results/2025-04-03T04:19:02Z-bfd7b46570071ef5cb5edd7377fbc51fb477ee3d-jdk17.json @@ -0,0 +1,1310 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4207323250526915, + "scoreError" : 0.0319456484452798, + "scoreConfidence" : [ + 3.388786676607412, + 3.452677973497971 + ], + "scorePercentiles" : { + "0.0" : 3.4148720216622768, + "50.0" : 3.420843722069556, + "90.0" : 3.4263698344093774, + "95.0" : 3.4263698344093774, + "99.0" : 3.4263698344093774, + "99.9" : 3.4263698344093774, + "99.99" : 3.4263698344093774, + "99.999" : 3.4263698344093774, + "99.9999" : 3.4263698344093774, + "100.0" : 3.4263698344093774 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4148720216622768, + 3.4227369708906776 + ], + [ + 3.4189504732484335, + 3.4263698344093774 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7277102944001554, + "scoreError" : 0.0031271802076314223, + "scoreConfidence" : [ + 1.724583114192524, + 1.7308374746077868 + ], + "scorePercentiles" : { + "0.0" : 1.7273150184436197, + "50.0" : 1.7276098423405877, + "90.0" : 1.7283064744758272, + "95.0" : 1.7283064744758272, + "99.0" : 1.7283064744758272, + "99.9" : 1.7283064744758272, + "99.99" : 1.7283064744758272, + "99.999" : 1.7283064744758272, + "99.9999" : 1.7283064744758272, + "100.0" : 1.7283064744758272 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7273150184436197, + 1.7279020093223763 + ], + [ + 1.7273176753587989, + 1.7283064744758272 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8682495052702349, + "scoreError" : 0.003949470062662093, + "scoreConfidence" : [ + 0.8643000352075728, + 0.872198975332897 + ], + "scorePercentiles" : { + "0.0" : 0.8677494428788252, + "50.0" : 0.8680539988529801, + "90.0" : 0.8691405804961545, + "95.0" : 0.8691405804961545, + "99.0" : 0.8691405804961545, + "99.9" : 0.8691405804961545, + "99.99" : 0.8691405804961545, + "99.999" : 0.8691405804961545, + "99.9999" : 0.8691405804961545, + "100.0" : 0.8691405804961545 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8680616748545228, + 0.8677494428788252 + ], + [ + 0.8680463228514372, + 0.8691405804961545 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.129063634777115, + "scoreError" : 0.08527819871813747, + "scoreConfidence" : [ + 16.04378543605898, + 16.21434183349525 + ], + "scorePercentiles" : { + "0.0" : 16.059264510157075, + "50.0" : 16.108068079257407, + "90.0" : 16.214119925984104, + "95.0" : 16.214119925984104, + "99.0" : 16.214119925984104, + "99.9" : 16.214119925984104, + "99.99" : 16.214119925984104, + "99.999" : 16.214119925984104, + "99.9999" : 16.214119925984104, + "100.0" : 16.214119925984104 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.0925343717999, + 16.09984081671261, + 16.108068079257407 + ], + [ + 16.214119925984104, + 16.159726236461857, + 16.19100512182415 + ], + [ + 16.059264510157075, + 16.097684680162253, + 16.139328970634665 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2690.9112918289243, + "scoreError" : 89.11642467727573, + "scoreConfidence" : [ + 2601.7948671516488, + 2780.0277165062 + ], + "scorePercentiles" : { + "0.0" : 2652.044232240892, + "50.0" : 2657.6655237443792, + "90.0" : 2763.516905739167, + "95.0" : 2763.516905739167, + "99.0" : 2763.516905739167, + "99.9" : 2763.516905739167, + "99.99" : 2763.516905739167, + "99.999" : 2763.516905739167, + "99.9999" : 2763.516905739167, + "100.0" : 2763.516905739167 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2763.516905739167, + 2757.9183269925015, + 2763.176354709843 + ], + [ + 2659.1776750958593, + 2652.044232240892, + 2657.6655237443792 + ], + [ + 2653.991151912376, + 2655.9615935642164, + 2654.7498624610816 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 70813.59294604426, + "scoreError" : 285.425501314716, + "scoreConfidence" : [ + 70528.16744472954, + 71099.01844735898 + ], + "scorePercentiles" : { + "0.0" : 70628.70211461508, + "50.0" : 70783.99135660434, + "90.0" : 71040.45930720455, + "95.0" : 71040.45930720455, + "99.0" : 71040.45930720455, + "99.9" : 71040.45930720455, + "99.99" : 71040.45930720455, + "99.999" : 71040.45930720455, + "99.9999" : 71040.45930720455, + "100.0" : 71040.45930720455 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 71040.45930720455, + 71024.63676656474, + 71018.19681898014 + ], + [ + 70800.4921040496, + 70689.3527485353, + 70783.99135660434 + ], + [ + 70670.66800835967, + 70628.70211461508, + 70665.83728948496 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 353.25425258646266, + "scoreError" : 7.344410731177084, + "scoreConfidence" : [ + 345.90984185528555, + 360.59866331763976 + ], + "scorePercentiles" : { + "0.0" : 347.27155054221925, + "50.0" : 355.65845226413325, + "90.0" : 357.51761485639236, + "95.0" : 357.51761485639236, + "99.0" : 357.51761485639236, + "99.9" : 357.51761485639236, + "99.99" : 357.51761485639236, + "99.999" : 357.51761485639236, + "99.9999" : 357.51761485639236, + "100.0" : 357.51761485639236 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 355.7057941305003, + 355.65845226413325, + 356.40599321473053 + ], + [ + 357.51761485639236, + 356.7266455150841, + 354.7055422687994 + ], + [ + 347.27155054221925, + 347.42020970279657, + 347.8764707835086 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 108.2220803435144, + "scoreError" : 1.3778531511347178, + "scoreConfidence" : [ + 106.84422719237969, + 109.59993349464912 + ], + "scorePercentiles" : { + "0.0" : 107.19737504715748, + "50.0" : 108.38482161616515, + "90.0" : 109.49844061242605, + "95.0" : 109.49844061242605, + "99.0" : 109.49844061242605, + "99.9" : 109.49844061242605, + "99.99" : 109.49844061242605, + "99.999" : 109.49844061242605, + "99.9999" : 109.49844061242605, + "100.0" : 109.49844061242605 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 109.49844061242605, + 108.855934976009, + 108.84497615431408 + ], + [ + 108.27115702933337, + 108.41776316427838, + 108.38482161616515 + ], + [ + 107.32316112420783, + 107.20509336773831, + 107.19737504715748 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06187979929930037, + "scoreError" : 4.89919681720745E-4, + "scoreConfidence" : [ + 0.06138987961757962, + 0.062369718981021116 + ], + "scorePercentiles" : { + "0.0" : 0.06156398933727337, + "50.0" : 0.06173390797466479, + "90.0" : 0.062283656367169496, + "95.0" : 0.062283656367169496, + "99.0" : 0.062283656367169496, + "99.9" : 0.062283656367169496, + "99.99" : 0.062283656367169496, + "99.999" : 0.062283656367169496, + "99.9999" : 0.062283656367169496, + "100.0" : 0.062283656367169496 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.061646123259297615, + 0.06173390797466479, + 0.06196862166148202 + ], + [ + 0.062283656367169496, + 0.06225505770954729, + 0.06216190292903675 + ], + [ + 0.061721765325268484, + 0.06156398933727337, + 0.06158316912996354 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.724198382138392E-4, + "scoreError" : 8.699200781534305E-6, + "scoreConfidence" : [ + 3.637206374323049E-4, + 3.8111903899537347E-4 + ], + "scorePercentiles" : { + "0.0" : 3.651132355641374E-4, + "50.0" : 3.7532956662498937E-4, + "90.0" : 3.770072542482455E-4, + "95.0" : 3.770072542482455E-4, + "99.0" : 3.770072542482455E-4, + "99.9" : 3.770072542482455E-4, + "99.99" : 3.770072542482455E-4, + "99.999" : 3.770072542482455E-4, + "99.9999" : 3.770072542482455E-4, + "100.0" : 3.770072542482455E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.7532956662498937E-4, + 3.7440243865318883E-4, + 3.754156135124096E-4 + ], + [ + 3.770072542482455E-4, + 3.7648122859236174E-4, + 3.763393834485371E-4 + ], + [ + 3.6621271513166535E-4, + 3.6547710814901834E-4, + 3.651132355641374E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014120962875839724, + "scoreError" : 1.5472298051941275E-4, + "scoreConfidence" : [ + 0.013966239895320311, + 0.014275685856359138 + ], + "scorePercentiles" : { + "0.0" : 0.014002392716320438, + "50.0" : 0.014128934788690208, + "90.0" : 0.0142317715103421, + "95.0" : 0.0142317715103421, + "99.0" : 0.0142317715103421, + "99.9" : 0.0142317715103421, + "99.99" : 0.0142317715103421, + "99.999" : 0.0142317715103421, + "99.9999" : 0.0142317715103421, + "100.0" : 0.0142317715103421 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014128934788690208, + 0.014126580095325006, + 0.014130934258050294 + ], + [ + 0.014205468612696974, + 0.014230774158935892, + 0.0142317715103421 + ], + [ + 0.014018518749561925, + 0.014002392716320438, + 0.014013290992634694 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9710586987458186, + "scoreError" : 0.010987316611614452, + "scoreConfidence" : [ + 0.9600713821342042, + 0.9820460153574331 + ], + "scorePercentiles" : { + "0.0" : 0.955936307111451, + "50.0" : 0.9733839632080981, + "90.0" : 0.9767457063189765, + "95.0" : 0.9767457063189765, + "99.0" : 0.9767457063189765, + "99.9" : 0.9767457063189765, + "99.99" : 0.9767457063189765, + "99.999" : 0.9767457063189765, + "99.9999" : 0.9767457063189765, + "100.0" : 0.9767457063189765 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9752175705509507, + 0.9749185228114642, + 0.973517640221941 + ], + [ + 0.9652071514332593, + 0.9733839632080981, + 0.955936307111451 + ], + [ + 0.9767457063189765, + 0.9722837267159246, + 0.9723177003403014 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.012983448700691527, + "scoreError" : 2.576521228683663E-4, + "scoreConfidence" : [ + 0.01272579657782316, + 0.013241100823559894 + ], + "scorePercentiles" : { + "0.0" : 0.012864549208333976, + "50.0" : 0.01295442629267363, + "90.0" : 0.013094527081456496, + "95.0" : 0.013094527081456496, + "99.0" : 0.013094527081456496, + "99.9" : 0.013094527081456496, + "99.99" : 0.013094527081456496, + "99.999" : 0.013094527081456496, + "99.9999" : 0.013094527081456496, + "100.0" : 0.013094527081456496 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.012967554409251349, + 0.013094527081456496, + 0.01309233181204047 + ], + [ + 0.012864549208333976, + 0.012940431516970975, + 0.012941298176095909 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.695386946419859, + "scoreError" : 0.017234151890428238, + "scoreConfidence" : [ + 3.6781527945294306, + 3.7126210983102874 + ], + "scorePercentiles" : { + "0.0" : 3.689411109882006, + "50.0" : 3.6941566158227035, + "90.0" : 3.706890833951075, + "95.0" : 3.706890833951075, + "99.0" : 3.706890833951075, + "99.9" : 3.706890833951075, + "99.99" : 3.706890833951075, + "99.999" : 3.706890833951075, + "99.9999" : 3.706890833951075, + "100.0" : 3.706890833951075 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.6956624397634887, + 3.69178669298893, + 3.6959198100517368 + ], + [ + 3.706890833951075, + 3.689411109882006, + 3.6926507918819187 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.836029495688691, + "scoreError" : 0.08247781158293523, + "scoreConfidence" : [ + 2.7535516841057555, + 2.9185073072716263 + ], + "scorePercentiles" : { + "0.0" : 2.780162533500139, + "50.0" : 2.8326620141602947, + "90.0" : 2.896600083405734, + "95.0" : 2.896600083405734, + "99.0" : 2.896600083405734, + "99.9" : 2.896600083405734, + "99.99" : 2.896600083405734, + "99.999" : 2.896600083405734, + "99.9999" : 2.896600083405734, + "100.0" : 2.896600083405734 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.896600083405734, + 2.89330250390512, + 2.8909107427745666 + ], + [ + 2.8418196442171073, + 2.826841927077445, + 2.8326620141602947 + ], + [ + 2.780162533500139, + 2.7807002805115375, + 2.7812657316462737 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17517850014596284, + "scoreError" : 0.0037486979732552785, + "scoreConfidence" : [ + 0.17142980217270756, + 0.17892719811921812 + ], + "scorePercentiles" : { + "0.0" : 0.1717836128766276, + "50.0" : 0.17623950894383447, + "90.0" : 0.17721852954102427, + "95.0" : 0.17721852954102427, + "99.0" : 0.17721852954102427, + "99.9" : 0.17721852954102427, + "99.99" : 0.17721852954102427, + "99.999" : 0.17721852954102427, + "99.9999" : 0.17721852954102427, + "100.0" : 0.17721852954102427 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.172831079570004, + 0.17218152398415978, + 0.1717836128766276 + ], + [ + 0.17621121955560254, + 0.17623950894383447, + 0.17624023835959254 + ], + [ + 0.17707964202362192, + 0.17721852954102427, + 0.176821146459199 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.32290382875128587, + "scoreError" : 0.019311333448506423, + "scoreConfidence" : [ + 0.30359249530277943, + 0.3422151621997923 + ], + "scorePercentiles" : { + "0.0" : 0.31114121480352197, + "50.0" : 0.3198565041100272, + "90.0" : 0.33750574249071885, + "95.0" : 0.33750574249071885, + "99.0" : 0.33750574249071885, + "99.9" : 0.33750574249071885, + "99.99" : 0.33750574249071885, + "99.999" : 0.33750574249071885, + "99.9999" : 0.33750574249071885, + "100.0" : 0.33750574249071885 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3373749518588489, + 0.33750574249071885, + 0.3373804223541716 + ], + [ + 0.31175855700346045, + 0.31131111596052674, + 0.31114121480352197 + ], + [ + 0.3197633228240711, + 0.3200426273562262, + 0.3198565041100272 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1583957563563813, + "scoreError" : 0.0027862408712994364, + "scoreConfidence" : [ + 0.15560951548508187, + 0.16118199722768076 + ], + "scorePercentiles" : { + "0.0" : 0.1563399570070665, + "50.0" : 0.15848177283676704, + "90.0" : 0.16027697366691776, + "95.0" : 0.16027697366691776, + "99.0" : 0.16027697366691776, + "99.9" : 0.16027697366691776, + "99.99" : 0.16027697366691776, + "99.999" : 0.16027697366691776, + "99.9999" : 0.16027697366691776, + "100.0" : 0.16027697366691776 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1565101095703889, + 0.1564862471637587, + 0.1563399570070665 + ], + [ + 0.15829687175103682, + 0.15848177283676704, + 0.15865207415281127 + ], + [ + 0.16027111858131932, + 0.1602466824773656, + 0.16027697366691776 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3868561814412517, + "scoreError" : 0.0069254109492785645, + "scoreConfidence" : [ + 0.37993077049197316, + 0.3937815923905303 + ], + "scorePercentiles" : { + "0.0" : 0.38157141117216115, + "50.0" : 0.3869765164460955, + "90.0" : 0.39176893238266863, + "95.0" : 0.39176893238266863, + "99.0" : 0.39176893238266863, + "99.9" : 0.39176893238266863, + "99.99" : 0.39176893238266863, + "99.999" : 0.39176893238266863, + "99.9999" : 0.39176893238266863, + "100.0" : 0.39176893238266863 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3870978555392119, + 0.3869765164460955, + 0.3851402720970537 + ], + [ + 0.3840976532493471, + 0.381694085610687, + 0.38157141117216115 + ], + [ + 0.3917450901363209, + 0.39176893238266863, + 0.3916138163377193 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15523830175393216, + "scoreError" : 0.0026270894280356724, + "scoreConfidence" : [ + 0.1526112123258965, + 0.15786539118196782 + ], + "scorePercentiles" : { + "0.0" : 0.15325871712310923, + "50.0" : 0.15492024173134422, + "90.0" : 0.15720893628460486, + "95.0" : 0.15720893628460486, + "99.0" : 0.15720893628460486, + "99.9" : 0.15720893628460486, + "99.99" : 0.15720893628460486, + "99.999" : 0.15720893628460486, + "99.9999" : 0.15720893628460486, + "100.0" : 0.15720893628460486 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15564634977431907, + 0.15492024173134422, + 0.15463564016762282 + ], + [ + 0.15720893628460486, + 0.15707466542581597, + 0.1569684785584228 + ], + [ + 0.15395843413800536, + 0.15325871712310923, + 0.15347325258214523 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04755786559883292, + "scoreError" : 0.0014208049396587064, + "scoreConfidence" : [ + 0.04613706065917421, + 0.04897867053849163 + ], + "scorePercentiles" : { + "0.0" : 0.04647786951045506, + "50.0" : 0.04765763511935682, + "90.0" : 0.04853239242226439, + "95.0" : 0.04853239242226439, + "99.0" : 0.04853239242226439, + "99.9" : 0.04853239242226439, + "99.99" : 0.04853239242226439, + "99.999" : 0.04853239242226439, + "99.9999" : 0.04853239242226439, + "100.0" : 0.04853239242226439 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04780514980997681, + 0.04758781751300317, + 0.04765763511935682 + ], + [ + 0.048491284037900165, + 0.04853239242226439, + 0.04836042689473073 + ], + [ + 0.046539819069869176, + 0.04656839601193997, + 0.04647786951045506 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9210789.606424699, + "scoreError" : 67701.16141275437, + "scoreConfidence" : [ + 9143088.445011944, + 9278490.767837454 + ], + "scorePercentiles" : { + "0.0" : 9137590.056621004, + "50.0" : 9214177.742173113, + "90.0" : 9257430.554116558, + "95.0" : 9257430.554116558, + "99.0" : 9257430.554116558, + "99.9" : 9257430.554116558, + "99.99" : 9257430.554116558, + "99.999" : 9257430.554116558, + "99.9999" : 9257430.554116558, + "100.0" : 9257430.554116558 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9185812.64003673, + 9189725.07805326, + 9137590.056621004 + ], + [ + 9257430.554116558, + 9256689.355226642, + 9251173.079555966 + ], + [ + 9186617.759412305, + 9217890.192626728, + 9214177.742173113 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-04-03T04:20:01Z-bfd7b46570071ef5cb5edd7377fbc51fb477ee3d-jdk17.json b/performance-results/2025-04-03T04:20:01Z-bfd7b46570071ef5cb5edd7377fbc51fb477ee3d-jdk17.json new file mode 100644 index 0000000000..98ae378714 --- /dev/null +++ b/performance-results/2025-04-03T04:20:01Z-bfd7b46570071ef5cb5edd7377fbc51fb477ee3d-jdk17.json @@ -0,0 +1,1310 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.3992092882886666, + "scoreError" : 0.028178246222827573, + "scoreConfidence" : [ + 3.371031042065839, + 3.427387534511494 + ], + "scorePercentiles" : { + "0.0" : 3.395005069255314, + "50.0" : 3.3986561825358588, + "90.0" : 3.4045197188276344, + "95.0" : 3.4045197188276344, + "99.0" : 3.4045197188276344, + "99.9" : 3.4045197188276344, + "99.99" : 3.4045197188276344, + "99.999" : 3.4045197188276344, + "99.9999" : 3.4045197188276344, + "100.0" : 3.4045197188276344 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.395005069255314, + 3.4045197188276344 + ], + [ + 3.396358694557847, + 3.4009536705138705 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7185863296289448, + "scoreError" : 0.0226247904680873, + "scoreConfidence" : [ + 1.6959615391608573, + 1.7412111200970322 + ], + "scorePercentiles" : { + "0.0" : 1.713896569825601, + "50.0" : 1.7191667413071396, + "90.0" : 1.7221152660758985, + "95.0" : 1.7221152660758985, + "99.0" : 1.7221152660758985, + "99.9" : 1.7221152660758985, + "99.99" : 1.7221152660758985, + "99.999" : 1.7221152660758985, + "99.9999" : 1.7221152660758985, + "100.0" : 1.7221152660758985 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.713896569825601, + 1.718257222681635 + ], + [ + 1.7200762599326442, + 1.7221152660758985 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8638131333573812, + "scoreError" : 0.005739607080341613, + "scoreConfidence" : [ + 0.8580735262770396, + 0.8695527404377228 + ], + "scorePercentiles" : { + "0.0" : 0.8629604388633407, + "50.0" : 0.8637508804684315, + "90.0" : 0.8647903336293211, + "95.0" : 0.8647903336293211, + "99.0" : 0.8647903336293211, + "99.9" : 0.8647903336293211, + "99.99" : 0.8647903336293211, + "99.999" : 0.8647903336293211, + "99.9999" : 0.8647903336293211, + "100.0" : 0.8647903336293211 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8629604388633407, + 0.8647903336293211 + ], + [ + 0.8631690751649713, + 0.8643326857718918 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 15.875310471082843, + "scoreError" : 0.26777051507050426, + "scoreConfidence" : [ + 15.607539956012339, + 16.143080986153347 + ], + "scorePercentiles" : { + "0.0" : 15.612288653326042, + "50.0" : 15.832222806276663, + "90.0" : 16.106444002568377, + "95.0" : 16.106444002568377, + "99.0" : 16.106444002568377, + "99.9" : 16.106444002568377, + "99.99" : 16.106444002568377, + "99.999" : 16.106444002568377, + "99.9999" : 16.106444002568377, + "100.0" : 16.106444002568377 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.106444002568377, + 16.047190666002482, + 16.011487463515408 + ], + [ + 15.753348985453242, + 15.78377177928709, + 15.925255493182311 + ], + [ + 15.832222806276663, + 15.805784390133978, + 15.612288653326042 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2667.7601557240364, + "scoreError" : 119.67998425181611, + "scoreConfidence" : [ + 2548.08017147222, + 2787.4401399758526 + ], + "scorePercentiles" : { + "0.0" : 2558.413530316072, + "50.0" : 2697.246014837451, + "90.0" : 2745.2269193723982, + "95.0" : 2745.2269193723982, + "99.0" : 2745.2269193723982, + "99.9" : 2745.2269193723982, + "99.99" : 2745.2269193723982, + "99.999" : 2745.2269193723982, + "99.9999" : 2745.2269193723982, + "100.0" : 2745.2269193723982 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2601.2023290761535, + 2568.775645722441, + 2558.413530316072 + ], + [ + 2692.6922111857752, + 2708.3682091572205, + 2745.2269193723982 + ], + [ + 2721.1608852061686, + 2716.755656642648, + 2697.246014837451 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 69653.26025364155, + "scoreError" : 837.2247301229313, + "scoreConfidence" : [ + 68816.03552351861, + 70490.48498376449 + ], + "scorePercentiles" : { + "0.0" : 69143.04281828675, + "50.0" : 69490.61975836863, + "90.0" : 70297.39157492763, + "95.0" : 70297.39157492763, + "99.0" : 70297.39157492763, + "99.9" : 70297.39157492763, + "99.99" : 70297.39157492763, + "99.999" : 70297.39157492763, + "99.9999" : 70297.39157492763, + "100.0" : 70297.39157492763 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 69673.21206564475, + 69226.62057270289, + 69143.04281828675 + ], + [ + 69360.11899118814, + 69148.32384924784, + 69490.61975836863 + ], + [ + 70265.82211287168, + 70274.19053953572, + 70297.39157492763 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 325.76357997471234, + "scoreError" : 15.438554362778062, + "scoreConfidence" : [ + 310.3250256119343, + 341.2021343374904 + ], + "scorePercentiles" : { + "0.0" : 312.51355700005786, + "50.0" : 329.8447893587314, + "90.0" : 335.30161127464805, + "95.0" : 335.30161127464805, + "99.0" : 335.30161127464805, + "99.9" : 335.30161127464805, + "99.99" : 335.30161127464805, + "99.999" : 335.30161127464805, + "99.9999" : 335.30161127464805, + "100.0" : 335.30161127464805 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 335.30161127464805, + 333.0629081494773, + 330.14557873677194 + ], + [ + 329.8447893587314, + 333.10079335684634, + 328.95696746140584 + ], + [ + 313.93428796549847, + 312.51355700005786, + 315.0117264689737 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 103.49485554121512, + "scoreError" : 3.793394744918793, + "scoreConfidence" : [ + 99.70146079629632, + 107.28825028613392 + ], + "scorePercentiles" : { + "0.0" : 100.45672061279393, + "50.0" : 102.92956348814475, + "90.0" : 106.59142705404575, + "95.0" : 106.59142705404575, + "99.0" : 106.59142705404575, + "99.9" : 106.59142705404575, + "99.99" : 106.59142705404575, + "99.999" : 106.59142705404575, + "99.9999" : 106.59142705404575, + "100.0" : 106.59142705404575 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 106.59142705404575, + 106.51678823289815, + 105.1312372742135 + ], + [ + 102.92956348814475, + 100.45672061279393, + 100.84404127845603 + ], + [ + 102.08705881148529, + 104.08286168477012, + 102.81400143412843 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.0631853564618406, + "scoreError" : 0.0015354385052261798, + "scoreConfidence" : [ + 0.061649917956614425, + 0.06472079496706679 + ], + "scorePercentiles" : { + "0.0" : 0.0622281343053248, + "50.0" : 0.06272677993903052, + "90.0" : 0.0644954543314501, + "95.0" : 0.0644954543314501, + "99.0" : 0.0644954543314501, + "99.9" : 0.0644954543314501, + "99.99" : 0.0644954543314501, + "99.999" : 0.0644954543314501, + "99.9999" : 0.0644954543314501, + "100.0" : 0.0644954543314501 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06427183367932593, + 0.0644954543314501, + 0.06438153322045247 + ], + [ + 0.06272677993903052, + 0.06272599818724675, + 0.0627533352870303 + ], + [ + 0.06256258656673465, + 0.0622281343053248, + 0.06252255263996999 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.8448266611457985E-4, + "scoreError" : 4.210014110702952E-6, + "scoreConfidence" : [ + 3.802726520038769E-4, + 3.886926802252828E-4 + ], + "scorePercentiles" : { + "0.0" : 3.813840175864892E-4, + "50.0" : 3.838468919576846E-4, + "90.0" : 3.8902695347126055E-4, + "95.0" : 3.8902695347126055E-4, + "99.0" : 3.8902695347126055E-4, + "99.9" : 3.8902695347126055E-4, + "99.99" : 3.8902695347126055E-4, + "99.999" : 3.8902695347126055E-4, + "99.9999" : 3.8902695347126055E-4, + "100.0" : 3.8902695347126055E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.8159715463319407E-4, + 3.830467416295346E-4, + 3.813840175864892E-4 + ], + [ + 3.8554534892830454E-4, + 3.833462317780834E-4, + 3.838468919576846E-4 + ], + [ + 3.866754638332235E-4, + 3.8587519121344437E-4, + 3.8902695347126055E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014356945249008832, + "scoreError" : 4.749203126173207E-4, + "scoreConfidence" : [ + 0.013882024936391511, + 0.014831865561626153 + ], + "scorePercentiles" : { + "0.0" : 0.014186610823678286, + "50.0" : 0.014250738606324111, + "90.0" : 0.015081788841130516, + "95.0" : 0.015081788841130516, + "99.0" : 0.015081788841130516, + "99.9" : 0.015081788841130516, + "99.99" : 0.015081788841130516, + "99.999" : 0.015081788841130516, + "99.9999" : 0.015081788841130516, + "100.0" : 0.015081788841130516 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014211193623522056, + 0.014198740368054954, + 0.014186610823678286 + ], + [ + 0.014194806765726226, + 0.014383023576350585, + 0.014250738606324111 + ], + [ + 0.014355401821679275, + 0.014350202814613489, + 0.015081788841130516 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9889173184430794, + "scoreError" : 0.020906436622996124, + "scoreConfidence" : [ + 0.9680108818200833, + 1.0098237550660756 + ], + "scorePercentiles" : { + "0.0" : 0.9751137195787831, + "50.0" : 0.9838115681259223, + "90.0" : 1.0076507319899244, + "95.0" : 1.0076507319899244, + "99.0" : 1.0076507319899244, + "99.9" : 1.0076507319899244, + "99.99" : 1.0076507319899244, + "99.999" : 1.0076507319899244, + "99.9999" : 1.0076507319899244, + "100.0" : 1.0076507319899244 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 1.0076507319899244, + 1.006104635915493, + 1.0008279665732587 + ], + [ + 0.9845124068714314, + 0.9838115681259223, + 0.9837508866810939 + ], + [ + 0.9790087858051885, + 0.9751137195787831, + 0.979475164446621 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.013070564786537432, + "scoreError" : 3.312438477869377E-4, + "scoreConfidence" : [ + 0.012739320938750494, + 0.01340180863432437 + ], + "scorePercentiles" : { + "0.0" : 0.01294236621136469, + "50.0" : 0.013038706144191437, + "90.0" : 0.0132176846025943, + "95.0" : 0.0132176846025943, + "99.0" : 0.0132176846025943, + "99.9" : 0.0132176846025943, + "99.99" : 0.0132176846025943, + "99.999" : 0.0132176846025943, + "99.9999" : 0.0132176846025943, + "100.0" : 0.0132176846025943 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.01294236621136469, + 0.013041755751930787, + 0.013035656536452087 + ], + [ + 0.012973304387985968, + 0.013212621228896751, + 0.0132176846025943 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.9320503683012595, + "scoreError" : 0.13073817145027877, + "scoreConfidence" : [ + 3.8013121968509807, + 4.062788539751538 + ], + "scorePercentiles" : { + "0.0" : 3.886556063714064, + "50.0" : 3.9285158029082803, + "90.0" : 3.9836880589171972, + "95.0" : 3.9836880589171972, + "99.0" : 3.9836880589171972, + "99.9" : 3.9836880589171972, + "99.99" : 3.9836880589171972, + "99.999" : 3.9836880589171972, + "99.9999" : 3.9836880589171972, + "100.0" : 3.9836880589171972 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.9627668122028528, + 3.975874643879173, + 3.9836880589171972 + ], + [ + 3.886556063714064, + 3.8942647936137074, + 3.88915183748056 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.004364586156701, + "scoreError" : 0.14161123897060376, + "scoreConfidence" : [ + 2.8627533471860973, + 3.145975825127305 + ], + "scorePercentiles" : { + "0.0" : 2.899472187880545, + "50.0" : 2.9752824544913743, + "90.0" : 3.116214405919003, + "95.0" : 3.116214405919003, + "99.0" : 3.116214405919003, + "99.9" : 3.116214405919003, + "99.99" : 3.116214405919003, + "99.999" : 3.116214405919003, + "99.9999" : 3.116214405919003, + "100.0" : 3.116214405919003 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.1080275556246115, + 3.116214405919003, + 3.1107170768273718 + ], + [ + 2.94470944581861, + 2.9752824544913743, + 2.982728600954369 + ], + [ + 2.969614950415677, + 2.9325145974787454, + 2.899472187880545 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17564792482371683, + "scoreError" : 0.002974252867516921, + "scoreConfidence" : [ + 0.1726736719561999, + 0.17862217769123376 + ], + "scorePercentiles" : { + "0.0" : 0.1731033127055565, + "50.0" : 0.1768566043965761, + "90.0" : 0.17698233668412855, + "95.0" : 0.17698233668412855, + "99.0" : 0.17698233668412855, + "99.9" : 0.17698233668412855, + "99.99" : 0.17698233668412855, + "99.999" : 0.17698233668412855, + "99.9999" : 0.17698233668412855, + "100.0" : 0.17698233668412855 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17686704975150774, + 0.1768795816898668, + 0.1769473231708396 + ], + [ + 0.1768566043965761, + 0.1763903096094825, + 0.17698233668412855 + ], + [ + 0.17349474921929217, + 0.17331005618620127, + 0.1731033127055565 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3224626777755301, + "scoreError" : 0.016155882614857214, + "scoreConfidence" : [ + 0.3063067951606729, + 0.33861856039038735 + ], + "scorePercentiles" : { + "0.0" : 0.3106331735470444, + "50.0" : 0.32324063284633786, + "90.0" : 0.333969142098584, + "95.0" : 0.333969142098584, + "99.0" : 0.333969142098584, + "99.9" : 0.333969142098584, + "99.99" : 0.333969142098584, + "99.999" : 0.333969142098584, + "99.9999" : 0.333969142098584, + "100.0" : 0.333969142098584 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.32324063284633786, + 0.3228341037221164, + 0.32352256436220117 + ], + [ + 0.333969142098584, + 0.3330036538909793, + 0.3325125170074813 + ], + [ + 0.31173687711587017, + 0.31071143538915647, + 0.3106331735470444 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16336138611669254, + "scoreError" : 0.013309637759159056, + "scoreConfidence" : [ + 0.1500517483575335, + 0.1766710238758516 + ], + "scorePercentiles" : { + "0.0" : 0.15236389503915654, + "50.0" : 0.16749676753651346, + "90.0" : 0.17041830118777798, + "95.0" : 0.17041830118777798, + "99.0" : 0.17041830118777798, + "99.9" : 0.17041830118777798, + "99.99" : 0.17041830118777798, + "99.999" : 0.17041830118777798, + "99.9999" : 0.17041830118777798, + "100.0" : 0.17041830118777798 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16764070001508727, + 0.1672745904688624, + 0.16749676753651346 + ], + [ + 0.15236389503915654, + 0.15341220566081154, + 0.15290987807153014 + ], + [ + 0.17041830118777798, + 0.16932816888482508, + 0.1694079681856683 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3916901877748583, + "scoreError" : 0.013066770761379609, + "scoreConfidence" : [ + 0.3786234170134787, + 0.40475695853623794 + ], + "scorePercentiles" : { + "0.0" : 0.3831963658274897, + "50.0" : 0.3880605029491657, + "90.0" : 0.40703388969840043, + "95.0" : 0.40703388969840043, + "99.0" : 0.40703388969840043, + "99.9" : 0.40703388969840043, + "99.99" : 0.40703388969840043, + "99.999" : 0.40703388969840043, + "99.9999" : 0.40703388969840043, + "100.0" : 0.40703388969840043 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.40703388969840043, + 0.3974855021264756, + 0.3967198541336084 + ], + [ + 0.3880605029491657, + 0.3875346873086611, + 0.3875294380546406 + ], + [ + 0.39397768474963557, + 0.38367376512564744, + 0.3831963658274897 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15989002361063018, + "scoreError" : 0.004543996585626853, + "scoreConfidence" : [ + 0.15534602702500333, + 0.16443402019625702 + ], + "scorePercentiles" : { + "0.0" : 0.15594041546594312, + "50.0" : 0.1613597867688584, + "90.0" : 0.1622719936715023, + "95.0" : 0.1622719936715023, + "99.0" : 0.1622719936715023, + "99.9" : 0.1622719936715023, + "99.99" : 0.1622719936715023, + "99.999" : 0.1622719936715023, + "99.9999" : 0.1622719936715023, + "100.0" : 0.1622719936715023 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15676905651356013, + 0.15594041546594312, + 0.15631288311241714 + ], + [ + 0.16217939525153255, + 0.1622719936715023, + 0.16147748038883236 + ], + [ + 0.1618514822211792, + 0.1613597867688584, + 0.1608477191018465 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04783453527496373, + "scoreError" : 7.974832162056922E-4, + "scoreConfidence" : [ + 0.047037052058758036, + 0.048632018491169424 + ], + "scorePercentiles" : { + "0.0" : 0.04737623978226162, + "50.0" : 0.04774475477679637, + "90.0" : 0.04894417089131105, + "95.0" : 0.04894417089131105, + "99.0" : 0.04894417089131105, + "99.9" : 0.04894417089131105, + "99.99" : 0.04894417089131105, + "99.999" : 0.04894417089131105, + "99.9999" : 0.04894417089131105, + "100.0" : 0.04894417089131105 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04749892322380233, + 0.047416286812295816, + 0.04737623978226162 + ], + [ + 0.04774475477679637, + 0.047800833626508096, + 0.04774200215790931 + ], + [ + 0.04894417089131105, + 0.04804041357891248, + 0.04794719262487654 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9631059.90526732, + "scoreError" : 171531.34109600133, + "scoreConfidence" : [ + 9459528.56417132, + 9802591.246363321 + ], + "scorePercentiles" : { + "0.0" : 9512877.128326995, + "50.0" : 9688628.696030978, + "90.0" : 9758324.88195122, + "95.0" : 9758324.88195122, + "99.0" : 9758324.88195122, + "99.9" : 9758324.88195122, + "99.99" : 9758324.88195122, + "99.999" : 9758324.88195122, + "99.9999" : 9758324.88195122, + "100.0" : 9758324.88195122 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9758324.88195122, + 9737305.494644595, + 9534123.904671116 + ], + [ + 9694253.833333334, + 9696302.620155038, + 9688628.696030978 + ], + [ + 9534044.147759771, + 9523678.440532826, + 9512877.128326995 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-04-03T04:20:12Z-bfd7b46570071ef5cb5edd7377fbc51fb477ee3d-jdk17.json b/performance-results/2025-04-03T04:20:12Z-bfd7b46570071ef5cb5edd7377fbc51fb477ee3d-jdk17.json new file mode 100644 index 0000000000..7d0bb435fc --- /dev/null +++ b/performance-results/2025-04-03T04:20:12Z-bfd7b46570071ef5cb5edd7377fbc51fb477ee3d-jdk17.json @@ -0,0 +1,1310 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4141460140654183, + "scoreError" : 0.02523433949722112, + "scoreConfidence" : [ + 3.388911674568197, + 3.4393803535626395 + ], + "scorePercentiles" : { + "0.0" : 3.4109114729011334, + "50.0" : 3.412942036862178, + "90.0" : 3.419788509636182, + "95.0" : 3.419788509636182, + "99.0" : 3.419788509636182, + "99.9" : 3.419788509636182, + "99.99" : 3.419788509636182, + "99.999" : 3.419788509636182, + "99.9999" : 3.419788509636182, + "100.0" : 3.419788509636182 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4109114729011334, + 3.413465927756727 + ], + [ + 3.412418145967629, + 3.419788509636182 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7201150901156992, + "scoreError" : 0.028373580112449958, + "scoreConfidence" : [ + 1.6917415100032491, + 1.7484886702281492 + ], + "scorePercentiles" : { + "0.0" : 1.715451119237048, + "50.0" : 1.7205134919863199, + "90.0" : 1.7239822572531092, + "95.0" : 1.7239822572531092, + "99.0" : 1.7239822572531092, + "99.9" : 1.7239822572531092, + "99.99" : 1.7239822572531092, + "99.999" : 1.7239822572531092, + "99.9999" : 1.7239822572531092, + "100.0" : 1.7239822572531092 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7239822572531092, + 1.7237394376447464 + ], + [ + 1.715451119237048, + 1.7172875463278934 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8659551304749118, + "scoreError" : 0.010436027041818195, + "scoreConfidence" : [ + 0.8555191034330936, + 0.87639115751673 + ], + "scorePercentiles" : { + "0.0" : 0.8639684361227421, + "50.0" : 0.8662045209892448, + "90.0" : 0.8674430437984155, + "95.0" : 0.8674430437984155, + "99.0" : 0.8674430437984155, + "99.9" : 0.8674430437984155, + "99.99" : 0.8674430437984155, + "99.999" : 0.8674430437984155, + "99.9999" : 0.8674430437984155, + "100.0" : 0.8674430437984155 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8639684361227421, + 0.8653272198110116 + ], + [ + 0.8674430437984155, + 0.867081822167478 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.252654676449723, + "scoreError" : 0.10537930227104682, + "scoreConfidence" : [ + 16.147275374178676, + 16.35803397872077 + ], + "scorePercentiles" : { + "0.0" : 16.168129744860877, + "50.0" : 16.268725836178465, + "90.0" : 16.355642468960376, + "95.0" : 16.355642468960376, + "99.0" : 16.355642468960376, + "99.9" : 16.355642468960376, + "99.99" : 16.355642468960376, + "99.999" : 16.355642468960376, + "99.9999" : 16.355642468960376, + "100.0" : 16.355642468960376 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.355642468960376, + 16.272526956761183, + 16.268725836178465 + ], + [ + 16.168129744860877, + 16.274173548129912, + 16.318351985527347 + ], + [ + 16.17852783509764, + 16.23478021354547, + 16.203033498986223 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2711.90349954842, + "scoreError" : 92.62280441102727, + "scoreConfidence" : [ + 2619.2806951373927, + 2804.526303959447 + ], + "scorePercentiles" : { + "0.0" : 2649.300552891204, + "50.0" : 2690.6946489145466, + "90.0" : 2797.8890502273834, + "95.0" : 2797.8890502273834, + "99.0" : 2797.8890502273834, + "99.9" : 2797.8890502273834, + "99.99" : 2797.8890502273834, + "99.999" : 2797.8890502273834, + "99.9999" : 2797.8890502273834, + "100.0" : 2797.8890502273834 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2666.717149029226, + 2649.300552891204, + 2669.5037781743854 + ], + [ + 2680.457249875851, + 2705.622885659174, + 2690.6946489145466 + ], + [ + 2797.8890502273834, + 2766.6792631764147, + 2780.266917987591 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 69111.95639690965, + "scoreError" : 83.29528789521649, + "scoreConfidence" : [ + 69028.66110901443, + 69195.25168480487 + ], + "scorePercentiles" : { + "0.0" : 69046.25547453541, + "50.0" : 69118.4881065913, + "90.0" : 69182.46390916892, + "95.0" : 69182.46390916892, + "99.0" : 69182.46390916892, + "99.9" : 69182.46390916892, + "99.99" : 69182.46390916892, + "99.999" : 69182.46390916892, + "99.9999" : 69182.46390916892, + "100.0" : 69182.46390916892 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 69162.28535818945, + 69182.46390916892, + 69118.4881065913 + ], + [ + 69136.79708672072, + 69054.3599191844, + 69046.25547453541 + ], + [ + 69060.3327196236, + 69101.69400475129, + 69144.93099342177 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 347.3278857421012, + "scoreError" : 11.852637802821008, + "scoreConfidence" : [ + 335.4752479392802, + 359.1805235449222 + ], + "scorePercentiles" : { + "0.0" : 337.69633644382174, + "50.0" : 349.8230392811812, + "90.0" : 354.5053703216764, + "95.0" : 354.5053703216764, + "99.0" : 354.5053703216764, + "99.9" : 354.5053703216764, + "99.99" : 354.5053703216764, + "99.999" : 354.5053703216764, + "99.9999" : 354.5053703216764, + "100.0" : 354.5053703216764 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 349.8230392811812, + 349.75558705623996, + 350.2228570416806 + ], + [ + 353.86196935718107, + 354.5053703216764, + 353.13588747335746 + ], + [ + 338.3428057877555, + 338.60711891601716, + 337.69633644382174 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 107.73978567279248, + "scoreError" : 2.23951667478191, + "scoreConfidence" : [ + 105.50026899801057, + 109.97930234757439 + ], + "scorePercentiles" : { + "0.0" : 105.94123260786559, + "50.0" : 108.09616081351409, + "90.0" : 109.21003352792893, + "95.0" : 109.21003352792893, + "99.0" : 109.21003352792893, + "99.9" : 109.21003352792893, + "99.99" : 109.21003352792893, + "99.999" : 109.21003352792893, + "99.9999" : 109.21003352792893, + "100.0" : 109.21003352792893 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 105.97381347858634, + 105.94123260786559, + 106.4660416765197 + ], + [ + 109.21003352792893, + 109.12797422747417, + 109.0807392320912 + ], + [ + 107.58179783757122, + 108.09616081351409, + 108.18027765358097 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.061909221750764645, + "scoreError" : 7.93118736000689E-4, + "scoreConfidence" : [ + 0.06111610301476396, + 0.06270234048676533 + ], + "scorePercentiles" : { + "0.0" : 0.06120587202007528, + "50.0" : 0.06209829328042624, + "90.0" : 0.06241124775010922, + "95.0" : 0.06241124775010922, + "99.0" : 0.06241124775010922, + "99.9" : 0.06241124775010922, + "99.99" : 0.06241124775010922, + "99.999" : 0.06241124775010922, + "99.9999" : 0.06241124775010922, + "100.0" : 0.06241124775010922 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06120587202007528, + 0.06131094404831244, + 0.061437342034772996 + ], + [ + 0.06209829328042624, + 0.06231152692741468, + 0.0619119299166677 + ], + [ + 0.06241124775010922, + 0.06213026141468112, + 0.06236557836442216 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.7692210394697193E-4, + "scoreError" : 1.9364149312350478E-5, + "scoreConfidence" : [ + 3.5755795463462145E-4, + 3.962862532593224E-4 + ], + "scorePercentiles" : { + "0.0" : 3.610834907005055E-4, + "50.0" : 3.804653194718181E-4, + "90.0" : 3.906616198985073E-4, + "95.0" : 3.906616198985073E-4, + "99.0" : 3.906616198985073E-4, + "99.9" : 3.906616198985073E-4, + "99.99" : 3.906616198985073E-4, + "99.999" : 3.906616198985073E-4, + "99.9999" : 3.906616198985073E-4, + "100.0" : 3.906616198985073E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.8721810412907065E-4, + 3.906616198985073E-4, + 3.866140347051792E-4 + ], + [ + 3.6320046181129455E-4, + 3.610834907005055E-4, + 3.628257406006513E-4 + ], + [ + 3.789365386107795E-4, + 3.804653194718181E-4, + 3.8129362559494065E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014347172959238966, + "scoreError" : 5.008339226000911E-4, + "scoreConfidence" : [ + 0.013846339036638875, + 0.014848006881839057 + ], + "scorePercentiles" : { + "0.0" : 0.014093595788880276, + "50.0" : 0.014189940964876059, + "90.0" : 0.01476075187496033, + "95.0" : 0.01476075187496033, + "99.0" : 0.01476075187496033, + "99.9" : 0.01476075187496033, + "99.99" : 0.01476075187496033, + "99.999" : 0.01476075187496033, + "99.9999" : 0.01476075187496033, + "100.0" : 0.01476075187496033 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014122154853159652, + 0.014099223867423879, + 0.014093595788880276 + ], + [ + 0.01418198724770538, + 0.014189940964876059, + 0.014215869308036984 + ], + [ + 0.014730909794904051, + 0.01476075187496033, + 0.014730122933204103 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9851786290563604, + "scoreError" : 0.007389816834762871, + "scoreConfidence" : [ + 0.9777888122215975, + 0.9925684458911234 + ], + "scorePercentiles" : { + "0.0" : 0.9780690916381418, + "50.0" : 0.986488261195502, + "90.0" : 0.9905183169572108, + "95.0" : 0.9905183169572108, + "99.0" : 0.9905183169572108, + "99.9" : 0.9905183169572108, + "99.99" : 0.9905183169572108, + "99.999" : 0.9905183169572108, + "99.9999" : 0.9905183169572108, + "100.0" : 0.9905183169572108 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9838497288735858, + 0.986488261195502, + 0.9877146994567901 + ], + [ + 0.9813227989402414, + 0.9807172931254291, + 0.9780690916381418 + ], + [ + 0.9900390989010989, + 0.9905183169572108, + 0.9878883724192433 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.013110931908467226, + "scoreError" : 3.1593701265900207E-4, + "scoreConfidence" : [ + 0.012794994895808223, + 0.013426868921126229 + ], + "scorePercentiles" : { + "0.0" : 0.012994717709554265, + "50.0" : 0.013109973759007349, + "90.0" : 0.013229475688776117, + "95.0" : 0.013229475688776117, + "99.0" : 0.013229475688776117, + "99.9" : 0.013229475688776117, + "99.99" : 0.013229475688776117, + "99.999" : 0.013229475688776117, + "99.9999" : 0.013229475688776117, + "100.0" : 0.013229475688776117 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.01302357288717445, + 0.013008309857432749, + 0.012994717709554265 + ], + [ + 0.013229475688776117, + 0.013213140677025528, + 0.013196374630840247 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.7185666837587, + "scoreError" : 0.059501212486211645, + "scoreConfidence" : [ + 3.659065471272488, + 3.7780678962449117 + ], + "scorePercentiles" : { + "0.0" : 3.6901369336283185, + "50.0" : 3.71791115056773, + "90.0" : 3.748282396551724, + "95.0" : 3.748282396551724, + "99.0" : 3.748282396551724, + "99.9" : 3.748282396551724, + "99.99" : 3.748282396551724, + "99.999" : 3.748282396551724, + "99.9999" : 3.748282396551724, + "100.0" : 3.748282396551724 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.7134024246473647, + 3.702479917838638, + 3.6901369336283185 + ], + [ + 3.734678553398058, + 3.748282396551724, + 3.7224198764880954 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.808103327650971, + "scoreError" : 0.038645407159203296, + "scoreConfidence" : [ + 2.7694579204917673, + 2.8467487348101743 + ], + "scorePercentiles" : { + "0.0" : 2.776432284564131, + "50.0" : 2.8192024323562572, + "90.0" : 2.8317730673839185, + "95.0" : 2.8317730673839185, + "99.0" : 2.8317730673839185, + "99.9" : 2.8317730673839185, + "99.99" : 2.8317730673839185, + "99.999" : 2.8317730673839185, + "99.9999" : 2.8317730673839185, + "100.0" : 2.8317730673839185 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.8192024323562572, + 2.812318770528684, + 2.825893922576999 + ], + [ + 2.8219859692437925, + 2.8317730673839185, + 2.826690167326173 + ], + [ + 2.782025319054242, + 2.776432284564131, + 2.776608015824542 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17652238855933255, + "scoreError" : 0.003125705040678961, + "scoreConfidence" : [ + 0.1733966835186536, + 0.17964809360001152 + ], + "scorePercentiles" : { + "0.0" : 0.17452421106457242, + "50.0" : 0.17574864547196006, + "90.0" : 0.17961467400675335, + "95.0" : 0.17961467400675335, + "99.0" : 0.17961467400675335, + "99.9" : 0.17961467400675335, + "99.99" : 0.17961467400675335, + "99.999" : 0.17961467400675335, + "99.9999" : 0.17961467400675335, + "100.0" : 0.17961467400675335 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17961467400675335, + 0.17849365485667368, + 0.17829464331051206 + ], + [ + 0.17667822780516246, + 0.175622275771838, + 0.17574864547196006 + ], + [ + 0.175139794949035, + 0.17452421106457242, + 0.17458536979748604 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.33159081262614715, + "scoreError" : 0.012872917742416154, + "scoreConfidence" : [ + 0.318717894883731, + 0.3444637303685633 + ], + "scorePercentiles" : { + "0.0" : 0.32417070874258486, + "50.0" : 0.327614753407155, + "90.0" : 0.34253819167665694, + "95.0" : 0.34253819167665694, + "99.0" : 0.34253819167665694, + "99.9" : 0.34253819167665694, + "99.99" : 0.34253819167665694, + "99.999" : 0.34253819167665694, + "99.9999" : 0.34253819167665694, + "100.0" : 0.34253819167665694 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.327614753407155, + 0.32804313826472037, + 0.3272351357657068 + ], + [ + 0.32650751772887554, + 0.32417070874258486, + 0.3257033246482543 + ], + [ + 0.34253819167665694, + 0.3412840927923009, + 0.3412204506090695 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16257438283358802, + "scoreError" : 0.0015079171733187204, + "scoreConfidence" : [ + 0.1610664656602693, + 0.16408230000690674 + ], + "scorePercentiles" : { + "0.0" : 0.16145170934306333, + "50.0" : 0.16253732088872996, + "90.0" : 0.16372694721590073, + "95.0" : 0.16372694721590073, + "99.0" : 0.16372694721590073, + "99.9" : 0.16372694721590073, + "99.99" : 0.16372694721590073, + "99.999" : 0.16372694721590073, + "99.9999" : 0.16372694721590073, + "100.0" : 0.16372694721590073 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16217501864975756, + 0.16253732088872996, + 0.16269733150573498 + ], + [ + 0.16175499032722448, + 0.1616261715800362, + 0.16145170934306333 + ], + [ + 0.16363694076449797, + 0.16372694721590073, + 0.16356301522734706 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3891936853118775, + "scoreError" : 0.005998609157386771, + "scoreConfidence" : [ + 0.3831950761544907, + 0.39519229446926424 + ], + "scorePercentiles" : { + "0.0" : 0.3858164131558642, + "50.0" : 0.38843062722858807, + "90.0" : 0.39801564624875624, + "95.0" : 0.39801564624875624, + "99.0" : 0.39801564624875624, + "99.9" : 0.39801564624875624, + "99.99" : 0.39801564624875624, + "99.999" : 0.39801564624875624, + "99.9999" : 0.39801564624875624, + "100.0" : 0.39801564624875624 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.39801564624875624, + 0.3878194711859148, + 0.38843062722858807 + ], + [ + 0.3893662909593521, + 0.38925788793741, + 0.3895342826705099 + ], + [ + 0.3883784769505612, + 0.38612407146994093, + 0.3858164131558642 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15658902672809438, + "scoreError" : 0.003943926804707067, + "scoreConfidence" : [ + 0.15264509992338732, + 0.16053295353280145 + ], + "scorePercentiles" : { + "0.0" : 0.15414155185967293, + "50.0" : 0.15551880479611832, + "90.0" : 0.16021518488256592, + "95.0" : 0.16021518488256592, + "99.0" : 0.16021518488256592, + "99.9" : 0.16021518488256592, + "99.99" : 0.16021518488256592, + "99.999" : 0.16021518488256592, + "99.9999" : 0.16021518488256592, + "100.0" : 0.16021518488256592 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1564305789794769, + 0.15551880479611832, + 0.15540823026356684 + ], + [ + 0.15484570807655385, + 0.1542891126745352, + 0.15414155185967293 + ], + [ + 0.16021518488256592, + 0.15947678614486652, + 0.1589752828754928 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04743935270487015, + "scoreError" : 0.0014339295540742704, + "scoreConfidence" : [ + 0.04600542315079588, + 0.048873282258944425 + ], + "scorePercentiles" : { + "0.0" : 0.04618683700436459, + "50.0" : 0.0473992635310958, + "90.0" : 0.04867919720586088, + "95.0" : 0.04867919720586088, + "99.0" : 0.04867919720586088, + "99.9" : 0.04867919720586088, + "99.99" : 0.04867919720586088, + "99.999" : 0.04867919720586088, + "99.9999" : 0.04867919720586088, + "100.0" : 0.04867919720586088 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.0473992635310958, + 0.04618683700436459, + 0.04625727953835835 + ], + [ + 0.047923044246684976, + 0.04867919720586088, + 0.04845878558760249 + ], + [ + 0.04747248577504973, + 0.047303504564719684, + 0.047273776890094876 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9071703.616870854, + "scoreError" : 160321.0639152296, + "scoreConfidence" : [ + 8911382.552955624, + 9232024.680786084 + ], + "scorePercentiles" : { + "0.0" : 8985842.091644205, + "50.0" : 9013161.59009009, + "90.0" : 9212517.708103132, + "95.0" : 9212517.708103132, + "99.0" : 9212517.708103132, + "99.9" : 9212517.708103132, + "99.99" : 9212517.708103132, + "99.999" : 9212517.708103132, + "99.9999" : 9212517.708103132, + "100.0" : 9212517.708103132 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9172326.609532539, + 9212517.708103132, + 9203796.53449862 + ], + [ + 9047417.420433996, + 9013161.59009009, + 9006460.631863186 + ], + [ + 9005402.827182718, + 8985842.091644205, + 8998407.13848921 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-04-03T04:20:22Z-bfd7b46570071ef5cb5edd7377fbc51fb477ee3d-jdk17.json b/performance-results/2025-04-03T04:20:22Z-bfd7b46570071ef5cb5edd7377fbc51fb477ee3d-jdk17.json new file mode 100644 index 0000000000..69a93bc83d --- /dev/null +++ b/performance-results/2025-04-03T04:20:22Z-bfd7b46570071ef5cb5edd7377fbc51fb477ee3d-jdk17.json @@ -0,0 +1,1310 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4171100486983814, + "scoreError" : 0.029050359197470347, + "scoreConfidence" : [ + 3.388059689500911, + 3.4461604078958517 + ], + "scorePercentiles" : { + "0.0" : 3.4120508869424384, + "50.0" : 3.417248324070669, + "90.0" : 3.4218926597097488, + "95.0" : 3.4218926597097488, + "99.0" : 3.4218926597097488, + "99.9" : 3.4218926597097488, + "99.99" : 3.4218926597097488, + "99.999" : 3.4218926597097488, + "99.9999" : 3.4218926597097488, + "100.0" : 3.4218926597097488 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4120508869424384, + 3.4147862249287275 + ], + [ + 3.4197104232126105, + 3.4218926597097488 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7291216308035666, + "scoreError" : 0.010634177230505332, + "scoreConfidence" : [ + 1.7184874535730612, + 1.739755808034072 + ], + "scorePercentiles" : { + "0.0" : 1.7278385132821346, + "50.0" : 1.7286578762881986, + "90.0" : 1.7313322573557348, + "95.0" : 1.7313322573557348, + "99.0" : 1.7313322573557348, + "99.9" : 1.7313322573557348, + "99.99" : 1.7313322573557348, + "99.999" : 1.7313322573557348, + "99.9999" : 1.7313322573557348, + "100.0" : 1.7313322573557348 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7278385132821346, + 1.7278959373704097 + ], + [ + 1.7313322573557348, + 1.7294198152059874 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8672043251385466, + "scoreError" : 0.006581078982478564, + "scoreConfidence" : [ + 0.860623246156068, + 0.8737854041210252 + ], + "scorePercentiles" : { + "0.0" : 0.8660632068022843, + "50.0" : 0.8671657259458264, + "90.0" : 0.8684226418602491, + "95.0" : 0.8684226418602491, + "99.0" : 0.8684226418602491, + "99.9" : 0.8684226418602491, + "99.99" : 0.8684226418602491, + "99.999" : 0.8684226418602491, + "99.9999" : 0.8684226418602491, + "100.0" : 0.8684226418602491 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8667643732520639, + 0.8675670786395889 + ], + [ + 0.8660632068022843, + 0.8684226418602491 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.162001317325213, + "scoreError" : 0.12285363357149377, + "scoreConfidence" : [ + 16.03914768375372, + 16.284854950896708 + ], + "scorePercentiles" : { + "0.0" : 16.08098225063554, + "50.0" : 16.158180279448743, + "90.0" : 16.264393757728516, + "95.0" : 16.264393757728516, + "99.0" : 16.264393757728516, + "99.9" : 16.264393757728516, + "99.99" : 16.264393757728516, + "99.999" : 16.264393757728516, + "99.9999" : 16.264393757728516, + "100.0" : 16.264393757728516 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.2498132766456, + 16.232697591247195, + 16.264393757728516 + ], + [ + 16.167029538529444, + 16.158180279448743, + 16.13834542567008 + ], + [ + 16.08543601225834, + 16.08098225063554, + 16.08113372376346 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2713.372153938922, + "scoreError" : 38.77531189294057, + "scoreConfidence" : [ + 2674.5968420459817, + 2752.1474658318625 + ], + "scorePercentiles" : { + "0.0" : 2691.019153774729, + "50.0" : 2702.636105906266, + "90.0" : 2748.609138326982, + "95.0" : 2748.609138326982, + "99.0" : 2748.609138326982, + "99.9" : 2748.609138326982, + "99.99" : 2748.609138326982, + "99.999" : 2748.609138326982, + "99.9999" : 2748.609138326982, + "100.0" : 2748.609138326982 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2740.4996046953506, + 2748.609138326982, + 2741.3544851741417 + ], + [ + 2695.644525570017, + 2695.7406319067013, + 2691.019153774729 + ], + [ + 2705.513011761636, + 2699.332728334476, + 2702.636105906266 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 70136.62092217, + "scoreError" : 1833.6126634576278, + "scoreConfidence" : [ + 68303.00825871238, + 71970.23358562762 + ], + "scorePercentiles" : { + "0.0" : 68636.20359353884, + "50.0" : 70840.18396558113, + "90.0" : 70914.97550703726, + "95.0" : 70914.97550703726, + "99.0" : 70914.97550703726, + "99.9" : 70914.97550703726, + "99.99" : 70914.97550703726, + "99.999" : 70914.97550703726, + "99.9999" : 70914.97550703726, + "100.0" : 70914.97550703726 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 70884.08944043725, + 70894.06686001566, + 70759.17612968457 + ], + [ + 70887.07004709519, + 70840.18396558113, + 70914.97550703726 + ], + [ + 68636.20359353884, + 68734.45468992933, + 68679.36806621081 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 357.3760123281292, + "scoreError" : 8.909817000066589, + "scoreConfidence" : [ + 348.4661953280626, + 366.2858293281958 + ], + "scorePercentiles" : { + "0.0" : 351.1186240805577, + "50.0" : 357.0735177853829, + "90.0" : 363.5453188941034, + "95.0" : 363.5453188941034, + "99.0" : 363.5453188941034, + "99.9" : 363.5453188941034, + "99.99" : 363.5453188941034, + "99.999" : 363.5453188941034, + "99.9999" : 363.5453188941034, + "100.0" : 363.5453188941034 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 351.3800725684625, + 351.1186240805577, + 351.14898598830297 + ], + [ + 356.46301856590736, + 357.0735177853829, + 359.1732893240755 + ], + [ + 363.5453188941034, + 363.31735936112716, + 363.1639243852433 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 108.21095768888088, + "scoreError" : 1.728555284357556, + "scoreConfidence" : [ + 106.48240240452333, + 109.93951297323844 + ], + "scorePercentiles" : { + "0.0" : 106.6361791958133, + "50.0" : 108.34945308402088, + "90.0" : 109.38279632848486, + "95.0" : 109.38279632848486, + "99.0" : 109.38279632848486, + "99.9" : 109.38279632848486, + "99.99" : 109.38279632848486, + "99.999" : 109.38279632848486, + "99.9999" : 109.38279632848486, + "100.0" : 109.38279632848486 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 108.21218065367852, + 108.34945308402088, + 108.46737250455398 + ], + [ + 106.6361791958133, + 107.10942310914471, + 107.19210526928929 + ], + [ + 109.1947139384956, + 109.35439511644663, + 109.38279632848486 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06169959127089957, + "scoreError" : 0.0010302074088845569, + "scoreConfidence" : [ + 0.060669383862015015, + 0.06272979867978414 + ], + "scorePercentiles" : { + "0.0" : 0.06091269048924299, + "50.0" : 0.0620058904927547, + "90.0" : 0.0622928827164339, + "95.0" : 0.0622928827164339, + "99.0" : 0.0622928827164339, + "99.9" : 0.0622928827164339, + "99.99" : 0.0622928827164339, + "99.999" : 0.0622928827164339, + "99.9999" : 0.0622928827164339, + "100.0" : 0.0622928827164339 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06222775979141516, + 0.0622928827164339, + 0.0622715326828114 + ], + [ + 0.06091787278719283, + 0.06091326277029908, + 0.06091269048924299 + ], + [ + 0.0617303522657827, + 0.0620058904927547, + 0.06202407744216337 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.6798945543601994E-4, + "scoreError" : 1.651439730618763E-5, + "scoreConfidence" : [ + 3.514750581298323E-4, + 3.845038527422076E-4 + ], + "scorePercentiles" : { + "0.0" : 3.5445183380887837E-4, + "50.0" : 3.6962223546356776E-4, + "90.0" : 3.7913274260289705E-4, + "95.0" : 3.7913274260289705E-4, + "99.0" : 3.7913274260289705E-4, + "99.9" : 3.7913274260289705E-4, + "99.99" : 3.7913274260289705E-4, + "99.999" : 3.7913274260289705E-4, + "99.9999" : 3.7913274260289705E-4, + "100.0" : 3.7913274260289705E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.7913274260289705E-4, + 3.772585944041239E-4, + 3.7845987324760806E-4 + ], + [ + 3.6962223546356776E-4, + 3.698791820859403E-4, + 3.695285413619942E-4 + ], + [ + 3.5902273255519643E-4, + 3.5445183380887837E-4, + 3.545493633939737E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014403353417093919, + "scoreError" : 5.362041725711555E-4, + "scoreConfidence" : [ + 0.013867149244522764, + 0.014939557589665075 + ], + "scorePercentiles" : { + "0.0" : 0.01398167059872964, + "50.0" : 0.014544293900340769, + "90.0" : 0.014684813553348615, + "95.0" : 0.014684813553348615, + "99.0" : 0.014684813553348615, + "99.9" : 0.014684813553348615, + "99.99" : 0.014684813553348615, + "99.999" : 0.014684813553348615, + "99.9999" : 0.014684813553348615, + "100.0" : 0.014684813553348615 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014683949145623569, + 0.014679144894583022, + 0.014684813553348615 + ], + [ + 0.014533443404507641, + 0.014544293900340769, + 0.014547071132853868 + ], + [ + 0.013982993723109276, + 0.01398167059872964, + 0.013992800400748885 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9704870782068402, + "scoreError" : 0.010541865346184598, + "scoreConfidence" : [ + 0.9599452128606556, + 0.9810289435530248 + ], + "scorePercentiles" : { + "0.0" : 0.9624246163025695, + "50.0" : 0.9728594578793774, + "90.0" : 0.9772800762239813, + "95.0" : 0.9772800762239813, + "99.0" : 0.9772800762239813, + "99.9" : 0.9772800762239813, + "99.99" : 0.9772800762239813, + "99.999" : 0.9772800762239813, + "99.9999" : 0.9772800762239813, + "100.0" : 0.9772800762239813 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9760755084911185, + 0.9772800762239813, + 0.9765354366761059 + ], + [ + 0.9710249972812894, + 0.9728594578793774, + 0.9729500664461523 + ], + [ + 0.9625655503368624, + 0.9624246163025695, + 0.9626679942241048 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.013325571908170615, + "scoreError" : 4.7289741439673064E-4, + "scoreConfidence" : [ + 0.012852674493773884, + 0.013798469322567345 + ], + "scorePercentiles" : { + "0.0" : 0.013084378469896164, + "50.0" : 0.013347866633788563, + "90.0" : 0.013475767826630661, + "95.0" : 0.013475767826630661, + "99.0" : 0.013475767826630661, + "99.9" : 0.013475767826630661, + "99.99" : 0.013475767826630661, + "99.999" : 0.013475767826630661, + "99.9999" : 0.013475767826630661, + "100.0" : 0.013475767826630661 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013084378469896164, + 0.013225057919112142, + 0.013227907234958916 + ], + [ + 0.01347249396580759, + 0.01346782603261821, + 0.013475767826630661 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.51804067922278, + "scoreError" : 0.10090682815622272, + "scoreConfidence" : [ + 3.417133851066557, + 3.6189475073790027 + ], + "scorePercentiles" : { + "0.0" : 3.4634543123268697, + "50.0" : 3.5154336537433952, + "90.0" : 3.556867966571835, + "95.0" : 3.556867966571835, + "99.0" : 3.556867966571835, + "99.9" : 3.556867966571835, + "99.99" : 3.556867966571835, + "99.999" : 3.556867966571835, + "99.9999" : 3.556867966571835, + "100.0" : 3.556867966571835 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.4634543123268697, + 3.5054302095304837, + 3.5006572841147654 + ], + [ + 3.525437097956307, + 3.556867966571835, + 3.5563972048364154 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.788730153094184, + "scoreError" : 0.06903096873348752, + "scoreConfidence" : [ + 2.719699184360697, + 2.8577611218276715 + ], + "scorePercentiles" : { + "0.0" : 2.7437548197530863, + "50.0" : 2.783771960478709, + "90.0" : 2.849354674928775, + "95.0" : 2.849354674928775, + "99.0" : 2.849354674928775, + "99.9" : 2.849354674928775, + "99.99" : 2.849354674928775, + "99.999" : 2.849354674928775, + "99.9999" : 2.849354674928775, + "100.0" : 2.849354674928775 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.7891072551589513, + 2.783771960478709, + 2.775938651124063 + ], + [ + 2.824776698107879, + 2.840119266609881, + 2.849354674928775 + ], + [ + 2.7456887584408456, + 2.7460592932454695, + 2.7437548197530863 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17712537921057037, + "scoreError" : 0.007302705141392033, + "scoreConfidence" : [ + 0.16982267406917834, + 0.1844280843519624 + ], + "scorePercentiles" : { + "0.0" : 0.17273654465997618, + "50.0" : 0.17481974593989827, + "90.0" : 0.18281082563708823, + "95.0" : 0.18281082563708823, + "99.0" : 0.18281082563708823, + "99.9" : 0.18281082563708823, + "99.99" : 0.18281082563708823, + "99.999" : 0.18281082563708823, + "99.9999" : 0.18281082563708823, + "100.0" : 0.18281082563708823 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1745027607273108, + 0.1769361178187866, + 0.17273654465997618 + ], + [ + 0.17481974593989827, + 0.17345907777700686, + 0.1735599226283453 + ], + [ + 0.18281082563708823, + 0.18277720421106503, + 0.18252621349565598 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.32447753868441737, + "scoreError" : 0.005001733991219815, + "scoreConfidence" : [ + 0.31947580469319753, + 0.3294792726756372 + ], + "scorePercentiles" : { + "0.0" : 0.3203402676660901, + "50.0" : 0.3253693742964047, + "90.0" : 0.32748490490224974, + "95.0" : 0.32748490490224974, + "99.0" : 0.32748490490224974, + "99.9" : 0.32748490490224974, + "99.99" : 0.32748490490224974, + "99.999" : 0.32748490490224974, + "99.9999" : 0.32748490490224974, + "100.0" : 0.32748490490224974 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.32748490490224974, + 0.3271972053396152, + 0.3270538788304935 + ], + [ + 0.3260087019396903, + 0.3252007965269422, + 0.3253693742964047 + ], + [ + 0.321195865324083, + 0.3203402676660901, + 0.3204468533341878 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16340967242962043, + "scoreError" : 0.011490652019065893, + "scoreConfidence" : [ + 0.15191902041055452, + 0.17490032444868633 + ], + "scorePercentiles" : { + "0.0" : 0.15772524404208002, + "50.0" : 0.15996247744577388, + "90.0" : 0.17276041387233307, + "95.0" : 0.17276041387233307, + "99.0" : 0.17276041387233307, + "99.9" : 0.17276041387233307, + "99.99" : 0.17276041387233307, + "99.999" : 0.17276041387233307, + "99.9999" : 0.17276041387233307, + "100.0" : 0.17276041387233307 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15996247744577388, + 0.15985878575995907, + 0.16040340945399717 + ], + [ + 0.15772524404208002, + 0.157725860035961, + 0.1577472638735527 + ], + [ + 0.17276041387233307, + 0.17239612719154584, + 0.17210747019138098 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.38778148958174263, + "scoreError" : 0.007870026339949909, + "scoreConfidence" : [ + 0.3799114632417927, + 0.39565151592169256 + ], + "scorePercentiles" : { + "0.0" : 0.38187174053001377, + "50.0" : 0.388548793379439, + "90.0" : 0.39541730797516905, + "95.0" : 0.39541730797516905, + "99.0" : 0.39541730797516905, + "99.9" : 0.39541730797516905, + "99.99" : 0.39541730797516905, + "99.999" : 0.39541730797516905, + "99.9999" : 0.39541730797516905, + "100.0" : 0.39541730797516905 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3931338122026969, + 0.3896887151819811, + 0.38912040210116733 + ], + [ + 0.39541730797516905, + 0.388548793379439, + 0.38593098062673664 + ], + [ + 0.38401105663927504, + 0.38187174053001377, + 0.3823105975992048 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15859959775618343, + "scoreError" : 0.004781731731620883, + "scoreConfidence" : [ + 0.15381786602456254, + 0.16338132948780432 + ], + "scorePercentiles" : { + "0.0" : 0.15511315565379247, + "50.0" : 0.15770749495347736, + "90.0" : 0.16296427483092968, + "95.0" : 0.16296427483092968, + "99.0" : 0.16296427483092968, + "99.9" : 0.16296427483092968, + "99.99" : 0.16296427483092968, + "99.999" : 0.16296427483092968, + "99.9999" : 0.16296427483092968, + "100.0" : 0.16296427483092968 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15585705683961162, + 0.1566942354747728, + 0.15511315565379247 + ], + [ + 0.16296427483092968, + 0.16186691430883782, + 0.16168290255614298 + ], + [ + 0.15766940961765866, + 0.15784093557042742, + 0.15770749495347736 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04710584983796012, + "scoreError" : 5.002445975454384E-4, + "scoreConfidence" : [ + 0.04660560524041468, + 0.047606094435505564 + ], + "scorePercentiles" : { + "0.0" : 0.04662526819408893, + "50.0" : 0.047111269473208144, + "90.0" : 0.04774415838473731, + "95.0" : 0.04774415838473731, + "99.0" : 0.04774415838473731, + "99.9" : 0.04774415838473731, + "99.99" : 0.04774415838473731, + "99.999" : 0.04774415838473731, + "99.9999" : 0.04774415838473731, + "100.0" : 0.04774415838473731 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04774415838473731, + 0.04719217090366819, + 0.04711298183822594 + ], + [ + 0.04718592201198509, + 0.047111269473208144, + 0.046999683827607275 + ], + [ + 0.0470874619162421, + 0.046893731991878115, + 0.04662526819408893 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9443774.941414071, + "scoreError" : 307746.71388554137, + "scoreConfidence" : [ + 9136028.22752853, + 9751521.655299613 + ], + "scorePercentiles" : { + "0.0" : 9286955.811513463, + "50.0" : 9365019.601123596, + "90.0" : 9707768.672162948, + "95.0" : 9707768.672162948, + "99.0" : 9707768.672162948, + "99.9" : 9707768.672162948, + "99.99" : 9707768.672162948, + "99.999" : 9707768.672162948, + "99.9999" : 9707768.672162948, + "100.0" : 9707768.672162948 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9286955.811513463, + 9303999.322790697, + 9307733.983255815 + ], + [ + 9309956.244651163, + 9365232.038389513, + 9365019.601123596 + ], + [ + 9707768.672162948, + 9675951.720502902, + 9671357.078336557 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-04-03T04:37:11Z-064de5fd6e70ca895fb1a652ac7d4f27423b2831-jdk17.json b/performance-results/2025-04-03T04:37:11Z-064de5fd6e70ca895fb1a652ac7d4f27423b2831-jdk17.json new file mode 100644 index 0000000000..967434fc3e --- /dev/null +++ b/performance-results/2025-04-03T04:37:11Z-064de5fd6e70ca895fb1a652ac7d4f27423b2831-jdk17.json @@ -0,0 +1,1310 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.398063238727424, + "scoreError" : 0.01846794614525216, + "scoreConfidence" : [ + 3.379595292582172, + 3.4165311848726763 + ], + "scorePercentiles" : { + "0.0" : 3.394463481045468, + "50.0" : 3.3981746276446567, + "90.0" : 3.401440218574916, + "95.0" : 3.401440218574916, + "99.0" : 3.401440218574916, + "99.9" : 3.401440218574916, + "99.99" : 3.401440218574916, + "99.999" : 3.401440218574916, + "99.9999" : 3.401440218574916, + "100.0" : 3.401440218574916 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.394463481045468, + 3.3979334679294224 + ], + [ + 3.398415787359891, + 3.401440218574916 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7155884162836184, + "scoreError" : 0.01669652478284702, + "scoreConfidence" : [ + 1.6988918915007714, + 1.7322849410664654 + ], + "scorePercentiles" : { + "0.0" : 1.7121557905255511, + "50.0" : 1.715993604740984, + "90.0" : 1.7182106651269544, + "95.0" : 1.7182106651269544, + "99.0" : 1.7182106651269544, + "99.9" : 1.7182106651269544, + "99.99" : 1.7182106651269544, + "99.999" : 1.7182106651269544, + "99.9999" : 1.7182106651269544, + "100.0" : 1.7182106651269544 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7121557905255511, + 1.7167149547253382 + ], + [ + 1.7152722547566301, + 1.7182106651269544 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.860582322212074, + "scoreError" : 0.007014266752437115, + "scoreConfidence" : [ + 0.8535680554596369, + 0.8675965889645111 + ], + "scorePercentiles" : { + "0.0" : 0.8590306137321312, + "50.0" : 0.8609782904232638, + "90.0" : 0.8613420942696371, + "95.0" : 0.8613420942696371, + "99.0" : 0.8613420942696371, + "99.9" : 0.8613420942696371, + "99.99" : 0.8613420942696371, + "99.999" : 0.8613420942696371, + "99.9999" : 0.8613420942696371, + "100.0" : 0.8613420942696371 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8613218540335297, + 0.8613420942696371 + ], + [ + 0.8590306137321312, + 0.8606347268129979 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 15.761189069739004, + "scoreError" : 0.15368336132423224, + "scoreConfidence" : [ + 15.607505708414772, + 15.914872431063236 + ], + "scorePercentiles" : { + "0.0" : 15.647324344216493, + "50.0" : 15.774902689094654, + "90.0" : 15.862001171401516, + "95.0" : 15.862001171401516, + "99.0" : 15.862001171401516, + "99.9" : 15.862001171401516, + "99.99" : 15.862001171401516, + "99.999" : 15.862001171401516, + "99.9999" : 15.862001171401516, + "100.0" : 15.862001171401516 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 15.691891086008026, + 15.647324344216493, + 15.648750806162413 + ], + [ + 15.691263256496491, + 15.834115149372924, + 15.843618460484318 + ], + [ + 15.862001171401516, + 15.856834664414194, + 15.774902689094654 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2605.564647314867, + "scoreError" : 71.75800348528772, + "scoreConfidence" : [ + 2533.8066438295796, + 2677.322650800155 + ], + "scorePercentiles" : { + "0.0" : 2549.627018607967, + "50.0" : 2605.008813064446, + "90.0" : 2656.065490907737, + "95.0" : 2656.065490907737, + "99.0" : 2656.065490907737, + "99.9" : 2656.065490907737, + "99.99" : 2656.065490907737, + "99.999" : 2656.065490907737, + "99.9999" : 2656.065490907737, + "100.0" : 2656.065490907737 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2656.065490907737, + 2650.5415035008077, + 2639.3811388336094 + ], + [ + 2549.627018607967, + 2554.9937206067393, + 2560.1159714856094 + ], + [ + 2637.7776962860908, + 2596.5704725407954, + 2605.008813064446 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 69899.48411961367, + "scoreError" : 1599.6195809567562, + "scoreConfidence" : [ + 68299.86453865691, + 71499.10370057043 + ], + "scorePercentiles" : { + "0.0" : 68635.08400989581, + "50.0" : 70097.78329072687, + "90.0" : 70958.29943121137, + "95.0" : 70958.29943121137, + "99.0" : 70958.29943121137, + "99.9" : 70958.29943121137, + "99.99" : 70958.29943121137, + "99.999" : 70958.29943121137, + "99.9999" : 70958.29943121137, + "100.0" : 70958.29943121137 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 70897.41237148685, + 70958.29943121137, + 70827.88010165881 + ], + [ + 70034.7228781272, + 70111.79570507018, + 70097.78329072687 + ], + [ + 68771.26924276495, + 68635.08400989581, + 68761.11004558101 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 318.2890154966056, + "scoreError" : 3.5026047930382624, + "scoreConfidence" : [ + 314.78641070356736, + 321.79162028964384 + ], + "scorePercentiles" : { + "0.0" : 313.54494204120397, + "50.0" : 318.3475360395479, + "90.0" : 321.16303018492044, + "95.0" : 321.16303018492044, + "99.0" : 321.16303018492044, + "99.9" : 321.16303018492044, + "99.99" : 321.16303018492044, + "99.999" : 321.16303018492044, + "99.9999" : 321.16303018492044, + "100.0" : 321.16303018492044 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 319.28675349502834, + 319.88635243263707, + 321.16303018492044 + ], + [ + 318.3475360395479, + 317.7739042163214, + 317.9026036071082 + ], + [ + 318.4421318678474, + 318.25388558483576, + 313.54494204120397 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 99.19790546048765, + "scoreError" : 4.922560682981105, + "scoreConfidence" : [ + 94.27534477750655, + 104.12046614346875 + ], + "scorePercentiles" : { + "0.0" : 95.29875350183407, + "50.0" : 99.31747082669419, + "90.0" : 102.77934146542273, + "95.0" : 102.77934146542273, + "99.0" : 102.77934146542273, + "99.9" : 102.77934146542273, + "99.99" : 102.77934146542273, + "99.999" : 102.77934146542273, + "99.9999" : 102.77934146542273, + "100.0" : 102.77934146542273 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 95.5248125728636, + 95.29875350183407, + 96.26365728304859 + ], + [ + 99.02528655018615, + 100.36379191537276, + 99.31747082669419 + ], + [ + 102.43738296774471, + 102.77934146542273, + 101.77065206122195 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06388822878506939, + "scoreError" : 9.979567518627098E-4, + "scoreConfidence" : [ + 0.06289027203320668, + 0.0648861855369321 + ], + "scorePercentiles" : { + "0.0" : 0.06305835662668836, + "50.0" : 0.06389496701787117, + "90.0" : 0.06479736363636364, + "95.0" : 0.06479736363636364, + "99.0" : 0.06479736363636364, + "99.9" : 0.06479736363636364, + "99.99" : 0.06479736363636364, + "99.999" : 0.06479736363636364, + "99.9999" : 0.06479736363636364, + "100.0" : 0.06479736363636364 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06374456063947781, + 0.06419815483084035, + 0.06389496701787117 + ], + [ + 0.06406173624296935, + 0.06479736363636364, + 0.06459939156217903 + ], + [ + 0.0632592709037082, + 0.06338025760552668, + 0.06305835662668836 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.83019606931175E-4, + "scoreError" : 1.3784581850369122E-5, + "scoreConfidence" : [ + 3.6923502508080585E-4, + 3.968041887815441E-4 + ], + "scorePercentiles" : { + "0.0" : 3.7020701441402385E-4, + "50.0" : 3.844138049114324E-4, + "90.0" : 3.934721148100017E-4, + "95.0" : 3.934721148100017E-4, + "99.0" : 3.934721148100017E-4, + "99.9" : 3.934721148100017E-4, + "99.99" : 3.934721148100017E-4, + "99.999" : 3.934721148100017E-4, + "99.9999" : 3.934721148100017E-4, + "100.0" : 3.934721148100017E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.8526200194871147E-4, + 3.8127326824683404E-4, + 3.844138049114324E-4 + ], + [ + 3.934721148100017E-4, + 3.9015963338102455E-4, + 3.9196502741253386E-4 + ], + [ + 3.7619870712614367E-4, + 3.7422489012986976E-4, + 3.7020701441402385E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014507169573223098, + "scoreError" : 5.580762315377476E-4, + "scoreConfidence" : [ + 0.01394909334168535, + 0.015065245804760846 + ], + "scorePercentiles" : { + "0.0" : 0.014197896179254592, + "50.0" : 0.014309983227464544, + "90.0" : 0.014960949395286768, + "95.0" : 0.014960949395286768, + "99.0" : 0.014960949395286768, + "99.9" : 0.014960949395286768, + "99.99" : 0.014960949395286768, + "99.999" : 0.014960949395286768, + "99.9999" : 0.014960949395286768, + "100.0" : 0.014960949395286768 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014448763521694528, + 0.014238935660798879, + 0.014197896179254592 + ], + [ + 0.014309983227464544, + 0.014273343558159617, + 0.014274491531762492 + ], + [ + 0.014931303598997824, + 0.014960949395286768, + 0.01492885948558863 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9907268310671148, + "scoreError" : 0.02012586950490829, + "scoreConfidence" : [ + 0.9706009615622065, + 1.0108527005720231 + ], + "scorePercentiles" : { + "0.0" : 0.9740569874354729, + "50.0" : 0.9971856530062818, + "90.0" : 1.0045795006529383, + "95.0" : 1.0045795006529383, + "99.0" : 1.0045795006529383, + "99.9" : 1.0045795006529383, + "99.99" : 1.0045795006529383, + "99.999" : 1.0045795006529383, + "99.9999" : 1.0045795006529383, + "100.0" : 1.0045795006529383 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9986444846215299, + 0.9971856530062818, + 1.0045795006529383 + ], + [ + 0.9973045451735142, + 0.9972825439768648, + 0.9962513022213367 + ], + [ + 0.9757165716655284, + 0.9755198908505658, + 0.9740569874354729 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.013343001108488255, + "scoreError" : 1.603246869937958E-4, + "scoreConfidence" : [ + 0.01318267642149446, + 0.01350332579548205 + ], + "scorePercentiles" : { + "0.0" : 0.013283585089821314, + "50.0" : 0.013325930652973463, + "90.0" : 0.01342174419659634, + "95.0" : 0.01342174419659634, + "99.0" : 0.01342174419659634, + "99.9" : 0.01342174419659634, + "99.99" : 0.01342174419659634, + "99.999" : 0.01342174419659634, + "99.9999" : 0.01342174419659634, + "100.0" : 0.01342174419659634 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013296058110407913, + 0.01342174419659634, + 0.013404757948157025 + ], + [ + 0.013328466066544758, + 0.013323395239402168, + 0.013283585089821314 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.9281097096224347, + "scoreError" : 0.19831393229042082, + "scoreConfidence" : [ + 3.729795777332014, + 4.126423641912855 + ], + "scorePercentiles" : { + "0.0" : 3.8423004477726574, + "50.0" : 3.9272893627166936, + "90.0" : 3.9999446554756197, + "95.0" : 3.9999446554756197, + "99.0" : 3.9999446554756197, + "99.9" : 3.9999446554756197, + "99.99" : 3.9999446554756197, + "99.999" : 3.9999446554756197, + "99.9999" : 3.9999446554756197, + "100.0" : 3.9999446554756197 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.9999446554756197, + 3.978067418456643, + 3.9959317412140574 + ], + [ + 3.8423004477726574, + 3.8765113069767443, + 3.8759026878388845 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.1320001021459305, + "scoreError" : 0.1305735498002403, + "scoreConfidence" : [ + 3.00142655234569, + 3.262573651946171 + ], + "scorePercentiles" : { + "0.0" : 3.0153515375339164, + "50.0" : 3.1369162976787957, + "90.0" : 3.216451787459807, + "95.0" : 3.216451787459807, + "99.0" : 3.216451787459807, + "99.9" : 3.216451787459807, + "99.99" : 3.216451787459807, + "99.999" : 3.216451787459807, + "99.9999" : 3.216451787459807, + "100.0" : 3.216451787459807 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.160231842022117, + 3.1369162976787957, + 3.1275856741713572 + ], + [ + 3.216451787459807, + 3.2145117405978785, + 3.214671719061395 + ], + [ + 3.0153515375339164, + 3.052139432102533, + 3.0501408886855748 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1797257930507823, + "scoreError" : 0.006638397579902533, + "scoreConfidence" : [ + 0.17308739547087976, + 0.18636419063068482 + ], + "scorePercentiles" : { + "0.0" : 0.1743994850107253, + "50.0" : 0.18180634640487228, + "90.0" : 0.18315693981574754, + "95.0" : 0.18315693981574754, + "99.0" : 0.18315693981574754, + "99.9" : 0.18315693981574754, + "99.99" : 0.18315693981574754, + "99.999" : 0.18315693981574754, + "99.9999" : 0.18315693981574754, + "100.0" : 0.18315693981574754 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.18180634640487228, + 0.1818186315703351, + 0.18180463257885646 + ], + [ + 0.1746522944566698, + 0.1743994850107253, + 0.1744420070472901 + ], + [ + 0.18315693981574754, + 0.18280616558204152, + 0.18264563499050263 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3383194540641472, + "scoreError" : 0.020423803604438278, + "scoreConfidence" : [ + 0.3178956504597089, + 0.3587432576685855 + ], + "scorePercentiles" : { + "0.0" : 0.3253307799863366, + "50.0" : 0.3337108633163146, + "90.0" : 0.355636786656709, + "95.0" : 0.355636786656709, + "99.0" : 0.355636786656709, + "99.9" : 0.355636786656709, + "99.99" : 0.355636786656709, + "99.999" : 0.355636786656709, + "99.9999" : 0.355636786656709, + "100.0" : 0.355636786656709 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3275824299331761, + 0.3281772648661066, + 0.3253307799863366 + ], + [ + 0.3352680090854231, + 0.3337108633163146, + 0.33307845443645084 + ], + [ + 0.3517657857117732, + 0.354324712585034, + 0.355636786656709 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16835279831565275, + "scoreError" : 0.008841408090625332, + "scoreConfidence" : [ + 0.15951139022502742, + 0.1771942064062781 + ], + "scorePercentiles" : { + "0.0" : 0.16128091963551328, + "50.0" : 0.1713425613734494, + "90.0" : 0.1726306326992128, + "95.0" : 0.1726306326992128, + "99.0" : 0.1726306326992128, + "99.9" : 0.1726306326992128, + "99.99" : 0.1726306326992128, + "99.999" : 0.1726306326992128, + "99.9999" : 0.1726306326992128, + "100.0" : 0.1726306326992128 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1713425613734494, + 0.17160019881254718, + 0.17104700237749082 + ], + [ + 0.17248626498439038, + 0.1726306326992128, + 0.17196016485538398 + ], + [ + 0.16128091963551328, + 0.16137944565655912, + 0.16144799444632796 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3952465346387055, + "scoreError" : 0.003297160570744365, + "scoreConfidence" : [ + 0.39194937406796115, + 0.3985436952094499 + ], + "scorePercentiles" : { + "0.0" : 0.39318401466540853, + "50.0" : 0.3945501908387911, + "90.0" : 0.3986785879843725, + "95.0" : 0.3986785879843725, + "99.0" : 0.3986785879843725, + "99.9" : 0.3986785879843725, + "99.99" : 0.3986785879843725, + "99.999" : 0.3986785879843725, + "99.9999" : 0.3986785879843725, + "100.0" : 0.3986785879843725 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3945501908387911, + 0.39391868401150193, + 0.3934821552626402 + ], + [ + 0.3986785879843725, + 0.39347827231949634, + 0.39318401466540853 + ], + [ + 0.3968952295999365, + 0.39692631868698897, + 0.39610535837921335 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1593310385581499, + "scoreError" : 0.0028442450259137868, + "scoreConfidence" : [ + 0.1564867935322361, + 0.1621752835840637 + ], + "scorePercentiles" : { + "0.0" : 0.15777442514554377, + "50.0" : 0.15874837003524145, + "90.0" : 0.1624385157156084, + "95.0" : 0.1624385157156084, + "99.0" : 0.1624385157156084, + "99.9" : 0.1624385157156084, + "99.99" : 0.1624385157156084, + "99.999" : 0.1624385157156084, + "99.9999" : 0.1624385157156084, + "100.0" : 0.1624385157156084 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1624385157156084, + 0.16167678781950753, + 0.16008429511109687 + ], + [ + 0.15874837003524145, + 0.1587637378548295, + 0.1582909996992529 + ], + [ + 0.1581139882998403, + 0.1580882273424285, + 0.15777442514554377 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04777432791293147, + "scoreError" : 0.0013125816839008406, + "scoreConfidence" : [ + 0.04646174622903063, + 0.04908690959683231 + ], + "scorePercentiles" : { + "0.0" : 0.04719819954218289, + "50.0" : 0.04727648992076549, + "90.0" : 0.04886981457571789, + "95.0" : 0.04886981457571789, + "99.0" : 0.04886981457571789, + "99.9" : 0.04886981457571789, + "99.99" : 0.04886981457571789, + "99.999" : 0.04886981457571789, + "99.9999" : 0.04886981457571789, + "100.0" : 0.04886981457571789 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04727648992076549, + 0.04726375017723625, + 0.04729652034904344 + ], + [ + 0.047260753382641366, + 0.04722931846261382, + 0.04719819954218289 + ], + [ + 0.04878328790044441, + 0.04886981457571789, + 0.04879081690573771 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9854902.347201487, + "scoreError" : 395549.2532945072, + "scoreConfidence" : [ + 9459353.09390698, + 1.0250451600495994E7 + ], + "scorePercentiles" : { + "0.0" : 9519942.573739296, + "50.0" : 9846367.802165354, + "90.0" : 1.0131742660931174E7, + "95.0" : 1.0131742660931174E7, + "99.0" : 1.0131742660931174E7, + "99.9" : 1.0131742660931174E7, + "99.99" : 1.0131742660931174E7, + "99.999" : 1.0131742660931174E7, + "99.9999" : 1.0131742660931174E7, + "100.0" : 1.0131742660931174E7 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9718148.198058253, + 9563246.647227533, + 9519942.573739296 + ], + [ + 9846367.802165354, + 9882046.2023692, + 9784536.290322581 + ], + [ + 1.012611225708502E7, + 1.0131742660931174E7, + 1.012197849291498E7 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-04-03T04:39:22Z-064de5fd6e70ca895fb1a652ac7d4f27423b2831-jdk17.json b/performance-results/2025-04-03T04:39:22Z-064de5fd6e70ca895fb1a652ac7d4f27423b2831-jdk17.json new file mode 100644 index 0000000000..0831530274 --- /dev/null +++ b/performance-results/2025-04-03T04:39:22Z-064de5fd6e70ca895fb1a652ac7d4f27423b2831-jdk17.json @@ -0,0 +1,1310 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4028158052032147, + "scoreError" : 0.02698436626698203, + "scoreConfidence" : [ + 3.3758314389362325, + 3.429800171470197 + ], + "scorePercentiles" : { + "0.0" : 3.3984327814572493, + "50.0" : 3.4024482494709245, + "90.0" : 3.40793394041376, + "95.0" : 3.40793394041376, + "99.0" : 3.40793394041376, + "99.9" : 3.40793394041376, + "99.99" : 3.40793394041376, + "99.999" : 3.40793394041376, + "99.9999" : 3.40793394041376, + "100.0" : 3.40793394041376 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.3984327814572493, + 3.400626569701109 + ], + [ + 3.40426992924074, + 3.40793394041376 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7217318691895986, + "scoreError" : 0.010243454629387177, + "scoreConfidence" : [ + 1.7114884145602114, + 1.731975323818986 + ], + "scorePercentiles" : { + "0.0" : 1.719393836215952, + "50.0" : 1.7223979685910846, + "90.0" : 1.722737703360273, + "95.0" : 1.722737703360273, + "99.0" : 1.722737703360273, + "99.9" : 1.722737703360273, + "99.99" : 1.722737703360273, + "99.999" : 1.722737703360273, + "99.9999" : 1.722737703360273, + "100.0" : 1.722737703360273 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7221038886454691, + 1.722737703360273 + ], + [ + 1.719393836215952, + 1.7226920485366999 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8654434507790818, + "scoreError" : 0.008438986629075771, + "scoreConfidence" : [ + 0.8570044641500061, + 0.8738824374081575 + ], + "scorePercentiles" : { + "0.0" : 0.8645342532584883, + "50.0" : 0.8649425572522541, + "90.0" : 0.8673544353533303, + "95.0" : 0.8673544353533303, + "99.0" : 0.8673544353533303, + "99.9" : 0.8673544353533303, + "99.99" : 0.8673544353533303, + "99.999" : 0.8673544353533303, + "99.9999" : 0.8673544353533303, + "100.0" : 0.8673544353533303 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8645342532584883, + 0.8652034852013738 + ], + [ + 0.8646816293031344, + 0.8673544353533303 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 15.856852526851778, + "scoreError" : 0.22239508840105984, + "scoreConfidence" : [ + 15.634457438450719, + 16.07924761525284 + ], + "scorePercentiles" : { + "0.0" : 15.655595185675983, + "50.0" : 15.897855959962087, + "90.0" : 16.075434896788032, + "95.0" : 16.075434896788032, + "99.0" : 16.075434896788032, + "99.9" : 16.075434896788032, + "99.99" : 16.075434896788032, + "99.999" : 16.075434896788032, + "99.9999" : 16.075434896788032, + "100.0" : 16.075434896788032 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 15.795514884463312, + 15.734436696789428, + 15.655595185675983 + ], + [ + 15.961511976581217, + 15.748292618608652, + 15.933875666964484 + ], + [ + 16.075434896788032, + 15.897855959962087, + 15.909154855832826 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2627.694997644631, + "scoreError" : 100.4623977422994, + "scoreConfidence" : [ + 2527.2325999023315, + 2728.15739538693 + ], + "scorePercentiles" : { + "0.0" : 2546.832028910364, + "50.0" : 2617.358010776736, + "90.0" : 2726.1959070049306, + "95.0" : 2726.1959070049306, + "99.0" : 2726.1959070049306, + "99.9" : 2726.1959070049306, + "99.99" : 2726.1959070049306, + "99.999" : 2726.1959070049306, + "99.9999" : 2726.1959070049306, + "100.0" : 2726.1959070049306 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2682.3819623737045, + 2686.3172658046005, + 2726.1959070049306 + ], + [ + 2617.358010776736, + 2566.8713813030668, + 2611.7854559352445 + ], + [ + 2626.9936504978727, + 2546.832028910364, + 2584.5193161951593 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 69994.63854814746, + "scoreError" : 914.8097763908709, + "scoreConfidence" : [ + 69079.82877175658, + 70909.44832453833 + ], + "scorePercentiles" : { + "0.0" : 68967.6464426141, + "50.0" : 70207.4304985715, + "90.0" : 70500.16253561925, + "95.0" : 70500.16253561925, + "99.0" : 70500.16253561925, + "99.9" : 70500.16253561925, + "99.99" : 70500.16253561925, + "99.999" : 70500.16253561925, + "99.9999" : 70500.16253561925, + "100.0" : 70500.16253561925 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 69828.42820603953, + 69413.01432131404, + 69734.47790099871 + ], + [ + 70448.36211536035, + 70207.4304985715, + 70500.16253561925 + ], + [ + 70468.08488030932, + 68967.6464426141, + 70384.14003250026 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 346.7931852807508, + "scoreError" : 3.3342629800102954, + "scoreConfidence" : [ + 343.4589223007405, + 350.12744826076107 + ], + "scorePercentiles" : { + "0.0" : 343.7680474475259, + "50.0" : 346.25243329497414, + "90.0" : 349.58594626041577, + "95.0" : 349.58594626041577, + "99.0" : 349.58594626041577, + "99.9" : 349.58594626041577, + "99.99" : 349.58594626041577, + "99.999" : 349.58594626041577, + "99.9999" : 349.58594626041577, + "100.0" : 349.58594626041577 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 343.7680474475259, + 345.8715452517336, + 347.96462884988966 + ], + [ + 346.07920593473517, + 346.25243329497414, + 347.765244689211 + ], + [ + 344.63011611183293, + 349.22149968643856, + 349.58594626041577 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 103.84830895680096, + "scoreError" : 2.853451773658508, + "scoreConfidence" : [ + 100.99485718314246, + 106.70176073045947 + ], + "scorePercentiles" : { + "0.0" : 101.71035761699841, + "50.0" : 103.04915723582602, + "90.0" : 106.43837078897053, + "95.0" : 106.43837078897053, + "99.0" : 106.43837078897053, + "99.9" : 106.43837078897053, + "99.99" : 106.43837078897053, + "99.999" : 106.43837078897053, + "99.9999" : 106.43837078897053, + "100.0" : 106.43837078897053 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 101.71035761699841, + 102.96619234811652, + 103.04915723582602 + ], + [ + 106.43837078897053, + 106.37364400433496, + 105.10326118216283 + ], + [ + 103.40392088198075, + 102.76412725260485, + 102.82574930021367 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06326091308772883, + "scoreError" : 6.878635265646218E-4, + "scoreConfidence" : [ + 0.0625730495611642, + 0.06394877661429345 + ], + "scorePercentiles" : { + "0.0" : 0.06274002661396574, + "50.0" : 0.06328955167525284, + "90.0" : 0.06400515197772658, + "95.0" : 0.06400515197772658, + "99.0" : 0.06400515197772658, + "99.9" : 0.06400515197772658, + "99.99" : 0.06400515197772658, + "99.999" : 0.06400515197772658, + "99.9999" : 0.06400515197772658, + "100.0" : 0.06400515197772658 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06287397867350723, + 0.06279671892543612, + 0.06346642787149512 + ], + [ + 0.06337502196548643, + 0.06274002661396574, + 0.06328955167525284 + ], + [ + 0.06356635234142094, + 0.06400515197772658, + 0.06323498774526852 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.855581819461642E-4, + "scoreError" : 6.921607125895276E-6, + "scoreConfidence" : [ + 3.786365748202689E-4, + 3.924797890720594E-4 + ], + "scorePercentiles" : { + "0.0" : 3.7792593484907937E-4, + "50.0" : 3.8691700719416E-4, + "90.0" : 3.913857062366774E-4, + "95.0" : 3.913857062366774E-4, + "99.0" : 3.913857062366774E-4, + "99.9" : 3.913857062366774E-4, + "99.99" : 3.913857062366774E-4, + "99.999" : 3.913857062366774E-4, + "99.9999" : 3.913857062366774E-4, + "100.0" : 3.913857062366774E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.7792593484907937E-4, + 3.8200901836640285E-4, + 3.8237432355374515E-4 + ], + [ + 3.855961513716939E-4, + 3.877975459473206E-4, + 3.913857062366774E-4 + ], + [ + 3.8691700719416E-4, + 3.8703300435309726E-4, + 3.8898494564330134E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.01446867119144881, + "scoreError" : 3.071290232277809E-4, + "scoreConfidence" : [ + 0.01416154216822103, + 0.014775800214676591 + ], + "scorePercentiles" : { + "0.0" : 0.01424524991666643, + "50.0" : 0.014418233085102549, + "90.0" : 0.01471546875142554, + "95.0" : 0.01471546875142554, + "99.0" : 0.01471546875142554, + "99.9" : 0.01471546875142554, + "99.99" : 0.01471546875142554, + "99.999" : 0.01471546875142554, + "99.9999" : 0.01471546875142554, + "100.0" : 0.01471546875142554 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.01441417423497701, + 0.014418233085102549, + 0.014425451218720563 + ], + [ + 0.014347761017875667, + 0.01427606893824538, + 0.01424524991666643 + ], + [ + 0.01471291030230269, + 0.01471546875142554, + 0.014662723257723494 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 1.0029323812394497, + "scoreError" : 0.008664048351075164, + "scoreConfidence" : [ + 0.9942683328883746, + 1.0115964295905249 + ], + "scorePercentiles" : { + "0.0" : 0.995025286240175, + "50.0" : 1.0018026926775518, + "90.0" : 1.0113044462534129, + "95.0" : 1.0113044462534129, + "99.0" : 1.0113044462534129, + "99.9" : 1.0113044462534129, + "99.99" : 1.0113044462534129, + "99.999" : 1.0113044462534129, + "99.9999" : 1.0113044462534129, + "100.0" : 1.0113044462534129 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 1.0113044462534129, + 0.9978523330672521, + 1.0008790364291433 + ], + [ + 1.0075035067499496, + 1.0012708366039247, + 1.0079401847409797 + ], + [ + 0.995025286240175, + 1.0018026926775518, + 1.0028131083926601 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.01299504090943715, + "scoreError" : 5.276041924888734E-4, + "scoreConfidence" : [ + 0.012467436716948277, + 0.013522645101926023 + ], + "scorePercentiles" : { + "0.0" : 0.012795588516489282, + "50.0" : 0.01293060720421979, + "90.0" : 0.013293538975678752, + "95.0" : 0.013293538975678752, + "99.0" : 0.013293538975678752, + "99.9" : 0.013293538975678752, + "99.99" : 0.013293538975678752, + "99.999" : 0.013293538975678752, + "99.9999" : 0.013293538975678752, + "100.0" : 0.013293538975678752 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.012966117529756502, + 0.013293538975678752, + 0.01314568560822162 + ], + [ + 0.012795588516489282, + 0.012874217947793667, + 0.01289509687868308 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.734757970815448, + "scoreError" : 0.10371285218767395, + "scoreConfidence" : [ + 3.631045118627774, + 3.838470823003122 + ], + "scorePercentiles" : { + "0.0" : 3.6964419098300074, + "50.0" : 3.7301802576484198, + "90.0" : 3.8028869977186313, + "95.0" : 3.8028869977186313, + "99.0" : 3.8028869977186313, + "99.9" : 3.8028869977186313, + "99.99" : 3.8028869977186313, + "99.999" : 3.8028869977186313, + "99.9999" : 3.8028869977186313, + "100.0" : 3.8028869977186313 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.726333251117735, + 3.7340272641791046, + 3.8028869977186313 + ], + [ + 3.6964419098300074, + 3.7393437959641256, + 3.709514606083086 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.915910361825667, + "scoreError" : 0.07793360653432067, + "scoreConfidence" : [ + 2.837976755291346, + 2.993843968359988 + ], + "scorePercentiles" : { + "0.0" : 2.867956468597648, + "50.0" : 2.8936321148726853, + "90.0" : 2.9790791128984213, + "95.0" : 2.9790791128984213, + "99.0" : 2.9790791128984213, + "99.9" : 2.9790791128984213, + "99.99" : 2.9790791128984213, + "99.999" : 2.9790791128984213, + "99.9999" : 2.9790791128984213, + "100.0" : 2.9790791128984213 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.896652921227918, + 2.89269080075188, + 2.8936321148726853 + ], + [ + 2.9790791128984213, + 2.9724285346210997, + 2.977471262578148 + ], + [ + 2.867956468597648, + 2.8722168515221136, + 2.891065189361087 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1781156711732394, + "scoreError" : 0.006079830536500371, + "scoreConfidence" : [ + 0.17203584063673902, + 0.18419550170973978 + ], + "scorePercentiles" : { + "0.0" : 0.17460855640528697, + "50.0" : 0.17648928387631924, + "90.0" : 0.1839968523827047, + "95.0" : 0.1839968523827047, + "99.0" : 0.1839968523827047, + "99.9" : 0.1839968523827047, + "99.99" : 0.1839968523827047, + "99.999" : 0.1839968523827047, + "99.9999" : 0.1839968523827047, + "100.0" : 0.1839968523827047 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17637950940966896, + 0.17687212596614726, + 0.17648928387631924 + ], + [ + 0.17460855640528697, + 0.17498917958633722, + 0.17535292089989304 + ], + [ + 0.1825232611473106, + 0.18182935088548674, + 0.1839968523827047 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.33701370251603385, + "scoreError" : 0.009438468960818618, + "scoreConfidence" : [ + 0.32757523355521523, + 0.3464521714768525 + ], + "scorePercentiles" : { + "0.0" : 0.3287976433010028, + "50.0" : 0.3379593185197702, + "90.0" : 0.34396548885602257, + "95.0" : 0.34396548885602257, + "99.0" : 0.34396548885602257, + "99.9" : 0.34396548885602257, + "99.99" : 0.34396548885602257, + "99.999" : 0.34396548885602257, + "99.9999" : 0.34396548885602257, + "100.0" : 0.34396548885602257 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3379593185197702, + 0.33675483223329744, + 0.3381346030092984 + ], + [ + 0.3313426720453265, + 0.33083449103480217, + 0.3287976433010028 + ], + [ + 0.34284380513558915, + 0.34396548885602257, + 0.3424904685091955 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16854884601881842, + "scoreError" : 0.009004225213796735, + "scoreConfidence" : [ + 0.1595446208050217, + 0.17755307123261516 + ], + "scorePercentiles" : { + "0.0" : 0.1625799294249622, + "50.0" : 0.16720458142723382, + "90.0" : 0.17602810589684914, + "95.0" : 0.17602810589684914, + "99.0" : 0.17602810589684914, + "99.9" : 0.17602810589684914, + "99.99" : 0.17602810589684914, + "99.999" : 0.17602810589684914, + "99.9999" : 0.17602810589684914, + "100.0" : 0.17602810589684914 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16455403246560915, + 0.16276767064893635, + 0.1625799294249622 + ], + [ + 0.17602810589684914, + 0.17495130307907628, + 0.1749156841460855 + ], + [ + 0.1674244847647748, + 0.16720458142723382, + 0.16651382231583856 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.391641101994612, + "scoreError" : 0.005342483206538888, + "scoreConfidence" : [ + 0.3862986187880731, + 0.3969835852011509 + ], + "scorePercentiles" : { + "0.0" : 0.38694450398545116, + "50.0" : 0.39131360545468774, + "90.0" : 0.3956067646965741, + "95.0" : 0.3956067646965741, + "99.0" : 0.3956067646965741, + "99.9" : 0.3956067646965741, + "99.99" : 0.3956067646965741, + "99.999" : 0.3956067646965741, + "99.9999" : 0.3956067646965741, + "100.0" : 0.3956067646965741 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.39131360545468774, + 0.3917293123114889, + 0.39113433987797247 + ], + [ + 0.3896956932818954, + 0.3879598262792412, + 0.38694450398545116 + ], + [ + 0.3956067646965741, + 0.3949321541347445, + 0.3954537179294527 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1615410805047081, + "scoreError" : 0.0036366686572976447, + "scoreConfidence" : [ + 0.15790441184741047, + 0.16517774916200575 + ], + "scorePercentiles" : { + "0.0" : 0.158518118710966, + "50.0" : 0.16221693251901959, + "90.0" : 0.16381021045734503, + "95.0" : 0.16381021045734503, + "99.0" : 0.16381021045734503, + "99.9" : 0.16381021045734503, + "99.99" : 0.16381021045734503, + "99.999" : 0.16381021045734503, + "99.9999" : 0.16381021045734503, + "100.0" : 0.16381021045734503 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1627364314819938, + 0.16221693251901959, + 0.16200593401590876 + ], + [ + 0.15881188489574236, + 0.15897466935330026, + 0.158518118710966 + ], + [ + 0.16381021045734503, + 0.1636706063666121, + 0.16312493674148507 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.048394316920121444, + "scoreError" : 9.371383005411213E-4, + "scoreConfidence" : [ + 0.04745717861958032, + 0.04933145522066257 + ], + "scorePercentiles" : { + "0.0" : 0.047463494195318284, + "50.0" : 0.04846126208487398, + "90.0" : 0.04896047807333206, + "95.0" : 0.04896047807333206, + "99.0" : 0.04896047807333206, + "99.9" : 0.04896047807333206, + "99.99" : 0.04896047807333206, + "99.999" : 0.04896047807333206, + "99.9999" : 0.04896047807333206, + "100.0" : 0.04896047807333206 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04894498875750071, + 0.04896047807333206, + 0.04881620786612839 + ], + [ + 0.048715233678231475, + 0.04844254924358024, + 0.04846126208487398 + ], + [ + 0.04815959974379596, + 0.04758503863833189, + 0.047463494195318284 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9323662.9841781, + "scoreError" : 138556.00966994776, + "scoreConfidence" : [ + 9185106.974508151, + 9462218.993848048 + ], + "scorePercentiles" : { + "0.0" : 9180911.86055046, + "50.0" : 9361837.434050515, + "90.0" : 9421453.089453861, + "95.0" : 9421453.089453861, + "99.0" : 9421453.089453861, + "99.9" : 9421453.089453861, + "99.99" : 9421453.089453861, + "99.999" : 9421453.089453861, + "99.9999" : 9421453.089453861, + "100.0" : 9421453.089453861 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9370760.92977528, + 9361837.434050515, + 9305615.085581396 + ], + [ + 9421453.089453861, + 9368289.597378276, + 9369009.029026218 + ], + [ + 9180911.86055046, + 9338604.646125117, + 9196485.185661765 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-04-04T00:51:24Z-95742271c556d7833837a8bb84b519969b097d10-jdk17.json b/performance-results/2025-04-04T00:51:24Z-95742271c556d7833837a8bb84b519969b097d10-jdk17.json new file mode 100644 index 0000000000..1158c0d2e2 --- /dev/null +++ b/performance-results/2025-04-04T00:51:24Z-95742271c556d7833837a8bb84b519969b097d10-jdk17.json @@ -0,0 +1,1310 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.410055263437113, + "scoreError" : 0.044175216312736174, + "scoreConfidence" : [ + 3.3658800471243766, + 3.454230479749849 + ], + "scorePercentiles" : { + "0.0" : 3.4022423915588753, + "50.0" : 3.4096308464644025, + "90.0" : 3.4187169692607715, + "95.0" : 3.4187169692607715, + "99.0" : 3.4187169692607715, + "99.9" : 3.4187169692607715, + "99.99" : 3.4187169692607715, + "99.999" : 3.4187169692607715, + "99.9999" : 3.4187169692607715, + "100.0" : 3.4187169692607715 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.411004350188826, + 3.4187169692607715 + ], + [ + 3.4022423915588753, + 3.4082573427399785 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7222751587969176, + "scoreError" : 0.020331821722778594, + "scoreConfidence" : [ + 1.701943337074139, + 1.7426069805196962 + ], + "scorePercentiles" : { + "0.0" : 1.7197942687239545, + "50.0" : 1.7213092858607992, + "90.0" : 1.7266877947421173, + "95.0" : 1.7266877947421173, + "99.0" : 1.7266877947421173, + "99.9" : 1.7266877947421173, + "99.99" : 1.7266877947421173, + "99.999" : 1.7266877947421173, + "99.9999" : 1.7266877947421173, + "100.0" : 1.7266877947421173 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7202588154580092, + 1.7197942687239545 + ], + [ + 1.722359756263589, + 1.7266877947421173 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8674677837492119, + "scoreError" : 0.0032325394754821957, + "scoreConfidence" : [ + 0.8642352442737297, + 0.870700323224694 + ], + "scorePercentiles" : { + "0.0" : 0.8667362217669433, + "50.0" : 0.8676693253640158, + "90.0" : 0.8677962625018725, + "95.0" : 0.8677962625018725, + "99.0" : 0.8677962625018725, + "99.9" : 0.8677962625018725, + "99.99" : 0.8677962625018725, + "99.999" : 0.8677962625018725, + "99.9999" : 0.8677962625018725, + "100.0" : 0.8677962625018725 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8677962625018725, + 0.8677842124557796 + ], + [ + 0.8667362217669433, + 0.867554438272252 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.2586900425068, + "scoreError" : 0.13636078587224731, + "scoreConfidence" : [ + 16.12232925663455, + 16.39505082837905 + ], + "scorePercentiles" : { + "0.0" : 16.135512844186522, + "50.0" : 16.273833465528117, + "90.0" : 16.34983499696942, + "95.0" : 16.34983499696942, + "99.0" : 16.34983499696942, + "99.9" : 16.34983499696942, + "99.99" : 16.34983499696942, + "99.999" : 16.34983499696942, + "99.9999" : 16.34983499696942, + "100.0" : 16.34983499696942 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.303901131535557, + 16.273833465528117, + 16.24110655705213 + ], + [ + 16.176868280921056, + 16.135512844186522, + 16.17233484324961 + ], + [ + 16.33151180545686, + 16.34983499696942, + 16.343306457661935 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2672.9855538524826, + "scoreError" : 14.616387865211415, + "scoreConfidence" : [ + 2658.369165987271, + 2687.601941717694 + ], + "scorePercentiles" : { + "0.0" : 2661.079080442354, + "50.0" : 2671.607818200002, + "90.0" : 2687.040356143568, + "95.0" : 2687.040356143568, + "99.0" : 2687.040356143568, + "99.9" : 2687.040356143568, + "99.99" : 2687.040356143568, + "99.999" : 2687.040356143568, + "99.9999" : 2687.040356143568, + "100.0" : 2687.040356143568 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2661.079080442354, + 2663.538227857365, + 2666.4540926531217 + ], + [ + 2671.607818200002, + 2671.283841175784, + 2674.8653706116493 + ], + [ + 2683.025033592116, + 2677.9761639963845, + 2687.040356143568 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 70775.80766872116, + "scoreError" : 742.2818518809171, + "scoreConfidence" : [ + 70033.52581684024, + 71518.08952060208 + ], + "scorePercentiles" : { + "0.0" : 70142.75578283423, + "50.0" : 70954.80008396578, + "90.0" : 71195.13156890463, + "95.0" : 71195.13156890463, + "99.0" : 71195.13156890463, + "99.9" : 71195.13156890463, + "99.99" : 71195.13156890463, + "99.999" : 71195.13156890463, + "99.9999" : 71195.13156890463, + "100.0" : 71195.13156890463 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 70142.75578283423, + 70226.43035099976, + 70232.69147423247 + ], + [ + 70950.31244706645, + 70954.80008396578, + 70973.0529781649 + ], + [ + 71173.35377017567, + 71133.74056214653, + 71195.13156890463 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 354.3389211609874, + "scoreError" : 5.666682962041467, + "scoreConfidence" : [ + 348.67223819894593, + 360.0056041230289 + ], + "scorePercentiles" : { + "0.0" : 349.8278019785032, + "50.0" : 356.1210976315482, + "90.0" : 357.67017227481824, + "95.0" : 357.67017227481824, + "99.0" : 357.67017227481824, + "99.9" : 357.67017227481824, + "99.99" : 357.67017227481824, + "99.999" : 357.67017227481824, + "99.9999" : 357.67017227481824, + "100.0" : 357.67017227481824 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 349.8548042520111, + 349.98260316975643, + 349.8278019785032 + ], + [ + 356.2227738236618, + 356.0560147982399, + 356.1210976315482 + ], + [ + 356.57428086763986, + 356.74074165270775, + 357.67017227481824 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 107.66346338200165, + "scoreError" : 0.9408238124872885, + "scoreConfidence" : [ + 106.72263956951436, + 108.60428719448895 + ], + "scorePercentiles" : { + "0.0" : 106.93014223867108, + "50.0" : 107.65326652205152, + "90.0" : 108.490211199469, + "95.0" : 108.490211199469, + "99.0" : 108.490211199469, + "99.9" : 108.490211199469, + "99.99" : 108.490211199469, + "99.999" : 108.490211199469, + "99.9999" : 108.490211199469, + "100.0" : 108.490211199469 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 107.65326652205152, + 107.71425907277816, + 107.6000277167281 + ], + [ + 107.89863468304631, + 108.45276519843372, + 108.490211199469 + ], + [ + 106.93014223867108, + 107.14562496679335, + 107.08623884004336 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.061783570798361755, + "scoreError" : 2.919212182128583E-4, + "scoreConfidence" : [ + 0.0614916495801489, + 0.06207549201657461 + ], + "scorePercentiles" : { + "0.0" : 0.06148453356082265, + "50.0" : 0.061730150100618525, + "90.0" : 0.06201947467161161, + "95.0" : 0.06201947467161161, + "99.0" : 0.06201947467161161, + "99.9" : 0.06201947467161161, + "99.99" : 0.06201947467161161, + "99.999" : 0.06201947467161161, + "99.9999" : 0.06201947467161161, + "100.0" : 0.06201947467161161 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06167753843070015, + 0.0616939214339916, + 0.06148453356082265 + ], + [ + 0.061730150100618525, + 0.06168849578981784, + 0.06183821364878737 + ], + [ + 0.0619587773110285, + 0.06201947467161161, + 0.061961032237877495 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.7475232240008607E-4, + "scoreError" : 1.2599051816234049E-5, + "scoreConfidence" : [ + 3.62153270583852E-4, + 3.873513742163201E-4 + ], + "scorePercentiles" : { + "0.0" : 3.6686498471328336E-4, + "50.0" : 3.731783481611584E-4, + "90.0" : 3.8423162303683427E-4, + "95.0" : 3.8423162303683427E-4, + "99.0" : 3.8423162303683427E-4, + "99.9" : 3.8423162303683427E-4, + "99.99" : 3.8423162303683427E-4, + "99.999" : 3.8423162303683427E-4, + "99.9999" : 3.8423162303683427E-4, + "100.0" : 3.8423162303683427E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.7298764866361634E-4, + 3.731783481611584E-4, + 3.735189434301613E-4 + ], + [ + 3.8423162303683427E-4, + 3.84173949945471E-4, + 3.8379800995952856E-4 + ], + [ + 3.6686498471328336E-4, + 3.6702205385880045E-4, + 3.6699533983192086E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014140536648291398, + "scoreError" : 2.9374731934949075E-5, + "scoreConfidence" : [ + 0.01411116191635645, + 0.014169911380226347 + ], + "scorePercentiles" : { + "0.0" : 0.014115446296996832, + "50.0" : 0.014134114425519104, + "90.0" : 0.014178302476496185, + "95.0" : 0.014178302476496185, + "99.0" : 0.014178302476496185, + "99.9" : 0.014178302476496185, + "99.99" : 0.014178302476496185, + "99.999" : 0.014178302476496185, + "99.9999" : 0.014178302476496185, + "100.0" : 0.014178302476496185 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014115446296996832, + 0.01413876408802675, + 0.014134114425519104 + ], + [ + 0.014178302476496185, + 0.014151227157331673, + 0.014148102450991488 + ], + [ + 0.01413344815772737, + 0.014132977418616285, + 0.014132447362916902 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9932611928230904, + "scoreError" : 0.024257323453275522, + "scoreConfidence" : [ + 0.969003869369815, + 1.017518516276366 + ], + "scorePercentiles" : { + "0.0" : 0.9739963147643164, + "50.0" : 0.9965134862495018, + "90.0" : 1.0099352177337912, + "95.0" : 1.0099352177337912, + "99.0" : 1.0099352177337912, + "99.9" : 1.0099352177337912, + "99.99" : 1.0099352177337912, + "99.999" : 1.0099352177337912, + "99.9999" : 1.0099352177337912, + "100.0" : 1.0099352177337912 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9739963147643164, + 0.9766263461914062, + 0.9746201055452685 + ], + [ + 1.0033032107744784, + 1.0099352177337912, + 1.0079804976312872 + ], + [ + 0.9952722825437899, + 0.9965134862495018, + 1.001103273973974 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.012913305599668646, + "scoreError" : 1.3451547784434068E-4, + "scoreConfidence" : [ + 0.012778790121824306, + 0.013047821077512987 + ], + "scorePercentiles" : { + "0.0" : 0.012815936662497309, + "50.0" : 0.012931272408566084, + "90.0" : 0.012941176037145452, + "95.0" : 0.012941176037145452, + "99.0" : 0.012941176037145452, + "99.9" : 0.012941176037145452, + "99.99" : 0.012941176037145452, + "99.999" : 0.012941176037145452, + "99.9999" : 0.012941176037145452, + "100.0" : 0.012941176037145452 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.012815936662497309, + 0.012941176037145452, + 0.012925974531250405 + ], + [ + 0.012934201549986549, + 0.012932876422251133, + 0.012929668394881038 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.621569585832803, + "scoreError" : 0.06695805853852926, + "scoreConfidence" : [ + 3.554611527294274, + 3.6885276443713324 + ], + "scorePercentiles" : { + "0.0" : 3.5804726342161777, + "50.0" : 3.619984607755292, + "90.0" : 3.646612061953353, + "95.0" : 3.646612061953353, + "99.0" : 3.646612061953353, + "99.9" : 3.646612061953353, + "99.99" : 3.646612061953353, + "99.999" : 3.646612061953353, + "99.9999" : 3.646612061953353, + "100.0" : 3.646612061953353 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.6192033798842256, + 3.64428997596504, + 3.646612061953353 + ], + [ + 3.5804726342161777, + 3.620765835626358, + 3.6180736273516643 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.817315562985054, + "scoreError" : 0.06309278853592672, + "scoreConfidence" : [ + 2.754222774449127, + 2.880408351520981 + ], + "scorePercentiles" : { + "0.0" : 2.7663685322268328, + "50.0" : 2.8407819358136894, + "90.0" : 2.8458255546385884, + "95.0" : 2.8458255546385884, + "99.0" : 2.8458255546385884, + "99.9" : 2.8458255546385884, + "99.99" : 2.8458255546385884, + "99.999" : 2.8458255546385884, + "99.9999" : 2.8458255546385884, + "100.0" : 2.8458255546385884 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.8458255546385884, + 2.842856151506538, + 2.845687959601707 + ], + [ + 2.7663685322268328, + 2.7678247785773595, + 2.768014618045945 + ], + [ + 2.8407819358136894, + 2.84237150951975, + 2.8361090269350724 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17466291628472425, + "scoreError" : 0.0010892299205336289, + "scoreConfidence" : [ + 0.17357368636419063, + 0.17575214620525786 + ], + "scorePercentiles" : { + "0.0" : 0.1736334279959718, + "50.0" : 0.17477649892514463, + "90.0" : 0.17539436958046864, + "95.0" : 0.17539436958046864, + "99.0" : 0.17539436958046864, + "99.9" : 0.17539436958046864, + "99.99" : 0.17539436958046864, + "99.999" : 0.17539436958046864, + "99.9999" : 0.17539436958046864, + "100.0" : 0.17539436958046864 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17439916790777976, + 0.17477649892514463, + 0.1743388813479542 + ], + [ + 0.17520865829770832, + 0.17515058082143795, + 0.17524262767020066 + ], + [ + 0.17539436958046864, + 0.17382203401585206, + 0.1736334279959718 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3274353774579488, + "scoreError" : 0.016014656619373645, + "scoreConfidence" : [ + 0.3114207208385752, + 0.34345003407732244 + ], + "scorePercentiles" : { + "0.0" : 0.31721999308485327, + "50.0" : 0.32569945065789474, + "90.0" : 0.33981387947262903, + "95.0" : 0.33981387947262903, + "99.0" : 0.33981387947262903, + "99.9" : 0.33981387947262903, + "99.99" : 0.33981387947262903, + "99.999" : 0.33981387947262903, + "99.9999" : 0.33981387947262903, + "100.0" : 0.33981387947262903 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.31730455720903666, + 0.31721999308485327, + 0.31775410793721404 + ], + [ + 0.3257833393927548, + 0.3255280544596354, + 0.32569945065789474 + ], + [ + 0.33981387947262903, + 0.3387748820759511, + 0.33904013283157036 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16641532323284058, + "scoreError" : 0.017350118915669347, + "scoreConfidence" : [ + 0.14906520431717124, + 0.18376544214850993 + ], + "scorePercentiles" : { + "0.0" : 0.15270957588760786, + "50.0" : 0.17205132084853073, + "90.0" : 0.174647807174418, + "95.0" : 0.174647807174418, + "99.0" : 0.174647807174418, + "99.9" : 0.174647807174418, + "99.99" : 0.174647807174418, + "99.999" : 0.174647807174418, + "99.9999" : 0.174647807174418, + "100.0" : 0.174647807174418 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17205132084853073, + 0.17206169996558843, + 0.17200997505934157 + ], + [ + 0.1527471536910599, + 0.1527100326945102, + 0.15270957588760786 + ], + [ + 0.17458898942020637, + 0.174647807174418, + 0.17421135435430204 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.38986128538799675, + "scoreError" : 0.00979797094307402, + "scoreConfidence" : [ + 0.38006331444492275, + 0.39965925633107074 + ], + "scorePercentiles" : { + "0.0" : 0.3846523111393184, + "50.0" : 0.3872767771280304, + "90.0" : 0.3985590201665936, + "95.0" : 0.3985590201665936, + "99.0" : 0.3985590201665936, + "99.9" : 0.3985590201665936, + "99.99" : 0.3985590201665936, + "99.999" : 0.3985590201665936, + "99.9999" : 0.3985590201665936, + "100.0" : 0.3985590201665936 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3872767771280304, + 0.38737736459422817, + 0.3867428934565705 + ], + [ + 0.3985590201665936, + 0.39697225658939345, + 0.39697280100035726 + ], + [ + 0.38533757949291, + 0.384860564924569, + 0.3846523111393184 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15609274809169155, + "scoreError" : 0.0036412484112455373, + "scoreConfidence" : [ + 0.15245149968044602, + 0.15973399650293707 + ], + "scorePercentiles" : { + "0.0" : 0.15436526028433387, + "50.0" : 0.15480616190903743, + "90.0" : 0.15913727148313175, + "95.0" : 0.15913727148313175, + "99.0" : 0.15913727148313175, + "99.9" : 0.15913727148313175, + "99.99" : 0.15913727148313175, + "99.999" : 0.15913727148313175, + "99.9999" : 0.15913727148313175, + "100.0" : 0.15913727148313175 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15436526028433387, + 0.1544817916550808, + 0.15470838450471078 + ], + [ + 0.15882465640683566, + 0.15913727148313175, + 0.15895154913928758 + ], + [ + 0.15495011549784624, + 0.1546095419449598, + 0.15480616190903743 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04758667191926049, + "scoreError" : 0.0023739868350441734, + "scoreConfidence" : [ + 0.04521268508421632, + 0.049960658754304665 + ], + "scorePercentiles" : { + "0.0" : 0.04611377217810733, + "50.0" : 0.04710306553369477, + "90.0" : 0.04951102378960189, + "95.0" : 0.04951102378960189, + "99.0" : 0.04951102378960189, + "99.9" : 0.04951102378960189, + "99.99" : 0.04951102378960189, + "99.999" : 0.04951102378960189, + "99.9999" : 0.04951102378960189, + "100.0" : 0.04951102378960189 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04951102378960189, + 0.049440907275109386, + 0.0491906721874339 + ], + [ + 0.047310086098574095, + 0.04710306553369477, + 0.047064187063192126 + ], + [ + 0.04642925747502136, + 0.04611377217810733, + 0.04611707567260955 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9395685.427692974, + "scoreError" : 239163.15498882558, + "scoreConfidence" : [ + 9156522.272704149, + 9634848.5826818 + ], + "scorePercentiles" : { + "0.0" : 9199383.375919119, + "50.0" : 9405962.368421054, + "90.0" : 9559300.52244508, + "95.0" : 9559300.52244508, + "99.0" : 9559300.52244508, + "99.9" : 9559300.52244508, + "99.99" : 9559300.52244508, + "99.999" : 9559300.52244508, + "99.9999" : 9559300.52244508, + "100.0" : 9559300.52244508 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9410055.000940735, + 9405962.368421054, + 9405348.242481204 + ], + [ + 9268332.786839666, + 9214277.049723757, + 9199383.375919119 + ], + [ + 9559300.52244508, + 9544774.91793893, + 9553734.58452722 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-04-04T05:27:30Z-6eb2616cb700661d6c433a8ffbc7e0feb045b19a-jdk17.json b/performance-results/2025-04-04T05:27:30Z-6eb2616cb700661d6c433a8ffbc7e0feb045b19a-jdk17.json new file mode 100644 index 0000000000..863d559e57 --- /dev/null +++ b/performance-results/2025-04-04T05:27:30Z-6eb2616cb700661d6c433a8ffbc7e0feb045b19a-jdk17.json @@ -0,0 +1,1310 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.41547431211834, + "scoreError" : 0.02013445470791421, + "scoreConfidence" : [ + 3.395339857410426, + 3.4356087668262543 + ], + "scorePercentiles" : { + "0.0" : 3.411373024163593, + "50.0" : 3.415796403863652, + "90.0" : 3.418931416582463, + "95.0" : 3.418931416582463, + "99.0" : 3.418931416582463, + "99.9" : 3.418931416582463, + "99.99" : 3.418931416582463, + "99.999" : 3.418931416582463, + "99.9999" : 3.418931416582463, + "100.0" : 3.418931416582463 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4160661756130946, + 3.418931416582463 + ], + [ + 3.411373024163593, + 3.4155266321142097 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7257794060486682, + "scoreError" : 0.014829676059242635, + "scoreConfidence" : [ + 1.7109497299894256, + 1.7406090821079108 + ], + "scorePercentiles" : { + "0.0" : 1.7229459392720967, + "50.0" : 1.7260640883842262, + "90.0" : 1.728043508154123, + "95.0" : 1.728043508154123, + "99.0" : 1.728043508154123, + "99.9" : 1.728043508154123, + "99.99" : 1.728043508154123, + "99.999" : 1.728043508154123, + "99.9999" : 1.728043508154123, + "100.0" : 1.728043508154123 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7229459392720967, + 1.7249498535300087 + ], + [ + 1.728043508154123, + 1.727178323238444 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8670239652165881, + "scoreError" : 0.0038232692313808036, + "scoreConfidence" : [ + 0.8632006959852073, + 0.8708472344479689 + ], + "scorePercentiles" : { + "0.0" : 0.8664786283013596, + "50.0" : 0.8669751735844602, + "90.0" : 0.8676668853960727, + "95.0" : 0.8676668853960727, + "99.0" : 0.8676668853960727, + "99.9" : 0.8676668853960727, + "99.99" : 0.8676668853960727, + "99.999" : 0.8676668853960727, + "99.9999" : 0.8676668853960727, + "100.0" : 0.8676668853960727 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8664786283013596, + 0.8665661091157533 + ], + [ + 0.867384238053167, + 0.8676668853960727 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.257614896779337, + "scoreError" : 0.2156823417456936, + "scoreConfidence" : [ + 16.041932555033643, + 16.47329723852503 + ], + "scorePercentiles" : { + "0.0" : 16.046117112775594, + "50.0" : 16.351278502311153, + "90.0" : 16.358823560420063, + "95.0" : 16.358823560420063, + "99.0" : 16.358823560420063, + "99.9" : 16.358823560420063, + "99.99" : 16.358823560420063, + "99.999" : 16.358823560420063, + "99.9999" : 16.358823560420063, + "100.0" : 16.358823560420063 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.132712758895906, + 16.105581835399015, + 16.046117112775594 + ], + [ + 16.356463835561264, + 16.358823560420063, + 16.351278502311153 + ], + [ + 16.254642767027285, + 16.35464668287753, + 16.3582670157462 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2657.7695720704037, + "scoreError" : 148.2972269158939, + "scoreConfidence" : [ + 2509.4723451545096, + 2806.0667989862977 + ], + "scorePercentiles" : { + "0.0" : 2539.768121859389, + "50.0" : 2706.007591520502, + "90.0" : 2728.2643986587595, + "95.0" : 2728.2643986587595, + "99.0" : 2728.2643986587595, + "99.9" : 2728.2643986587595, + "99.99" : 2728.2643986587595, + "99.999" : 2728.2643986587595, + "99.9999" : 2728.2643986587595, + "100.0" : 2728.2643986587595 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2702.1623484921656, + 2707.919946005747, + 2706.007591520502 + ], + [ + 2540.1588945402596, + 2539.768121859389, + 2542.476993406105 + ], + [ + 2725.722525637147, + 2728.2643986587595, + 2727.4453285135583 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 69187.62949561818, + "scoreError" : 1950.2487427776907, + "scoreConfidence" : [ + 67237.38075284049, + 71137.87823839588 + ], + "scorePercentiles" : { + "0.0" : 67811.69749602833, + "50.0" : 69182.75188864459, + "90.0" : 70554.04343863564, + "95.0" : 70554.04343863564, + "99.0" : 70554.04343863564, + "99.9" : 70554.04343863564, + "99.99" : 70554.04343863564, + "99.999" : 70554.04343863564, + "99.9999" : 70554.04343863564, + "100.0" : 70554.04343863564 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 70489.37946132944, + 70554.04343863564, + 70515.75586998963 + ], + [ + 67864.5403327218, + 67811.69749602833, + 67845.50582086251 + ], + [ + 69182.75188864459, + 69171.5162798034, + 69253.47487254828 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 351.14686595143564, + "scoreError" : 12.402276547808718, + "scoreConfidence" : [ + 338.74458940362695, + 363.54914249924434 + ], + "scorePercentiles" : { + "0.0" : 341.4050740261924, + "50.0" : 350.9959831827741, + "90.0" : 361.14535751562823, + "95.0" : 361.14535751562823, + "99.0" : 361.14535751562823, + "99.9" : 361.14535751562823, + "99.99" : 361.14535751562823, + "99.999" : 361.14535751562823, + "99.9999" : 361.14535751562823, + "100.0" : 361.14535751562823 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 341.4050740261924, + 341.75306137898, + 345.9414385143761 + ], + [ + 349.9015669158507, + 350.9959831827741, + 351.72342119398223 + ], + [ + 360.81338018128395, + 361.14535751562823, + 356.64251065385264 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 105.33465576346994, + "scoreError" : 5.16876703445678, + "scoreConfidence" : [ + 100.16588872901316, + 110.50342279792672 + ], + "scorePercentiles" : { + "0.0" : 101.2422526340046, + "50.0" : 105.98517929748999, + "90.0" : 108.60769860695804, + "95.0" : 108.60769860695804, + "99.0" : 108.60769860695804, + "99.9" : 108.60769860695804, + "99.99" : 108.60769860695804, + "99.999" : 108.60769860695804, + "99.9999" : 108.60769860695804, + "100.0" : 108.60769860695804 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 108.47585305815755, + 108.51299893266345, + 108.60769860695804 + ], + [ + 101.2422526340046, + 101.66996889742603, + 101.63790810097589 + ], + [ + 105.88856190695395, + 105.98517929748999, + 105.99148043659996 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.0613835700776904, + "scoreError" : 5.30970211986948E-4, + "scoreConfidence" : [ + 0.060852599865703454, + 0.06191454028967735 + ], + "scorePercentiles" : { + "0.0" : 0.06095189772408665, + "50.0" : 0.061378639564216665, + "90.0" : 0.06184695769116592, + "95.0" : 0.06184695769116592, + "99.0" : 0.06184695769116592, + "99.9" : 0.06184695769116592, + "99.99" : 0.06184695769116592, + "99.999" : 0.06184695769116592, + "99.9999" : 0.06184695769116592, + "100.0" : 0.06184695769116592 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06144970979555971, + 0.06122663911100226, + 0.061378639564216665 + ], + [ + 0.061581722824346624, + 0.06179943338112424, + 0.06184695769116592 + ], + [ + 0.06095189772408665, + 0.06105782843047466, + 0.06115930217723686 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.6792774673077264E-4, + "scoreError" : 9.52400144527695E-6, + "scoreConfidence" : [ + 3.584037452854957E-4, + 3.774517481760496E-4 + ], + "scorePercentiles" : { + "0.0" : 3.601947262437733E-4, + "50.0" : 3.710066787160918E-4, + "90.0" : 3.7284325731862846E-4, + "95.0" : 3.7284325731862846E-4, + "99.0" : 3.7284325731862846E-4, + "99.9" : 3.7284325731862846E-4, + "99.99" : 3.7284325731862846E-4, + "99.999" : 3.7284325731862846E-4, + "99.9999" : 3.7284325731862846E-4, + "100.0" : 3.7284325731862846E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.606764144071223E-4, + 3.601947262437733E-4, + 3.603632293866587E-4 + ], + [ + 3.716483250039227E-4, + 3.721081112498685E-4, + 3.7284325731862846E-4 + ], + [ + 3.70884520477737E-4, + 3.71624457773151E-4, + 3.710066787160918E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.01402845854457803, + "scoreError" : 4.044676667384548E-5, + "scoreConfidence" : [ + 0.013988011777904185, + 0.014068905311251876 + ], + "scorePercentiles" : { + "0.0" : 0.013993197164454371, + "50.0" : 0.01404240319713314, + "90.0" : 0.014049538132783347, + "95.0" : 0.014049538132783347, + "99.0" : 0.014049538132783347, + "99.9" : 0.014049538132783347, + "99.99" : 0.014049538132783347, + "99.999" : 0.014049538132783347, + "99.9999" : 0.014049538132783347, + "100.0" : 0.014049538132783347 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014000710592155463, + 0.013993197164454371, + 0.013996113428682996 + ], + [ + 0.014042536027781405, + 0.014049538132783347, + 0.01404240319713314 + ], + [ + 0.0140474361495304, + 0.014043828995948403, + 0.014040363212732769 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9794412564438721, + "scoreError" : 0.01637443287226072, + "scoreConfidence" : [ + 0.9630668235716114, + 0.9958156893161328 + ], + "scorePercentiles" : { + "0.0" : 0.9663152830225142, + "50.0" : 0.9845775188539924, + "90.0" : 0.9877359903209877, + "95.0" : 0.9877359903209877, + "99.0" : 0.9877359903209877, + "99.9" : 0.9877359903209877, + "99.99" : 0.9877359903209877, + "99.999" : 0.9877359903209877, + "99.9999" : 0.9877359903209877, + "100.0" : 0.9877359903209877 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9665899604678136, + 0.9669146041767379, + 0.9663152830225142 + ], + [ + 0.9829151665028504, + 0.9853623369790128, + 0.9845775188539924 + ], + [ + 0.9871915410661402, + 0.9873689066047981, + 0.9877359903209877 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.013066821965947481, + "scoreError" : 1.4899924544193566E-4, + "scoreConfidence" : [ + 0.012917822720505545, + 0.013215821211389417 + ], + "scorePercentiles" : { + "0.0" : 0.013011505698910181, + "50.0" : 0.01306633020899141, + "90.0" : 0.013123710692154048, + "95.0" : 0.013123710692154048, + "99.0" : 0.013123710692154048, + "99.9" : 0.013123710692154048, + "99.99" : 0.013123710692154048, + "99.999" : 0.013123710692154048, + "99.9999" : 0.013123710692154048, + "100.0" : 0.013123710692154048 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.0131095357868546, + 0.013123710692154048, + 0.013111727565707873 + ], + [ + 0.01302312463112822, + 0.013011505698910181, + 0.01302132742092996 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.6016004776114623, + "scoreError" : 0.04408562358601525, + "scoreConfidence" : [ + 3.557514854025447, + 3.6456861011974775 + ], + "scorePercentiles" : { + "0.0" : 3.5702578772305498, + "50.0" : 3.6067730656092287, + "90.0" : 3.613936494219653, + "95.0" : 3.613936494219653, + "99.0" : 3.613936494219653, + "99.9" : 3.613936494219653, + "99.99" : 3.613936494219653, + "99.999" : 3.613936494219653, + "99.9999" : 3.613936494219653, + "100.0" : 3.613936494219653 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.5702578772305498, + 3.613936494219653, + 3.6067297692862295 + ], + [ + 3.608194422077922, + 3.606816361932228, + 3.60366794092219 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.7855132821873965, + "scoreError" : 0.026726483277009803, + "scoreConfidence" : [ + 2.7587867989103865, + 2.8122397654644065 + ], + "scorePercentiles" : { + "0.0" : 2.759536437637969, + "50.0" : 2.786476934522151, + "90.0" : 2.8075433060078607, + "95.0" : 2.8075433060078607, + "99.0" : 2.8075433060078607, + "99.9" : 2.8075433060078607, + "99.99" : 2.8075433060078607, + "99.999" : 2.8075433060078607, + "99.9999" : 2.8075433060078607, + "100.0" : 2.8075433060078607 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.786476934522151, + 2.7926873155543146, + 2.7885715913019236 + ], + [ + 2.759536437637969, + 2.7736968960066557, + 2.7713081041839844 + ], + [ + 2.8075433060078607, + 2.806818850687623, + 2.7829801037840847 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1761613666321471, + "scoreError" : 0.002516338259768568, + "scoreConfidence" : [ + 0.17364502837237852, + 0.17867770489191567 + ], + "scorePercentiles" : { + "0.0" : 0.17409059075953554, + "50.0" : 0.1760895962564491, + "90.0" : 0.17804075546574563, + "95.0" : 0.17804075546574563, + "99.0" : 0.17804075546574563, + "99.9" : 0.17804075546574563, + "99.99" : 0.17804075546574563, + "99.999" : 0.17804075546574563, + "99.9999" : 0.17804075546574563, + "100.0" : 0.17804075546574563 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17804075546574563, + 0.1777888090954345, + 0.17770007303290924 + ], + [ + 0.17501571777594988, + 0.17409059075953554, + 0.1742418977227188 + ], + [ + 0.1764508362211949, + 0.1760895962564491, + 0.176034023359386 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.32730021817444466, + "scoreError" : 0.017163920712541466, + "scoreConfidence" : [ + 0.3101362974619032, + 0.3444641388869861 + ], + "scorePercentiles" : { + "0.0" : 0.31596479819905215, + "50.0" : 0.3256441752906314, + "90.0" : 0.3405568089562404, + "95.0" : 0.3405568089562404, + "99.0" : 0.3405568089562404, + "99.9" : 0.3405568089562404, + "99.99" : 0.3405568089562404, + "99.999" : 0.3405568089562404, + "99.9999" : 0.3405568089562404, + "100.0" : 0.3405568089562404 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3388611753244553, + 0.3405568089562404, + 0.33991513701563564 + ], + [ + 0.3256005505160681, + 0.3259885275287675, + 0.3256441752906314 + ], + [ + 0.31713970326324803, + 0.316031087475903, + 0.31596479819905215 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1652042889286885, + "scoreError" : 0.0017617414374246191, + "scoreConfidence" : [ + 0.16344254749126388, + 0.1669660303661131 + ], + "scorePercentiles" : { + "0.0" : 0.163923576657651, + "50.0" : 0.16483931719579337, + "90.0" : 0.16660534148007464, + "95.0" : 0.16660534148007464, + "99.0" : 0.16660534148007464, + "99.9" : 0.16660534148007464, + "99.99" : 0.16660534148007464, + "99.999" : 0.16660534148007464, + "99.9999" : 0.16660534148007464, + "100.0" : 0.16660534148007464 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16660534148007464, + 0.16656146767934177, + 0.1663387481328698 + ], + [ + 0.16394726561962064, + 0.163923576657651, + 0.16483931719579337 + ], + [ + 0.16482515006922469, + 0.16480627729527514, + 0.16499145622834516 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.39010744239973744, + "scoreError" : 0.01670421567031333, + "scoreConfidence" : [ + 0.3734032267294241, + 0.40681165807005076 + ], + "scorePercentiles" : { + "0.0" : 0.37962961616430035, + "50.0" : 0.38764850711323023, + "90.0" : 0.40918921207905395, + "95.0" : 0.40918921207905395, + "99.0" : 0.40918921207905395, + "99.9" : 0.40918921207905395, + "99.99" : 0.40918921207905395, + "99.999" : 0.40918921207905395, + "99.9999" : 0.40918921207905395, + "100.0" : 0.40918921207905395 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3897532790552654, + 0.3830618254807324, + 0.38492263564280216 + ], + [ + 0.40918921207905395, + 0.3987026886213221, + 0.39790933049498645 + ], + [ + 0.38764850711323023, + 0.38014988694594387, + 0.37962961616430035 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15589403072362684, + "scoreError" : 0.0019617589008532423, + "scoreConfidence" : [ + 0.1539322718227736, + 0.15785578962448008 + ], + "scorePercentiles" : { + "0.0" : 0.15429051936310056, + "50.0" : 0.15572938609359183, + "90.0" : 0.15757248833984622, + "95.0" : 0.15757248833984622, + "99.0" : 0.15757248833984622, + "99.9" : 0.15757248833984622, + "99.99" : 0.15757248833984622, + "99.999" : 0.15757248833984622, + "99.9999" : 0.15757248833984622, + "100.0" : 0.15757248833984622 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15757248833984622, + 0.15724325976068054, + 0.15697942648813262 + ], + [ + 0.1552752374578824, + 0.15445985558284292, + 0.15429051936310056 + ], + [ + 0.15580430851445043, + 0.1556917949121141, + 0.15572938609359183 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.046893268004107674, + "scoreError" : 0.001162133260808305, + "scoreConfidence" : [ + 0.045731134743299366, + 0.04805540126491598 + ], + "scorePercentiles" : { + "0.0" : 0.04607961999179795, + "50.0" : 0.04681437227603189, + "90.0" : 0.04772420759282237, + "95.0" : 0.04772420759282237, + "99.0" : 0.04772420759282237, + "99.9" : 0.04772420759282237, + "99.99" : 0.04772420759282237, + "99.999" : 0.04772420759282237, + "99.9999" : 0.04772420759282237, + "100.0" : 0.04772420759282237 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.047255712641233925, + 0.04681437227603189, + 0.04675393894029146 + ], + [ + 0.04772420759282237, + 0.0476040818683385, + 0.0476215452255324 + ], + [ + 0.04608960344652766, + 0.04609633005439292, + 0.04607961999179795 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9247386.677157959, + "scoreError" : 103775.56890511974, + "scoreConfidence" : [ + 9143611.10825284, + 9351162.246063078 + ], + "scorePercentiles" : { + "0.0" : 9170927.29422548, + "50.0" : 9251081.91119334, + "90.0" : 9346239.112149533, + "95.0" : 9346239.112149533, + "99.0" : 9346239.112149533, + "99.9" : 9346239.112149533, + "99.99" : 9346239.112149533, + "99.999" : 9346239.112149533, + "99.9999" : 9346239.112149533, + "100.0" : 9346239.112149533 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9251081.91119334, + 9249757.321626617, + 9258786.827012027 + ], + [ + 9170927.29422548, + 9172337.738771768, + 9183301.19651056 + ], + [ + 9346239.112149533, + 9303166.288104089, + 9290882.404828226 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-04-06T04:21:24Z-31b5f1b83c785c1acaff247c88aca6763328b754-jdk17.json b/performance-results/2025-04-06T04:21:24Z-31b5f1b83c785c1acaff247c88aca6763328b754-jdk17.json new file mode 100644 index 0000000000..1399ed8956 --- /dev/null +++ b/performance-results/2025-04-06T04:21:24Z-31b5f1b83c785c1acaff247c88aca6763328b754-jdk17.json @@ -0,0 +1,1310 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.405781402066154, + "scoreError" : 0.04629911913002043, + "scoreConfidence" : [ + 3.3594822829361335, + 3.4520805211961743 + ], + "scorePercentiles" : { + "0.0" : 3.396624620926415, + "50.0" : 3.4062908345364202, + "90.0" : 3.4139193182653607, + "95.0" : 3.4139193182653607, + "99.0" : 3.4139193182653607, + "99.9" : 3.4139193182653607, + "99.99" : 3.4139193182653607, + "99.999" : 3.4139193182653607, + "99.9999" : 3.4139193182653607, + "100.0" : 3.4139193182653607 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4049844214875487, + 3.4139193182653607 + ], + [ + 3.396624620926415, + 3.407597247585292 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7201965667995456, + "scoreError" : 0.014319793782545227, + "scoreConfidence" : [ + 1.7058767730170004, + 1.7345163605820908 + ], + "scorePercentiles" : { + "0.0" : 1.717273001278032, + "50.0" : 1.7204317124975719, + "90.0" : 1.722649840925006, + "95.0" : 1.722649840925006, + "99.0" : 1.722649840925006, + "99.9" : 1.722649840925006, + "99.99" : 1.722649840925006, + "99.999" : 1.722649840925006, + "99.9999" : 1.722649840925006, + "100.0" : 1.722649840925006 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.722649840925006, + 1.717273001278032 + ], + [ + 1.7205985118976679, + 1.7202649130974759 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8645438475526157, + "scoreError" : 0.006962670109372867, + "scoreConfidence" : [ + 0.8575811774432428, + 0.8715065176619886 + ], + "scorePercentiles" : { + "0.0" : 0.8630685172427868, + "50.0" : 0.8647808022374026, + "90.0" : 0.8655452684928708, + "95.0" : 0.8655452684928708, + "99.0" : 0.8655452684928708, + "99.9" : 0.8655452684928708, + "99.99" : 0.8655452684928708, + "99.999" : 0.8655452684928708, + "99.9999" : 0.8655452684928708, + "100.0" : 0.8655452684928708 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8630685172427868, + 0.8650899598383918 + ], + [ + 0.8644716446364135, + 0.8655452684928708 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.05989386004153, + "scoreError" : 0.3259215020951166, + "scoreConfidence" : [ + 15.733972357946413, + 16.385815362136647 + ], + "scorePercentiles" : { + "0.0" : 15.72532512446189, + "50.0" : 16.158593388145643, + "90.0" : 16.20446067632027, + "95.0" : 16.20446067632027, + "99.0" : 16.20446067632027, + "99.9" : 16.20446067632027, + "99.99" : 16.20446067632027, + "99.999" : 16.20446067632027, + "99.9999" : 16.20446067632027, + "100.0" : 16.20446067632027 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 15.967443811944504, + 15.72532512446189, + 15.760029346712017 + ], + [ + 16.150287625332755, + 16.19410303415797, + 16.20446067632027 + ], + [ + 16.198468930460553, + 16.180332802838194, + 16.158593388145643 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2756.8020116085313, + "scoreError" : 91.39304598010132, + "scoreConfidence" : [ + 2665.40896562843, + 2848.1950575886326 + ], + "scorePercentiles" : { + "0.0" : 2690.356683491557, + "50.0" : 2750.4605046843676, + "90.0" : 2845.5252577614933, + "95.0" : 2845.5252577614933, + "99.0" : 2845.5252577614933, + "99.9" : 2845.5252577614933, + "99.99" : 2845.5252577614933, + "99.999" : 2845.5252577614933, + "99.9999" : 2845.5252577614933, + "100.0" : 2845.5252577614933 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2791.045225296556, + 2741.798957219609, + 2783.3375517726395 + ], + [ + 2690.7068308911184, + 2709.71805278636, + 2690.356683491557 + ], + [ + 2845.5252577614933, + 2808.2690405730837, + 2750.4605046843676 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 68533.4742069145, + "scoreError" : 2439.3220251166053, + "scoreConfidence" : [ + 66094.1521817979, + 70972.7962320311 + ], + "scorePercentiles" : { + "0.0" : 66835.83632727223, + "50.0" : 68487.06242377267, + "90.0" : 70252.10139834581, + "95.0" : 70252.10139834581, + "99.0" : 70252.10139834581, + "99.9" : 70252.10139834581, + "99.99" : 70252.10139834581, + "99.999" : 70252.10139834581, + "99.9999" : 70252.10139834581, + "100.0" : 70252.10139834581 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 70219.46335615995, + 70252.10139834581, + 70226.14046013122 + ], + [ + 66900.3928975727, + 66835.83632727223, + 66909.21094385958 + ], + [ + 68454.6761328727, + 68516.38392224368, + 68487.06242377267 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 337.52855496465264, + "scoreError" : 9.658309838793654, + "scoreConfidence" : [ + 327.870245125859, + 347.18686480344627 + ], + "scorePercentiles" : { + "0.0" : 327.3231459328245, + "50.0" : 339.70911503866444, + "90.0" : 342.52691897035885, + "95.0" : 342.52691897035885, + "99.0" : 342.52691897035885, + "99.9" : 342.52691897035885, + "99.99" : 342.52691897035885, + "99.999" : 342.52691897035885, + "99.9999" : 342.52691897035885, + "100.0" : 342.52691897035885 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 340.36259544413855, + 339.3679710278199, + 339.70911503866444 + ], + [ + 327.3231459328245, + 329.51373715892254, + 334.41701909854896 + ], + [ + 342.02520640669826, + 342.52691897035885, + 342.5112856038977 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 107.56678718393282, + "scoreError" : 0.8035552983655688, + "scoreConfidence" : [ + 106.76323188556725, + 108.37034248229838 + ], + "scorePercentiles" : { + "0.0" : 106.96254754530847, + "50.0" : 107.6430612124555, + "90.0" : 108.25459860591951, + "95.0" : 108.25459860591951, + "99.0" : 108.25459860591951, + "99.9" : 108.25459860591951, + "99.99" : 108.25459860591951, + "99.999" : 108.25459860591951, + "99.9999" : 108.25459860591951, + "100.0" : 108.25459860591951 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 107.75910317895423, + 108.16501022003597, + 108.25459860591951 + ], + [ + 107.47077297938178, + 107.6430612124555, + 107.75656223064789 + ], + [ + 106.96254754530847, + 107.04988075523372, + 107.03954792745826 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06282593834342524, + "scoreError" : 0.00124014987561755, + "scoreConfidence" : [ + 0.0615857884678077, + 0.06406608821904279 + ], + "scorePercentiles" : { + "0.0" : 0.061971611277398725, + "50.0" : 0.06275012118093684, + "90.0" : 0.06380773513779088, + "95.0" : 0.06380773513779088, + "99.0" : 0.06380773513779088, + "99.9" : 0.06380773513779088, + "99.99" : 0.06380773513779088, + "99.999" : 0.06380773513779088, + "99.9999" : 0.06380773513779088, + "100.0" : 0.06380773513779088 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06380773513779088, + 0.06360714405566828, + 0.06368026652317607 + ], + [ + 0.06204686022919756, + 0.061971611277398725, + 0.06207596931003445 + ], + [ + 0.0630071047979082, + 0.06275012118093684, + 0.06248663257871617 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.7645891824443105E-4, + "scoreError" : 7.420531364522643E-6, + "scoreConfidence" : [ + 3.690383868799084E-4, + 3.838794496089537E-4 + ], + "scorePercentiles" : { + "0.0" : 3.7083719638183197E-4, + "50.0" : 3.784746061574875E-4, + "90.0" : 3.81487875620763E-4, + "95.0" : 3.81487875620763E-4, + "99.0" : 3.81487875620763E-4, + "99.9" : 3.81487875620763E-4, + "99.99" : 3.81487875620763E-4, + "99.999" : 3.81487875620763E-4, + "99.9999" : 3.81487875620763E-4, + "100.0" : 3.81487875620763E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.81487875620763E-4, + 3.7847707489032533E-4, + 3.758967400060188E-4 + ], + [ + 3.784746061574875E-4, + 3.799740420807843E-4, + 3.808930146034486E-4 + ], + [ + 3.709759403254721E-4, + 3.7083719638183197E-4, + 3.711137741337483E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014170195070241436, + "scoreError" : 1.5374022955591253E-4, + "scoreConfidence" : [ + 0.014016454840685524, + 0.014323935299797348 + ], + "scorePercentiles" : { + "0.0" : 0.014048208614820965, + "50.0" : 0.014181384624438778, + "90.0" : 0.014275301442216413, + "95.0" : 0.014275301442216413, + "99.0" : 0.014275301442216413, + "99.9" : 0.014275301442216413, + "99.99" : 0.014275301442216413, + "99.999" : 0.014275301442216413, + "99.9999" : 0.014275301442216413, + "100.0" : 0.014275301442216413 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.01408180109132642, + 0.014048208614820965, + 0.014050356922169065 + ], + [ + 0.014182106285153491, + 0.014179868830771063, + 0.014181384624438778 + ], + [ + 0.014275301442216413, + 0.014266937955287974, + 0.014265789865988764 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9853098955367946, + "scoreError" : 0.021446285031264112, + "scoreConfidence" : [ + 0.9638636105055305, + 1.0067561805680587 + ], + "scorePercentiles" : { + "0.0" : 0.9752768992588258, + "50.0" : 0.9783446756016435, + "90.0" : 1.0023353015936654, + "95.0" : 1.0023353015936654, + "99.0" : 1.0023353015936654, + "99.9" : 1.0023353015936654, + "99.99" : 1.0023353015936654, + "99.999" : 1.0023353015936654, + "99.9999" : 1.0023353015936654, + "100.0" : 1.0023353015936654 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 1.0022688939667268, + 1.0023353015936654, + 1.0022084627718209 + ], + [ + 0.9752768992588258, + 0.9762894800351459, + 0.9758775303473849 + ], + [ + 0.9767574471139759, + 0.9784303691419626, + 0.9783446756016435 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.013155312270424532, + "scoreError" : 2.2122281273061355E-4, + "scoreConfidence" : [ + 0.012934089457693919, + 0.013376535083155146 + ], + "scorePercentiles" : { + "0.0" : 0.01308103762286097, + "50.0" : 0.013132885895183091, + "90.0" : 0.013261304114086875, + "95.0" : 0.013261304114086875, + "99.0" : 0.013261304114086875, + "99.9" : 0.013261304114086875, + "99.99" : 0.013261304114086875, + "99.999" : 0.013261304114086875, + "99.9999" : 0.013261304114086875, + "100.0" : 0.013261304114086875 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013170846136420509, + 0.013233967485032793, + 0.013261304114086875 + ], + [ + 0.013089792610200374, + 0.013094925653945672, + 0.01308103762286097 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.775777798225155, + "scoreError" : 0.054194193911174686, + "scoreConfidence" : [ + 3.7215836043139805, + 3.8299719921363296 + ], + "scorePercentiles" : { + "0.0" : 3.7556604196696695, + "50.0" : 3.7757238366945414, + "90.0" : 3.8012071276595742, + "95.0" : 3.8012071276595742, + "99.0" : 3.8012071276595742, + "99.9" : 3.8012071276595742, + "99.99" : 3.8012071276595742, + "99.999" : 3.8012071276595742, + "99.9999" : 3.8012071276595742, + "100.0" : 3.8012071276595742 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.7556604196696695, + 3.788914986363636, + 3.788116437121212 + ], + [ + 3.8012071276595742, + 3.7574365822689706, + 3.7633312362678706 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.997883209839679, + "scoreError" : 0.09377215361018633, + "scoreConfidence" : [ + 2.9041110562294925, + 3.091655363449865 + ], + "scorePercentiles" : { + "0.0" : 2.9241853023391813, + "50.0" : 3.0141105696202533, + "90.0" : 3.0615126179981633, + "95.0" : 3.0615126179981633, + "99.0" : 3.0615126179981633, + "99.9" : 3.0615126179981633, + "99.99" : 3.0615126179981633, + "99.999" : 3.0615126179981633, + "99.9999" : 3.0615126179981633, + "100.0" : 3.0615126179981633 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.9241853023391813, + 2.9325244403400763, + 2.925960527501463 + ], + [ + 3.051239873703478, + 3.0029951573101172, + 3.0444756797564687 + ], + [ + 3.0239447199879046, + 3.0141105696202533, + 3.0615126179981633 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.177529407092993, + "scoreError" : 0.0055248675533280875, + "scoreConfidence" : [ + 0.1720045395396649, + 0.1830542746463211 + ], + "scorePercentiles" : { + "0.0" : 0.17486462843603554, + "50.0" : 0.1756732380324989, + "90.0" : 0.18216117268388649, + "95.0" : 0.18216117268388649, + "99.0" : 0.18216117268388649, + "99.9" : 0.18216117268388649, + "99.99" : 0.18216117268388649, + "99.999" : 0.18216117268388649, + "99.9999" : 0.18216117268388649, + "100.0" : 0.18216117268388649 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17616140713794987, + 0.17548674602533956, + 0.1750206234314017 + ], + [ + 0.18172378042885698, + 0.18174547134834523, + 0.18216117268388649 + ], + [ + 0.1756732380324989, + 0.17492759631262245, + 0.17486462843603554 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.32976828318298224, + "scoreError" : 0.010628414016052913, + "scoreConfidence" : [ + 0.3191398691669293, + 0.34039669719903515 + ], + "scorePercentiles" : { + "0.0" : 0.3216373301492345, + "50.0" : 0.33094866118410166, + "90.0" : 0.3368310063659941, + "95.0" : 0.3368310063659941, + "99.0" : 0.3368310063659941, + "99.9" : 0.3368310063659941, + "99.99" : 0.3368310063659941, + "99.999" : 0.3368310063659941, + "99.9999" : 0.3368310063659941, + "100.0" : 0.3368310063659941 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3368310063659941, + 0.33574312472302426, + 0.33595367309436625 + ], + [ + 0.33283418678027027, + 0.32985339994062735, + 0.33094866118410166 + ], + [ + 0.32246368138140075, + 0.3216373301492345, + 0.32164948502782154 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16037060522180674, + "scoreError" : 0.011186335452461017, + "scoreConfidence" : [ + 0.14918426976934573, + 0.17155694067426774 + ], + "scorePercentiles" : { + "0.0" : 0.15342508020865295, + "50.0" : 0.15895105458244588, + "90.0" : 0.16888263868341946, + "95.0" : 0.16888263868341946, + "99.0" : 0.16888263868341946, + "99.9" : 0.16888263868341946, + "99.99" : 0.16888263868341946, + "99.999" : 0.16888263868341946, + "99.9999" : 0.16888263868341946, + "100.0" : 0.16888263868341946 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16888263868341946, + 0.16861914202610193, + 0.16854025700273031 + ], + [ + 0.1535660718980344, + 0.15342508020865295, + 0.15356292708957173 + ], + [ + 0.15895105458244588, + 0.15883483265565437, + 0.15895344284964952 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3861324143689894, + "scoreError" : 0.003575572767244633, + "scoreConfidence" : [ + 0.38255684160174475, + 0.389707987136234 + ], + "scorePercentiles" : { + "0.0" : 0.38304099191818597, + "50.0" : 0.38653313933982686, + "90.0" : 0.3896898799002416, + "95.0" : 0.3896898799002416, + "99.0" : 0.3896898799002416, + "99.9" : 0.3896898799002416, + "99.99" : 0.3896898799002416, + "99.999" : 0.3896898799002416, + "99.9999" : 0.3896898799002416, + "100.0" : 0.3896898799002416 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.38653313933982686, + 0.38562719511818916, + 0.38522279780431434 + ], + [ + 0.38747809643922665, + 0.38698291312591904, + 0.3874144294735211 + ], + [ + 0.3896898799002416, + 0.3832022862014791, + 0.38304099191818597 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15756813557818247, + "scoreError" : 0.0065165439758813224, + "scoreConfidence" : [ + 0.15105159160230114, + 0.1640846795540638 + ], + "scorePercentiles" : { + "0.0" : 0.15212867388757892, + "50.0" : 0.15919887802470709, + "90.0" : 0.16154582684199473, + "95.0" : 0.16154582684199473, + "99.0" : 0.16154582684199473, + "99.9" : 0.16154582684199473, + "99.99" : 0.16154582684199473, + "99.999" : 0.16154582684199473, + "99.9999" : 0.16154582684199473, + "100.0" : 0.16154582684199473 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1531477717234831, + 0.1522394138807697, + 0.15212867388757892 + ], + [ + 0.16154582684199473, + 0.1602374568251374, + 0.1601357834358186 + ], + [ + 0.16049824886449354, + 0.15898116671965914, + 0.15919887802470709 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04687713978540145, + "scoreError" : 0.0010612687857045062, + "scoreConfidence" : [ + 0.045815870999696945, + 0.047938408571105956 + ], + "scorePercentiles" : { + "0.0" : 0.04606025472801806, + "50.0" : 0.04693274996010775, + "90.0" : 0.04757975261209653, + "95.0" : 0.04757975261209653, + "99.0" : 0.04757975261209653, + "99.9" : 0.04757975261209653, + "99.99" : 0.04757975261209653, + "99.999" : 0.04757975261209653, + "99.9999" : 0.04757975261209653, + "100.0" : 0.04757975261209653 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04755243152779165, + 0.04757975261209653, + 0.04754639047849984 + ], + [ + 0.04707834560177012, + 0.04693274996010775, + 0.04685888061946488 + ], + [ + 0.046183133010363364, + 0.04610231953050085, + 0.04606025472801806 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9360297.634597164, + "scoreError" : 175391.63757937515, + "scoreConfidence" : [ + 9184905.997017788, + 9535689.27217654 + ], + "scorePercentiles" : { + "0.0" : 9260010.685185185, + "50.0" : 9321470.84249767, + "90.0" : 9536754.620591039, + "95.0" : 9536754.620591039, + "99.0" : 9536754.620591039, + "99.9" : 9536754.620591039, + "99.99" : 9536754.620591039, + "99.999" : 9536754.620591039, + "99.9999" : 9536754.620591039, + "100.0" : 9536754.620591039 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9536754.620591039, + 9475862.076704545, + 9467337.743614001 + ], + [ + 9321470.84249767, + 9315488.694599628, + 9326853.998136068 + ], + [ + 9270368.858202038, + 9260010.685185185, + 9268531.1918443 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-04-06T11:33:26Z-14c9136a6a33103f69f86f39bcd486bcae2ff525-jdk17.json b/performance-results/2025-04-06T11:33:26Z-14c9136a6a33103f69f86f39bcd486bcae2ff525-jdk17.json new file mode 100644 index 0000000000..3751f422c6 --- /dev/null +++ b/performance-results/2025-04-06T11:33:26Z-14c9136a6a33103f69f86f39bcd486bcae2ff525-jdk17.json @@ -0,0 +1,1310 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.3957352409364385, + "scoreError" : 0.015684974253292697, + "scoreConfidence" : [ + 3.380050266683146, + 3.411420215189731 + ], + "scorePercentiles" : { + "0.0" : 3.392976664184572, + "50.0" : 3.395705894477954, + "90.0" : 3.3985525106052745, + "95.0" : 3.3985525106052745, + "99.0" : 3.3985525106052745, + "99.9" : 3.3985525106052745, + "99.99" : 3.3985525106052745, + "99.999" : 3.3985525106052745, + "99.9999" : 3.3985525106052745, + "100.0" : 3.3985525106052745 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.394674778427625, + 3.3967370105282826 + ], + [ + 3.392976664184572, + 3.3985525106052745 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.715366014713939, + "scoreError" : 0.022445605539527534, + "scoreConfidence" : [ + 1.6929204091744114, + 1.7378116202534664 + ], + "scorePercentiles" : { + "0.0" : 1.7114341422770996, + "50.0" : 1.7154414395911841, + "90.0" : 1.7191470373962887, + "95.0" : 1.7191470373962887, + "99.0" : 1.7191470373962887, + "99.9" : 1.7191470373962887, + "99.99" : 1.7191470373962887, + "99.999" : 1.7191470373962887, + "99.9999" : 1.7191470373962887, + "100.0" : 1.7191470373962887 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7114341422770996, + 1.7136486614788984 + ], + [ + 1.7172342177034698, + 1.7191470373962887 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8623839906524824, + "scoreError" : 0.017881712405582097, + "scoreConfidence" : [ + 0.8445022782469003, + 0.8802657030580645 + ], + "scorePercentiles" : { + "0.0" : 0.8590144212325085, + "50.0" : 0.8627068784950527, + "90.0" : 0.865107784387316, + "95.0" : 0.865107784387316, + "99.0" : 0.865107784387316, + "99.9" : 0.865107784387316, + "99.99" : 0.865107784387316, + "99.999" : 0.865107784387316, + "99.9999" : 0.865107784387316, + "100.0" : 0.865107784387316 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8641194770854608, + 0.865107784387316 + ], + [ + 0.8590144212325085, + 0.8612942799046445 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 15.964369759761347, + "scoreError" : 0.14949247492861661, + "scoreConfidence" : [ + 15.81487728483273, + 16.113862234689964 + ], + "scorePercentiles" : { + "0.0" : 15.811852078065343, + "50.0" : 15.958841605607912, + "90.0" : 16.068686757278652, + "95.0" : 16.068686757278652, + "99.0" : 16.068686757278652, + "99.9" : 16.068686757278652, + "99.99" : 16.068686757278652, + "99.999" : 16.068686757278652, + "99.9999" : 16.068686757278652, + "100.0" : 16.068686757278652 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 15.884122348234245, + 15.892067793051442, + 15.811852078065343 + ], + [ + 16.068686757278652, + 16.02611385854489, + 16.05950077065129 + ], + [ + 16.030228524873884, + 15.958841605607912, + 15.947914101544484 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2632.946473250312, + "scoreError" : 93.99387762333102, + "scoreConfidence" : [ + 2538.952595626981, + 2726.940350873643 + ], + "scorePercentiles" : { + "0.0" : 2573.8895531139106, + "50.0" : 2619.4836853276893, + "90.0" : 2713.525151295088, + "95.0" : 2713.525151295088, + "99.0" : 2713.525151295088, + "99.9" : 2713.525151295088, + "99.99" : 2713.525151295088, + "99.999" : 2713.525151295088, + "99.9999" : 2713.525151295088, + "100.0" : 2713.525151295088 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2621.4226450253977, + 2619.4836853276893, + 2611.349597133837 + ], + [ + 2581.449953604812, + 2578.211708521408, + 2573.8895531139106 + ], + [ + 2697.7887121079466, + 2713.525151295088, + 2699.397253122716 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 69534.66430141217, + "scoreError" : 2801.5518349881327, + "scoreConfidence" : [ + 66733.11246642403, + 72336.2161364003 + ], + "scorePercentiles" : { + "0.0" : 65567.4080996611, + "50.0" : 69961.79605161793, + "90.0" : 71051.43139625118, + "95.0" : 71051.43139625118, + "99.0" : 71051.43139625118, + "99.9" : 71051.43139625118, + "99.99" : 71051.43139625118, + "99.999" : 71051.43139625118, + "99.9999" : 71051.43139625118, + "100.0" : 71051.43139625118 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 68854.52710104783, + 68971.27421927753, + 65567.4080996611 + ], + [ + 69961.79605161793, + 69908.7846493282, + 70055.8954803111 + ], + [ + 70651.62694371553, + 71051.43139625118, + 70789.23477149908 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 324.37714013322415, + "scoreError" : 6.953692403364356, + "scoreConfidence" : [ + 317.4234477298598, + 331.3308325365885 + ], + "scorePercentiles" : { + "0.0" : 317.9794415797697, + "50.0" : 325.6979033805179, + "90.0" : 329.47163983902743, + "95.0" : 329.47163983902743, + "99.0" : 329.47163983902743, + "99.9" : 329.47163983902743, + "99.99" : 329.47163983902743, + "99.999" : 329.47163983902743, + "99.9999" : 329.47163983902743, + "100.0" : 329.47163983902743 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 325.6979033805179, + 326.8589024612708, + 327.71947283667845 + ], + [ + 319.1493847905536, + 317.9794415797697, + 320.4422634820272 + ], + [ + 329.47163983902743, + 327.1995344627017, + 324.87571836647084 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 102.959790420029, + "scoreError" : 2.6836297682130374, + "scoreConfidence" : [ + 100.27616065181596, + 105.64342018824203 + ], + "scorePercentiles" : { + "0.0" : 101.06488807701024, + "50.0" : 102.31342535678377, + "90.0" : 105.815826229701, + "95.0" : 105.815826229701, + "99.0" : 105.815826229701, + "99.9" : 105.815826229701, + "99.99" : 105.815826229701, + "99.999" : 105.815826229701, + "99.9999" : 105.815826229701, + "100.0" : 105.815826229701 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 101.6268312221908, + 102.22420517816848, + 101.06488807701024 + ], + [ + 101.94574008326629, + 102.31342535678377, + 102.68228515975018 + ], + [ + 104.18470572687318, + 104.78020674651705, + 105.815826229701 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06385212124215954, + "scoreError" : 3.980491241938138E-4, + "scoreConfidence" : [ + 0.06345407211796572, + 0.06425017036635336 + ], + "scorePercentiles" : { + "0.0" : 0.06360682266025519, + "50.0" : 0.06375608461533558, + "90.0" : 0.06420885625770495, + "95.0" : 0.06420885625770495, + "99.0" : 0.06420885625770495, + "99.9" : 0.06420885625770495, + "99.99" : 0.06420885625770495, + "99.999" : 0.06420885625770495, + "99.9999" : 0.06420885625770495, + "100.0" : 0.06420885625770495 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.0636074658720113, + 0.06368320890912564, + 0.06400144288283445 + ], + [ + 0.0640410836295172, + 0.06411013171222689, + 0.06420885625770495 + ], + [ + 0.06365399464042469, + 0.06360682266025519, + 0.06375608461533558 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.9662898037091357E-4, + "scoreError" : 2.4763194628361096E-5, + "scoreConfidence" : [ + 3.718657857425525E-4, + 4.2139217499927465E-4 + ], + "scorePercentiles" : { + "0.0" : 3.815935281333288E-4, + "50.0" : 3.910863244286691E-4, + "90.0" : 4.1596443371843373E-4, + "95.0" : 4.1596443371843373E-4, + "99.0" : 4.1596443371843373E-4, + "99.9" : 4.1596443371843373E-4, + "99.99" : 4.1596443371843373E-4, + "99.999" : 4.1596443371843373E-4, + "99.9999" : 4.1596443371843373E-4, + "100.0" : 4.1596443371843373E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 4.1507248171887697E-4, + 4.1596443371843373E-4, + 4.158961915449522E-4 + ], + [ + 3.9249085467373625E-4, + 3.910863244286691E-4, + 3.9028536381353695E-4 + ], + [ + 3.815935281333288E-4, + 3.83322489934839E-4, + 3.839491553718492E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014256156575693513, + "scoreError" : 1.1832459269240048E-4, + "scoreConfidence" : [ + 0.014137831983001113, + 0.014374481168385913 + ], + "scorePercentiles" : { + "0.0" : 0.014160325917188587, + "50.0" : 0.014281502312143682, + "90.0" : 0.01434438235319431, + "95.0" : 0.01434438235319431, + "99.0" : 0.01434438235319431, + "99.9" : 0.01434438235319431, + "99.99" : 0.01434438235319431, + "99.999" : 0.01434438235319431, + "99.9999" : 0.01434438235319431, + "100.0" : 0.01434438235319431 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014294949020667335, + 0.014281502312143682, + 0.014222103556901898 + ], + [ + 0.01434438235319431, + 0.01433649228420283, + 0.014300185563870207 + ], + [ + 0.01419311983093378, + 0.014160325917188587, + 0.014172348342138978 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9824788631918102, + "scoreError" : 0.015282153141593577, + "scoreConfidence" : [ + 0.9671967100502167, + 0.9977610163334037 + ], + "scorePercentiles" : { + "0.0" : 0.971180237253569, + "50.0" : 0.9812488621467818, + "90.0" : 0.9941125791252485, + "95.0" : 0.9941125791252485, + "99.0" : 0.9941125791252485, + "99.9" : 0.9941125791252485, + "99.99" : 0.9941125791252485, + "99.999" : 0.9941125791252485, + "99.9999" : 0.9941125791252485, + "100.0" : 0.9941125791252485 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9812488621467818, + 0.9805092572801255, + 0.9850614140070922 + ], + [ + 0.9910779913784561, + 0.9941125791252485, + 0.9935723269746647 + ], + [ + 0.9720085908251531, + 0.9735385097352025, + 0.971180237253569 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.01313513390633781, + "scoreError" : 1.7088782952539693E-4, + "scoreConfidence" : [ + 0.012964246076812413, + 0.013306021735863208 + ], + "scorePercentiles" : { + "0.0" : 0.013032883220601843, + "50.0" : 0.013130920356492343, + "90.0" : 0.013206380218375443, + "95.0" : 0.013206380218375443, + "99.0" : 0.013206380218375443, + "99.9" : 0.013206380218375443, + "99.99" : 0.013206380218375443, + "99.999" : 0.013206380218375443, + "99.9999" : 0.013206380218375443, + "100.0" : 0.013206380218375443 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013032883220601843, + 0.01318755262359721, + 0.013206380218375443 + ], + [ + 0.013137456023499675, + 0.013122146662467688, + 0.013124384689485012 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.867786864317754, + "scoreError" : 0.048553694236964026, + "scoreConfidence" : [ + 3.81923317008079, + 3.916340558554718 + ], + "scorePercentiles" : { + "0.0" : 3.8529737359507314, + "50.0" : 3.8585532311495188, + "90.0" : 3.8924816739299613, + "95.0" : 3.8924816739299613, + "99.0" : 3.8924816739299613, + "99.9" : 3.8924816739299613, + "99.99" : 3.8924816739299613, + "99.999" : 3.8924816739299613, + "99.9999" : 3.8924816739299613, + "100.0" : 3.8924816739299613 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.8569471233616035, + 3.8600316018518517, + 3.8529737359507314 + ], + [ + 3.857074860447186, + 3.88721219036519, + 3.8924816739299613 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.0750627687740564, + "scoreError" : 0.05511820982963315, + "scoreConfidence" : [ + 3.0199445589444234, + 3.1301809786036894 + ], + "scorePercentiles" : { + "0.0" : 3.0299908679188126, + "50.0" : 3.064409943627451, + "90.0" : 3.135634054231975, + "95.0" : 3.135634054231975, + "99.0" : 3.135634054231975, + "99.9" : 3.135634054231975, + "99.99" : 3.135634054231975, + "99.999" : 3.135634054231975, + "99.9999" : 3.135634054231975, + "100.0" : 3.135634054231975 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.0817256949152543, + 3.0892173233477456, + 3.1099776281094527 + ], + [ + 3.0299908679188126, + 3.064409943627451, + 3.135634054231975 + ], + [ + 3.063156679019908, + 3.051907723527617, + 3.0495450042682926 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17707974113798844, + "scoreError" : 0.001753183598704396, + "scoreConfidence" : [ + 0.17532655753928406, + 0.17883292473669282 + ], + "scorePercentiles" : { + "0.0" : 0.17542807671256908, + "50.0" : 0.17744374794612913, + "90.0" : 0.17834795757165023, + "95.0" : 0.17834795757165023, + "99.0" : 0.17834795757165023, + "99.9" : 0.17834795757165023, + "99.99" : 0.17834795757165023, + "99.999" : 0.17834795757165023, + "99.9999" : 0.17834795757165023, + "100.0" : 0.17834795757165023 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17542807671256908, + 0.17567099878790007, + 0.17622787493391603 + ], + [ + 0.17834795757165023, + 0.17778623739088695, + 0.1777325394021256 + ], + [ + 0.17783960020984493, + 0.17744374794612913, + 0.17724063728687392 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3291669764763291, + "scoreError" : 0.007571788356830977, + "scoreConfidence" : [ + 0.3215951881194981, + 0.33673876483316006 + ], + "scorePercentiles" : { + "0.0" : 0.3241040484848485, + "50.0" : 0.32796601954611043, + "90.0" : 0.3354437538239635, + "95.0" : 0.3354437538239635, + "99.0" : 0.3354437538239635, + "99.9" : 0.3354437538239635, + "99.99" : 0.3354437538239635, + "99.999" : 0.3354437538239635, + "99.9999" : 0.3354437538239635, + "100.0" : 0.3354437538239635 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3354437538239635, + 0.3346651346964728, + 0.3344965017894772 + ], + [ + 0.3279725352399069, + 0.3277535350353959, + 0.32796601954611043 + ], + [ + 0.32507591015180576, + 0.3241040484848485, + 0.32502534951898077 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16062776080834268, + "scoreError" : 0.005431148276752742, + "scoreConfidence" : [ + 0.15519661253158995, + 0.1660589090850954 + ], + "scorePercentiles" : { + "0.0" : 0.1560528020661028, + "50.0" : 0.16137011350470382, + "90.0" : 0.16436436313730646, + "95.0" : 0.16436436313730646, + "99.0" : 0.16436436313730646, + "99.9" : 0.16436436313730646, + "99.99" : 0.16436436313730646, + "99.999" : 0.16436436313730646, + "99.9999" : 0.16436436313730646, + "100.0" : 0.16436436313730646 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1570186333689235, + 0.1567735383614473, + 0.1560528020661028 + ], + [ + 0.16436436313730646, + 0.16383697162423408, + 0.16358005905157608 + ], + [ + 0.161679944674384, + 0.16137011350470382, + 0.160973421486406 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3903617858409897, + "scoreError" : 0.009828721884524704, + "scoreConfidence" : [ + 0.38053306395646497, + 0.4001905077255144 + ], + "scorePercentiles" : { + "0.0" : 0.3824873031821311, + "50.0" : 0.3917676618349918, + "90.0" : 0.39610914148776044, + "95.0" : 0.39610914148776044, + "99.0" : 0.39610914148776044, + "99.9" : 0.39610914148776044, + "99.99" : 0.39610914148776044, + "99.999" : 0.39610914148776044, + "99.9999" : 0.39610914148776044, + "100.0" : 0.39610914148776044 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.39610914148776044, + 0.3953911683536296, + 0.39527777813352305 + ], + [ + 0.3824873031821311, + 0.38368207650399017, + 0.3827536854212118 + ], + [ + 0.39533068979285263, + 0.3917676618349918, + 0.39045656785881616 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15819162474581686, + "scoreError" : 0.0048135868130951606, + "scoreConfidence" : [ + 0.1533780379327217, + 0.163005211558912 + ], + "scorePercentiles" : { + "0.0" : 0.15527001720363326, + "50.0" : 0.15726231035241944, + "90.0" : 0.16197077154565037, + "95.0" : 0.16197077154565037, + "99.0" : 0.16197077154565037, + "99.9" : 0.16197077154565037, + "99.99" : 0.16197077154565037, + "99.999" : 0.16197077154565037, + "99.9999" : 0.16197077154565037, + "100.0" : 0.16197077154565037 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15765723094386025, + 0.15726231035241944, + 0.15718987414137287 + ], + [ + 0.16197077154565037, + 0.16175013906995553, + 0.1617629850048528 + ], + [ + 0.15536635726936582, + 0.15549493718124144, + 0.15527001720363326 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.047076397918228714, + "scoreError" : 9.393130932661902E-4, + "scoreConfidence" : [ + 0.046137084824962524, + 0.048015711011494905 + ], + "scorePercentiles" : { + "0.0" : 0.04660691954381909, + "50.0" : 0.04679847674848492, + "90.0" : 0.04791543753354033, + "95.0" : 0.04791543753354033, + "99.0" : 0.04791543753354033, + "99.9" : 0.04791543753354033, + "99.99" : 0.04791543753354033, + "99.999" : 0.04791543753354033, + "99.9999" : 0.04791543753354033, + "100.0" : 0.04791543753354033 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04681345522126048, + 0.04679847674848492, + 0.046763169458395294 + ], + [ + 0.046641739345997954, + 0.04660691954381909, + 0.04662555677971633 + ], + [ + 0.047764110466837977, + 0.047758716166006014, + 0.04791543753354033 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9813602.948911339, + "scoreError" : 123718.98750194644, + "scoreConfidence" : [ + 9689883.961409392, + 9937321.936413286 + ], + "scorePercentiles" : { + "0.0" : 9679557.92843327, + "50.0" : 9822463.236506378, + "90.0" : 9927081.881944444, + "95.0" : 9927081.881944444, + "99.0" : 9927081.881944444, + "99.9" : 9927081.881944444, + "99.99" : 9927081.881944444, + "99.999" : 9927081.881944444, + "99.9999" : 9927081.881944444, + "100.0" : 9927081.881944444 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9872000.78183613, + 9822463.236506378, + 9927081.881944444 + ], + [ + 9853020.666995075, + 9853184.431527093, + 9790321.015655577 + ], + [ + 9679557.92843327, + 9754578.18031189, + 9770218.416992188 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-04-07T01:27:42Z-154bb89d14e9701d1b9f0764cbf813ba3a3c050a-jdk17.json b/performance-results/2025-04-07T01:27:42Z-154bb89d14e9701d1b9f0764cbf813ba3a3c050a-jdk17.json new file mode 100644 index 0000000000..fb66c07511 --- /dev/null +++ b/performance-results/2025-04-07T01:27:42Z-154bb89d14e9701d1b9f0764cbf813ba3a3c050a-jdk17.json @@ -0,0 +1,1310 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4102846934427835, + "scoreError" : 0.029120215772332664, + "scoreConfidence" : [ + 3.381164477670451, + 3.439404909215116 + ], + "scorePercentiles" : { + "0.0" : 3.40421431924695, + "50.0" : 3.411477217299319, + "90.0" : 3.4139700199255474, + "95.0" : 3.4139700199255474, + "99.0" : 3.4139700199255474, + "99.9" : 3.4139700199255474, + "99.99" : 3.4139700199255474, + "99.999" : 3.4139700199255474, + "99.9999" : 3.4139700199255474, + "100.0" : 3.4139700199255474 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.40421431924695, + 3.4139700199255474 + ], + [ + 3.4095218102136196, + 3.4134326243850186 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7221652033520922, + "scoreError" : 0.009478621744532833, + "scoreConfidence" : [ + 1.7126865816075594, + 1.731643825096625 + ], + "scorePercentiles" : { + "0.0" : 1.7203619756019852, + "50.0" : 1.722271370931328, + "90.0" : 1.723756095943728, + "95.0" : 1.723756095943728, + "99.0" : 1.723756095943728, + "99.9" : 1.723756095943728, + "99.99" : 1.723756095943728, + "99.999" : 1.723756095943728, + "99.9999" : 1.723756095943728, + "100.0" : 1.723756095943728 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7228412979004932, + 1.723756095943728 + ], + [ + 1.7203619756019852, + 1.7217014439621625 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8638167830583094, + "scoreError" : 0.005432486996052623, + "scoreConfidence" : [ + 0.8583842960622569, + 0.869249270054362 + ], + "scorePercentiles" : { + "0.0" : 0.8627272504566224, + "50.0" : 0.8639140939295744, + "90.0" : 0.8647116939174667, + "95.0" : 0.8647116939174667, + "99.0" : 0.8647116939174667, + "99.9" : 0.8647116939174667, + "99.99" : 0.8647116939174667, + "99.999" : 0.8647116939174667, + "99.9999" : 0.8647116939174667, + "100.0" : 0.8647116939174667 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8627272504566224, + 0.8647116939174667 + ], + [ + 0.8641521696201839, + 0.863676018238965 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 15.856427557514358, + "scoreError" : 0.21807549856382044, + "scoreConfidence" : [ + 15.638352058950538, + 16.07450305607818 + ], + "scorePercentiles" : { + "0.0" : 15.681327891325898, + "50.0" : 15.904269221101467, + "90.0" : 16.02142911448296, + "95.0" : 16.02142911448296, + "99.0" : 16.02142911448296, + "99.9" : 16.02142911448296, + "99.99" : 16.02142911448296, + "99.999" : 16.02142911448296, + "99.9999" : 16.02142911448296, + "100.0" : 16.02142911448296 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 15.904269221101467, + 16.02142911448296, + 15.943726644806675 + ], + [ + 15.681327891325898, + 15.700241982223265, + 15.6913767022947 + ], + [ + 15.881763309316872, + 15.936401461123317, + 15.947311690954091 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2615.3268175518824, + "scoreError" : 85.27331964422102, + "scoreConfidence" : [ + 2530.0534979076615, + 2700.6001371961033 + ], + "scorePercentiles" : { + "0.0" : 2550.521812924825, + "50.0" : 2603.3546349283893, + "90.0" : 2682.250838153494, + "95.0" : 2682.250838153494, + "99.0" : 2682.250838153494, + "99.9" : 2682.250838153494, + "99.99" : 2682.250838153494, + "99.999" : 2682.250838153494, + "99.9999" : 2682.250838153494, + "100.0" : 2682.250838153494 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2682.250838153494, + 2674.2071330474264, + 2676.491646172537 + ], + [ + 2573.055142655825, + 2564.6397919711726, + 2550.521812924825 + ], + [ + 2612.447308343581, + 2603.3546349283893, + 2600.9730497696914 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 68682.74721165966, + "scoreError" : 1904.0986389262905, + "scoreConfidence" : [ + 66778.64857273338, + 70586.84585058595 + ], + "scorePercentiles" : { + "0.0" : 67315.78978042262, + "50.0" : 68558.57912756453, + "90.0" : 70108.49357429743, + "95.0" : 70108.49357429743, + "99.0" : 70108.49357429743, + "99.9" : 70108.49357429743, + "99.99" : 70108.49357429743, + "99.999" : 70108.49357429743, + "99.9999" : 70108.49357429743, + "100.0" : 70108.49357429743 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 70081.54631565987, + 69908.33092759324, + 70108.49357429743 + ], + [ + 68695.19237810129, + 68558.57912756453, + 68502.6084660597 + ], + [ + 67315.78978042262, + 67441.95616624445, + 67532.22816899384 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 341.9660588620118, + "scoreError" : 5.428672335615734, + "scoreConfidence" : [ + 336.53738652639606, + 347.3947311976275 + ], + "scorePercentiles" : { + "0.0" : 336.4476621680284, + "50.0" : 342.2783710532269, + "90.0" : 345.6060043253826, + "95.0" : 345.6060043253826, + "99.0" : 345.6060043253826, + "99.9" : 345.6060043253826, + "99.99" : 345.6060043253826, + "99.999" : 345.6060043253826, + "99.9999" : 345.6060043253826, + "100.0" : 345.6060043253826 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 344.6308661866658, + 342.2263703728633, + 339.18226799196634 + ], + [ + 343.869334695566, + 344.96989920298415, + 345.6060043253826 + ], + [ + 342.2783710532269, + 336.4476621680284, + 338.48375376142235 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 102.86025606846653, + "scoreError" : 1.38084080828978, + "scoreConfidence" : [ + 101.47941526017675, + 104.2410968767563 + ], + "scorePercentiles" : { + "0.0" : 101.80541629343892, + "50.0" : 102.80111987931467, + "90.0" : 104.77421204891745, + "95.0" : 104.77421204891745, + "99.0" : 104.77421204891745, + "99.9" : 104.77421204891745, + "99.99" : 104.77421204891745, + "99.999" : 104.77421204891745, + "99.9999" : 104.77421204891745, + "100.0" : 104.77421204891745 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 102.3242423337249, + 101.80541629343892, + 102.80111987931467 + ], + [ + 104.77421204891745, + 102.62377671322751, + 102.42665569290861 + ], + [ + 102.93712545820337, + 102.90042617995776, + 103.14933001650559 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06299738431052335, + "scoreError" : 3.244688347044825E-4, + "scoreConfidence" : [ + 0.06267291547581887, + 0.06332185314522783 + ], + "scorePercentiles" : { + "0.0" : 0.06275631095268876, + "50.0" : 0.06303528535589117, + "90.0" : 0.06329175614711299, + "95.0" : 0.06329175614711299, + "99.0" : 0.06329175614711299, + "99.9" : 0.06329175614711299, + "99.99" : 0.06329175614711299, + "99.999" : 0.06329175614711299, + "99.9999" : 0.06329175614711299, + "100.0" : 0.06329175614711299 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06309860325332525, + 0.06324095105863604, + 0.06305016569991047 + ], + [ + 0.06283930007917657, + 0.06329175614711299, + 0.06303528535589117 + ], + [ + 0.0628358286427014, + 0.06275631095268876, + 0.06282825760526746 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.733489768801373E-4, + "scoreError" : 7.710948014590726E-6, + "scoreConfidence" : [ + 3.6563802886554656E-4, + 3.81059924894728E-4 + ], + "scorePercentiles" : { + "0.0" : 3.682361400802075E-4, + "50.0" : 3.729608204948727E-4, + "90.0" : 3.8100045308045563E-4, + "95.0" : 3.8100045308045563E-4, + "99.0" : 3.8100045308045563E-4, + "99.9" : 3.8100045308045563E-4, + "99.99" : 3.8100045308045563E-4, + "99.999" : 3.8100045308045563E-4, + "99.9999" : 3.8100045308045563E-4, + "100.0" : 3.8100045308045563E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.682361400802075E-4, + 3.70625831766964E-4, + 3.692070808996729E-4 + ], + [ + 3.6864684928719307E-4, + 3.729608204948727E-4, + 3.7460464471704793E-4 + ], + [ + 3.784421620702325E-4, + 3.8100045308045563E-4, + 3.7641680952458926E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.01435726879619418, + "scoreError" : 4.0347910114715526E-4, + "scoreConfidence" : [ + 0.013953789695047025, + 0.014760747897341334 + ], + "scorePercentiles" : { + "0.0" : 0.014138349409377849, + "50.0" : 0.01422107446198828, + "90.0" : 0.014705323339239892, + "95.0" : 0.014705323339239892, + "99.0" : 0.014705323339239892, + "99.9" : 0.014705323339239892, + "99.99" : 0.014705323339239892, + "99.999" : 0.014705323339239892, + "99.9999" : 0.014705323339239892, + "100.0" : 0.014705323339239892 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014220843329512714, + 0.014249974604034115, + 0.01422107446198828 + ], + [ + 0.01465220841904762, + 0.0146646087476152, + 0.014705323339239892 + ], + [ + 0.014192360439900428, + 0.014170676415031508, + 0.014138349409377849 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9895251951545363, + "scoreError" : 0.011617451159531738, + "scoreConfidence" : [ + 0.9779077439950046, + 1.001142646314068 + ], + "scorePercentiles" : { + "0.0" : 0.9812811987047395, + "50.0" : 0.9870416658112909, + "90.0" : 1.0005223407703852, + "95.0" : 1.0005223407703852, + "99.0" : 1.0005223407703852, + "99.9" : 1.0005223407703852, + "99.99" : 1.0005223407703852, + "99.999" : 1.0005223407703852, + "99.9999" : 1.0005223407703852, + "100.0" : 1.0005223407703852 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 1.0005223407703852, + 0.9968223352272727, + 0.9975727868541792 + ], + [ + 0.9870416658112909, + 0.9846626468097677, + 0.9872980485734031 + ], + [ + 0.9837904186915888, + 0.9867353149481993, + 0.9812811987047395 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.01330986014742821, + "scoreError" : 9.891136536444913E-5, + "scoreConfidence" : [ + 0.013210948782063761, + 0.013408771512792659 + ], + "scorePercentiles" : { + "0.0" : 0.01327384584671746, + "50.0" : 0.013299086737854359, + "90.0" : 0.013362976738343782, + "95.0" : 0.013362976738343782, + "99.0" : 0.013362976738343782, + "99.9" : 0.013362976738343782, + "99.99" : 0.013362976738343782, + "99.999" : 0.013362976738343782, + "99.9999" : 0.013362976738343782, + "100.0" : 0.013362976738343782 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013294660619516086, + 0.01327384584671746, + 0.01330351285619263 + ], + [ + 0.013281905929416514, + 0.01334225889438279, + 0.013362976738343782 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.8025668235689842, + "scoreError" : 0.06390927980432547, + "scoreConfidence" : [ + 3.738657543764659, + 3.8664761033733095 + ], + "scorePercentiles" : { + "0.0" : 3.7659801807228916, + "50.0" : 3.806910667222677, + "90.0" : 3.8267197444529457, + "95.0" : 3.8267197444529457, + "99.0" : 3.8267197444529457, + "99.9" : 3.8267197444529457, + "99.99" : 3.8267197444529457, + "99.999" : 3.8267197444529457, + "99.9999" : 3.8267197444529457, + "100.0" : 3.8267197444529457 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.8143089107551487, + 3.7659801807228916, + 3.820578360580596 + ], + [ + 3.788301321212121, + 3.799512423690205, + 3.8267197444529457 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.9759041347139985, + "scoreError" : 0.10713863758918146, + "scoreConfidence" : [ + 2.868765497124817, + 3.08304277230318 + ], + "scorePercentiles" : { + "0.0" : 2.884954732621863, + "50.0" : 3.000250045290942, + "90.0" : 3.0388375967790946, + "95.0" : 3.0388375967790946, + "99.0" : 3.0388375967790946, + "99.9" : 3.0388375967790946, + "99.99" : 3.0388375967790946, + "99.999" : 3.0388375967790946, + "99.9999" : 3.0388375967790946, + "100.0" : 3.0388375967790946 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.0026239456619632, + 3.000250045290942, + 2.9838356843675418 + ], + [ + 2.9118269863173216, + 2.884954732621863, + 2.8888414780473717 + ], + [ + 3.0388375967790946, + 3.038463558323208, + 3.033503185016682 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.18603597518816295, + "scoreError" : 0.012679982126799527, + "scoreConfidence" : [ + 0.17335599306136343, + 0.19871595731496247 + ], + "scorePercentiles" : { + "0.0" : 0.17767118692369194, + "50.0" : 0.18524742478187578, + "90.0" : 0.19535688841352633, + "95.0" : 0.19535688841352633, + "99.0" : 0.19535688841352633, + "99.9" : 0.19535688841352633, + "99.99" : 0.19535688841352633, + "99.999" : 0.19535688841352633, + "99.9999" : 0.19535688841352633, + "100.0" : 0.19535688841352633 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.18528033961425158, + 0.18524742478187578, + 0.185177052070217 + ], + [ + 0.17788650417133609, + 0.17767118692369194, + 0.1776996488734096 + ], + [ + 0.19535688841352633, + 0.19508885146312915, + 0.19491588038202903 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.32826031013776114, + "scoreError" : 0.011022615826861565, + "scoreConfidence" : [ + 0.31723769431089954, + 0.33928292596462273 + ], + "scorePercentiles" : { + "0.0" : 0.320983046477291, + "50.0" : 0.32681424316198815, + "90.0" : 0.3371025889769088, + "95.0" : 0.3371025889769088, + "99.0" : 0.3371025889769088, + "99.9" : 0.3371025889769088, + "99.99" : 0.3371025889769088, + "99.999" : 0.3371025889769088, + "99.9999" : 0.3371025889769088, + "100.0" : 0.3371025889769088 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3223364937467767, + 0.320983046477291, + 0.3219397327366964 + ], + [ + 0.3371025889769088, + 0.3363084072305364, + 0.3361761716811779 + ], + [ + 0.32709179727210286, + 0.32681424316198815, + 0.32559030995637167 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16457991754255474, + "scoreError" : 0.010323140494181456, + "scoreConfidence" : [ + 0.1542567770483733, + 0.1749030580367362 + ], + "scorePercentiles" : { + "0.0" : 0.1599626444910103, + "50.0" : 0.1606458390200803, + "90.0" : 0.1729952570276956, + "95.0" : 0.1729952570276956, + "99.0" : 0.1729952570276956, + "99.9" : 0.1729952570276956, + "99.99" : 0.1729952570276956, + "99.999" : 0.1729952570276956, + "99.9999" : 0.1729952570276956, + "100.0" : 0.1729952570276956 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1729952570276956, + 0.17261480054890047, + 0.17268161886342837 + ], + [ + 0.16080234687248754, + 0.1606458390200803, + 0.16053277127813273 + ], + [ + 0.16059716269732932, + 0.16038681708392807, + 0.1599626444910103 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3934084316923969, + "scoreError" : 0.008778638315417864, + "scoreConfidence" : [ + 0.38462979337697906, + 0.4021870700078148 + ], + "scorePercentiles" : { + "0.0" : 0.3879532519300151, + "50.0" : 0.39231844958807377, + "90.0" : 0.4034614294359719, + "95.0" : 0.4034614294359719, + "99.0" : 0.4034614294359719, + "99.9" : 0.4034614294359719, + "99.99" : 0.4034614294359719, + "99.999" : 0.4034614294359719, + "99.9999" : 0.4034614294359719, + "100.0" : 0.4034614294359719 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3972338251439921, + 0.3963039667512087, + 0.3955053498516907 + ], + [ + 0.4034614294359719, + 0.39231844958807377, + 0.3916460862771207 + ], + [ + 0.3881032016144681, + 0.3879532519300151, + 0.3881503246390312 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15900952508569965, + "scoreError" : 0.0023946034846080585, + "scoreConfidence" : [ + 0.15661492160109158, + 0.16140412857030773 + ], + "scorePercentiles" : { + "0.0" : 0.15720717609884927, + "50.0" : 0.15895266305850936, + "90.0" : 0.16082181456048375, + "95.0" : 0.16082181456048375, + "99.0" : 0.16082181456048375, + "99.9" : 0.16082181456048375, + "99.99" : 0.16082181456048375, + "99.999" : 0.16082181456048375, + "99.9999" : 0.16082181456048375, + "100.0" : 0.16082181456048375 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16082181456048375, + 0.16076233775419982, + 0.1602524095476179 + ], + [ + 0.15938672460233974, + 0.15895266305850936, + 0.15877954825188148 + ], + [ + 0.15768934277334512, + 0.15723370912407036, + 0.15720717609884927 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.047361120540854944, + "scoreError" : 0.0011842744715550232, + "scoreConfidence" : [ + 0.04617684606929992, + 0.04854539501240997 + ], + "scorePercentiles" : { + "0.0" : 0.046548068140666095, + "50.0" : 0.04735400536040686, + "90.0" : 0.04889141967751714, + "95.0" : 0.04889141967751714, + "99.0" : 0.04889141967751714, + "99.9" : 0.04889141967751714, + "99.99" : 0.04889141967751714, + "99.999" : 0.04889141967751714, + "99.9999" : 0.04889141967751714, + "100.0" : 0.04889141967751714 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04889141967751714, + 0.047445435486855404, + 0.04735400536040686 + ], + [ + 0.047628977833767544, + 0.046628790649202896, + 0.046548068140666095 + ], + [ + 0.04771143517321336, + 0.047044408982495095, + 0.046997543563570054 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9484339.070811357, + "scoreError" : 303876.42890579335, + "scoreConfidence" : [ + 9180462.641905565, + 9788215.49971715 + ], + "scorePercentiles" : { + "0.0" : 9283828.396103896, + "50.0" : 9397674.42629108, + "90.0" : 9777845.836754642, + "95.0" : 9777845.836754642, + "99.0" : 9777845.836754642, + "99.9" : 9777845.836754642, + "99.99" : 9777845.836754642, + "99.999" : 9777845.836754642, + "99.9999" : 9777845.836754642, + "100.0" : 9777845.836754642 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9380661.102155576, + 9355213.106641721, + 9283828.396103896 + ], + [ + 9397674.42629108, + 9401537.636278195, + 9390028.017840376 + ], + [ + 9777845.836754642, + 9646593.927675989, + 9725669.187560739 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/security/SECURITY_README.md b/security/SECURITY_README.md new file mode 100644 index 0000000000..ecb543ef05 --- /dev/null +++ b/security/SECURITY_README.md @@ -0,0 +1,9 @@ +## Submitting CVE records + +Use https://vulnogram.github.io/ as a UI to write, validate, and submit CVE records. + +In this Vulnogram UI, you'll be able to view a JSON preview of the CVE payload. You'll find a sample payload in this directory. + +It's better to use the Vulnogram UI as it'll provide extra validation of input. + +Also note, as a CNA we do not need to provide a CVSS score for CVEs. This will be done by security vendors instead. diff --git a/security/cve-sample.json b/security/cve-sample.json new file mode 100644 index 0000000000..715d583209 --- /dev/null +++ b/security/cve-sample.json @@ -0,0 +1,75 @@ +{ + "dataType": "CVE_RECORD", + "dataVersion": "5.1", + "cveMetadata": { + "cveId": "", + "assignerOrgId": "00000000-0000-4000-9000-000000000000", + "requesterUserId": "00000000-0000-4000-9000-000000000000", + "serial": 1, + "state": "PUBLISHED" + }, + "containers": { + "cna": { + "providerMetadata": { + "orgId": "00000000-0000-4000-9000-000000000000" + }, + "problemTypes": [ + { + "descriptions": [ + { + "lang": "en", + "description": "" + } + ] + } + ], + "impacts": [ + { + "descriptions": [ + { + "lang": "en", + "value": "" + } + ] + } + ], + "affected": [ + { + "vendor": "GraphQL Java", + "product": "GraphQL Java [or other library]", + "versions": [ + { + "status": "affected", + "version": "" + } + ], + "defaultStatus": "unaffected" + } + ], + "descriptions": [ + { + "lang": "en", + "value": "[PROBLEMTYPE] in [COMPONENT] in [VENDOR] [PRODUCT] [VERSION] on [PLATFORMS] allows [ATTACKER] to [IMPACT] via [VECTOR]", + "supportingMedia": [ + { + "type": "text/html", + "base64": false, + "value": "[PROBLEMTYPE] in [COMPONENT] in [VENDOR] [PRODUCT] [VERSION] on [PLATFORMS] allows [ATTACKER] to [IMPACT] via [VECTOR]" + } + ] + } + ], + "references": [ + { + "url": "https://add-github-links-here" + } + ], + "source": { + "discovery": "UNKNOWN" + }, + "x_generator": { + "engine": "Vulnogram 0.2.0" + } + } + } +} \ No newline at end of file diff --git a/src/jmh/java/graphql/execution/ExecutionStepInfoBenchmark.java b/src/jmh/java/graphql/execution/ExecutionStepInfoBenchmark.java new file mode 100644 index 0000000000..e2678c67f8 --- /dev/null +++ b/src/jmh/java/graphql/execution/ExecutionStepInfoBenchmark.java @@ -0,0 +1,86 @@ +package graphql.execution; + +import graphql.Scalars; +import graphql.language.Field; +import org.openjdk.jmh.annotations.Benchmark; +import org.openjdk.jmh.annotations.BenchmarkMode; +import org.openjdk.jmh.annotations.Fork; +import org.openjdk.jmh.annotations.Level; +import org.openjdk.jmh.annotations.Measurement; +import org.openjdk.jmh.annotations.Mode; +import org.openjdk.jmh.annotations.OutputTimeUnit; +import org.openjdk.jmh.annotations.Param; +import org.openjdk.jmh.annotations.Scope; +import org.openjdk.jmh.annotations.Setup; +import org.openjdk.jmh.annotations.State; +import org.openjdk.jmh.annotations.TearDown; +import org.openjdk.jmh.annotations.Warmup; +import org.openjdk.jmh.infra.Blackhole; +import org.openjdk.jmh.profile.GCProfiler; +import org.openjdk.jmh.runner.Runner; +import org.openjdk.jmh.runner.options.Options; +import org.openjdk.jmh.runner.options.OptionsBuilder; + +import java.util.concurrent.TimeUnit; + +import static graphql.execution.ExecutionStepInfo.newExecutionStepInfo; + +@State(Scope.Benchmark) +@Warmup(iterations = 2, time = 5) +@Measurement(iterations = 2) +@Fork(2) +public class ExecutionStepInfoBenchmark { + @Param({"1000000", "2000000"}) + int howManyItems = 1000000; + + @Setup(Level.Trial) + public void setUp() { + } + + @TearDown(Level.Trial) + public void tearDown() { + } + + + MergedField mergedField = MergedField.newMergedField().addField(Field.newField("f").build()).build(); + + ResultPath path = ResultPath.rootPath().segment("f"); + ExecutionStepInfo rootStepInfo = newExecutionStepInfo() + .path(path).type(Scalars.GraphQLString) + .field(mergedField) + .build(); + + + @Benchmark + @BenchmarkMode(Mode.Throughput) + @OutputTimeUnit(TimeUnit.SECONDS) + public void benchMarkDirectConstructorThroughput(Blackhole blackhole) { + for (int i = 0; i < howManyItems; i++) { + ResultPath newPath = path.segment(1); + ExecutionStepInfo newOne = rootStepInfo.transform(Scalars.GraphQLInt, rootStepInfo, newPath); + blackhole.consume(newOne); + } + } + + @Benchmark + @BenchmarkMode(Mode.Throughput) + @OutputTimeUnit(TimeUnit.SECONDS) + public void benchMarkBuilderThroughput(Blackhole blackhole) { + for (int i = 0; i < howManyItems; i++) { + ResultPath newPath = path.segment(1); + ExecutionStepInfo newOne = newExecutionStepInfo(rootStepInfo).parentInfo(rootStepInfo) + .type(Scalars.GraphQLInt).path(newPath).build(); + blackhole.consume(newOne); + } + } + + public static void main(String[] args) throws Exception { + Options opt = new OptionsBuilder() + .include("graphql.execution.ExecutionStepInfoBenchmark") + .addProfiler(GCProfiler.class) + .build(); + + new Runner(opt).run(); + } + +} diff --git a/src/main/java/graphql/Directives.java b/src/main/java/graphql/Directives.java index 8e0c81661e..37f2b28550 100644 --- a/src/main/java/graphql/Directives.java +++ b/src/main/java/graphql/Directives.java @@ -7,6 +7,8 @@ import graphql.language.StringValue; import graphql.schema.GraphQLDirective; +import java.util.concurrent.atomic.AtomicBoolean; + import static graphql.Scalars.GraphQLBoolean; import static graphql.Scalars.GraphQLString; import static graphql.introspection.Introspection.DirectiveLocation.ARGUMENT_DEFINITION; @@ -17,7 +19,10 @@ import static graphql.introspection.Introspection.DirectiveLocation.INLINE_FRAGMENT; import static graphql.introspection.Introspection.DirectiveLocation.INPUT_FIELD_DEFINITION; import static graphql.introspection.Introspection.DirectiveLocation.INPUT_OBJECT; +import static graphql.introspection.Introspection.DirectiveLocation.MUTATION; +import static graphql.introspection.Introspection.DirectiveLocation.QUERY; import static graphql.introspection.Introspection.DirectiveLocation.SCALAR; +import static graphql.introspection.Introspection.DirectiveLocation.SUBSCRIPTION; import static graphql.language.DirectiveLocation.newDirectiveLocation; import static graphql.language.InputValueDefinition.newInputValueDefinition; import static graphql.language.NonNullType.newNonNullType; @@ -31,16 +36,28 @@ @PublicApi public class Directives { - private static final String SPECIFIED_BY = "specifiedBy"; private static final String DEPRECATED = "deprecated"; + private static final String INCLUDE = "include"; + private static final String SKIP = "skip"; + private static final String SPECIFIED_BY = "specifiedBy"; private static final String ONE_OF = "oneOf"; private static final String DEFER = "defer"; + private static final String EXPERIMENTAL_DISABLE_ERROR_PROPAGATION = "experimental_disableErrorPropagation"; - public static final String NO_LONGER_SUPPORTED = "No longer supported"; public static final DirectiveDefinition DEPRECATED_DIRECTIVE_DEFINITION; + public static final DirectiveDefinition INCLUDE_DIRECTIVE_DEFINITION; + public static final DirectiveDefinition SKIP_DIRECTIVE_DEFINITION; public static final DirectiveDefinition SPECIFIED_BY_DIRECTIVE_DEFINITION; @ExperimentalApi public static final DirectiveDefinition ONE_OF_DIRECTIVE_DEFINITION; + @ExperimentalApi + public static final DirectiveDefinition DEFER_DIRECTIVE_DEFINITION; + @ExperimentalApi + public static final DirectiveDefinition EXPERIMENTAL_DISABLE_ERROR_PROPAGATION_DIRECTIVE_DEFINITION; + + public static final String BOOLEAN = "Boolean"; + public static final String STRING = "String"; + public static final String NO_LONGER_SUPPORTED = "No longer supported"; static { DEPRECATED_DIRECTIVE_DEFINITION = DirectiveDefinition.newDirectiveDefinition() @@ -54,11 +71,39 @@ public class Directives { newInputValueDefinition() .name("reason") .description(createDescription("The reason for the deprecation")) - .type(newTypeName().name("String").build()) + .type(newNonNullType(newTypeName().name(STRING).build()).build()) .defaultValue(StringValue.newStringValue().value(NO_LONGER_SUPPORTED).build()) .build()) .build(); + INCLUDE_DIRECTIVE_DEFINITION = DirectiveDefinition.newDirectiveDefinition() + .name(INCLUDE) + .directiveLocation(newDirectiveLocation().name(FRAGMENT_SPREAD.name()).build()) + .directiveLocation(newDirectiveLocation().name(INLINE_FRAGMENT.name()).build()) + .directiveLocation(newDirectiveLocation().name(FIELD.name()).build()) + .description(createDescription("Directs the executor to include this field or fragment only when the `if` argument is true")) + .inputValueDefinition( + newInputValueDefinition() + .name("if") + .description(createDescription("Included when true.")) + .type(newNonNullType(newTypeName().name(BOOLEAN).build()).build()) + .build()) + .build(); + + SKIP_DIRECTIVE_DEFINITION = DirectiveDefinition.newDirectiveDefinition() + .name(SKIP) + .directiveLocation(newDirectiveLocation().name(FRAGMENT_SPREAD.name()).build()) + .directiveLocation(newDirectiveLocation().name(INLINE_FRAGMENT.name()).build()) + .directiveLocation(newDirectiveLocation().name(FIELD.name()).build()) + .description(createDescription("Directs the executor to skip this field or fragment when the `if` argument is true.")) + .inputValueDefinition( + newInputValueDefinition() + .name("if") + .description(createDescription("Skipped when true.")) + .type(newNonNullType(newTypeName().name(BOOLEAN).build()).build()) + .build()) + .build(); + SPECIFIED_BY_DIRECTIVE_DEFINITION = DirectiveDefinition.newDirectiveDefinition() .name(SPECIFIED_BY) .directiveLocation(newDirectiveLocation().name(SCALAR.name()).build()) @@ -67,7 +112,7 @@ public class Directives { newInputValueDefinition() .name("url") .description(createDescription("The URL that specifies the behaviour of this scalar.")) - .type(newNonNullType(newTypeName().name("String").build()).build()) + .type(newNonNullType(newTypeName().name(STRING).build()).build()) .build()) .build(); @@ -76,6 +121,33 @@ public class Directives { .directiveLocation(newDirectiveLocation().name(INPUT_OBJECT.name()).build()) .description(createDescription("Indicates an Input Object is a OneOf Input Object.")) .build(); + + DEFER_DIRECTIVE_DEFINITION = DirectiveDefinition.newDirectiveDefinition() + .name(DEFER) + .directiveLocation(newDirectiveLocation().name(FRAGMENT_SPREAD.name()).build()) + .directiveLocation(newDirectiveLocation().name(INLINE_FRAGMENT.name()).build()) + .description(createDescription("This directive allows results to be deferred during execution")) + .inputValueDefinition( + newInputValueDefinition() + .name("if") + .description(createDescription("Deferred behaviour is controlled by this argument")) + .type(newNonNullType(newTypeName().name(BOOLEAN).build()).build()) + .defaultValue(BooleanValue.newBooleanValue(true).build()) + .build()) + .inputValueDefinition( + newInputValueDefinition() + .name("label") + .description(createDescription("A unique label that represents the fragment being deferred")) + .type(newTypeName().name(STRING).build()) + .build()) + .build(); + EXPERIMENTAL_DISABLE_ERROR_PROPAGATION_DIRECTIVE_DEFINITION = DirectiveDefinition.newDirectiveDefinition() + .name(EXPERIMENTAL_DISABLE_ERROR_PROPAGATION) + .directiveLocation(newDirectiveLocation().name(QUERY.name()).build()) + .directiveLocation(newDirectiveLocation().name(MUTATION.name()).build()) + .directiveLocation(newDirectiveLocation().name(SUBSCRIPTION.name()).build()) + .description(createDescription("This directive allows returning null in non-null positions that have an associated error")) + .build(); } /** @@ -104,40 +176,43 @@ public class Directives { .type(GraphQLString) .description("A unique label that represents the fragment being deferred") ) + .definition(DEFER_DIRECTIVE_DEFINITION) .build(); public static final GraphQLDirective IncludeDirective = GraphQLDirective.newDirective() - .name("include") + .name(INCLUDE) .description("Directs the executor to include this field or fragment only when the `if` argument is true") .argument(newArgument() .name("if") .type(nonNull(GraphQLBoolean)) .description("Included when true.")) .validLocations(FRAGMENT_SPREAD, INLINE_FRAGMENT, FIELD) + .definition(INCLUDE_DIRECTIVE_DEFINITION) .build(); public static final GraphQLDirective SkipDirective = GraphQLDirective.newDirective() - .name("skip") + .name(SKIP) .description("Directs the executor to skip this field or fragment when the `if` argument is true.") .argument(newArgument() .name("if") .type(nonNull(GraphQLBoolean)) .description("Skipped when true.")) .validLocations(FRAGMENT_SPREAD, INLINE_FRAGMENT, FIELD) + .definition(SKIP_DIRECTIVE_DEFINITION) .build(); /** * The "deprecated" directive is special and is always available in a graphql schema *

- * See https://graphql.github.io/graphql-spec/June2018/#sec--deprecated + * See the GraphQL specification for @deprecated */ public static final GraphQLDirective DeprecatedDirective = GraphQLDirective.newDirective() .name(DEPRECATED) .description("Marks the field, argument, input field or enum value as deprecated") .argument(newArgument() .name("reason") - .type(GraphQLString) + .type(nonNull(GraphQLString)) .defaultValueProgrammatic(NO_LONGER_SUPPORTED) .description("The reason for the deprecation")) .validLocations(FIELD_DEFINITION, ENUM_VALUE, ARGUMENT_DEFINITION, INPUT_FIELD_DEFINITION) @@ -166,7 +241,35 @@ public class Directives { .definition(ONE_OF_DIRECTIVE_DEFINITION) .build(); + @ExperimentalApi + public static final GraphQLDirective ExperimentalDisableErrorPropagationDirective = GraphQLDirective.newDirective() + .name(EXPERIMENTAL_DISABLE_ERROR_PROPAGATION) + .description("This directive disables error propagation when a non nullable field returns null for the given operation.") + .validLocations(QUERY, MUTATION, SUBSCRIPTION) + .definition(EXPERIMENTAL_DISABLE_ERROR_PROPAGATION_DIRECTIVE_DEFINITION) + .build(); + private static Description createDescription(String s) { return new Description(s, null, false); } + + private static final AtomicBoolean EXPERIMENTAL_DISABLE_ERROR_PROPAGATION_DIRECTIVE_ENABLED = new AtomicBoolean(true); + + /** + * This can be used to get the state the `@experimental_disableErrorPropagation` directive support on a JVM wide basis . + * @return true if the `@experimental_disableErrorPropagation` directive will be respected + */ + public static boolean isExperimentalDisableErrorPropagationDirectiveEnabled() { + return EXPERIMENTAL_DISABLE_ERROR_PROPAGATION_DIRECTIVE_ENABLED.get(); + } + + /** + * This can be used to disable the `@experimental_disableErrorPropagation` directive support on a JVM wide basis in case your server + * implementation does NOT want to act on this directive ever. + * + * @param flag the desired state of the flag + */ + public static void setExperimentalDisableErrorPropagationEnabled(boolean flag) { + EXPERIMENTAL_DISABLE_ERROR_PROPAGATION_DIRECTIVE_ENABLED.set(flag); + } } diff --git a/src/main/java/graphql/DuckTyped.java b/src/main/java/graphql/DuckTyped.java new file mode 100644 index 0000000000..83e298b6e1 --- /dev/null +++ b/src/main/java/graphql/DuckTyped.java @@ -0,0 +1,22 @@ +package graphql; + +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +import static java.lang.annotation.ElementType.METHOD; +import static java.lang.annotation.ElementType.PARAMETER; + +/** + * An annotation that marks a method return value or method parameter as returning a duck type value. + *

+ * For efficiency reasons, the graphql engine methods can return {@link Object} values + * which maybe two well known types of values. Often a {@link java.util.concurrent.CompletableFuture} + * or a plain old {@link Object}, to represent an async value or a materialised value. + */ +@Internal +@Retention(RetentionPolicy.RUNTIME) +@Target(value = {METHOD, PARAMETER}) +public @interface DuckTyped { + String shape(); +} diff --git a/src/main/java/graphql/EngineRunningState.java b/src/main/java/graphql/EngineRunningState.java new file mode 100644 index 0000000000..965fdb59fd --- /dev/null +++ b/src/main/java/graphql/EngineRunningState.java @@ -0,0 +1,209 @@ +package graphql; + +import graphql.execution.EngineRunningObserver; +import graphql.execution.ExecutionId; +import org.jspecify.annotations.Nullable; + +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.CompletionStage; +import java.util.concurrent.atomic.AtomicInteger; +import java.util.function.BiConsumer; +import java.util.function.BiFunction; +import java.util.function.Function; +import java.util.function.Supplier; + +import static graphql.Assert.assertTrue; +import static graphql.execution.EngineRunningObserver.RunningState.NOT_RUNNING; +import static graphql.execution.EngineRunningObserver.RunningState.RUNNING; + +@Internal +public class EngineRunningState { + + @Nullable + private final EngineRunningObserver engineRunningObserver; + @Nullable + private final GraphQLContext graphQLContext; + @Nullable + private volatile ExecutionId executionId; + + private final AtomicInteger isRunning = new AtomicInteger(0); + + @VisibleForTesting + public EngineRunningState() { + this.engineRunningObserver = null; + this.graphQLContext = null; + this.executionId = null; + } + + public EngineRunningState(ExecutionInput executionInput) { + EngineRunningObserver engineRunningObserver = executionInput.getGraphQLContext().get(EngineRunningObserver.ENGINE_RUNNING_OBSERVER_KEY); + if (engineRunningObserver != null) { + this.engineRunningObserver = engineRunningObserver; + this.graphQLContext = executionInput.getGraphQLContext(); + this.executionId = executionInput.getExecutionId(); + } else { + this.engineRunningObserver = null; + this.graphQLContext = null; + this.executionId = null; + } + } + + public CompletableFuture handle(CompletableFuture src, BiFunction fn) { + if (engineRunningObserver == null) { + return src.handle(fn); + } + src = observeCompletableFutureStart(src); + CompletableFuture result = src.handle((t, throwable) -> { + // because we added an artificial dependent CF on src (in observeCompletableFutureStart) , a throwable is a CompletionException + // that needs to be unwrapped + if (throwable != null) { + throwable = throwable.getCause(); + } + return fn.apply(t, throwable); + }); + observerCompletableFutureEnd(src); + return result; + } + + public CompletableFuture whenComplete(CompletableFuture src, BiConsumer fn) { + if (engineRunningObserver == null) { + return src.whenComplete(fn); + } + src = observeCompletableFutureStart(src); + CompletableFuture result = src.whenComplete((t, throwable) -> { + // because we added an artificial dependent CF on src (in observeCompletableFutureStart) , a throwable is a CompletionException + // that needs to be unwrapped + if (throwable != null) { + throwable = throwable.getCause(); + } + fn.accept(t, throwable); + }); + observerCompletableFutureEnd(src); + return result; + } + + public CompletableFuture compose(CompletableFuture src, Function> fn) { + if (engineRunningObserver == null) { + return src.thenCompose(fn); + } + CompletableFuture result = new CompletableFuture<>(); + src = observeCompletableFutureStart(src); + src.whenComplete((u, t) -> { + CompletionStage innerCF; + try { + innerCF = fn.apply(u).toCompletableFuture(); + } catch (Throwable e) { + innerCF = CompletableFuture.failedFuture(e); + } + // this run is needed to wrap around the result.complete()/result.completeExceptionally() call + innerCF.whenComplete((u1, t1) -> run(() -> { + if (t1 != null) { + result.completeExceptionally(t1); + } else { + result.complete(u1); + } + })); + }); + observerCompletableFutureEnd(src); + return result; + } + + + private CompletableFuture observeCompletableFutureStart(CompletableFuture future) { + if (engineRunningObserver == null) { + return future; + } + // the completion order of dependent CFs is in stack order for + // directly dependent CFs, but in reverse stack order for indirect dependent ones + // By creating one dependent CF on originalFetchValue, we make sure the order it is always + // in reverse stack order + future = future.thenApply(Function.identity()); + incrementRunningWhenCompleted(future); + return future; + } + + private void observerCompletableFutureEnd(CompletableFuture future) { + if (engineRunningObserver == null) { + return; + } + decrementRunningWhenCompleted(future); + } + + + private void incrementRunningWhenCompleted(CompletableFuture cf) { + cf.whenComplete((result, throwable) -> { + incrementRunning(); + }); + } + + private void decrementRunningWhenCompleted(CompletableFuture cf) { + cf.whenComplete((result, throwable) -> { + decrementRunning(); + }); + + } + + private void decrementRunning() { + if (engineRunningObserver == null) { + return; + } + assertTrue(isRunning.get() > 0); + if (isRunning.decrementAndGet() == 0) { + changeOfState(NOT_RUNNING); + } + } + + + private void incrementRunning() { + if (engineRunningObserver == null) { + return; + } + assertTrue(isRunning.get() >= 0); + if (isRunning.incrementAndGet() == 1) { + changeOfState(RUNNING); + } + + } + + + public void updateExecutionId(ExecutionId executionId) { + if (engineRunningObserver == null) { + return; + } + this.executionId = executionId; + } + + private void changeOfState(EngineRunningObserver.RunningState runningState) { + engineRunningObserver.runningStateChanged(executionId, graphQLContext, runningState); + } + + private void run(Runnable runnable) { + if (engineRunningObserver == null) { + runnable.run(); + return; + } + incrementRunning(); + try { + runnable.run(); + } finally { + decrementRunning(); + } + } + + /** + * Only used once outside of this class: when the execution starts + */ + public T call(Supplier supplier) { + if (engineRunningObserver == null) { + return supplier.get(); + } + incrementRunning(); + try { + return supplier.get(); + } finally { + decrementRunning(); + } + } + + +} diff --git a/src/main/java/graphql/ExecutionInput.java b/src/main/java/graphql/ExecutionInput.java index 18456034ca..59efc4f48d 100644 --- a/src/main/java/graphql/ExecutionInput.java +++ b/src/main/java/graphql/ExecutionInput.java @@ -7,8 +7,8 @@ import java.util.Locale; import java.util.Map; +import java.util.concurrent.atomic.AtomicBoolean; import java.util.function.Consumer; -import java.util.function.UnaryOperator; import static graphql.Assert.assertNotNull; import static graphql.execution.instrumentation.dataloader.EmptyDataLoaderRegistryInstance.EMPTY_DATALOADER_REGISTRY; @@ -29,6 +29,8 @@ public class ExecutionInput { private final DataLoaderRegistry dataLoaderRegistry; private final ExecutionId executionId; private final Locale locale; + // this is currently not used but we want it back soon after the v23 release + private final AtomicBoolean cancelled; @Internal @@ -44,6 +46,7 @@ private ExecutionInput(Builder builder) { this.locale = builder.locale != null ? builder.locale : Locale.getDefault(); // always have a locale in place this.localContext = builder.localContext; this.extensions = builder.extensions; + this.cancelled = builder.cancelled; } /** @@ -152,7 +155,8 @@ public ExecutionInput transform(Consumer builderConsumer) { .query(this.query) .operationName(this.operationName) .context(this.context) - .transfer(this.graphQLContext) + .internalTransferContext(this.graphQLContext) + .internalTransferCancelBoolean(this.cancelled) .localContext(this.localContext) .root(this.root) .dataLoaderRegistry(this.dataLoaderRegistry) @@ -208,7 +212,7 @@ public static class Builder { private Object localContext; private Object root; private RawVariables rawVariables = RawVariables.emptyVariables(); - public Map extensions = ImmutableKit.emptyMap(); + private Map extensions = ImmutableKit.emptyMap(); // // this is important - it allows code to later known if we never really set a dataloader and hence it can optimize // dataloader field tracking away. @@ -216,6 +220,7 @@ public static class Builder { private DataLoaderRegistry dataLoaderRegistry = EMPTY_DATALOADER_REGISTRY; private Locale locale = Locale.getDefault(); private ExecutionId executionId; + private AtomicBoolean cancelled = new AtomicBoolean(false); public Builder query(String query) { this.query = assertNotNull(query, () -> "query can't be null"); @@ -306,11 +311,18 @@ public Builder graphQLContext(Map mapOfContext) { } // hidden on purpose - private Builder transfer(GraphQLContext graphQLContext) { + private Builder internalTransferContext(GraphQLContext graphQLContext) { this.graphQLContext = Assert.assertNotNull(graphQLContext); return this; } + // hidden on purpose + private Builder internalTransferCancelBoolean(AtomicBoolean cancelled) { + this.cancelled = cancelled; + return this; + } + + public Builder root(Object root) { this.root = root; return this; diff --git a/src/main/java/graphql/ExecutionResult.java b/src/main/java/graphql/ExecutionResult.java index 4870144fe5..f2e94765bb 100644 --- a/src/main/java/graphql/ExecutionResult.java +++ b/src/main/java/graphql/ExecutionResult.java @@ -56,6 +56,16 @@ public interface ExecutionResult { */ Map toSpecification(); + /** + * This allows you to turn a map of results from {@link #toSpecification()} and turn it back into a {@link ExecutionResult} + * + * @param specificationMap the specification result map + * + * @return a new {@link ExecutionResult} from that map + */ + static ExecutionResult fromSpecification(Map specificationMap) { + return ExecutionResultImpl.fromSpecification(specificationMap); + } /** * This helps you transform the current {@link ExecutionResult} object into another one by starting a builder with all diff --git a/src/main/java/graphql/ExecutionResultImpl.java b/src/main/java/graphql/ExecutionResultImpl.java index 62419a63a7..d39dbda157 100644 --- a/src/main/java/graphql/ExecutionResultImpl.java +++ b/src/main/java/graphql/ExecutionResultImpl.java @@ -97,6 +97,24 @@ private Object errorsToSpec(List errors) { return map(errors, GraphQLError::toSpecification); } + @SuppressWarnings("unchecked") + static ExecutionResult fromSpecification(Map specificationMap) { + ExecutionResult.Builder builder = ExecutionResult.newExecutionResult(); + Object data = specificationMap.get("data"); + if (data != null) { + builder.data(data); + } + List> errors = (List>) specificationMap.get("errors"); + if (errors != null) { + builder.errors(GraphqlErrorHelper.fromSpecification(errors)); + } + Map extensions = (Map) specificationMap.get("extensions"); + if (extensions != null) { + builder.extensions(extensions); + } + return builder.build(); + } + @Override public String toString() { return "ExecutionResultImpl{" + diff --git a/src/main/java/graphql/GraphQL.java b/src/main/java/graphql/GraphQL.java index 096a4f7e26..8c077a2a53 100644 --- a/src/main/java/graphql/GraphQL.java +++ b/src/main/java/graphql/GraphQL.java @@ -412,41 +412,44 @@ public CompletableFuture executeAsync(UnaryOperator executeAsync(ExecutionInput executionInput) { - ExecutionInput executionInputWithId = ensureInputHasId(executionInput); - - CompletableFuture instrumentationStateCF = instrumentation.createStateAsync(new InstrumentationCreateStateParameters(this.graphQLSchema, executionInputWithId)); - return Async.orNullCompletedFuture(instrumentationStateCF).thenCompose(instrumentationState -> { - try { - InstrumentationExecutionParameters inputInstrumentationParameters = new InstrumentationExecutionParameters(executionInputWithId, this.graphQLSchema); - ExecutionInput instrumentedExecutionInput = instrumentation.instrumentExecutionInput(executionInputWithId, inputInstrumentationParameters, instrumentationState); - - InstrumentationExecutionParameters instrumentationParameters = new InstrumentationExecutionParameters(instrumentedExecutionInput, this.graphQLSchema); - InstrumentationContext executionInstrumentation = nonNullCtx(instrumentation.beginExecution(instrumentationParameters, instrumentationState)); - executionInstrumentation.onDispatched(); - - GraphQLSchema graphQLSchema = instrumentation.instrumentSchema(this.graphQLSchema, instrumentationParameters, instrumentationState); - - CompletableFuture executionResult = parseValidateAndExecute(instrumentedExecutionInput, graphQLSchema, instrumentationState); - // - // finish up instrumentation - executionResult = executionResult.whenComplete(completeInstrumentationCtxCF(executionInstrumentation)); - // - // allow instrumentation to tweak the result - executionResult = executionResult.thenCompose(result -> instrumentation.instrumentExecutionResult(result, instrumentationParameters, instrumentationState)); - return executionResult; - } catch (AbortExecutionException abortException) { - return handleAbortException(executionInput, instrumentationState, abortException); - } + EngineRunningState engineRunningState = new EngineRunningState(executionInput); + return engineRunningState.call(() -> { + ExecutionInput executionInputWithId = ensureInputHasId(executionInput); + engineRunningState.updateExecutionId(executionInputWithId.getExecutionId()); + + CompletableFuture instrumentationStateCF = instrumentation.createStateAsync(new InstrumentationCreateStateParameters(this.graphQLSchema, executionInputWithId)); + instrumentationStateCF = Async.orNullCompletedFuture(instrumentationStateCF); + + return engineRunningState.compose(instrumentationStateCF, (instrumentationState -> { + try { + InstrumentationExecutionParameters inputInstrumentationParameters = new InstrumentationExecutionParameters(executionInputWithId, this.graphQLSchema); + ExecutionInput instrumentedExecutionInput = instrumentation.instrumentExecutionInput(executionInputWithId, inputInstrumentationParameters, instrumentationState); + + InstrumentationExecutionParameters instrumentationParameters = new InstrumentationExecutionParameters(instrumentedExecutionInput, this.graphQLSchema); + InstrumentationContext executionInstrumentation = nonNullCtx(instrumentation.beginExecution(instrumentationParameters, instrumentationState)); + executionInstrumentation.onDispatched(); + + GraphQLSchema graphQLSchema = instrumentation.instrumentSchema(this.graphQLSchema, instrumentationParameters, instrumentationState); + + CompletableFuture executionResult = parseValidateAndExecute(instrumentedExecutionInput, graphQLSchema, instrumentationState, engineRunningState); + // + // finish up instrumentation + executionResult = executionResult.whenComplete(completeInstrumentationCtxCF(executionInstrumentation)); + // + // allow instrumentation to tweak the result + executionResult = engineRunningState.compose(executionResult, (result -> instrumentation.instrumentExecutionResult(result, instrumentationParameters, instrumentationState))); + return executionResult; + } catch (AbortExecutionException abortException) { + return handleAbortException(executionInput, instrumentationState, abortException); + } + })); }); } + private CompletableFuture handleAbortException(ExecutionInput executionInput, InstrumentationState instrumentationState, AbortExecutionException abortException) { - CompletableFuture executionResult = CompletableFuture.completedFuture(abortException.toExecutionResult()); InstrumentationExecutionParameters instrumentationParameters = new InstrumentationExecutionParameters(executionInput, this.graphQLSchema); - // - // allow instrumentation to tweak the result - executionResult = executionResult.thenCompose(result -> instrumentation.instrumentExecutionResult(result, instrumentationParameters, instrumentationState)); - return executionResult; + return instrumentation.instrumentExecutionResult(abortException.toExecutionResult(), instrumentationParameters, instrumentationState); } private ExecutionInput ensureInputHasId(ExecutionInput executionInput) { @@ -460,7 +463,7 @@ private ExecutionInput ensureInputHasId(ExecutionInput executionInput) { } - private CompletableFuture parseValidateAndExecute(ExecutionInput executionInput, GraphQLSchema graphQLSchema, InstrumentationState instrumentationState) { + private CompletableFuture parseValidateAndExecute(ExecutionInput executionInput, GraphQLSchema graphQLSchema, InstrumentationState instrumentationState, EngineRunningState engineRunningState) { AtomicReference executionInputRef = new AtomicReference<>(executionInput); Function computeFunction = transformedInput -> { // if they change the original query in the pre-parser, then we want to see it downstream from then on @@ -468,22 +471,21 @@ private CompletableFuture parseValidateAndExecute(ExecutionInpu return parseAndValidate(executionInputRef, graphQLSchema, instrumentationState); }; CompletableFuture preparsedDoc = preparsedDocumentProvider.getDocumentAsync(executionInput, computeFunction); - return preparsedDoc.thenCompose(preparsedDocumentEntry -> { + return engineRunningState.compose(preparsedDoc, (preparsedDocumentEntry -> { if (preparsedDocumentEntry.hasErrors()) { return CompletableFuture.completedFuture(new ExecutionResultImpl(preparsedDocumentEntry.getErrors())); } try { - return execute(executionInputRef.get(), preparsedDocumentEntry.getDocument(), graphQLSchema, instrumentationState); + return execute(executionInputRef.get(), preparsedDocumentEntry.getDocument(), graphQLSchema, instrumentationState, engineRunningState); } catch (AbortExecutionException e) { return CompletableFuture.completedFuture(e.toExecutionResult()); } - }); + })); } private PreparsedDocumentEntry parseAndValidate(AtomicReference executionInputRef, GraphQLSchema graphQLSchema, InstrumentationState instrumentationState) { ExecutionInput executionInput = executionInputRef.get(); - String query = executionInput.getQuery(); ParseAndValidateResult parseResult = parse(executionInput, graphQLSchema, instrumentationState); if (parseResult.isFailure()) { @@ -537,13 +539,14 @@ private List validate(ExecutionInput executionInput, Document d private CompletableFuture execute(ExecutionInput executionInput, Document document, GraphQLSchema graphQLSchema, - InstrumentationState instrumentationState + InstrumentationState instrumentationState, + EngineRunningState engineRunningState ) { Execution execution = new Execution(queryStrategy, mutationStrategy, subscriptionStrategy, instrumentation, valueUnboxer, doNotAutomaticallyDispatchDataLoader); ExecutionId executionId = executionInput.getExecutionId(); - return execution.execute(document, graphQLSchema, executionId, executionInput, instrumentationState); + return execution.execute(document, graphQLSchema, executionId, executionInput, instrumentationState, engineRunningState); } } diff --git a/src/main/java/graphql/GraphQLContext.java b/src/main/java/graphql/GraphQLContext.java index 8b913919d3..48f79ce774 100644 --- a/src/main/java/graphql/GraphQLContext.java +++ b/src/main/java/graphql/GraphQLContext.java @@ -96,6 +96,33 @@ public Optional getOrEmpty(Object key) { return Optional.ofNullable(t); } + /** + * This returns true if the value at the specified key is equal to + * {@link Boolean#TRUE} + * + * @param key the key to look up + * + * @return true if the value is equal to {@link Boolean#TRUE} + */ + public boolean getBoolean(Object key) { + Object val = map.get(assertNotNull(key)); + return Boolean.TRUE.equals(val); + } + + /** + * This returns true if the value at the specified key is equal to + * {@link Boolean#TRUE} or the default value if the key is missing + * + * @param key the key to look up + * @param defaultValue the value to use if the key is not present + * + * @return true if the value is equal to {@link Boolean#TRUE} + */ + public boolean getBoolean(Object key, Boolean defaultValue) { + Object val = map.getOrDefault(assertNotNull(key), defaultValue); + return Boolean.TRUE.equals(val); + } + /** * Returns true if the context contains a value for that key * @@ -177,11 +204,11 @@ public GraphQLContext putAll(Consumer contextBuilderCons * Attempts to compute a mapping for the specified key and its * current mapped value (or null if there is no current mapping). * - * @param key key with which the specified value is to be associated + * @param key key with which the specified value is to be associated * @param remappingFunction the function to compute a value + * @param for two * * @return the new value associated with the specified key, or null if none - * @param for two */ public T compute(Object key, BiFunction remappingFunction) { assertNotNull(remappingFunction); @@ -192,11 +219,11 @@ public T compute(Object key, BiFunction rema * If the specified key is not already associated with a value (or is mapped to null), * attempts to compute its value using the given mapping function and enters it into this map unless null. * - * @param key key with which the specified value is to be associated + * @param key key with which the specified value is to be associated * @param mappingFunction the function to compute a value + * @param for two * * @return the current (existing or computed) value associated with the specified key, or null if the computed value is null - * @param for two */ public T computeIfAbsent(Object key, Function mappingFunction) { @@ -207,11 +234,11 @@ public T computeIfAbsent(Object key, Function mappingFu * If the value for the specified key is present and non-null, * attempts to compute a new mapping given the key and its current mapped value. * - * @param key key with which the specified value is to be associated + * @param key key with which the specified value is to be associated * @param remappingFunction the function to compute a value + * @param for two * * @return the new value associated with the specified key, or null if none - * @param for two */ public T computeIfPresent(Object key, BiFunction remappingFunction) { diff --git a/src/main/java/graphql/GraphQLError.java b/src/main/java/graphql/GraphQLError.java index c18752b14a..90c3527b50 100644 --- a/src/main/java/graphql/GraphQLError.java +++ b/src/main/java/graphql/GraphQLError.java @@ -3,7 +3,7 @@ import graphql.execution.ResultPath; import graphql.language.SourceLocation; -import org.jetbrains.annotations.Nullable; +import org.jspecify.annotations.Nullable; import java.io.Serializable; import java.util.List; @@ -70,6 +70,17 @@ default Map getExtensions() { return null; } + /** + * This can be called to turn a specification error map into {@link GraphQLError} + * + * @param specificationMap the map of values that should have come via {@link GraphQLError#toSpecification()} + * + * @return a {@link GraphQLError} + */ + static GraphQLError fromSpecification(Map specificationMap) { + return GraphqlErrorHelper.fromSpecification(specificationMap); + } + /** * @return a new builder of {@link GraphQLError}s */ diff --git a/src/main/java/graphql/GraphqlErrorBuilder.java b/src/main/java/graphql/GraphqlErrorBuilder.java index 4cef5beabe..eccaadb44d 100644 --- a/src/main/java/graphql/GraphqlErrorBuilder.java +++ b/src/main/java/graphql/GraphqlErrorBuilder.java @@ -4,11 +4,12 @@ import graphql.execution.ResultPath; import graphql.language.SourceLocation; import graphql.schema.DataFetchingEnvironment; -import org.jetbrains.annotations.Nullable; +import org.jspecify.annotations.Nullable; import java.util.ArrayList; import java.util.List; import java.util.Map; +import java.util.Objects; import static graphql.Assert.assertNotNull; @@ -132,6 +133,18 @@ public GraphQLError build() { return new GraphqlErrorImpl(message, locations, errorType, path, extensions); } + /** + * A simple implementation of a {@link GraphQLError}. + *

+ * This provides {@link #hashCode()} and {@link #equals(Object)} methods that afford comparison with other + * {@link GraphQLError} implementations. However, the values provided in the following fields must + * in turn implement {@link #hashCode()} and {@link #equals(Object)} for this to function correctly: + *

+ */ private static class GraphqlErrorImpl implements GraphQLError { private final String message; private final List locations; @@ -176,6 +189,28 @@ public Map getExtensions() { public String toString() { return message; } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (!(o instanceof GraphQLError)) return false; + GraphQLError that = (GraphQLError) o; + return Objects.equals(getMessage(), that.getMessage()) + && Objects.equals(getLocations(), that.getLocations()) + && Objects.equals(getErrorType(), that.getErrorType()) + && Objects.equals(getPath(), that.getPath()) + && Objects.equals(getExtensions(), that.getExtensions()); + } + + @Override + public int hashCode() { + return Objects.hash( + getMessage(), + getLocations(), + getErrorType(), + getPath(), + getExtensions()); + } } /** diff --git a/src/main/java/graphql/GraphqlErrorHelper.java b/src/main/java/graphql/GraphqlErrorHelper.java index 5b2aaa1342..901c25b5a9 100644 --- a/src/main/java/graphql/GraphqlErrorHelper.java +++ b/src/main/java/graphql/GraphqlErrorHelper.java @@ -1,19 +1,21 @@ package graphql; import graphql.language.SourceLocation; +import graphql.util.FpKit; +import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.Objects; -import static graphql.collect.ImmutableKit.map; +import static graphql.collect.ImmutableKit.mapAndDropNulls; /** * This little helper allows GraphQlErrors to implement * common things (hashcode/ equals ) and to specification more easily */ -@SuppressWarnings("SimplifiableIfStatement") +@SuppressWarnings({"SimplifiableIfStatement", "unchecked"}) @Internal public class GraphqlErrorHelper { @@ -51,16 +53,88 @@ public static Map toSpecification(GraphQLError error) { } public static Object locations(List locations) { - return map(locations, GraphqlErrorHelper::location); + return mapAndDropNulls(locations, GraphqlErrorHelper::location); } + /** + * Positive integers starting from 1 required for error locations, + * from the spec ... + * + * @param location the source location in play + * + * @return a value for source location of the error + */ public static Object location(SourceLocation location) { - Map map = new LinkedHashMap<>(); - map.put("line", location.getLine()); - map.put("column", location.getColumn()); + if (location == null) { + return null; + } + int line = location.getLine(); + int column = location.getColumn(); + if (line < 1 || column < 1) { + return null; + } + LinkedHashMap map = new LinkedHashMap<>(2); + map.put("line", line); + map.put("column", column); return map; } + static List fromSpecification(List> specificationMaps) { + List list = FpKit.arrayListSizedTo(specificationMaps); + for (Map specificationMap : specificationMaps) { + list.add(fromSpecification(specificationMap)); + } + return list; + } + + static GraphQLError fromSpecification(Map specificationMap) { + GraphQLError.Builder errorBuilder = GraphQLError.newError(); + // builder will enforce not null message + errorBuilder.message((String) specificationMap.get("message")); + extractLocations(errorBuilder, specificationMap); + extractPath(errorBuilder, specificationMap); + extractExtensions(errorBuilder, specificationMap); + return errorBuilder.build(); + } + + private static void extractPath(GraphQLError.Builder errorBuilder, Map rawError) { + List path = (List) rawError.get("path"); + if (path != null) { + errorBuilder.path(path); + } + } + + private static void extractExtensions(GraphQLError.Builder errorBuilder, Map rawError) { + Map extensions = (Map) rawError.get("extensions"); + if (extensions != null) { + errorBuilder.extensions(extensions); + Object classification = extensions.get("classification"); + if (classification != null) { + ErrorClassification errorClassification = ErrorClassification.errorClassification((String) classification); + errorBuilder.errorType(errorClassification); + } + } + + } + + private static void extractLocations(GraphQLError.Builder errorBuilder, Map rawError) { + List locations = (List) rawError.get("locations"); + if (locations != null) { + List sourceLocations = new ArrayList<>(); + for (Object locationObj : locations) { + Map location = (Map) locationObj; + if (location != null) { + Integer line = (Integer) location.get("line"); + Integer column = (Integer) location.get("column"); + if (line != null && column != null) { + sourceLocations.add(new SourceLocation(line, column)); + } + } + } + errorBuilder.locations(sourceLocations); + } + } + public static int hashCode(GraphQLError dis) { int result = 1; result = 31 * result + Objects.hashCode(dis.getMessage()); @@ -74,7 +148,9 @@ public static boolean equals(GraphQLError dis, Object o) { if (dis == o) { return true; } - if (o == null || dis.getClass() != o.getClass()) return false; + if (o == null || dis.getClass() != o.getClass()) { + return false; + } GraphQLError dat = (GraphQLError) o; diff --git a/src/main/java/graphql/Internal.java b/src/main/java/graphql/Internal.java index 9ba6a340f1..cf9d0c3e4b 100644 --- a/src/main/java/graphql/Internal.java +++ b/src/main/java/graphql/Internal.java @@ -4,6 +4,7 @@ import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; +import static java.lang.annotation.ElementType.ANNOTATION_TYPE; import static java.lang.annotation.ElementType.CONSTRUCTOR; import static java.lang.annotation.ElementType.FIELD; import static java.lang.annotation.ElementType.METHOD; @@ -17,6 +18,6 @@ * In general unnecessary changes will be avoided but you should not depend on internal classes being stable */ @Retention(RetentionPolicy.RUNTIME) -@Target(value = {CONSTRUCTOR, METHOD, TYPE, FIELD, PACKAGE}) +@Target(value = {CONSTRUCTOR, METHOD, TYPE, FIELD, PACKAGE, ANNOTATION_TYPE}) public @interface Internal { } diff --git a/src/main/java/graphql/ParseAndValidate.java b/src/main/java/graphql/ParseAndValidate.java index 9410a5ec1b..0ecb17947d 100644 --- a/src/main/java/graphql/ParseAndValidate.java +++ b/src/main/java/graphql/ParseAndValidate.java @@ -8,7 +8,7 @@ import graphql.schema.GraphQLSchema; import graphql.validation.ValidationError; import graphql.validation.Validator; -import org.jetbrains.annotations.NotNull; +import org.jspecify.annotations.NonNull; import java.util.List; import java.util.Locale; @@ -42,7 +42,7 @@ public class ParseAndValidate { * * @return a result object that indicates how this operation went */ - public static ParseAndValidateResult parseAndValidate(@NotNull GraphQLSchema graphQLSchema, @NotNull ExecutionInput executionInput) { + public static ParseAndValidateResult parseAndValidate(@NonNull GraphQLSchema graphQLSchema, @NonNull ExecutionInput executionInput) { ParseAndValidateResult result = parse(executionInput); if (!result.isFailure()) { List errors = validate(graphQLSchema, result.getDocument(), executionInput.getLocale()); @@ -58,7 +58,7 @@ public static ParseAndValidateResult parseAndValidate(@NotNull GraphQLSchema gra * * @return a result object that indicates how this operation went */ - public static ParseAndValidateResult parse(@NotNull ExecutionInput executionInput) { + public static ParseAndValidateResult parse(@NonNull ExecutionInput executionInput) { try { // // we allow the caller to specify new parser options by context @@ -87,7 +87,7 @@ public static ParseAndValidateResult parse(@NotNull ExecutionInput executionInpu * * @return a result object that indicates how this operation went */ - public static List validate(@NotNull GraphQLSchema graphQLSchema, @NotNull Document parsedDocument, @NotNull Locale locale) { + public static List validate(@NonNull GraphQLSchema graphQLSchema, @NonNull Document parsedDocument, @NonNull Locale locale) { return validate(graphQLSchema, parsedDocument, ruleClass -> true, locale); } @@ -99,7 +99,7 @@ public static List validate(@NotNull GraphQLSchema graphQLSchem * * @return a result object that indicates how this operation went */ - public static List validate(@NotNull GraphQLSchema graphQLSchema, @NotNull Document parsedDocument) { + public static List validate(@NonNull GraphQLSchema graphQLSchema, @NonNull Document parsedDocument) { return validate(graphQLSchema, parsedDocument, ruleClass -> true, Locale.getDefault()); } @@ -113,7 +113,7 @@ public static List validate(@NotNull GraphQLSchema graphQLSchem * * @return a result object that indicates how this operation went */ - public static List validate(@NotNull GraphQLSchema graphQLSchema, @NotNull Document parsedDocument, @NotNull Predicate> rulePredicate, @NotNull Locale locale) { + public static List validate(@NonNull GraphQLSchema graphQLSchema, @NonNull Document parsedDocument, @NonNull Predicate> rulePredicate, @NonNull Locale locale) { Validator validator = new Validator(); return validator.validateDocument(graphQLSchema, parsedDocument, rulePredicate, locale); } @@ -127,7 +127,7 @@ public static List validate(@NotNull GraphQLSchema graphQLSchem * * @return a result object that indicates how this operation went */ - public static List validate(@NotNull GraphQLSchema graphQLSchema, @NotNull Document parsedDocument, @NotNull Predicate> rulePredicate) { + public static List validate(@NonNull GraphQLSchema graphQLSchema, @NonNull Document parsedDocument, @NonNull Predicate> rulePredicate) { Validator validator = new Validator(); return validator.validateDocument(graphQLSchema, parsedDocument, rulePredicate, Locale.getDefault()); } diff --git a/src/main/java/graphql/analysis/MaxQueryComplexityInstrumentation.java b/src/main/java/graphql/analysis/MaxQueryComplexityInstrumentation.java index 6e47e92bb0..64a79612d6 100644 --- a/src/main/java/graphql/analysis/MaxQueryComplexityInstrumentation.java +++ b/src/main/java/graphql/analysis/MaxQueryComplexityInstrumentation.java @@ -11,7 +11,7 @@ import graphql.execution.instrumentation.parameters.InstrumentationExecuteOperationParameters; import graphql.execution.instrumentation.parameters.InstrumentationValidationParameters; import graphql.validation.ValidationError; -import org.jetbrains.annotations.Nullable; +import org.jspecify.annotations.Nullable; import java.util.List; import java.util.concurrent.CompletableFuture; diff --git a/src/main/java/graphql/analysis/MaxQueryDepthInstrumentation.java b/src/main/java/graphql/analysis/MaxQueryDepthInstrumentation.java index f1cee88228..f242baf33d 100644 --- a/src/main/java/graphql/analysis/MaxQueryDepthInstrumentation.java +++ b/src/main/java/graphql/analysis/MaxQueryDepthInstrumentation.java @@ -8,9 +8,7 @@ import graphql.execution.instrumentation.InstrumentationState; import graphql.execution.instrumentation.SimplePerformantInstrumentation; import graphql.execution.instrumentation.parameters.InstrumentationExecuteOperationParameters; -import org.jetbrains.annotations.Nullable; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; +import org.jspecify.annotations.Nullable; import java.util.function.Function; @@ -25,7 +23,6 @@ @PublicApi public class MaxQueryDepthInstrumentation extends SimplePerformantInstrumentation { - private static final Logger log = LoggerFactory.getLogger(MaxQueryDepthInstrumentation.class); private final int maxDepth; private final Function maxQueryDepthExceededFunction; @@ -54,9 +51,6 @@ public MaxQueryDepthInstrumentation(int maxDepth, Function beginExecuteOperation(InstrumentationExecuteOperationParameters parameters, InstrumentationState state) { QueryTraverser queryTraverser = newQueryTraverser(parameters.getExecutionContext()); int depth = queryTraverser.reducePreOrder((env, acc) -> Math.max(getPathLength(env.getParentEnvironment()), acc), 0); - if (log.isDebugEnabled()) { - log.debug("Query depth info: {}", depth); - } if (depth > maxDepth) { QueryDepthInfo queryDepthInfo = QueryDepthInfo.newQueryDepthInfo() .depth(depth) diff --git a/src/main/java/graphql/analysis/NodeVisitorWithTypeTracking.java b/src/main/java/graphql/analysis/NodeVisitorWithTypeTracking.java index 2a2b237aeb..c2f0bebd3f 100644 --- a/src/main/java/graphql/analysis/NodeVisitorWithTypeTracking.java +++ b/src/main/java/graphql/analysis/NodeVisitorWithTypeTracking.java @@ -30,6 +30,7 @@ import graphql.util.TraversalControl; import graphql.util.TraverserContext; +import java.util.Collections; import java.util.Locale; import java.util.Map; @@ -50,13 +51,20 @@ public class NodeVisitorWithTypeTracking extends NodeVisitorStub { private final GraphQLSchema schema; private final Map fragmentsByName; private final ConditionalNodes conditionalNodes = new ConditionalNodes(); - - public NodeVisitorWithTypeTracking(QueryVisitor preOrderCallback, QueryVisitor postOrderCallback, Map variables, GraphQLSchema schema, Map fragmentsByName) { + private final QueryTraversalOptions options; + + public NodeVisitorWithTypeTracking(QueryVisitor preOrderCallback, + QueryVisitor postOrderCallback, + Map variables, + GraphQLSchema schema, + Map fragmentsByName, + QueryTraversalOptions options) { this.preOrderCallback = preOrderCallback; this.postOrderCallback = postOrderCallback; this.variables = variables; this.schema = schema; this.fragmentsByName = fragmentsByName; + this.options = options; } @Override @@ -156,12 +164,17 @@ public TraversalControl visitField(Field field, TraverserContext context) boolean isTypeNameIntrospectionField = fieldDefinition == schema.getIntrospectionTypenameFieldDefinition(); GraphQLFieldsContainer fieldsContainer = !isTypeNameIntrospectionField ? (GraphQLFieldsContainer) unwrapAll(parentEnv.getOutputType()) : null; GraphQLCodeRegistry codeRegistry = schema.getCodeRegistry(); - Map argumentValues = ValuesResolver.getArgumentValues(codeRegistry, - fieldDefinition.getArguments(), - field.getArguments(), - CoercedVariables.of(variables), - GraphQLContext.getDefault(), - Locale.getDefault()); + Map argumentValues; + if (options.isCoerceFieldArguments()) { + argumentValues = ValuesResolver.getArgumentValues(codeRegistry, + fieldDefinition.getArguments(), + field.getArguments(), + CoercedVariables.of(variables), + GraphQLContext.getDefault(), + Locale.getDefault()); + } else { + argumentValues = Collections.emptyMap(); + } QueryVisitorFieldEnvironment environment = new QueryVisitorFieldEnvironmentImpl(isTypeNameIntrospectionField, field, fieldDefinition, diff --git a/src/main/java/graphql/analysis/QueryTransformer.java b/src/main/java/graphql/analysis/QueryTransformer.java index 9c45902dae..eed41818e9 100644 --- a/src/main/java/graphql/analysis/QueryTransformer.java +++ b/src/main/java/graphql/analysis/QueryTransformer.java @@ -36,20 +36,22 @@ public class QueryTransformer { private final GraphQLSchema schema; private final Map fragmentsByName; private final Map variables; - private final GraphQLCompositeType rootParentType; + private final QueryTraversalOptions options; private QueryTransformer(GraphQLSchema schema, Node root, GraphQLCompositeType rootParentType, Map fragmentsByName, - Map variables) { + Map variables, + QueryTraversalOptions options) { this.schema = assertNotNull(schema, () -> "schema can't be null"); this.variables = assertNotNull(variables, () -> "variables can't be null"); this.root = assertNotNull(root, () -> "root can't be null"); this.rootParentType = assertNotNull(rootParentType); this.fragmentsByName = assertNotNull(fragmentsByName, () -> "fragmentsByName can't be null"); + this.options = assertNotNull(options, () -> "options can't be null"); } /** @@ -65,12 +67,17 @@ private QueryTransformer(GraphQLSchema schema, */ public Node transform(QueryVisitor queryVisitor) { QueryVisitor noOp = new QueryVisitorStub(); - NodeVisitorWithTypeTracking nodeVisitor = new NodeVisitorWithTypeTracking(queryVisitor, noOp, variables, schema, fragmentsByName); + NodeVisitorWithTypeTracking nodeVisitor = new NodeVisitorWithTypeTracking(queryVisitor, + noOp, + variables, + schema, + fragmentsByName, + options); Map, Object> rootVars = new LinkedHashMap<>(); rootVars.put(QueryTraversalContext.class, new QueryTraversalContext(rootParentType, null, null, GraphQLContext.getDefault())); - TraverserVisitor nodeTraverserVisitor = new TraverserVisitor() { + TraverserVisitor nodeTraverserVisitor = new TraverserVisitor<>() { @Override public TraversalControl enter(TraverserContext context) { @@ -98,6 +105,7 @@ public static class Builder { private Node root; private GraphQLCompositeType rootParentType; private Map fragmentsByName; + private QueryTraversalOptions options = QueryTraversalOptions.defaultOptions(); /** @@ -160,8 +168,25 @@ public Builder fragmentsByName(Map fragmentsByName) return this; } + /** + * Sets the options to use while traversing + * + * @param options the options to use + * @return this builder + */ + public Builder options(QueryTraversalOptions options) { + this.options = assertNotNull(options, () -> "options can't be null"); + return this; + } + public QueryTransformer build() { - return new QueryTransformer(schema, root, rootParentType, fragmentsByName, variables); + return new QueryTransformer( + schema, + root, + rootParentType, + fragmentsByName, + variables, + options); } } } diff --git a/src/main/java/graphql/analysis/QueryTraversalOptions.java b/src/main/java/graphql/analysis/QueryTraversalOptions.java new file mode 100644 index 0000000000..7ce73f05ce --- /dev/null +++ b/src/main/java/graphql/analysis/QueryTraversalOptions.java @@ -0,0 +1,31 @@ +package graphql.analysis; + +import graphql.PublicApi; + +/** + * This options object controls how {@link QueryTraverser} works + */ +@PublicApi +public class QueryTraversalOptions { + + private final boolean coerceFieldArguments; + + private QueryTraversalOptions(boolean coerceFieldArguments) { + this.coerceFieldArguments = coerceFieldArguments; + } + + /** + * @return true if field arguments should be coerced. This is true by default. + */ + public boolean isCoerceFieldArguments() { + return coerceFieldArguments; + } + + public static QueryTraversalOptions defaultOptions() { + return new QueryTraversalOptions(true); + } + + public QueryTraversalOptions coerceFieldArguments(boolean coerceFieldArguments) { + return new QueryTraversalOptions(coerceFieldArguments); + } +} diff --git a/src/main/java/graphql/analysis/QueryTraverser.java b/src/main/java/graphql/analysis/QueryTraverser.java index 0ec067595b..2f543e5b43 100644 --- a/src/main/java/graphql/analysis/QueryTraverser.java +++ b/src/main/java/graphql/analysis/QueryTraverser.java @@ -49,23 +49,29 @@ public class QueryTraverser { private CoercedVariables coercedVariables; private final GraphQLCompositeType rootParentType; + private final QueryTraversalOptions options; private QueryTraverser(GraphQLSchema schema, Document document, String operation, - CoercedVariables coercedVariables) { + CoercedVariables coercedVariables, + QueryTraversalOptions options + ) { this.schema = schema; NodeUtil.GetOperationResult getOperationResult = NodeUtil.getOperation(document, operation); this.fragmentsByName = getOperationResult.fragmentsByName; this.roots = singletonList(getOperationResult.operationDefinition); this.rootParentType = getRootTypeFromOperation(getOperationResult.operationDefinition); this.coercedVariables = coercedVariables; + this.options = options; } private QueryTraverser(GraphQLSchema schema, Document document, String operation, - RawVariables rawVariables) { + RawVariables rawVariables, + QueryTraversalOptions options + ) { this.schema = schema; NodeUtil.GetOperationResult getOperationResult = NodeUtil.getOperation(document, operation); List variableDefinitions = getOperationResult.operationDefinition.getVariableDefinitions(); @@ -73,18 +79,22 @@ private QueryTraverser(GraphQLSchema schema, this.roots = singletonList(getOperationResult.operationDefinition); this.rootParentType = getRootTypeFromOperation(getOperationResult.operationDefinition); this.coercedVariables = ValuesResolver.coerceVariableValues(schema, variableDefinitions, rawVariables, GraphQLContext.getDefault(), Locale.getDefault()); + this.options = options; } private QueryTraverser(GraphQLSchema schema, Node root, GraphQLCompositeType rootParentType, Map fragmentsByName, - CoercedVariables coercedVariables) { + CoercedVariables coercedVariables, + QueryTraversalOptions options + ) { this.schema = schema; this.roots = Collections.singleton(root); this.rootParentType = rootParentType; this.fragmentsByName = fragmentsByName; this.coercedVariables = coercedVariables; + this.options = options; } public Object visitDepthFirst(QueryVisitor queryVisitor) { @@ -191,7 +201,12 @@ private Object visitImpl(QueryVisitor visitFieldCallback, Boolean preOrder) { } NodeTraverser nodeTraverser = new NodeTraverser(rootVars, this::childrenOf); - NodeVisitorWithTypeTracking nodeVisitorWithTypeTracking = new NodeVisitorWithTypeTracking(preOrderCallback, postOrderCallback, coercedVariables.toMap(), schema, fragmentsByName); + NodeVisitorWithTypeTracking nodeVisitorWithTypeTracking = new NodeVisitorWithTypeTracking(preOrderCallback, + postOrderCallback, + coercedVariables.toMap(), + schema, + fragmentsByName, + options); return nodeTraverser.depthFirst(nodeVisitorWithTypeTracking, roots); } @@ -210,6 +225,7 @@ public static class Builder { private Node root; private GraphQLCompositeType rootParentType; private Map fragmentsByName; + private QueryTraversalOptions options = QueryTraversalOptions.defaultOptions(); /** @@ -313,6 +329,17 @@ public Builder fragmentsByName(Map fragmentsByName) return this; } + /** + * Sets the options to use while traversing + * + * @param options the options to use + * @return this builder + */ + public Builder options(QueryTraversalOptions options) { + this.options = assertNotNull(options, () -> "options can't be null"); + return this; + } + /** * @return a built {@link QueryTraverser} object */ @@ -320,17 +347,35 @@ public QueryTraverser build() { checkState(); if (document != null) { if (rawVariables != null) { - return new QueryTraverser(schema, document, operation, rawVariables); + return new QueryTraverser(schema, + document, + operation, + rawVariables, + options); } - return new QueryTraverser(schema, document, operation, coercedVariables); + return new QueryTraverser(schema, + document, + operation, + coercedVariables, + options); } else { if (rawVariables != null) { // When traversing with an arbitrary root, there is no variable definition context available // Thus, the variables must have already been coerced // Retaining this builder for backwards compatibility - return new QueryTraverser(schema, root, rootParentType, fragmentsByName, CoercedVariables.of(rawVariables.toMap())); + return new QueryTraverser(schema, + root, + rootParentType, + fragmentsByName, + CoercedVariables.of(rawVariables.toMap()), + options); } - return new QueryTraverser(schema, root, rootParentType, fragmentsByName, coercedVariables); + return new QueryTraverser(schema, + root, + rootParentType, + fragmentsByName, + coercedVariables, + options); } } diff --git a/src/main/java/graphql/analysis/values/ValueTraverser.java b/src/main/java/graphql/analysis/values/ValueTraverser.java index 1cf7745aaa..be5c37326a 100644 --- a/src/main/java/graphql/analysis/values/ValueTraverser.java +++ b/src/main/java/graphql/analysis/values/ValueTraverser.java @@ -2,6 +2,7 @@ import com.google.common.collect.ImmutableList; import graphql.PublicApi; +import graphql.collect.ImmutableKit; import graphql.schema.DataFetchingEnvironment; import graphql.schema.DataFetchingEnvironmentImpl; import graphql.schema.GraphQLAppliedDirective; @@ -22,7 +23,6 @@ import java.util.LinkedHashMap; import java.util.List; import java.util.Map; -import java.util.stream.Collectors; import static graphql.Assert.assertShouldNeverHappen; import static graphql.Assert.assertTrue; @@ -62,13 +62,12 @@ private InputElements(GraphQLInputSchemaElement startElement) { private InputElements(ImmutableList inputElements) { this.inputElements = inputElements; - this.unwrappedInputElements = inputElements.stream() - .filter(it -> !(it instanceof GraphQLNonNull || it instanceof GraphQLList)) - .collect(ImmutableList.toImmutableList()); + this.unwrappedInputElements = ImmutableKit.filter(inputElements, + it -> !(it instanceof GraphQLNonNull || it instanceof GraphQLList)); - List inputValDefs = unwrappedInputElements.stream() - .filter(it -> it instanceof GraphQLInputValueDefinition) - .map(GraphQLInputValueDefinition.class::cast).collect(Collectors.toList()); + List inputValDefs = ImmutableKit.filterAndMap(unwrappedInputElements, + it -> it instanceof GraphQLInputValueDefinition, + GraphQLInputValueDefinition.class::cast); this.lastElement = inputValDefs.isEmpty() ? null : inputValDefs.get(inputValDefs.size() - 1); } diff --git a/src/main/java/graphql/analysis/values/ValueVisitor.java b/src/main/java/graphql/analysis/values/ValueVisitor.java index 21ae97c0a1..b8ea0a221b 100644 --- a/src/main/java/graphql/analysis/values/ValueVisitor.java +++ b/src/main/java/graphql/analysis/values/ValueVisitor.java @@ -10,7 +10,7 @@ import graphql.schema.GraphQLInputValueDefinition; import graphql.schema.GraphQLList; import graphql.schema.GraphQLScalarType; -import org.jetbrains.annotations.Nullable; +import org.jspecify.annotations.Nullable; import java.util.List; import java.util.Map; diff --git a/src/main/java/graphql/collect/ImmutableKit.java b/src/main/java/graphql/collect/ImmutableKit.java index 6fc66280c1..99ba867493 100644 --- a/src/main/java/graphql/collect/ImmutableKit.java +++ b/src/main/java/graphql/collect/ImmutableKit.java @@ -4,23 +4,26 @@ import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; import graphql.Internal; +import org.jspecify.annotations.NullMarked; +import org.jspecify.annotations.Nullable; import java.util.Collection; import java.util.List; import java.util.Map; import java.util.function.Function; +import java.util.function.Predicate; import static graphql.Assert.assertNotNull; @Internal -@SuppressWarnings({"UnstableApiUsage"}) +@NullMarked public final class ImmutableKit { public static ImmutableList emptyList() { return ImmutableList.of(); } - public static ImmutableList nonNullCopyOf(Collection collection) { + public static ImmutableList nonNullCopyOf(@Nullable Collection collection) { return collection == null ? emptyList() : ImmutableList.copyOf(collection); } @@ -41,9 +44,9 @@ public static ImmutableList concatLists(List l1, List l2) { * for the flexible style. Benchmarking has shown this to outperform `stream()`. * * @param collection the collection to map - * @param mapper the mapper function - * @param for two - * @param for result + * @param mapper the mapper function + * @param for two + * @param for result * * @return a map immutable list of results */ @@ -58,15 +61,66 @@ public static ImmutableList map(Collection collection, Fu return builder.build(); } + /** + * This is more efficient than `c.stream().filter().collect()` because it does not create the intermediate objects needed + * for the flexible style. Benchmarking has shown this to outperform `stream()`. + * + * @param collection the collection to map + * @param filter the filter predicate + * @param for two + * + * @return a map immutable list of results + */ + public static ImmutableList filter(Collection collection, Predicate filter) { + assertNotNull(collection); + assertNotNull(filter); + return filterAndMap(collection, filter, Function.identity()); + } + + /** + * This is more efficient than `c.stream().filter().map().collect()` because it does not create the intermediate objects needed + * for the flexible style. Benchmarking has shown this to outperform `stream()`. + * + * @param collection the collection to map + * @param filter the filter predicate + * @param mapper the mapper function + * @param for two + * @param for result + * + * @return a map immutable list of results + */ + public static ImmutableList filterAndMap(Collection collection, Predicate filter, Function mapper) { + assertNotNull(collection); + assertNotNull(mapper); + assertNotNull(filter); + ImmutableList.Builder builder = ImmutableList.builderWithExpectedSize(collection.size()); + for (T t : collection) { + if (filter.test(t)) { + R r = mapper.apply(t); + builder.add(r); + } + } + return builder.build(); + } + + public static ImmutableList flatMapList(Collection> listLists) { + ImmutableList.Builder builder = ImmutableList.builder(); + for (List t : listLists) { + builder.addAll(t); + } + return builder.build(); + } + + /** * This will map a collection of items but drop any that are null from the input. * This is more efficient than `c.stream().map().collect()` because it does not create the intermediate objects needed * for the flexible style. Benchmarking has shown this to outperform `stream()`. * * @param collection the collection to map - * @param mapper the mapper function - * @param for two - * @param for result + * @param mapper the mapper function + * @param for two + * @param for result * * @return a map immutable list of results */ diff --git a/src/main/java/graphql/execution/AbstractAsyncExecutionStrategy.java b/src/main/java/graphql/execution/AbstractAsyncExecutionStrategy.java index 863e0d6fad..6ae7f851ea 100644 --- a/src/main/java/graphql/execution/AbstractAsyncExecutionStrategy.java +++ b/src/main/java/graphql/execution/AbstractAsyncExecutionStrategy.java @@ -5,7 +5,6 @@ import graphql.ExecutionResultImpl; import graphql.PublicSpi; -import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.concurrent.CompletableFuture; @@ -28,6 +27,7 @@ protected BiConsumer, Throwable> handleResults(ExecutionContext exe handleNonNullException(executionContext, overallResult, exception); return; } + Map resolvedValuesByField = Maps.newLinkedHashMapWithExpectedSize(fieldNames.size()); int ix = 0; for (Object result : results) { diff --git a/src/main/java/graphql/execution/Async.java b/src/main/java/graphql/execution/Async.java index aa05f6ee4d..aefe805951 100644 --- a/src/main/java/graphql/execution/Async.java +++ b/src/main/java/graphql/execution/Async.java @@ -2,8 +2,8 @@ import graphql.Assert; import graphql.Internal; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; +import org.jspecify.annotations.NonNull; +import org.jspecify.annotations.Nullable; import java.util.ArrayList; import java.util.Arrays; @@ -230,7 +230,7 @@ public CompletableFuture> await() { } @SuppressWarnings("unchecked") - @NotNull + @NonNull private CompletableFuture[] copyOnlyCFsToArray() { if (cfCount == array.length) { // if it's all CFs - make a type safe copy via C code @@ -258,7 +258,7 @@ public Object awaitPolymorphic() { } } - @NotNull + @NonNull private List materialisedList(Object[] array) { List results = new ArrayList<>(array.length); for (Object object : array) { @@ -405,7 +405,7 @@ public static CompletableFuture exceptionallyCompletedFuture(Throwable ex * * @return the completableFuture if it's not null or one that always resoles to null */ - public static @NotNull CompletableFuture orNullCompletedFuture(@Nullable CompletableFuture completableFuture) { + public static @NonNull CompletableFuture orNullCompletedFuture(@Nullable CompletableFuture completableFuture) { return completableFuture != null ? completableFuture : CompletableFuture.completedFuture(null); } -} \ No newline at end of file +} diff --git a/src/main/java/graphql/execution/AsyncExecutionStrategy.java b/src/main/java/graphql/execution/AsyncExecutionStrategy.java index 27e24ace88..f7734df9fb 100644 --- a/src/main/java/graphql/execution/AsyncExecutionStrategy.java +++ b/src/main/java/graphql/execution/AsyncExecutionStrategy.java @@ -72,14 +72,14 @@ public CompletableFuture execute(ExecutionContext executionCont for (FieldValueInfo completeValueInfo : completeValueInfos) { fieldValuesFutures.addObject(completeValueInfo.getFieldValueObject()); } - dataLoaderDispatcherStrategy.executionStrategyOnFieldValuesInfo(completeValueInfos, parameters); + dataLoaderDispatcherStrategy.executionStrategyOnFieldValuesInfo(completeValueInfos); executionStrategyCtx.onFieldValuesInfo(completeValueInfos); fieldValuesFutures.await().whenComplete(handleResultsConsumer); }).exceptionally((ex) -> { // if there are any issues with combining/handling the field results, // complete the future at all costs and bubble up any thrown exception so // the execution does not hang. - dataLoaderDispatcherStrategy.executionStrategyOnFieldValuesException(ex, parameters); + dataLoaderDispatcherStrategy.executionStrategyOnFieldValuesException(ex); executionStrategyCtx.onFieldValuesException(); overallResult.completeExceptionally(ex); return null; @@ -88,4 +88,5 @@ public CompletableFuture execute(ExecutionContext executionCont overallResult.whenComplete(executionStrategyCtx::onCompleted); return overallResult; } + } diff --git a/src/main/java/graphql/execution/AsyncSerialExecutionStrategy.java b/src/main/java/graphql/execution/AsyncSerialExecutionStrategy.java index 6f64b8cd8c..98c6ce478b 100644 --- a/src/main/java/graphql/execution/AsyncSerialExecutionStrategy.java +++ b/src/main/java/graphql/execution/AsyncSerialExecutionStrategy.java @@ -32,7 +32,7 @@ public AsyncSerialExecutionStrategy(DataFetcherExceptionHandler exceptionHandler @Override @SuppressWarnings({"TypeParameterUnusedInFormals", "FutureReturnValueIgnored"}) public CompletableFuture execute(ExecutionContext executionContext, ExecutionStrategyParameters parameters) throws NonNullableFieldWasNullException { - executionContext.getDataLoaderDispatcherStrategy().executionStrategy(executionContext, parameters); + DataLoaderDispatchStrategy dataLoaderDispatcherStrategy = executionContext.getDataLoaderDispatcherStrategy(); Instrumentation instrumentation = executionContext.getInstrumentation(); InstrumentationExecutionStrategyParameters instrumentationParameters = new InstrumentationExecutionStrategyParameters(executionContext, parameters); @@ -52,9 +52,9 @@ public CompletableFuture execute(ExecutionContext executionCont CompletableFuture> resultsFuture = Async.eachSequentially(fieldNames, (fieldName, prevResults) -> { MergedField currentField = fields.getSubField(fieldName); ResultPath fieldPath = parameters.getPath().segment(mkNameForPath(currentField)); - ExecutionStrategyParameters newParameters = parameters - .transform(builder -> builder.field(currentField).path(fieldPath)); - return resolveField(executionContext, newParameters); + ExecutionStrategyParameters newParameters = parameters.transform(currentField, fieldPath); + + return resolveSerialField(executionContext, dataLoaderDispatcherStrategy, newParameters); }); CompletableFuture overallResult = new CompletableFuture<>(); @@ -65,4 +65,23 @@ public CompletableFuture execute(ExecutionContext executionCont return overallResult; } + private Object resolveSerialField(ExecutionContext executionContext, + DataLoaderDispatchStrategy dataLoaderDispatcherStrategy, + ExecutionStrategyParameters newParameters) { + dataLoaderDispatcherStrategy.executionSerialStrategy(executionContext, newParameters); + + Object fieldWithInfo = resolveFieldWithInfo(executionContext, newParameters); + if (fieldWithInfo instanceof CompletableFuture) { + //noinspection unchecked + return ((CompletableFuture) fieldWithInfo).thenCompose(fvi -> { + dataLoaderDispatcherStrategy.executionStrategyOnFieldValuesInfo(List.of(fvi)); + CompletableFuture fieldValueFuture = fvi.getFieldValueFuture(); + return fieldValueFuture; + }); + } else { + FieldValueInfo fvi = (FieldValueInfo) fieldWithInfo; + dataLoaderDispatcherStrategy.executionStrategyOnFieldValuesInfo(List.of(fvi)); + return fvi.getFieldValueObject(); + } + } } diff --git a/src/main/java/graphql/execution/CoercedVariables.java b/src/main/java/graphql/execution/CoercedVariables.java index a0d8c038dd..6123aeec82 100644 --- a/src/main/java/graphql/execution/CoercedVariables.java +++ b/src/main/java/graphql/execution/CoercedVariables.java @@ -11,6 +11,7 @@ */ @PublicApi public class CoercedVariables { + private static final CoercedVariables EMPTY = CoercedVariables.of(ImmutableKit.emptyMap()); private final ImmutableMapWithNullValues coercedVariables; public CoercedVariables(Map coercedVariables) { @@ -30,10 +31,15 @@ public Object get(String key) { } public static CoercedVariables emptyVariables() { - return new CoercedVariables(ImmutableKit.emptyMap()); + return EMPTY; } public static CoercedVariables of(Map coercedVariables) { return new CoercedVariables(coercedVariables); } + + @Override + public String toString() { + return coercedVariables.toString(); + } } diff --git a/src/main/java/graphql/execution/DataFetcherResult.java b/src/main/java/graphql/execution/DataFetcherResult.java index 3baa4f4fec..cfe6337d0c 100644 --- a/src/main/java/graphql/execution/DataFetcherResult.java +++ b/src/main/java/graphql/execution/DataFetcherResult.java @@ -10,6 +10,7 @@ import java.util.ArrayList; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.function.Consumer; import java.util.function.Function; @@ -24,10 +25,19 @@ * This also allows you to pass down new local context objects between parent and child fields. If you return a * {@link #getLocalContext()} value then it will be passed down into any child fields via * {@link graphql.schema.DataFetchingEnvironment#getLocalContext()} - * + *

* You can also have {@link DataFetcher}s contribute to the {@link ExecutionResult#getExtensions()} by returning * extensions maps that will be merged together via the {@link graphql.extensions.ExtensionsBuilder} and its {@link graphql.extensions.ExtensionsMerger} * in place. + *

+ * This provides {@link #hashCode()} and {@link #equals(Object)} methods that afford comparison with other {@link DataFetcherResult} object.s + * However, to function correctly, this relies on the values provided in the following fields in turn also implementing {@link #hashCode()}} and {@link #equals(Object)} as appropriate: + *

    + *
  • The data returned in {@link #getData()}. + *
  • The individual errors returned in {@link #getErrors()}. + *
  • The context returned in {@link #getLocalContext()}. + *
  • The keys/values in the {@link #getExtensions()} {@link Map}. + *
* * @param The type of the data fetched */ @@ -39,20 +49,6 @@ public class DataFetcherResult { private final Object localContext; private final Map extensions; - /** - * Creates a data fetcher result - * - * @param data the data - * @param errors the errors - * - * @deprecated use the {@link #newResult()} builder instead - */ - @Internal - @Deprecated(since = "2019-01-11") - public DataFetcherResult(T data, List errors) { - this(data, errors, null, null); - } - private DataFetcherResult(T data, List errors, Object localContext, Map extensions) { this.data = data; this.errors = ImmutableList.copyOf(assertNotNull(errors)); @@ -137,6 +133,35 @@ public DataFetcherResult map(Function transformation) { .build(); } + + @Override + public boolean equals(Object o) { + if (o == null || getClass() != o.getClass()) { + return false; + } + + DataFetcherResult that = (DataFetcherResult) o; + return Objects.equals(data, that.data) + && errors.equals(that.errors) + && Objects.equals(localContext, that.localContext) + && Objects.equals(extensions, that.extensions); + } + + @Override + public int hashCode() { + return Objects.hash(data, errors, localContext, extensions); + } + + @Override + public String toString() { + return "DataFetcherResult{" + + "data=" + data + + ", errors=" + errors + + ", localContext=" + localContext + + ", extensions=" + extensions + + '}'; + } + /** * Creates a new data fetcher result builder * diff --git a/src/main/java/graphql/execution/DataLoaderDispatchStrategy.java b/src/main/java/graphql/execution/DataLoaderDispatchStrategy.java index ee3c0bd97c..5101ae3a56 100644 --- a/src/main/java/graphql/execution/DataLoaderDispatchStrategy.java +++ b/src/main/java/graphql/execution/DataLoaderDispatchStrategy.java @@ -4,7 +4,6 @@ import graphql.schema.DataFetcher; import java.util.List; -import java.util.concurrent.CompletableFuture; @Internal public interface DataLoaderDispatchStrategy { @@ -17,11 +16,15 @@ default void executionStrategy(ExecutionContext executionContext, ExecutionStrat } - default void executionStrategyOnFieldValuesInfo(List fieldValueInfoList, ExecutionStrategyParameters parameters) { + default void executionSerialStrategy(ExecutionContext executionContext, ExecutionStrategyParameters parameters) { } - default void executionStrategyOnFieldValuesException(Throwable t, ExecutionStrategyParameters parameters) { + default void executionStrategyOnFieldValuesInfo(List fieldValueInfoList) { + + } + + default void executionStrategyOnFieldValuesException(Throwable t) { } @@ -50,7 +53,7 @@ default DataFetcher modifyDataFetcher(DataFetcher dataFetcher) { return dataFetcher; } - default void deferredField(ExecutionContext executionContext, MergedField currentField) { + default void executeDeferredOnFieldValueInfo(FieldValueInfo fieldValueInfo, ExecutionStrategyParameters executionStrategyParameters) { } } diff --git a/src/main/java/graphql/execution/EngineRunningObserver.java b/src/main/java/graphql/execution/EngineRunningObserver.java new file mode 100644 index 0000000000..008623eedc --- /dev/null +++ b/src/main/java/graphql/execution/EngineRunningObserver.java @@ -0,0 +1,38 @@ +package graphql.execution; + +import graphql.ExperimentalApi; +import graphql.GraphQLContext; +import org.jspecify.annotations.NullMarked; + +/** + * This class lets you observe the running state of the graphql-java engine. As it processes and dispatches graphql fields, + * the engine moves in and out of a running and not running state. As it does this, the callback is called with information telling you the current + * state. + */ +@ExperimentalApi +@NullMarked +public interface EngineRunningObserver { + + enum RunningState { + /** + * Represents that the engine code is actively running its own code + */ + RUNNING, + /** + * Represents that the engine code is asynchronously waiting for fetching to happen + */ + NOT_RUNNING, + } + + + String ENGINE_RUNNING_OBSERVER_KEY = "__ENGINE_RUNNING_OBSERVER"; + + + /** + * This will be called when the running state of the graphql-java engine changes. + * + * @param executionId the id of the current execution + * @param graphQLContext the graphql context + */ + void runningStateChanged(ExecutionId executionId, GraphQLContext graphQLContext, RunningState runningState); +} diff --git a/src/main/java/graphql/execution/Execution.java b/src/main/java/graphql/execution/Execution.java index 584449553a..928580d91a 100644 --- a/src/main/java/graphql/execution/Execution.java +++ b/src/main/java/graphql/execution/Execution.java @@ -1,6 +1,8 @@ package graphql.execution; +import graphql.Directives; +import graphql.EngineRunningState; import graphql.ExecutionInput; import graphql.ExecutionResult; import graphql.ExecutionResultImpl; @@ -14,19 +16,22 @@ import graphql.execution.instrumentation.InstrumentationState; import graphql.execution.instrumentation.dataloader.FallbackDataLoaderDispatchStrategy; import graphql.execution.instrumentation.dataloader.PerLevelDataLoaderDispatchStrategy; +import graphql.execution.instrumentation.dataloader.PerLevelDataLoaderDispatchStrategyWithDeferAlwaysDispatch; import graphql.execution.instrumentation.parameters.InstrumentationExecuteOperationParameters; import graphql.execution.instrumentation.parameters.InstrumentationExecutionParameters; import graphql.extensions.ExtensionsBuilder; import graphql.incremental.DelayedIncrementalPartialResult; import graphql.incremental.IncrementalExecutionResultImpl; +import graphql.language.Directive; import graphql.language.Document; -import graphql.language.FragmentDefinition; import graphql.language.NodeUtil; import graphql.language.OperationDefinition; import graphql.language.VariableDefinition; import graphql.schema.GraphQLObjectType; import graphql.schema.GraphQLSchema; import graphql.schema.impl.SchemaUtil; +import graphql.util.FpKit; +import org.jspecify.annotations.NonNull; import org.reactivestreams.Publisher; import java.util.Collections; @@ -34,7 +39,9 @@ import java.util.Map; import java.util.Optional; import java.util.concurrent.CompletableFuture; +import java.util.function.Supplier; +import static graphql.Directives.EXPERIMENTAL_DISABLE_ERROR_PROPAGATION_DIRECTIVE_DEFINITION; import static graphql.execution.ExecutionContextBuilder.newExecutionContextBuilder; import static graphql.execution.ExecutionStepInfo.newExecutionStepInfo; import static graphql.execution.ExecutionStrategyParameters.newParameters; @@ -66,18 +73,14 @@ public Execution(ExecutionStrategy queryStrategy, this.doNotAutomaticallyDispatchDataLoader = doNotAutomaticallyDispatchDataLoader; } - public CompletableFuture execute(Document document, GraphQLSchema graphQLSchema, ExecutionId executionId, ExecutionInput executionInput, InstrumentationState instrumentationState) { - - NodeUtil.GetOperationResult getOperationResult = NodeUtil.getOperation(document, executionInput.getOperationName()); - Map fragmentsByName = getOperationResult.fragmentsByName; - OperationDefinition operationDefinition = getOperationResult.operationDefinition; - - RawVariables inputVariables = executionInput.getRawVariables(); - List variableDefinitions = operationDefinition.getVariableDefinitions(); - + public CompletableFuture execute(Document document, GraphQLSchema graphQLSchema, ExecutionId executionId, ExecutionInput executionInput, InstrumentationState instrumentationState, EngineRunningState engineRunningState) { + NodeUtil.GetOperationResult getOperationResult; CoercedVariables coercedVariables; + Supplier normalizedVariableValues; try { - coercedVariables = ValuesResolver.coerceVariableValues(graphQLSchema, variableDefinitions, inputVariables, executionInput.getGraphQLContext(), executionInput.getLocale()); + getOperationResult = NodeUtil.getOperation(document, executionInput.getOperationName()); + coercedVariables = coerceVariableValues(graphQLSchema, executionInput, getOperationResult.operationDefinition); + normalizedVariableValues = normalizedVariableValues(graphQLSchema, executionInput, getOperationResult); } catch (RuntimeException rte) { if (rte instanceof GraphQLError) { return completedFuture(new ExecutionResultImpl((GraphQLError) rte)); @@ -85,6 +88,8 @@ public CompletableFuture execute(Document document, GraphQLSche throw rte; } + boolean propagateErrorsOnNonNullContractFailure = propagateErrorsOnNonNullContractFailure(getOperationResult.operationDefinition.getDirectives()); + ExecutionContext executionContext = newExecutionContextBuilder() .instrumentation(instrumentation) .instrumentationState(instrumentationState) @@ -97,14 +102,17 @@ public CompletableFuture execute(Document document, GraphQLSche .graphQLContext(executionInput.getGraphQLContext()) .localContext(executionInput.getLocalContext()) .root(executionInput.getRoot()) - .fragmentsByName(fragmentsByName) + .fragmentsByName(getOperationResult.fragmentsByName) .coercedVariables(coercedVariables) + .normalizedVariableValues(normalizedVariableValues) .document(document) - .operationDefinition(operationDefinition) + .operationDefinition(getOperationResult.operationDefinition) .dataLoaderRegistry(executionInput.getDataLoaderRegistry()) .locale(executionInput.getLocale()) .valueUnboxer(valueUnboxer) .executionInput(executionInput) + .propagapropagateErrorsOnNonNullContractFailureeErrors(propagateErrorsOnNonNullContractFailure) + .engineRunningState(engineRunningState) .build(); executionContext.getGraphQLContext().put(ResultNodesInfo.RESULT_NODES_INFO, executionContext.getResultNodesInfo()); @@ -116,6 +124,25 @@ public CompletableFuture execute(Document document, GraphQLSche return executeOperation(executionContext, executionInput.getRoot(), executionContext.getOperationDefinition()); } + private static @NonNull CoercedVariables coerceVariableValues(GraphQLSchema graphQLSchema, ExecutionInput executionInput, OperationDefinition operationDefinition) { + RawVariables inputVariables = executionInput.getRawVariables(); + List variableDefinitions = operationDefinition.getVariableDefinitions(); + return ValuesResolver.coerceVariableValues(graphQLSchema, variableDefinitions, inputVariables, executionInput.getGraphQLContext(), executionInput.getLocale()); + } + + private static @NonNull Supplier normalizedVariableValues(GraphQLSchema graphQLSchema, ExecutionInput executionInput, NodeUtil.GetOperationResult getOperationResult) { + Supplier normalizedVariableValues; + RawVariables inputVariables = executionInput.getRawVariables(); + List variableDefinitions = getOperationResult.operationDefinition.getVariableDefinitions(); + + normalizedVariableValues = FpKit.intraThreadMemoize(() -> + ValuesResolver.getNormalizedVariableValues(graphQLSchema, + variableDefinitions, + inputVariables, + executionInput.getGraphQLContext(), executionInput.getLocale())); + return normalizedVariableValues; + } + private CompletableFuture executeOperation(ExecutionContext executionContext, Object root, OperationDefinition operationDefinition) { @@ -153,14 +180,12 @@ private CompletableFuture executeOperation(ExecutionContext exe MergedSelectionSet fields = fieldCollector.collectFields( collectorParameters, operationDefinition.getSelectionSet(), - Optional.ofNullable(executionContext.getGraphQLContext()) - .map(graphqlContext -> (Boolean) graphqlContext.get(ExperimentalApi.ENABLE_INCREMENTAL_SUPPORT)) - .orElse(false) + executionContext.hasIncrementalSupport() ); ResultPath path = ResultPath.rootPath(); ExecutionStepInfo executionStepInfo = newExecutionStepInfo().type(operationRootType).path(path).build(); - NonNullableFieldValidator nonNullableFieldValidator = new NonNullableFieldValidator(executionContext, executionStepInfo); + NonNullableFieldValidator nonNullableFieldValidator = new NonNullableFieldValidator(executionContext); ExecutionStrategyParameters parameters = newParameters() .executionStepInfo(executionStepInfo) @@ -227,8 +252,13 @@ private DataLoaderDispatchStrategy createDataLoaderDispatchStrategy(ExecutionCon if (executionContext.getDataLoaderRegistry() == EMPTY_DATALOADER_REGISTRY || doNotAutomaticallyDispatchDataLoader) { return DataLoaderDispatchStrategy.NO_OP; } - if (executionStrategy instanceof AsyncExecutionStrategy) { - return new PerLevelDataLoaderDispatchStrategy(executionContext); + if (!executionContext.isSubscriptionOperation()) { + boolean deferEnabled = executionContext.hasIncrementalSupport(); + + // Dedicated strategy for defer support, for safety purposes. + return deferEnabled ? + new PerLevelDataLoaderDispatchStrategyWithDeferAlwaysDispatch(executionContext) : + new PerLevelDataLoaderDispatchStrategy(executionContext); } else { return new FallbackDataLoaderDispatchStrategy(executionContext); } @@ -254,4 +284,13 @@ private ExecutionResult mergeExtensionsBuilderIfPresent(ExecutionResult executio } return executionResult; } + + private boolean propagateErrorsOnNonNullContractFailure(List directives) { + boolean jvmWideEnabled = Directives.isExperimentalDisableErrorPropagationDirectiveEnabled(); + if (! jvmWideEnabled) { + return true; + } + Directive foundDirective = NodeUtil.findNodeByName(directives, EXPERIMENTAL_DISABLE_ERROR_PROPAGATION_DIRECTIVE_DEFINITION.getName()); + return foundDirective == null; + } } diff --git a/src/main/java/graphql/execution/ExecutionContext.java b/src/main/java/graphql/execution/ExecutionContext.java index e459cbe0ad..22e2d7b638 100644 --- a/src/main/java/graphql/execution/ExecutionContext.java +++ b/src/main/java/graphql/execution/ExecutionContext.java @@ -3,7 +3,9 @@ import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; +import graphql.EngineRunningState; import graphql.ExecutionInput; +import graphql.ExperimentalApi; import graphql.GraphQLContext; import graphql.GraphQLError; import graphql.Internal; @@ -27,6 +29,7 @@ import java.util.Locale; import java.util.Map; import java.util.Set; +import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicReference; import java.util.function.Consumer; import java.util.function.Supplier; @@ -45,6 +48,7 @@ public class ExecutionContext { private final OperationDefinition operationDefinition; private final Document document; private final CoercedVariables coercedVariables; + private final Supplier normalizedVariables; private final Object root; private final Object context; private final GraphQLContext graphQLContext; @@ -59,11 +63,15 @@ public class ExecutionContext { private final ValueUnboxer valueUnboxer; private final ExecutionInput executionInput; private final Supplier queryTree; + private final boolean propagateErrorsOnNonNullContractFailure; + + private final AtomicInteger isRunning = new AtomicInteger(0); // this is modified after creation so it needs to be volatile to ensure visibility across Threads private volatile DataLoaderDispatchStrategy dataLoaderDispatcherStrategy = DataLoaderDispatchStrategy.NO_OP; private final ResultNodesInfo resultNodesInfo = new ResultNodesInfo(); + private final EngineRunningState engineRunningState; ExecutionContext(ExecutionContextBuilder builder) { this.graphQLSchema = builder.graphQLSchema; @@ -74,6 +82,7 @@ public class ExecutionContext { this.subscriptionStrategy = builder.subscriptionStrategy; this.fragmentsByName = builder.fragmentsByName; this.coercedVariables = builder.coercedVariables; + this.normalizedVariables = builder.normalizedVariables; this.document = builder.document; this.operationDefinition = builder.operationDefinition; this.context = builder.context; @@ -86,7 +95,10 @@ public class ExecutionContext { this.errors.set(builder.errors); this.localContext = builder.localContext; this.executionInput = builder.executionInput; + this.dataLoaderDispatcherStrategy = builder.dataLoaderDispatcherStrategy; this.queryTree = FpKit.interThreadMemoize(() -> ExecutableNormalizedOperationFactory.createExecutableNormalizedOperation(graphQLSchema, operationDefinition, fragmentsByName, coercedVariables)); + this.propagateErrorsOnNonNullContractFailure = builder.propagateErrorsOnNonNullContractFailure; + this.engineRunningState = builder.engineRunningState; } @@ -126,6 +138,13 @@ public CoercedVariables getCoercedVariables() { return coercedVariables; } + /** + * @return a supplier that will give out the operations variables in normalized form + */ + public Supplier getNormalizedVariables() { + return normalizedVariables; + } + /** * @param for two * @@ -169,6 +188,46 @@ public ValueUnboxer getValueUnboxer() { return valueUnboxer; } + /** + * @return true if the current operation should propagate errors in non-null positions + * Propagating errors is the default. Error aware clients may opt in returning null in non-null positions + * by using the `@experimental_disableErrorPropagation` directive. + * + * @see graphql.Directives#setExperimentalDisableErrorPropagationEnabled(boolean) to change the JVM wide default + */ + @ExperimentalApi + public boolean propagateErrorsOnNonNullContractFailure() { + return propagateErrorsOnNonNullContractFailure; + } + + /** + * @return true if the current operation is a Query + */ + public boolean isQueryOperation() { + return isOpType(OperationDefinition.Operation.QUERY); + } + + /** + * @return true if the current operation is a Mutation + */ + public boolean isMutationOperation() { + return isOpType(OperationDefinition.Operation.MUTATION); + } + + /** + * @return true if the current operation is a Subscription + */ + public boolean isSubscriptionOperation() { + return isOpType(OperationDefinition.Operation.SUBSCRIPTION); + } + + private boolean isOpType(OperationDefinition.Operation operation) { + if (operationDefinition != null) { + return operation.equals(operationDefinition.getOperation()); + } + return false; + } + /** * This method will only put one error per field path. * @@ -300,4 +359,15 @@ public ExecutionContext transform(Consumer builderConsu public ResultNodesInfo getResultNodesInfo() { return resultNodesInfo; } + + @Internal + public boolean hasIncrementalSupport() { + GraphQLContext graphqlContext = getGraphQLContext(); + return graphqlContext != null && graphqlContext.getBoolean(ExperimentalApi.ENABLE_INCREMENTAL_SUPPORT); + } + + @Internal + public EngineRunningState getEngineRunningState() { + return engineRunningState; + } } diff --git a/src/main/java/graphql/execution/ExecutionContextBuilder.java b/src/main/java/graphql/execution/ExecutionContextBuilder.java index 7220e8dee7..014bab516a 100644 --- a/src/main/java/graphql/execution/ExecutionContextBuilder.java +++ b/src/main/java/graphql/execution/ExecutionContextBuilder.java @@ -2,11 +2,12 @@ import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; +import graphql.EngineRunningState; import graphql.ExecutionInput; +import graphql.ExperimentalApi; import graphql.GraphQLContext; import graphql.GraphQLError; import graphql.Internal; -import graphql.PublicApi; import graphql.collect.ImmutableKit; import graphql.execution.instrumentation.Instrumentation; import graphql.execution.instrumentation.InstrumentationState; @@ -15,14 +16,16 @@ import graphql.language.OperationDefinition; import graphql.schema.GraphQLSchema; import org.dataloader.DataLoaderRegistry; +import org.jspecify.annotations.Nullable; import java.util.Locale; import java.util.Map; +import java.util.function.Supplier; import static graphql.Assert.assertNotNull; import static graphql.collect.ImmutableKit.emptyList; -@PublicApi +@Internal public class ExecutionContextBuilder { Instrumentation instrumentation; @@ -38,6 +41,7 @@ public class ExecutionContextBuilder { Document document; OperationDefinition operationDefinition; CoercedVariables coercedVariables = CoercedVariables.emptyVariables(); + Supplier normalizedVariables = NormalizedVariables::emptyVariables; ImmutableMap fragmentsByName = ImmutableKit.emptyMap(); DataLoaderRegistry dataLoaderRegistry; Locale locale; @@ -45,6 +49,9 @@ public class ExecutionContextBuilder { ValueUnboxer valueUnboxer; Object localContext; ExecutionInput executionInput; + DataLoaderDispatchStrategy dataLoaderDispatcherStrategy = DataLoaderDispatchStrategy.NO_OP; + boolean propagateErrorsOnNonNullContractFailure = true; + EngineRunningState engineRunningState; /** * @return a new builder of {@link graphql.execution.ExecutionContext}s @@ -90,6 +97,9 @@ public ExecutionContextBuilder() { errors = ImmutableList.copyOf(other.getErrors()); valueUnboxer = other.getValueUnboxer(); executionInput = other.getExecutionInput(); + dataLoaderDispatcherStrategy = other.getDataLoaderDispatcherStrategy(); + propagateErrorsOnNonNullContractFailure = other.propagateErrorsOnNonNullContractFailure(); + engineRunningState = other.getEngineRunningState(); } public ExecutionContextBuilder instrumentation(Instrumentation instrumentation) { @@ -131,7 +141,7 @@ public ExecutionContextBuilder subscriptionStrategy(ExecutionStrategy subscripti * @deprecated use {@link #graphQLContext(GraphQLContext)} instead */ @Deprecated(since = "2021-07-05") - public ExecutionContextBuilder context(Object context) { + public ExecutionContextBuilder context(@Nullable Object context) { this.context = context; return this; } @@ -168,6 +178,11 @@ public ExecutionContextBuilder coercedVariables(CoercedVariables coercedVariable return this; } + public ExecutionContextBuilder normalizedVariableValues(Supplier normalizedVariables) { + this.normalizedVariables = normalizedVariables; + return this; + } + public ExecutionContextBuilder fragmentsByName(Map fragmentsByName) { this.fragmentsByName = ImmutableMap.copyOf(fragmentsByName); return this; @@ -203,14 +218,32 @@ public ExecutionContextBuilder executionInput(ExecutionInput executionInput) { return this; } + @Internal + public ExecutionContextBuilder dataLoaderDispatcherStrategy(DataLoaderDispatchStrategy dataLoaderDispatcherStrategy) { + this.dataLoaderDispatcherStrategy = dataLoaderDispatcherStrategy; + return this; + } + public ExecutionContextBuilder resetErrors() { this.errors = emptyList(); return this; } + @ExperimentalApi + public ExecutionContextBuilder propagapropagateErrorsOnNonNullContractFailureeErrors(boolean propagateErrorsOnNonNullContractFailure) { + this.propagateErrorsOnNonNullContractFailure = propagateErrorsOnNonNullContractFailure; + return this; + } + + public ExecutionContext build() { // preconditions assertNotNull(executionId, () -> "You must provide a query identifier"); return new ExecutionContext(this); } + + public ExecutionContextBuilder engineRunningState(EngineRunningState engineRunningState) { + this.engineRunningState = engineRunningState; + return this; + } } diff --git a/src/main/java/graphql/execution/ExecutionStepInfo.java b/src/main/java/graphql/execution/ExecutionStepInfo.java index 27313bb965..eefa8a81cc 100644 --- a/src/main/java/graphql/execution/ExecutionStepInfo.java +++ b/src/main/java/graphql/execution/ExecutionStepInfo.java @@ -1,5 +1,6 @@ package graphql.execution; +import graphql.Internal; import graphql.PublicApi; import graphql.collect.ImmutableMapWithNullValues; import graphql.schema.GraphQLFieldDefinition; @@ -77,15 +78,23 @@ private ExecutionStepInfo(Builder builder) { this.fieldContainer = builder.fieldContainer; } - /** - * @return the GraphQLObjectType defining the {@link #getFieldDefinition()} - * - * @see ExecutionStepInfo#getObjectType() - * @deprecated use {@link #getObjectType()} instead as it is named better + /* + * This constructor allows for a slightly ( 1% ish) faster transformation without an intermediate Builder object */ - @Deprecated(since = "2022-02-03") - public GraphQLObjectType getFieldContainer() { - return fieldContainer; + private ExecutionStepInfo(GraphQLOutputType type, + ResultPath path, + ExecutionStepInfo parent, + MergedField field, + GraphQLFieldDefinition fieldDefinition, + GraphQLObjectType fieldContainer, + Supplier> arguments) { + this.type = assertNotNull(type, () -> "you must provide a graphql type"); + this.path = path; + this.parent = parent; + this.field = field; + this.fieldDefinition = fieldDefinition; + this.fieldContainer = fieldContainer; + this.arguments = arguments; } /** @@ -204,13 +213,12 @@ public boolean hasParent() { public ExecutionStepInfo changeTypeWithPreservedNonNull(GraphQLOutputType newType) { assertTrue(!GraphQLTypeUtil.isNonNull(newType), () -> "newType can't be non null"); if (isNonNullType()) { - return newExecutionStepInfo(this).type(GraphQLNonNull.nonNull(newType)).build(); + return transform(GraphQLNonNull.nonNull(newType)); } else { - return newExecutionStepInfo(this).type(newType).build(); + return transform(newType); } } - /** * @return the type in graphql SDL format, eg [typeName!]! */ @@ -227,6 +235,16 @@ public String toString() { '}'; } + @Internal + ExecutionStepInfo transform(GraphQLOutputType type) { + return new ExecutionStepInfo(type, path, parent, field, fieldDefinition, fieldContainer, arguments); + } + + @Internal + ExecutionStepInfo transform(GraphQLOutputType type, ExecutionStepInfo parent, ResultPath path) { + return new ExecutionStepInfo(type, path, parent, field, fieldDefinition, fieldContainer, arguments); + } + public ExecutionStepInfo transform(Consumer builderConsumer) { Builder builder = new Builder(this); builderConsumer.accept(builder); diff --git a/src/main/java/graphql/execution/ExecutionStepInfoFactory.java b/src/main/java/graphql/execution/ExecutionStepInfoFactory.java index 1a9f91aa46..ec2716aec3 100644 --- a/src/main/java/graphql/execution/ExecutionStepInfoFactory.java +++ b/src/main/java/graphql/execution/ExecutionStepInfoFactory.java @@ -1,19 +1,92 @@ package graphql.execution; import graphql.Internal; +import graphql.collect.ImmutableMapWithNullValues; +import graphql.language.Argument; +import graphql.schema.GraphQLArgument; +import graphql.schema.GraphQLCodeRegistry; +import graphql.schema.GraphQLFieldDefinition; import graphql.schema.GraphQLList; +import graphql.schema.GraphQLObjectType; import graphql.schema.GraphQLOutputType; +import graphql.util.FpKit; +import org.jspecify.annotations.NonNull; +import org.jspecify.annotations.NullMarked; +import org.jspecify.annotations.Nullable; + +import java.util.List; +import java.util.Map; +import java.util.function.Supplier; + +import static graphql.execution.ExecutionStepInfo.newExecutionStepInfo; @Internal +@NullMarked public class ExecutionStepInfoFactory { public ExecutionStepInfo newExecutionStepInfoForListElement(ExecutionStepInfo executionInfo, ResultPath indexedPath) { GraphQLList fieldType = (GraphQLList) executionInfo.getUnwrappedNonNullType(); GraphQLOutputType typeInList = (GraphQLOutputType) fieldType.getWrappedType(); - return executionInfo.transform(builder -> builder - .parentInfo(executionInfo) - .type(typeInList) - .path(indexedPath)); + return executionInfo.transform(typeInList, executionInfo, indexedPath); + } + + /** + * Builds the type info hierarchy for the current field + * + * @param executionContext the execution context in play + * @param parameters contains the parameters holding the fields to be executed and source object + * @param fieldDefinition the field definition to build type info for + * @param fieldContainer the field container + * + * @return a new type info + */ + public ExecutionStepInfo createExecutionStepInfo(ExecutionContext executionContext, + ExecutionStrategyParameters parameters, + GraphQLFieldDefinition fieldDefinition, + @Nullable GraphQLObjectType fieldContainer) { + MergedField field = parameters.getField(); + ExecutionStepInfo parentStepInfo = parameters.getExecutionStepInfo(); + GraphQLOutputType fieldType = fieldDefinition.getType(); + List fieldArgDefs = fieldDefinition.getArguments(); + Supplier> argumentValues = ImmutableMapWithNullValues::emptyMap; + // + // no need to create args at all if there are none on the field def + // + if (!fieldArgDefs.isEmpty()) { + argumentValues = getArgumentValues(executionContext, fieldArgDefs, field.getArguments()); + } + + + return newExecutionStepInfo() + .type(fieldType) + .fieldDefinition(fieldDefinition) + .fieldContainer(fieldContainer) + .field(field) + .path(parameters.getPath()) + .parentInfo(parentStepInfo) + .arguments(argumentValues) + .build(); } + @NonNull + private static Supplier> getArgumentValues(ExecutionContext executionContext, + List fieldArgDefs, + List fieldArgs) { + Supplier> argumentValues; + GraphQLCodeRegistry codeRegistry = executionContext.getGraphQLSchema().getCodeRegistry(); + Supplier> argValuesSupplier = () -> { + Map resolvedValues = ValuesResolver.getArgumentValues(codeRegistry, + fieldArgDefs, + fieldArgs, + executionContext.getCoercedVariables(), + executionContext.getGraphQLContext(), + executionContext.getLocale()); + + return ImmutableMapWithNullValues.copyOf(resolvedValues); + }; + argumentValues = FpKit.intraThreadMemoize(argValuesSupplier); + return argumentValues; + } + + } diff --git a/src/main/java/graphql/execution/ExecutionStrategy.java b/src/main/java/graphql/execution/ExecutionStrategy.java index 5e749360a5..bc71d5b625 100644 --- a/src/main/java/graphql/execution/ExecutionStrategy.java +++ b/src/main/java/graphql/execution/ExecutionStrategy.java @@ -2,6 +2,8 @@ import com.google.common.collect.ImmutableList; import com.google.common.collect.Maps; +import graphql.DuckTyped; +import graphql.EngineRunningState; import graphql.ExecutionResult; import graphql.ExecutionResultImpl; import graphql.ExperimentalApi; @@ -12,20 +14,20 @@ import graphql.TrivialDataFetcher; import graphql.TypeMismatchError; import graphql.UnresolvedTypeError; -import graphql.collect.ImmutableMapWithNullValues; import graphql.execution.directives.QueryDirectives; import graphql.execution.directives.QueryDirectivesImpl; import graphql.execution.incremental.DeferredExecutionSupport; import graphql.execution.instrumentation.ExecuteObjectInstrumentationContext; +import graphql.execution.instrumentation.FieldFetchingInstrumentationContext; import graphql.execution.instrumentation.Instrumentation; import graphql.execution.instrumentation.InstrumentationContext; import graphql.execution.instrumentation.parameters.InstrumentationExecutionStrategyParameters; import graphql.execution.instrumentation.parameters.InstrumentationFieldCompleteParameters; import graphql.execution.instrumentation.parameters.InstrumentationFieldFetchParameters; import graphql.execution.instrumentation.parameters.InstrumentationFieldParameters; +import graphql.execution.reactive.ReactiveSupport; import graphql.extensions.ExtensionsBuilder; import graphql.introspection.Introspection; -import graphql.language.Argument; import graphql.language.Field; import graphql.normalized.ExecutableNormalizedField; import graphql.normalized.ExecutableNormalizedOperation; @@ -34,18 +36,16 @@ import graphql.schema.DataFetchingEnvironment; import graphql.schema.DataFetchingFieldSelectionSet; import graphql.schema.DataFetchingFieldSelectionSetImpl; -import graphql.schema.GraphQLArgument; import graphql.schema.GraphQLCodeRegistry; import graphql.schema.GraphQLEnumType; import graphql.schema.GraphQLFieldDefinition; import graphql.schema.GraphQLObjectType; -import graphql.schema.GraphQLOutputType; import graphql.schema.GraphQLScalarType; import graphql.schema.GraphQLSchema; import graphql.schema.GraphQLType; import graphql.schema.LightDataFetcher; import graphql.util.FpKit; -import org.jetbrains.annotations.NotNull; +import org.jspecify.annotations.NonNull; import java.util.ArrayList; import java.util.Collections; @@ -60,7 +60,6 @@ import java.util.function.Supplier; import static graphql.execution.Async.exceptionallyCompletedFuture; -import static graphql.execution.ExecutionStepInfo.newExecutionStepInfo; import static graphql.execution.FieldCollectorParameters.newParameters; import static graphql.execution.FieldValueInfo.CompleteValueType.ENUM; import static graphql.execution.FieldValueInfo.CompleteValueType.LIST; @@ -196,8 +195,8 @@ public static String mkNameForPath(List currentField) { * @throws NonNullableFieldWasNullException in the {@link CompletableFuture} if a non-null field resolved to a null value */ @SuppressWarnings("unchecked") - protected Object /* CompletableFuture> | Map */ - executeObject(ExecutionContext executionContext, ExecutionStrategyParameters parameters) throws NonNullableFieldWasNullException { + @DuckTyped(shape = "CompletableFuture> | Map") + protected Object executeObject(ExecutionContext executionContext, ExecutionStrategyParameters parameters) throws NonNullableFieldWasNullException { DataLoaderDispatchStrategy dataLoaderDispatcherStrategy = executionContext.getDataLoaderDispatcherStrategy(); dataLoaderDispatcherStrategy.executeObject(executionContext, parameters); Instrumentation instrumentation = executionContext.getInstrumentation(); @@ -263,8 +262,7 @@ public static String mkNameForPath(List currentField) { } } - @NotNull - private static Async.CombinedBuilder fieldValuesCombinedBuilder(List completeValueInfos) { + private static Async.@NonNull CombinedBuilder fieldValuesCombinedBuilder(List completeValueInfos) { Async.CombinedBuilder resultFutures = Async.ofExpectedSize(completeValueInfos.size()); for (FieldValueInfo completeValueInfo : completeValueInfos) { resultFutures.addObject(completeValueInfo.getFieldValueObject()); @@ -283,7 +281,7 @@ private BiConsumer, Throwable> buildFieldValueMap(List fiel }; } - @NotNull + @NonNull private static Map buildFieldValueMap(List fieldNames, List results) { Map resolvedValuesByField = Maps.newLinkedHashMapWithExpectedSize(fieldNames.size()); int ix = 0; @@ -297,9 +295,7 @@ private static Map buildFieldValueMap(List fieldNames, L DeferredExecutionSupport createDeferredExecutionSupport(ExecutionContext executionContext, ExecutionStrategyParameters parameters) { MergedSelectionSet fields = parameters.getFields(); - return Optional.ofNullable(executionContext.getGraphQLContext()) - .map(graphqlContext -> (Boolean) graphqlContext.get(ExperimentalApi.ENABLE_INCREMENTAL_SUPPORT)) - .orElse(false) ? + return executionContext.hasIncrementalSupport() ? new DeferredExecutionSupport.DeferredExecutionSupportImpl( fields, parameters, @@ -309,15 +305,14 @@ DeferredExecutionSupport createDeferredExecutionSupport(ExecutionContext executi } - @NotNull - Async.CombinedBuilder getAsyncFieldValueInfo( + Async.@NonNull CombinedBuilder getAsyncFieldValueInfo( ExecutionContext executionContext, ExecutionStrategyParameters parameters, DeferredExecutionSupport deferredExecutionSupport ) { MergedSelectionSet fields = parameters.getFields(); - executionContext.getIncrementalCallState().enqueue(deferredExecutionSupport.createCalls()); + executionContext.getIncrementalCallState().enqueue(deferredExecutionSupport.createCalls(parameters)); // Only non-deferred fields should be considered for calculating the expected size of futures. Async.CombinedBuilder futures = Async @@ -327,8 +322,7 @@ Async.CombinedBuilder getAsyncFieldValueInfo( MergedField currentField = fields.getSubField(fieldName); ResultPath fieldPath = parameters.getPath().segment(mkNameForPath(currentField)); - ExecutionStrategyParameters newParameters = parameters - .transform(builder -> builder.field(currentField).path(fieldPath).parent(parameters)); + ExecutionStrategyParameters newParameters = parameters.transform(currentField, fieldPath, parameters); if (!deferredExecutionSupport.isDeferredField(currentField)) { Object fieldValueInfo = resolveFieldWithInfo(executionContext, newParameters); @@ -338,33 +332,6 @@ Async.CombinedBuilder getAsyncFieldValueInfo( return futures; } - /** - * Called to fetch a value for a field and resolve it further in terms of the graphql query. This will call - * #fetchField followed by #completeField and the completed Object is returned. - *

- * An execution strategy can iterate the fields to be executed and call this method for each one - *

- * Graphql fragments mean that for any give logical field can have one or more {@link Field} values associated with it - * in the query, hence the fieldList. However, the first entry is representative of the field for most purposes. - * - * @param executionContext contains the top level execution parameters - * @param parameters contains the parameters holding the fields to be executed and source object - * - * @return a {@link CompletableFuture} promise to an {@link Object} or the materialized {@link Object} - * - * @throws NonNullableFieldWasNullException in the future if a non-null field resolved to a null value - */ - @SuppressWarnings("unchecked") - protected Object /* CompletableFuture | Object */ - resolveField(ExecutionContext executionContext, ExecutionStrategyParameters parameters) { - Object fieldWithInfo = resolveFieldWithInfo(executionContext, parameters); - if (fieldWithInfo instanceof CompletableFuture) { - return ((CompletableFuture) fieldWithInfo).thenCompose(FieldValueInfo::getFieldValueFuture); - } else { - return ((FieldValueInfo) fieldWithInfo).getFieldValueObject(); - } - } - /** * Called to fetch a value for a field and its extra runtime info and resolve it further in terms of the graphql query. This will call * #fetchField followed by #completeField and the completed {@link graphql.execution.FieldValueInfo} is returned. @@ -383,8 +350,8 @@ Async.CombinedBuilder getAsyncFieldValueInfo( * if a nonnull field resolves to a null value */ @SuppressWarnings("unchecked") - protected Object /* CompletableFuture | FieldValueInfo */ - resolveFieldWithInfo(ExecutionContext executionContext, ExecutionStrategyParameters parameters) { + @DuckTyped(shape = "CompletableFuture | FieldValueInfo") + protected Object resolveFieldWithInfo(ExecutionContext executionContext, ExecutionStrategyParameters parameters) { GraphQLFieldDefinition fieldDef = getFieldDef(executionContext, parameters, parameters.getField().getSingleField()); Supplier executionStepInfo = FpKit.intraThreadMemoize(() -> createExecutionStepInfo(executionContext, parameters, fieldDef, null)); @@ -429,16 +396,16 @@ Async.CombinedBuilder getAsyncFieldValueInfo( * * @throws NonNullableFieldWasNullException in the future if a non null field resolves to a null value */ - protected Object /*CompletableFuture | FetchedValue>*/ - fetchField(ExecutionContext executionContext, ExecutionStrategyParameters parameters) { + @DuckTyped(shape = "CompletableFuture | FetchedValue") + protected Object fetchField(ExecutionContext executionContext, ExecutionStrategyParameters parameters) { MergedField field = parameters.getField(); GraphQLObjectType parentType = (GraphQLObjectType) parameters.getExecutionStepInfo().getUnwrappedNonNullType(); GraphQLFieldDefinition fieldDef = getFieldDef(executionContext.getGraphQLSchema(), parentType, field.getSingleField()); return fetchField(fieldDef, executionContext, parameters); } - private Object /*CompletableFuture | FetchedValue>*/ - fetchField(GraphQLFieldDefinition fieldDef, ExecutionContext executionContext, ExecutionStrategyParameters parameters) { + @DuckTyped(shape = "CompletableFuture | FetchedValue") + private Object fetchField(GraphQLFieldDefinition fieldDef, ExecutionContext executionContext, ExecutionStrategyParameters parameters) { if (incrementAndCheckMaxNodesExceeded(executionContext)) { return new FetchedValue(null, Collections.emptyList(), null); @@ -462,7 +429,8 @@ Async.CombinedBuilder getAsyncFieldValueInfo( DataFetchingFieldSelectionSet fieldCollector = DataFetchingFieldSelectionSetImpl.newCollector(executionContext.getGraphQLSchema(), fieldDef.getType(), normalizedFieldSupplier); QueryDirectives queryDirectives = new QueryDirectivesImpl(field, executionContext.getGraphQLSchema(), - executionContext.getCoercedVariables().toMap(), + executionContext.getCoercedVariables(), + executionContext.getNormalizedVariables(), executionContext.getGraphQLContext(), executionContext.getLocale()); @@ -487,7 +455,7 @@ Async.CombinedBuilder getAsyncFieldValueInfo( Instrumentation instrumentation = executionContext.getInstrumentation(); InstrumentationFieldFetchParameters instrumentationFieldFetchParams = new InstrumentationFieldFetchParameters(executionContext, dataFetchingEnvironment, parameters, dataFetcher instanceof TrivialDataFetcher); - InstrumentationContext fetchCtx = nonNullCtx(instrumentation.beginFieldFetch(instrumentationFieldFetchParams, + FieldFetchingInstrumentationContext fetchCtx = FieldFetchingInstrumentationContext.nonNullCtx(instrumentation.beginFieldFetching(instrumentationFieldFetchParams, executionContext.getInstrumentationState()) ); @@ -496,21 +464,32 @@ Async.CombinedBuilder getAsyncFieldValueInfo( Object fetchedObject = invokeDataFetcher(executionContext, parameters, fieldDef, dataFetchingEnvironment, dataFetcher); executionContext.getDataLoaderDispatcherStrategy().fieldFetched(executionContext, parameters, dataFetcher, fetchedObject); fetchCtx.onDispatched(); + fetchCtx.onFetchedValue(fetchedObject); + // if it's a subscription, leave any reactive objects alone + if (!executionContext.isSubscriptionOperation()) { + // possible convert reactive objects into CompletableFutures + fetchedObject = ReactiveSupport.fetchedObject(fetchedObject); + } if (fetchedObject instanceof CompletableFuture) { @SuppressWarnings("unchecked") CompletableFuture fetchedValue = (CompletableFuture) fetchedObject; - return fetchedValue - .handle((result, exception) -> { - fetchCtx.onCompleted(result, exception); - if (exception != null) { - return handleFetchingException(dataFetchingEnvironment.get(), parameters, exception); - } else { - // we can simply return the fetched value CF and avoid a allocation - return fetchedValue; - } - }) - .thenCompose(Function.identity()) + EngineRunningState engineRunningState = executionContext.getEngineRunningState(); + + CompletableFuture> handleCF = engineRunningState.handle(fetchedValue, (result, exception) -> { + // because we added an artificial CF, we need to unwrap the exception + fetchCtx.onCompleted(result, exception); + if (exception != null) { + CompletableFuture handleFetchingExceptionResult = handleFetchingException(dataFetchingEnvironment.get(), parameters, exception); + return handleFetchingExceptionResult; + } else { + // we can simply return the fetched value CF and avoid a allocation + return fetchedValue; + } + }); + CompletableFuture rawResultCF = engineRunningState.compose(handleCF, Function.identity()); + CompletableFuture fetchedValueCF = rawResultCF .thenApply(result -> unboxPossibleDataFetcherResult(executionContext, parameters, result)); + return fetchedValueCF; } else { fetchCtx.onCompleted(fetchedObject, null); return unboxPossibleDataFetcherResult(executionContext, parameters, fetchedObject); @@ -545,10 +524,11 @@ protected Supplier getNormalizedField(ExecutionContex protected FetchedValue unboxPossibleDataFetcherResult(ExecutionContext executionContext, ExecutionStrategyParameters parameters, Object result) { - if (result instanceof DataFetcherResult) { DataFetcherResult dataFetcherResult = (DataFetcherResult) result; - executionContext.addErrors(dataFetcherResult.getErrors()); + + addErrorsToRightContext(dataFetcherResult.getErrors(), parameters, executionContext); + addExtensionsIfPresent(executionContext, dataFetcherResult); Object localContext = dataFetcherResult.getLocalContext(); @@ -584,12 +564,6 @@ protected CompletableFuture handleFetchingException( .exception(e) .build(); - parameters.getDeferredCallContext().onFetchingException( - parameters.getPath(), - parameters.getField().getSingleField().getSourceLocation(), - e - ); - try { return asyncHandleException(dataFetcherExceptionHandler, handlerParameters); } catch (Exception handlerException) { @@ -643,20 +617,18 @@ private FieldValueInfo completeField(GraphQLFieldDefinition fieldDef, ExecutionC instrumentationParams, executionContext.getInstrumentationState() )); - NonNullableFieldValidator nonNullableFieldValidator = new NonNullableFieldValidator(executionContext, executionStepInfo); - - ExecutionStrategyParameters newParameters = parameters.transform(builder -> - builder.executionStepInfo(executionStepInfo) - .source(fetchedValue.getFetchedValue()) - .localContext(fetchedValue.getLocalContext()) - .nonNullFieldValidator(nonNullableFieldValidator) - ); + ExecutionStrategyParameters newParameters = parameters.transform(executionStepInfo, + fetchedValue.getLocalContext(), + fetchedValue.getFetchedValue()); FieldValueInfo fieldValueInfo = completeValue(executionContext, newParameters); - - CompletableFuture executionResultFuture = fieldValueInfo.getFieldValueFuture(); ctxCompleteField.onDispatched(); - executionResultFuture.whenComplete(ctxCompleteField::onCompleted); + if (fieldValueInfo.isFutureValue()) { + CompletableFuture executionResultFuture = fieldValueInfo.getFieldValueFuture(); + executionResultFuture.whenComplete(ctxCompleteField::onCompleted); + } else { + ctxCompleteField.onCompleted(fieldValueInfo.getFieldValueObject(), null); + } return fieldValueInfo; } @@ -712,9 +684,8 @@ protected FieldValueInfo completeValue(ExecutionContext executionContext, Execut private void handleUnresolvedTypeProblem(ExecutionContext context, ExecutionStrategyParameters parameters, UnresolvedTypeException e) { UnresolvedTypeError error = new UnresolvedTypeError(parameters.getPath(), parameters.getExecutionStepInfo(), e); - context.addError(error); - parameters.getDeferredCallContext().onError(error); + addErrorToRightContext(error, parameters, context); } /** @@ -740,10 +711,10 @@ private FieldValueInfo getFieldValueInfoForNull(ExecutionStrategyParameters para * * @throws NonNullableFieldWasNullException inside the {@link CompletableFuture} if a non-null field resolves to a null value */ - protected Object /* CompletableFuture | Object */ - completeValueForNull(ExecutionStrategyParameters parameters) { + @DuckTyped(shape = "CompletableFuture | Object") + protected Object completeValueForNull(ExecutionStrategyParameters parameters) { try { - return parameters.getNonNullFieldValidator().validate(parameters.getPath(), null); + return parameters.getNonNullFieldValidator().validate(parameters, null); } catch (Exception e) { return Async.exceptionallyCompletedFuture(e); } @@ -762,7 +733,7 @@ private FieldValueInfo getFieldValueInfoForNull(ExecutionStrategyParameters para protected FieldValueInfo completeValueForList(ExecutionContext executionContext, ExecutionStrategyParameters parameters, Object result) { Iterable resultIterable = toIterable(executionContext, parameters, result); try { - resultIterable = parameters.getNonNullFieldValidator().validate(parameters.getPath(), resultIterable); + resultIterable = parameters.getNonNullFieldValidator().validate(parameters, resultIterable); } catch (NonNullableFieldWasNullException e) { return new FieldValueInfo(LIST, exceptionallyCompletedFuture(e)); } @@ -805,17 +776,13 @@ protected FieldValueInfo completeValueForList(ExecutionContext executionContext, ExecutionStepInfo stepInfoForListElement = executionStepInfoFactory.newExecutionStepInfoForListElement(executionStepInfo, indexedPath); - NonNullableFieldValidator nonNullableFieldValidator = new NonNullableFieldValidator(executionContext, stepInfoForListElement); - FetchedValue value = unboxPossibleDataFetcherResult(executionContext, parameters, item); - ExecutionStrategyParameters newParameters = parameters.transform(builder -> - builder.executionStepInfo(stepInfoForListElement) - .nonNullFieldValidator(nonNullableFieldValidator) - .localContext(value.getLocalContext()) - .path(indexedPath) - .source(value.getFetchedValue()) - ); + ExecutionStrategyParameters newParameters = parameters.transform(stepInfoForListElement, + indexedPath, + value.getLocalContext(), + value.getFetchedValue()); + fieldValueInfos.add(completeValue(executionContext, newParameters)); index++; } @@ -879,8 +846,8 @@ protected void handleValueException(CompletableFuture overallResult, Thro * * @return a materialized scalar value or exceptionally completed {@link CompletableFuture} if there is a problem */ - protected Object /* CompletableFuture | Object */ - completeValueForScalar(ExecutionContext executionContext, ExecutionStrategyParameters parameters, GraphQLScalarType scalarType, Object result) { + @DuckTyped(shape = "CompletableFuture | Object") + protected Object completeValueForScalar(ExecutionContext executionContext, ExecutionStrategyParameters parameters, GraphQLScalarType scalarType, Object result) { Object serialized; try { serialized = scalarType.getCoercing().serialize(result, executionContext.getGraphQLContext(), executionContext.getLocale()); @@ -889,7 +856,7 @@ protected void handleValueException(CompletableFuture overallResult, Thro } try { - serialized = parameters.getNonNullFieldValidator().validate(parameters.getPath(), serialized); + serialized = parameters.getNonNullFieldValidator().validate(parameters, serialized); } catch (NonNullableFieldWasNullException e) { return exceptionallyCompletedFuture(e); } @@ -906,8 +873,8 @@ protected void handleValueException(CompletableFuture overallResult, Thro * * @return a materialized enum value or exceptionally completed {@link CompletableFuture} if there is a problem */ - protected Object /* CompletableFuture | Object */ - completeValueForEnum(ExecutionContext executionContext, ExecutionStrategyParameters parameters, GraphQLEnumType enumType, Object result) { + @DuckTyped(shape = "CompletableFuture | Object") + protected Object completeValueForEnum(ExecutionContext executionContext, ExecutionStrategyParameters parameters, GraphQLEnumType enumType, Object result) { Object serialized; try { serialized = enumType.serialize(result, executionContext.getGraphQLContext(), executionContext.getLocale()); @@ -915,7 +882,7 @@ protected void handleValueException(CompletableFuture overallResult, Thro serialized = handleCoercionProblem(executionContext, parameters, e); } try { - serialized = parameters.getNonNullFieldValidator().validate(parameters.getPath(), serialized); + serialized = parameters.getNonNullFieldValidator().validate(parameters, serialized); } catch (NonNullableFieldWasNullException e) { return exceptionallyCompletedFuture(e); } @@ -932,8 +899,8 @@ protected void handleValueException(CompletableFuture overallResult, Thro * * @return a {@link CompletableFuture} promise to a map of object field values or a materialized map of object field values */ - protected Object /* CompletableFuture> | Map */ - completeValueForObject(ExecutionContext executionContext, ExecutionStrategyParameters parameters, GraphQLObjectType resolvedObjectType, Object result) { + @DuckTyped(shape = "CompletableFuture> | Map") + protected Object completeValueForObject(ExecutionContext executionContext, ExecutionStrategyParameters parameters, GraphQLObjectType resolvedObjectType, Object result) { ExecutionStepInfo executionStepInfo = parameters.getExecutionStepInfo(); FieldCollectorParameters collectorParameters = newParameters() @@ -947,20 +914,14 @@ protected void handleValueException(CompletableFuture overallResult, Thro MergedSelectionSet subFields = fieldCollector.collectFields( collectorParameters, parameters.getField(), - Optional.ofNullable(executionContext.getGraphQLContext()) - .map(graphqlContext -> (Boolean) graphqlContext.get(ExperimentalApi.ENABLE_INCREMENTAL_SUPPORT)) - .orElse(false) + executionContext.hasIncrementalSupport() ); ExecutionStepInfo newExecutionStepInfo = executionStepInfo.changeTypeWithPreservedNonNull(resolvedObjectType); - NonNullableFieldValidator nonNullableFieldValidator = new NonNullableFieldValidator(executionContext, newExecutionStepInfo); - ExecutionStrategyParameters newParameters = parameters.transform(builder -> - builder.executionStepInfo(newExecutionStepInfo) - .fields(subFields) - .nonNullFieldValidator(nonNullableFieldValidator) - .source(result) - ); + ExecutionStrategyParameters newParameters = parameters.transform(newExecutionStepInfo, + subFields, + result); // Calling this from the executionContext to ensure we shift back from mutation strategy to the query strategy. return executionContext.getQueryStrategy().executeObject(executionContext, newParameters); @@ -969,9 +930,8 @@ protected void handleValueException(CompletableFuture overallResult, Thro @SuppressWarnings("SameReturnValue") private Object handleCoercionProblem(ExecutionContext context, ExecutionStrategyParameters parameters, CoercingSerializeException e) { SerializationError error = new SerializationError(parameters.getPath(), e); - context.addError(error); - parameters.getDeferredCallContext().onError(error); + addErrorToRightContext(error, parameters, context); return null; } @@ -995,9 +955,8 @@ protected Iterable toIterable(ExecutionContext context, ExecutionStrateg private void handleTypeMismatchProblem(ExecutionContext context, ExecutionStrategyParameters parameters) { TypeMismatchError error = new TypeMismatchError(parameters.getPath(), parameters.getExecutionStepInfo().getUnwrappedNonNullType()); - context.addError(error); - parameters.getDeferredCallContext().onError(error); + addErrorToRightContext(error, parameters, context); } /** @@ -1112,48 +1071,26 @@ protected ExecutionStepInfo createExecutionStepInfo(ExecutionContext executionCo ExecutionStrategyParameters parameters, GraphQLFieldDefinition fieldDefinition, GraphQLObjectType fieldContainer) { - MergedField field = parameters.getField(); - ExecutionStepInfo parentStepInfo = parameters.getExecutionStepInfo(); - GraphQLOutputType fieldType = fieldDefinition.getType(); - List fieldArgDefs = fieldDefinition.getArguments(); - Supplier> argumentValues = ImmutableMapWithNullValues::emptyMap; - // - // no need to create args at all if there are none on the field def - // - if (!fieldArgDefs.isEmpty()) { - argumentValues = getArgumentValues(executionContext, fieldArgDefs, field.getArguments()); - } - - - return newExecutionStepInfo() - .type(fieldType) - .fieldDefinition(fieldDefinition) - .fieldContainer(fieldContainer) - .field(field) - .path(parameters.getPath()) - .parentInfo(parentStepInfo) - .arguments(argumentValues) - .build(); + return executionStepInfoFactory.createExecutionStepInfo(executionContext, + parameters, + fieldDefinition, + fieldContainer); } - @NotNull - private static Supplier> getArgumentValues(ExecutionContext executionContext, - List fieldArgDefs, - List fieldArgs) { - Supplier> argumentValues; - GraphQLCodeRegistry codeRegistry = executionContext.getGraphQLSchema().getCodeRegistry(); - Supplier> argValuesSupplier = () -> { - Map resolvedValues = ValuesResolver.getArgumentValues(codeRegistry, - fieldArgDefs, - fieldArgs, - executionContext.getCoercedVariables(), - executionContext.getGraphQLContext(), - executionContext.getLocale()); - - return ImmutableMapWithNullValues.copyOf(resolvedValues); - }; - argumentValues = FpKit.intraThreadMemoize(argValuesSupplier); - return argumentValues; + // Errors that result from the execution of deferred fields are kept in the deferred context only. + private static void addErrorToRightContext(GraphQLError error, ExecutionStrategyParameters parameters, ExecutionContext executionContext) { + if (parameters.getDeferredCallContext() != null) { + parameters.getDeferredCallContext().addError(error); + } else { + executionContext.addError(error); + } } + private static void addErrorsToRightContext(List errors, ExecutionStrategyParameters parameters, ExecutionContext executionContext) { + if (parameters.getDeferredCallContext() != null) { + parameters.getDeferredCallContext().addErrors(errors); + } else { + executionContext.addErrors(errors); + } + } } diff --git a/src/main/java/graphql/execution/ExecutionStrategyParameters.java b/src/main/java/graphql/execution/ExecutionStrategyParameters.java index e1df7bb363..58eb3d1767 100644 --- a/src/main/java/graphql/execution/ExecutionStrategyParameters.java +++ b/src/main/java/graphql/execution/ExecutionStrategyParameters.java @@ -1,7 +1,9 @@ package graphql.execution; +import graphql.Internal; import graphql.PublicApi; import graphql.execution.incremental.DeferredCallContext; +import org.jspecify.annotations.Nullable; import java.util.function.Consumer; @@ -36,7 +38,7 @@ private ExecutionStrategyParameters(ExecutionStepInfo executionStepInfo, this.localContext = localContext; this.fields = assertNotNull(fields, () -> "fields is null"); this.source = source; - this.nonNullableFieldValidator = nonNullableFieldValidator; + this.nonNullableFieldValidator = assertNotNull(nonNullableFieldValidator, () -> "requires a NonNullValidator");; this.path = path; this.currentField = currentField; this.parent = parent; @@ -71,10 +73,40 @@ public ExecutionStrategyParameters getParent() { return parent; } + /** + * Returns the deferred call context if we're in the scope of a deferred call. + * A new DeferredCallContext is created for each @defer block, and is passed down to all fields within the deferred call. + * + *
+     *     query {
+     *        ... @defer {
+     *            field1 {        # new DeferredCallContext created here
+     *                field1a     # DeferredCallContext passed down to this field
+     *            }
+     *        }
+     *
+     *        ... @defer {
+     *            field2          # new DeferredCallContext created here
+     *        }
+     *     }
+     * 
+ * + * @return the deferred call context or null if we're not in the scope of a deferred call + */ + @Nullable public DeferredCallContext getDeferredCallContext() { return deferredCallContext; } + /** + * Returns true if we're in the scope of a deferred call. + * + * @return true if we're in the scope of a deferred call + */ + public boolean isInDeferredContext() { + return deferredCallContext != null; + } + /** * This returns the current field in its query representations. * @@ -84,6 +116,81 @@ public MergedField getField() { return currentField; } + @Internal + ExecutionStrategyParameters transform(MergedField currentField, + ResultPath path) { + return new ExecutionStrategyParameters(executionStepInfo, + source, + localContext, + fields, + nonNullableFieldValidator, + path, + currentField, + parent, + deferredCallContext); + } + + @Internal + ExecutionStrategyParameters transform(ExecutionStepInfo executionStepInfo, + MergedSelectionSet fields, + Object source) { + return new ExecutionStrategyParameters(executionStepInfo, + source, + localContext, + fields, + nonNullableFieldValidator, + path, + currentField, + parent, + deferredCallContext); + } + + @Internal + ExecutionStrategyParameters transform(ExecutionStepInfo executionStepInfo, + ResultPath path, + Object localContext, + Object source) { + return new ExecutionStrategyParameters(executionStepInfo, + source, + localContext, + fields, + nonNullableFieldValidator, + path, + currentField, + parent, + deferredCallContext); + } + + @Internal + ExecutionStrategyParameters transform(ExecutionStepInfo executionStepInfo, + Object localContext, + Object source) { + return new ExecutionStrategyParameters(executionStepInfo, + source, + localContext, + fields, + nonNullableFieldValidator, + path, + currentField, + parent, + deferredCallContext); + } + + @Internal + ExecutionStrategyParameters transform(MergedField currentField, + ResultPath path, + ExecutionStrategyParameters parent) { + return new ExecutionStrategyParameters(executionStepInfo, + source, + localContext, + fields, + nonNullableFieldValidator, + path, + currentField, + parent, + deferredCallContext); + } + public ExecutionStrategyParameters transform(Consumer builderConsumer) { Builder builder = newParameters(this); builderConsumer.accept(builder); @@ -187,9 +294,6 @@ public Builder deferredCallContext(DeferredCallContext deferredCallContext) { } public ExecutionStrategyParameters build() { - if (deferredCallContext == null) { - deferredCallContext = new DeferredCallContext(); - } return new ExecutionStrategyParameters(executionStepInfo, source, localContext, fields, nonNullableFieldValidator, path, currentField, parent, deferredCallContext); } } diff --git a/src/main/java/graphql/execution/FetchedValue.java b/src/main/java/graphql/execution/FetchedValue.java index 0a643f8b71..8ebac38ced 100644 --- a/src/main/java/graphql/execution/FetchedValue.java +++ b/src/main/java/graphql/execution/FetchedValue.java @@ -17,7 +17,7 @@ public class FetchedValue { private final Object localContext; private final ImmutableList errors; - FetchedValue(Object fetchedValue, List errors, Object localContext) { + public FetchedValue(Object fetchedValue, List errors, Object localContext) { this.fetchedValue = fetchedValue; this.errors = ImmutableList.copyOf(errors); this.localContext = localContext; diff --git a/src/main/java/graphql/execution/FieldValueInfo.java b/src/main/java/graphql/execution/FieldValueInfo.java index 283cad42c6..6dfc2faab0 100644 --- a/src/main/java/graphql/execution/FieldValueInfo.java +++ b/src/main/java/graphql/execution/FieldValueInfo.java @@ -74,17 +74,6 @@ public CompletableFuture getFieldValueFuture() { return Async.toCompletableFuture(fieldValueObject); } - /** - * Kept for legacy reasons - this method is no longer sensible and is no longer used by the graphql-java engine - * and is kept only for backwards compatible API reasons. - * - * @return a promise to the {@link ExecutionResult} that wraps the field value. - */ - @Deprecated(since = "2023-09-11") - public CompletableFuture getFieldValue() { - return getFieldValueFuture().thenApply(fv -> ExecutionResultImpl.newExecutionResult().data(fv).build()); - } - /** * @return true if the value is a {@link CompletableFuture} promise to a value */ diff --git a/src/main/java/graphql/execution/MergedField.java b/src/main/java/graphql/execution/MergedField.java index e66afb63f8..64eb43361c 100644 --- a/src/main/java/graphql/execution/MergedField.java +++ b/src/main/java/graphql/execution/MergedField.java @@ -6,8 +6,8 @@ import graphql.execution.incremental.DeferredExecution; import graphql.language.Argument; import graphql.language.Field; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.util.List; import java.util.Objects; import java.util.function.Consumer; @@ -139,6 +139,16 @@ public List getDeferredExecutions() { return deferredExecutions; } + /** + * Returns true if this field is part of a deferred execution + * + * @return true if this field is part of a deferred execution + */ + @ExperimentalApi + public boolean isDeferred() { + return !deferredExecutions.isEmpty(); + } + public static Builder newMergedField() { return new Builder(); } diff --git a/src/main/java/graphql/execution/NonNullableFieldValidator.java b/src/main/java/graphql/execution/NonNullableFieldValidator.java index af26b69008..b59f633bac 100644 --- a/src/main/java/graphql/execution/NonNullableFieldValidator.java +++ b/src/main/java/graphql/execution/NonNullableFieldValidator.java @@ -1,6 +1,7 @@ package graphql.execution; +import graphql.GraphQLError; import graphql.Internal; /** @@ -13,17 +14,15 @@ public class NonNullableFieldValidator { private final ExecutionContext executionContext; - private final ExecutionStepInfo executionStepInfo; - public NonNullableFieldValidator(ExecutionContext executionContext, ExecutionStepInfo executionStepInfo) { + public NonNullableFieldValidator(ExecutionContext executionContext) { this.executionContext = executionContext; - this.executionStepInfo = executionStepInfo; } /** - * Called to check that a value is non null if the type requires it to be non null + * Called to check that a value is non-null if the type requires it to be non null * - * @param path the path to this place + * @param parameters the execution strategy parameters * @param result the result to check * @param the type of the result * @@ -31,8 +30,9 @@ public NonNullableFieldValidator(ExecutionContext executionContext, ExecutionSte * * @throws NonNullableFieldWasNullException if the value is null but the type requires it to be non null */ - public T validate(ResultPath path, T result) throws NonNullableFieldWasNullException { + public T validate(ExecutionStrategyParameters parameters, T result) throws NonNullableFieldWasNullException { if (result == null) { + ExecutionStepInfo executionStepInfo = parameters.getExecutionStepInfo(); if (executionStepInfo.isNonNullType()) { // see https://spec.graphql.org/October2021/#sec-Errors-and-Non-Nullability // @@ -46,9 +46,18 @@ public T validate(ResultPath path, T result) throws NonNullableFieldWasNullE // // We will do this until the spec makes this more explicit. // + final ResultPath path = parameters.getPath(); + NonNullableFieldWasNullException nonNullException = new NonNullableFieldWasNullException(executionStepInfo, path); - executionContext.addError(new NonNullableFieldWasNullError(nonNullException), path); - throw nonNullException; + final GraphQLError error = new NonNullableFieldWasNullError(nonNullException); + if(parameters.getDeferredCallContext() != null) { + parameters.getDeferredCallContext().addError(error); + } else { + executionContext.addError(error, path); + } + if (executionContext.propagateErrorsOnNonNullContractFailure()) { + throw nonNullException; + } } } return result; diff --git a/src/main/java/graphql/execution/NormalizedVariables.java b/src/main/java/graphql/execution/NormalizedVariables.java new file mode 100644 index 0000000000..ef16fec3cf --- /dev/null +++ b/src/main/java/graphql/execution/NormalizedVariables.java @@ -0,0 +1,45 @@ +package graphql.execution; + +import graphql.PublicApi; +import graphql.collect.ImmutableKit; +import graphql.collect.ImmutableMapWithNullValues; +import graphql.normalized.NormalizedInputValue; + +import java.util.Map; + +/** + * Holds coerced variables, that is their values are now in a normalized {@link graphql.normalized.NormalizedInputValue} form. + */ +@PublicApi +public class NormalizedVariables { + private final ImmutableMapWithNullValues normalisedVariables; + + public NormalizedVariables(Map normalisedVariables) { + this.normalisedVariables = ImmutableMapWithNullValues.copyOf(normalisedVariables); + } + + public Map toMap() { + return normalisedVariables; + } + + public boolean containsKey(String key) { + return normalisedVariables.containsKey(key); + } + + public Object get(String key) { + return normalisedVariables.get(key); + } + + public static NormalizedVariables emptyVariables() { + return new NormalizedVariables(ImmutableKit.emptyMap()); + } + + public static NormalizedVariables of(Map normalisedVariables) { + return new NormalizedVariables(normalisedVariables); + } + + @Override + public String toString() { + return normalisedVariables.toString(); + } +} diff --git a/src/main/java/graphql/execution/RawVariables.java b/src/main/java/graphql/execution/RawVariables.java index f8442fc5b9..d7c1fba61b 100644 --- a/src/main/java/graphql/execution/RawVariables.java +++ b/src/main/java/graphql/execution/RawVariables.java @@ -11,6 +11,7 @@ */ @PublicApi public class RawVariables { + private static final RawVariables EMPTY = RawVariables.of(ImmutableKit.emptyMap()); private final ImmutableMapWithNullValues rawVariables; public RawVariables(Map rawVariables) { @@ -30,10 +31,15 @@ public Object get(String key) { } public static RawVariables emptyVariables() { - return RawVariables.of(ImmutableKit.emptyMap()); + return EMPTY; } public static RawVariables of(Map rawVariables) { return new RawVariables(rawVariables); } + + @Override + public String toString() { + return rawVariables.toString(); + } } diff --git a/src/main/java/graphql/execution/ResultPath.java b/src/main/java/graphql/execution/ResultPath.java index 472b5fa529..c4441b332f 100644 --- a/src/main/java/graphql/execution/ResultPath.java +++ b/src/main/java/graphql/execution/ResultPath.java @@ -149,8 +149,10 @@ public static ResultPath fromList(List objects) { for (Object object : objects) { if (object instanceof String) { path = path.segment(((String) object)); - } else { + } else if (object instanceof Integer) { path = path.segment((int) object); + } else if (object != null) { + path = path.segment(object.toString()); } } return path; diff --git a/src/main/java/graphql/execution/SubscriptionExecutionStrategy.java b/src/main/java/graphql/execution/SubscriptionExecutionStrategy.java index 7a7cd5c952..365e3e3737 100644 --- a/src/main/java/graphql/execution/SubscriptionExecutionStrategy.java +++ b/src/main/java/graphql/execution/SubscriptionExecutionStrategy.java @@ -2,6 +2,7 @@ import graphql.ExecutionResult; import graphql.ExecutionResultImpl; +import graphql.GraphQLContext; import graphql.PublicApi; import graphql.execution.instrumentation.ExecutionStrategyInstrumentationContext; import graphql.execution.instrumentation.Instrumentation; @@ -37,6 +38,14 @@ @PublicApi public class SubscriptionExecutionStrategy extends ExecutionStrategy { + /** + * If a boolean value is placed into the {@link GraphQLContext} with this key then the order + * of the subscription events can be controlled. By default, subscription events are published + * as the graphql subselection calls complete, and not in the order they originally arrived from the + * source publisher. But this can be changed to {@link Boolean#TRUE} to keep them in order. + */ + public static final String KEEP_SUBSCRIPTION_EVENTS_ORDERED = "KEEP_SUBSCRIPTION_EVENTS_ORDERED"; + public SubscriptionExecutionStrategy() { super(); } @@ -47,7 +56,6 @@ public SubscriptionExecutionStrategy(DataFetcherExceptionHandler dataFetcherExce @Override public CompletableFuture execute(ExecutionContext executionContext, ExecutionStrategyParameters parameters) throws NonNullableFieldWasNullException { - Instrumentation instrumentation = executionContext.getInstrumentation(); InstrumentationExecutionStrategyParameters instrumentationParameters = new InstrumentationExecutionStrategyParameters(executionContext, parameters); ExecutionStrategyInstrumentationContext executionStrategyCtx = ExecutionStrategyInstrumentationContext.nonNullCtx(instrumentation.beginExecutionStrategy( @@ -59,22 +67,29 @@ public CompletableFuture execute(ExecutionContext executionCont // // when the upstream source event stream completes, subscribe to it and wire in our adapter - CompletableFuture overallResult = sourceEventStream.thenApply((publisher) -> { + CompletableFuture overallResult = sourceEventStream.thenApply((publisher) -> + { if (publisher == null) { - return new ExecutionResultImpl(null, executionContext.getErrors()); + ExecutionResultImpl executionResult = new ExecutionResultImpl(null, executionContext.getErrors()); + return executionResult; } Function> mapperFunction = eventPayload -> executeSubscriptionEvent(executionContext, parameters, eventPayload); - SubscriptionPublisher mapSourceToResponse = new SubscriptionPublisher(publisher, mapperFunction); - return new ExecutionResultImpl(mapSourceToResponse, executionContext.getErrors()); + boolean keepOrdered = keepOrdered(executionContext.getGraphQLContext()); + SubscriptionPublisher mapSourceToResponse = new SubscriptionPublisher(publisher, mapperFunction, keepOrdered); + ExecutionResultImpl executionResult = new ExecutionResultImpl(mapSourceToResponse, executionContext.getErrors()); + return executionResult; }); // dispatched the subscription query executionStrategyCtx.onDispatched(); overallResult.whenComplete(executionStrategyCtx::onCompleted); - return overallResult; } + private boolean keepOrdered(GraphQLContext graphQLContext) { + return graphQLContext.getOrDefault(KEEP_SUBSCRIPTION_EVENTS_ORDERED, false); + } + /* https://github.com/facebook/graphql/blob/master/spec/Section%206%20--%20Execution.md @@ -91,7 +106,7 @@ public CompletableFuture execute(ExecutionContext executionCont */ private CompletableFuture> createSourceEventStream(ExecutionContext executionContext, ExecutionStrategyParameters parameters) { - ExecutionStrategyParameters newParameters = firstFieldOfSubscriptionSelection(parameters); + ExecutionStrategyParameters newParameters = firstFieldOfSubscriptionSelection(executionContext,parameters); CompletableFuture fieldFetched = Async.toCompletableFuture(fetchField(executionContext, newParameters)); return fieldFetched.thenApply(fetchedValue -> { @@ -99,7 +114,7 @@ private CompletableFuture> createSourceEventStream(ExecutionCo if (publisher != null) { assertTrue(publisher instanceof Publisher, () -> "Your data fetcher must return a Publisher of events when using graphql subscriptions"); } - //noinspection unchecked + //noinspection unchecked,DataFlowIssue return (Publisher) publisher; }); } @@ -124,7 +139,7 @@ private CompletableFuture executeSubscriptionEvent(ExecutionCon .root(eventPayload) .resetErrors() ); - ExecutionStrategyParameters newParameters = firstFieldOfSubscriptionSelection(parameters); + ExecutionStrategyParameters newParameters = firstFieldOfSubscriptionSelection(newExecutionContext, parameters); ExecutionStepInfo subscribedFieldStepInfo = createSubscribedFieldStepInfo(executionContext, newParameters); InstrumentationFieldParameters i13nFieldParameters = new InstrumentationFieldParameters(executionContext, () -> subscribedFieldStepInfo); @@ -164,12 +179,14 @@ private String getRootFieldName(ExecutionStrategyParameters parameters) { return rootField.getResultKey(); } - private ExecutionStrategyParameters firstFieldOfSubscriptionSelection(ExecutionStrategyParameters parameters) { + private ExecutionStrategyParameters firstFieldOfSubscriptionSelection(ExecutionContext executionContext, ExecutionStrategyParameters parameters) { MergedSelectionSet fields = parameters.getFields(); MergedField firstField = fields.getSubField(fields.getKeys().get(0)); ResultPath fieldPath = parameters.getPath().segment(mkNameForPath(firstField.getSingleField())); - return parameters.transform(builder -> builder.field(firstField).path(fieldPath)); + NonNullableFieldValidator nonNullableFieldValidator = new NonNullableFieldValidator(executionContext); + return parameters.transform(builder -> builder + .field(firstField).path(fieldPath).nonNullFieldValidator(nonNullableFieldValidator)); } private ExecutionStepInfo createSubscribedFieldStepInfo(ExecutionContext executionContext, ExecutionStrategyParameters parameters) { diff --git a/src/main/java/graphql/execution/ValuesResolver.java b/src/main/java/graphql/execution/ValuesResolver.java index 94073cbe6d..11de33ea07 100644 --- a/src/main/java/graphql/execution/ValuesResolver.java +++ b/src/main/java/graphql/execution/ValuesResolver.java @@ -27,8 +27,8 @@ import graphql.schema.GraphQLType; import graphql.schema.InputValueWithState; import graphql.schema.visibility.GraphqlFieldVisibility; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; +import org.jspecify.annotations.NonNull; +import org.jspecify.annotations.Nullable; import java.util.ArrayList; import java.util.Collections; @@ -101,7 +101,7 @@ public static CoercedVariables coerceVariableValues(GraphQLSchema schema, * * @return a map of the normalised values */ - public static Map getNormalizedVariableValues( + public static NormalizedVariables getNormalizedVariableValues( GraphQLSchema schema, List variableDefinitions, RawVariables rawVariables, @@ -131,9 +131,7 @@ public static Map getNormalizedVariableValues( } } } - - return result; - + return NormalizedVariables.of(result); } @@ -198,7 +196,7 @@ public static Map getNormalizedArgumentValues( return result; } - @NotNull + @NonNull public static Map getArgumentValues( GraphQLCodeRegistry codeRegistry, List argumentTypes, @@ -225,9 +223,9 @@ public static Map getArgumentValues( * @return a value converted to a literal */ public static Value valueToLiteral( - @NotNull GraphqlFieldVisibility fieldVisibility, - @NotNull InputValueWithState inputValueWithState, - @NotNull GraphQLType type, + @NonNull GraphqlFieldVisibility fieldVisibility, + @NonNull InputValueWithState inputValueWithState, + @NonNull GraphQLType type, GraphQLContext graphqlContext, Locale locale ) { @@ -241,8 +239,8 @@ public static Value valueToLiteral( } public static Value valueToLiteral( - @NotNull InputValueWithState inputValueWithState, - @NotNull GraphQLType type, + @NonNull InputValueWithState inputValueWithState, + @NonNull GraphQLType type, GraphQLContext graphqlContext, Locale locale ) { @@ -318,7 +316,7 @@ public static T getInputValueImpl( } - @NotNull + @NonNull private static Map getArgumentValuesImpl( InputInterceptor inputInterceptor, GraphqlFieldVisibility fieldVisibility, diff --git a/src/main/java/graphql/execution/ValuesResolverConversion.java b/src/main/java/graphql/execution/ValuesResolverConversion.java index eff4d1cef1..29e2587ab8 100644 --- a/src/main/java/graphql/execution/ValuesResolverConversion.java +++ b/src/main/java/graphql/execution/ValuesResolverConversion.java @@ -26,8 +26,8 @@ import graphql.schema.visibility.DefaultGraphqlFieldVisibility; import graphql.schema.visibility.GraphqlFieldVisibility; import graphql.util.FpKit; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; +import org.jspecify.annotations.NonNull; +import org.jspecify.annotations.Nullable; import java.util.ArrayList; import java.util.Collections; @@ -220,7 +220,7 @@ private static Value externalValueToLiteralForScalar( GraphQLScalarType scalarType, Object value, GraphQLContext graphqlContext, - @NotNull Locale locale + @NonNull Locale locale ) { return scalarType.getCoercing().valueToLiteral(value, graphqlContext, locale); @@ -253,20 +253,23 @@ private static Object externalValueToLiteralForList( Locale locale ) { GraphQLInputType wrappedType = (GraphQLInputType) listType.getWrappedType(); - List result = FpKit.toListOrSingletonList(value) - .stream() - .map(val -> externalValueToLiteral( - fieldVisibility, - val, - wrappedType, - valueMode, - graphqlContext, - locale)) - .collect(toList()); + List valueList = FpKit.toListOrSingletonList(value); + ImmutableList.Builder resultBuilder = ImmutableList.builderWithExpectedSize(valueList.size()); + for (Object item : valueList) { + resultBuilder.add(externalValueToLiteral( + fieldVisibility, + item, + wrappedType, + valueMode, + graphqlContext, + locale)); + } + ImmutableList result = resultBuilder.build(); + if (valueMode == NORMALIZED) { return result; } else { - return ArrayValue.newArrayValue().values((List) result).build(); + return ArrayValue.newArrayValue().values((ImmutableList) result).build(); } } @@ -282,7 +285,7 @@ private static Object externalValueToLiteralForObject( GraphQLContext graphqlContext, Locale locale ) { - assertTrue(inputValue instanceof Map, () -> "Expect Map as input"); + assertTrue(inputValue instanceof Map, "Expect Map as input"); Map inputMap = (Map) inputValue; List fieldDefinitions = fieldVisibility.getFieldDefinitions(inputObjectType); @@ -374,6 +377,7 @@ static CoercedVariables externalValueToInternalValueForVariables( coercedValues.put(variableName, null); } else { Object coercedValue = externalValueToInternalValueImpl( + variableName, inputInterceptor, fieldVisibility, variableInputType, @@ -398,11 +402,28 @@ static CoercedVariables externalValueToInternalValueForVariables( return CoercedVariables.of(coercedValues); } + static Object externalValueToInternalValueImpl( + InputInterceptor inputInterceptor, + GraphqlFieldVisibility fieldVisibility, + GraphQLInputType graphQLType, + Object originalValue, + GraphQLContext graphqlContext, + Locale locale + ) throws NonNullableValueCoercedAsNullException, CoercingParseValueException { + return externalValueToInternalValueImpl("externalValue", + inputInterceptor, + fieldVisibility, + graphQLType, + originalValue, + graphqlContext, + locale); + } + /** * Performs validation too */ - @SuppressWarnings("unchecked") static Object externalValueToInternalValueImpl( + String variableName, InputInterceptor inputInterceptor, GraphqlFieldVisibility fieldVisibility, GraphQLInputType graphQLType, @@ -412,6 +433,7 @@ static Object externalValueToInternalValueImpl( ) throws NonNullableValueCoercedAsNullException, CoercingParseValueException { if (isNonNull(graphQLType)) { Object returnValue = externalValueToInternalValueImpl( + variableName, inputInterceptor, fieldVisibility, unwrapOneAs(graphQLType), @@ -458,13 +480,18 @@ static Object externalValueToInternalValueImpl( locale); } else if (graphQLType instanceof GraphQLInputObjectType) { if (value instanceof Map) { - return externalValueToInternalValueForObject( + GraphQLInputObjectType inputObjectType = (GraphQLInputObjectType) graphQLType; + //noinspection unchecked + Map coercedMap = externalValueToInternalValueForObject( inputInterceptor, fieldVisibility, - (GraphQLInputObjectType) graphQLType, + inputObjectType, (Map) value, graphqlContext, locale); + + ValuesResolverOneOfValidation.validateOneOfInputTypes(inputObjectType, coercedMap, null, variableName, locale); + return coercedMap; } else { throw CoercingParseValueException.newCoercingParseValueException() .message("Expected type 'Map' but was '" + value.getClass().getSimpleName() + @@ -479,7 +506,7 @@ static Object externalValueToInternalValueImpl( /** * performs validation */ - private static Object externalValueToInternalValueForObject( + private static Map externalValueToInternalValueForObject( InputInterceptor inputInterceptor, GraphqlFieldVisibility fieldVisibility, GraphQLInputObjectType inputObjectType, @@ -575,16 +602,18 @@ private static List externalValueToInternalValueForList( ) throws CoercingParseValueException, NonNullableValueCoercedAsNullException { GraphQLInputType wrappedType = (GraphQLInputType) graphQLList.getWrappedType(); - return FpKit.toListOrSingletonList(value) - .stream() - .map(val -> externalValueToInternalValueImpl( - inputInterceptor, - fieldVisibility, - wrappedType, - val, - graphqlContext, - locale)) - .collect(toList()); + List listOrSingletonList = FpKit.toListOrSingletonList(value); + List list = FpKit.arrayListSizedTo(listOrSingletonList); + for (Object val : listOrSingletonList) { + list.add(externalValueToInternalValueImpl( + inputInterceptor, + fieldVisibility, + wrappedType, + val, + graphqlContext, + locale)); + } + return list; } /** @@ -687,7 +716,7 @@ private static Object literalToInternalValueForScalar( GraphQLScalarType scalarType, CoercedVariables coercedVariables, GraphQLContext graphqlContext, - @NotNull Locale locale + @NonNull Locale locale ) { // the CoercingParseLiteralException exception that could happen here has been validated earlier via ValidationUtil return scalarType.getCoercing().parseLiteral( diff --git a/src/main/java/graphql/execution/ValuesResolverLegacy.java b/src/main/java/graphql/execution/ValuesResolverLegacy.java index d5e58f4656..d98a744f7c 100644 --- a/src/main/java/graphql/execution/ValuesResolverLegacy.java +++ b/src/main/java/graphql/execution/ValuesResolverLegacy.java @@ -133,10 +133,11 @@ private static Value handleNumberLegacy(String stringValue) { private static Value handleListLegacy(Object value, GraphQLList type, GraphQLContext graphqlContext, Locale locale) { GraphQLType itemType = type.getWrappedType(); if (FpKit.isIterable(value)) { - List valuesNodes = FpKit.toListOrSingletonList(value) - .stream() - .map(item -> valueToLiteralLegacy(item, itemType, graphqlContext, locale)) - .collect(toList()); + List listOrSingletonList = FpKit.toListOrSingletonList(value); + List valuesNodes = FpKit.arrayListSizedTo(listOrSingletonList); + for (Object item : listOrSingletonList) { + valuesNodes.add(valueToLiteralLegacy(item, itemType, graphqlContext, locale)); + } return ArrayValue.newArrayValue().values(valuesNodes).build(); } return valueToLiteralLegacy(value, itemType, graphqlContext, locale); diff --git a/src/main/java/graphql/execution/conditional/ConditionalNodeDecisionEnvironment.java b/src/main/java/graphql/execution/conditional/ConditionalNodeDecisionEnvironment.java index e0e116a1b4..8851e2df4a 100644 --- a/src/main/java/graphql/execution/conditional/ConditionalNodeDecisionEnvironment.java +++ b/src/main/java/graphql/execution/conditional/ConditionalNodeDecisionEnvironment.java @@ -5,7 +5,7 @@ import graphql.language.Directive; import graphql.language.DirectivesContainer; import graphql.schema.GraphQLSchema; -import org.jetbrains.annotations.Nullable; +import org.jspecify.annotations.Nullable; import java.util.List; @@ -39,7 +39,8 @@ default List getDirectives() { /** * @return the {@link GraphQLSchema} in question - this can be null for certain call paths */ - @Nullable GraphQLSchema getGraphQlSchema(); + @Nullable + GraphQLSchema getGraphQlSchema(); /** * @return a graphql context diff --git a/src/main/java/graphql/execution/conditional/ConditionalNodes.java b/src/main/java/graphql/execution/conditional/ConditionalNodes.java index 7013c53bf3..e922eeb427 100644 --- a/src/main/java/graphql/execution/conditional/ConditionalNodes.java +++ b/src/main/java/graphql/execution/conditional/ConditionalNodes.java @@ -4,14 +4,16 @@ import graphql.GraphQLContext; import graphql.Internal; import graphql.execution.CoercedVariables; -import graphql.execution.ValuesResolver; +import graphql.language.Argument; +import graphql.language.BooleanValue; import graphql.language.Directive; import graphql.language.DirectivesContainer; import graphql.language.NodeUtil; +import graphql.language.VariableReference; import graphql.schema.GraphQLSchema; +import org.jspecify.annotations.Nullable; import java.util.List; -import java.util.Locale; import java.util.Map; import static graphql.Directives.IncludeDirective; @@ -20,11 +22,17 @@ @Internal public class ConditionalNodes { + /** + * return null if skip/include argument contains a variable and therefore could not be resolved + */ + public Boolean shouldIncludeWithoutVariables(DirectivesContainer element) { + return shouldInclude(null, element.getDirectives()); + } public boolean shouldInclude(DirectivesContainer element, Map variables, GraphQLSchema graphQLSchema, - GraphQLContext graphQLContext + @Nullable GraphQLContext graphQLContext ) { // // call the base @include / @skip first @@ -75,12 +83,15 @@ public GraphQLContext getGraphQLContext() { } - private boolean shouldInclude(Map variables, List directives) { + private @Nullable Boolean shouldInclude(Map variables, List directives) { // shortcut on no directives if (directives.isEmpty()) { return true; } - boolean skip = getDirectiveResult(variables, directives, SkipDirective.getName(), false); + Boolean skip = getDirectiveResult(variables, directives, SkipDirective.getName(), false); + if (skip == null) { + return null; + } if (skip) { return false; } @@ -88,15 +99,58 @@ private boolean shouldInclude(Map variables, List dir return getDirectiveResult(variables, directives, IncludeDirective.getName(), true); } - private boolean getDirectiveResult(Map variables, List directives, String directiveName, boolean defaultValue) { + public boolean containsSkipOrIncludeDirective(DirectivesContainer directivesContainer) { + return NodeUtil.findNodeByName(directivesContainer.getDirectives(), SkipDirective.getName()) != null || + NodeUtil.findNodeByName(directivesContainer.getDirectives(), IncludeDirective.getName()) != null; + } + + + public String getSkipVariableName(DirectivesContainer directivesContainer) { + Directive skipDirective = NodeUtil.findNodeByName(directivesContainer.getDirectives(), SkipDirective.getName()); + if (skipDirective == null) { + return null; + } + Argument argument = skipDirective.getArgument("if"); + if (argument.getValue() instanceof VariableReference) { + return ((VariableReference) argument.getValue()).getName(); + } + return null; + } + + public String getIncludeVariableName(DirectivesContainer directivesContainer) { + Directive skipDirective = NodeUtil.findNodeByName(directivesContainer.getDirectives(), IncludeDirective.getName()); + if (skipDirective == null) { + return null; + } + Argument argument = skipDirective.getArgument("if"); + if (argument.getValue() instanceof VariableReference) { + return ((VariableReference) argument.getValue()).getName(); + } + return null; + } + + + private @Nullable Boolean getDirectiveResult(Map variables, List directives, String directiveName, boolean defaultValue) { Directive foundDirective = NodeUtil.findNodeByName(directives, directiveName); if (foundDirective != null) { - Map argumentValues = ValuesResolver.getArgumentValues(SkipDirective.getArguments(), foundDirective.getArguments(), CoercedVariables.of(variables), GraphQLContext.getDefault(), Locale.getDefault()); - Object flag = argumentValues.get("if"); - Assert.assertTrue(flag instanceof Boolean, "The '%s' directive MUST have a value for the 'if' argument", directiveName); - return (Boolean) flag; + return getIfValue(foundDirective.getArguments(), variables); } return defaultValue; } + private @Nullable Boolean getIfValue(List arguments, @Nullable Map variables) { + for (Argument argument : arguments) { + if (argument.getName().equals("if")) { + Object value = argument.getValue(); + if (value instanceof BooleanValue) { + return ((BooleanValue) value).isValue(); + } + if (value instanceof VariableReference && variables != null) { + return (boolean) variables.get(((VariableReference) value).getName()); + } + return null; + } + } + return Assert.assertShouldNeverHappen("The 'if' argument must be present"); + } } diff --git a/src/main/java/graphql/execution/directives/DirectivesResolver.java b/src/main/java/graphql/execution/directives/DirectivesResolver.java index 4163c268cb..4f177052e4 100644 --- a/src/main/java/graphql/execution/directives/DirectivesResolver.java +++ b/src/main/java/graphql/execution/directives/DirectivesResolver.java @@ -1,6 +1,8 @@ package graphql.execution.directives; -import com.google.common.collect.ImmutableMap; +import com.google.common.collect.BiMap; +import com.google.common.collect.HashBiMap; +import com.google.common.collect.ImmutableBiMap; import graphql.GraphQLContext; import graphql.Internal; import graphql.execution.CoercedVariables; @@ -11,8 +13,6 @@ import graphql.schema.GraphQLDirective; import graphql.schema.GraphQLSchema; -import java.util.ArrayList; -import java.util.LinkedHashMap; import java.util.List; import java.util.Locale; import java.util.Map; @@ -26,27 +26,27 @@ public class DirectivesResolver { public DirectivesResolver() { } - public Map> resolveDirectives(List directives, GraphQLSchema schema, Map variables, GraphQLContext graphQLContext, Locale locale) { + public BiMap resolveDirectives(List directives, GraphQLSchema schema, CoercedVariables variables, GraphQLContext graphQLContext, Locale locale) { GraphQLCodeRegistry codeRegistry = schema.getCodeRegistry(); - Map> directiveMap = new LinkedHashMap<>(); + BiMap directiveMap = HashBiMap.create(); directives.forEach(directive -> { GraphQLDirective protoType = schema.getDirective(directive.getName()); if (protoType != null) { - GraphQLDirective newDirective = protoType.transform(builder -> buildArguments(builder, codeRegistry, protoType, directive, variables, graphQLContext, locale)); - directiveMap.computeIfAbsent(newDirective.getName(), k -> new ArrayList<>()).add(newDirective); + GraphQLDirective graphQLDirective = protoType.transform(builder -> buildArguments(builder, codeRegistry, protoType, directive, variables, graphQLContext, locale)); + directiveMap.put(graphQLDirective, directive); } }); - return ImmutableMap.copyOf(directiveMap); + return ImmutableBiMap.copyOf(directiveMap); } private void buildArguments(GraphQLDirective.Builder directiveBuilder, GraphQLCodeRegistry codeRegistry, GraphQLDirective protoType, Directive fieldDirective, - Map variables, + CoercedVariables variables, GraphQLContext graphQLContext, Locale locale) { - Map argumentValues = ValuesResolver.getArgumentValues(codeRegistry, protoType.getArguments(), fieldDirective.getArguments(), CoercedVariables.of(variables), graphQLContext, locale); + Map argumentValues = ValuesResolver.getArgumentValues(codeRegistry, protoType.getArguments(), fieldDirective.getArguments(), variables, graphQLContext, locale); directiveBuilder.clearArguments(); protoType.getArguments().forEach(protoArg -> { if (argumentValues.containsKey(protoArg.getName())) { diff --git a/src/main/java/graphql/execution/directives/QueryAppliedDirective.java b/src/main/java/graphql/execution/directives/QueryAppliedDirective.java index d2e0e66891..18e4e7be69 100644 --- a/src/main/java/graphql/execution/directives/QueryAppliedDirective.java +++ b/src/main/java/graphql/execution/directives/QueryAppliedDirective.java @@ -7,9 +7,9 @@ import graphql.schema.GraphQLArgument; import graphql.schema.GraphQLDirective; import graphql.schema.GraphqlTypeBuilder; +import org.jspecify.annotations.NonNull; +import org.jspecify.annotations.Nullable; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; import java.util.Collection; import java.util.LinkedHashMap; import java.util.List; @@ -47,7 +47,7 @@ private QueryAppliedDirective(String name, Directive definition, Collection value) { + public Builder valueLiteral(@NonNull Value value) { this.value = InputValueWithState.newLiteralValue(value); return this; } @@ -181,7 +181,7 @@ public Builder valueProgrammatic(@Nullable Object value) { return this; } - public Builder inputValueWithState(@NotNull InputValueWithState value) { + public Builder inputValueWithState(@NonNull InputValueWithState value) { this.value = Assert.assertNotNull(value); return this; } diff --git a/src/main/java/graphql/execution/directives/QueryDirectives.java b/src/main/java/graphql/execution/directives/QueryDirectives.java index 162b6f3c53..6eee9f9323 100644 --- a/src/main/java/graphql/execution/directives/QueryDirectives.java +++ b/src/main/java/graphql/execution/directives/QueryDirectives.java @@ -4,13 +4,16 @@ import graphql.PublicApi; import graphql.execution.CoercedVariables; import graphql.execution.MergedField; +import graphql.execution.NormalizedVariables; import graphql.language.Field; +import graphql.normalized.NormalizedInputValue; import graphql.schema.GraphQLDirective; import graphql.schema.GraphQLSchema; import java.util.List; import java.util.Locale; import java.util.Map; +import java.util.function.Supplier; /** * This gives you access to the immediate directives on a {@link graphql.execution.MergedField}. This does not include directives on parent @@ -66,6 +69,16 @@ public interface QueryDirectives { */ Map> getImmediateAppliedDirectivesByField(); + /** + * This will return a map of {@link QueryAppliedDirective} to a map of their argument values in {@link NormalizedInputValue} form + *

+ * NOTE : This will only be available when {@link graphql.normalized.ExecutableNormalizedOperationFactory} is used + * to create the {@link QueryAppliedDirective} information + * + * @return a map of applied directive to named argument values + */ + Map> getNormalizedInputValueByImmediateAppliedDirectives(); + /** * This will return a list of the named directives that are immediately on this merged field. * @@ -108,6 +121,8 @@ interface Builder { Builder coercedVariables(CoercedVariables coercedVariables); + Builder normalizedVariables(Supplier normalizedVariables); + Builder graphQLContext(GraphQLContext graphQLContext); Builder locale(Locale locale); diff --git a/src/main/java/graphql/execution/directives/QueryDirectivesBuilder.java b/src/main/java/graphql/execution/directives/QueryDirectivesBuilder.java index 80f80d1a06..78b6998588 100644 --- a/src/main/java/graphql/execution/directives/QueryDirectivesBuilder.java +++ b/src/main/java/graphql/execution/directives/QueryDirectivesBuilder.java @@ -4,10 +4,12 @@ import graphql.Internal; import graphql.execution.CoercedVariables; import graphql.execution.MergedField; +import graphql.execution.NormalizedVariables; import graphql.language.Field; import graphql.schema.GraphQLSchema; import java.util.Locale; +import java.util.function.Supplier; @Internal public class QueryDirectivesBuilder implements QueryDirectives.Builder { @@ -15,6 +17,7 @@ public class QueryDirectivesBuilder implements QueryDirectives.Builder { private MergedField mergedField; private GraphQLSchema schema; private CoercedVariables coercedVariables = CoercedVariables.emptyVariables(); + private Supplier normalizedVariables = NormalizedVariables::emptyVariables; private GraphQLContext graphQLContext = GraphQLContext.getDefault(); private Locale locale = Locale.getDefault(); @@ -42,6 +45,12 @@ public QueryDirectives.Builder coercedVariables(CoercedVariables coercedVariable return this; } + @Override + public QueryDirectives.Builder normalizedVariables(Supplier normalizedVariables) { + this.normalizedVariables = normalizedVariables; + return this; + } + @Override public QueryDirectives.Builder graphQLContext(GraphQLContext graphQLContext) { this.graphQLContext = graphQLContext; @@ -57,6 +66,6 @@ public QueryDirectives.Builder locale(Locale locale) { @Override public QueryDirectives build() { - return new QueryDirectivesImpl(mergedField, schema, coercedVariables.toMap(), graphQLContext, locale); + return new QueryDirectivesImpl(mergedField, schema, coercedVariables, normalizedVariables, graphQLContext, locale); } } diff --git a/src/main/java/graphql/execution/directives/QueryDirectivesImpl.java b/src/main/java/graphql/execution/directives/QueryDirectivesImpl.java index 68c9b46b57..4b3fde5f4a 100644 --- a/src/main/java/graphql/execution/directives/QueryDirectivesImpl.java +++ b/src/main/java/graphql/execution/directives/QueryDirectivesImpl.java @@ -1,17 +1,22 @@ package graphql.execution.directives; +import com.google.common.collect.BiMap; +import com.google.common.collect.HashBiMap; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; +import graphql.Assert; import graphql.GraphQLContext; import graphql.Internal; -import graphql.collect.ImmutableKit; +import graphql.execution.CoercedVariables; import graphql.execution.MergedField; +import graphql.execution.NormalizedVariables; +import graphql.execution.ValuesResolver; import graphql.language.Directive; import graphql.language.Field; +import graphql.normalized.NormalizedInputValue; import graphql.schema.GraphQLArgument; import graphql.schema.GraphQLDirective; import graphql.schema.GraphQLSchema; -import graphql.util.FpKit; import graphql.util.LockKit; import java.util.ArrayList; @@ -19,7 +24,9 @@ import java.util.List; import java.util.Locale; import java.util.Map; +import java.util.function.Supplier; +import static graphql.Assert.assertNotNull; import static graphql.collect.ImmutableKit.emptyList; /** @@ -33,7 +40,8 @@ public class QueryDirectivesImpl implements QueryDirectives { private final DirectivesResolver directivesResolver = new DirectivesResolver(); private final MergedField mergedField; private final GraphQLSchema schema; - private final Map variables; + private final CoercedVariables coercedVariables; + private final Supplier normalizedVariableValues; private final GraphQLContext graphQLContext; private final Locale locale; @@ -42,13 +50,15 @@ public class QueryDirectivesImpl implements QueryDirectives { private volatile ImmutableMap> fieldDirectivesByName; private volatile ImmutableMap> fieldAppliedDirectivesByField; private volatile ImmutableMap> fieldAppliedDirectivesByName; - - public QueryDirectivesImpl(MergedField mergedField, GraphQLSchema schema, Map variables, GraphQLContext graphQLContext, Locale locale) { - this.mergedField = mergedField; - this.schema = schema; - this.variables = variables; - this.graphQLContext = graphQLContext; - this.locale = locale; + private volatile ImmutableMap> normalizedValuesByAppliedDirective; + + public QueryDirectivesImpl(MergedField mergedField, GraphQLSchema schema, CoercedVariables coercedVariables, Supplier normalizedVariableValues, GraphQLContext graphQLContext, Locale locale) { + this.mergedField = assertNotNull(mergedField); + this.schema = assertNotNull(schema); + this.coercedVariables = assertNotNull(coercedVariables); + this.normalizedVariableValues = assertNotNull(normalizedVariableValues); + this.graphQLContext = assertNotNull(graphQLContext); + this.locale = assertNotNull(locale); } private void computeValuesLazily() { @@ -56,16 +66,28 @@ private void computeValuesLazily() { final Map> byField = new LinkedHashMap<>(); final Map> byFieldApplied = new LinkedHashMap<>(); + + BiMap directiveCounterParts = HashBiMap.create(); + BiMap gqlDirectiveCounterParts = HashBiMap.create(); + BiMap gqlDirectiveCounterPartsInverse = gqlDirectiveCounterParts.inverse(); mergedField.getFields().forEach(field -> { List directives = field.getDirectives(); - ImmutableList resolvedDirectives = ImmutableList.copyOf(FpKit.flatList( - directivesResolver - .resolveDirectives(directives, schema, variables, graphQLContext, locale) - .values() - )); + BiMap directivesMap = directivesResolver + .resolveDirectives(directives, schema, coercedVariables, graphQLContext, locale); + + directiveCounterParts.putAll(directivesMap); + + ImmutableList resolvedDirectives = ImmutableList.copyOf(directivesMap.keySet()); + + ImmutableList.Builder appliedDirectiveBuilder = ImmutableList.builder(); + for (GraphQLDirective resolvedDirective : resolvedDirectives) { + QueryAppliedDirective appliedDirective = toAppliedDirective(resolvedDirective); + appliedDirectiveBuilder.add(appliedDirective); + gqlDirectiveCounterParts.put(resolvedDirective, appliedDirective); + } byField.put(field, resolvedDirectives); // at some point we will only use applied - byFieldApplied.put(field, ImmutableKit.map(resolvedDirectives, this::toAppliedDirective)); + byFieldApplied.put(field, appliedDirectiveBuilder.build()); }); Map> byName = new LinkedHashMap<>(); @@ -74,13 +96,33 @@ private void computeValuesLazily() { String name = directive.getName(); byName.computeIfAbsent(name, k -> new ArrayList<>()).add(directive); // at some point we will only use applied - byNameApplied.computeIfAbsent(name, k -> new ArrayList<>()).add(toAppliedDirective(directive)); + QueryAppliedDirective appliedDirective = gqlDirectiveCounterParts.get(directive); + byNameApplied.computeIfAbsent(name, k -> new ArrayList<>()).add(appliedDirective); })); + // create NormalizedInputValue values for directive arguments + Map> normalizedValuesByAppliedDirective = new LinkedHashMap<>(); + NormalizedVariables normalizedVariableValues = this.normalizedVariableValues.get(); + if (normalizedVariableValues != null) { + byNameApplied.values().forEach(directiveList -> { + for (QueryAppliedDirective queryAppliedDirective : directiveList) { + GraphQLDirective graphQLDirective = gqlDirectiveCounterPartsInverse.get(queryAppliedDirective); + // we need this counterpart because the ValuesResolver needs the runtime and AST element + Directive directive = directiveCounterParts.get(graphQLDirective); + if (directive != null) { + Map normalizedVariables = normalizedVariableValues.toMap(); + Map normalizedArgumentValues = ValuesResolver.getNormalizedArgumentValues(graphQLDirective.getArguments(), directive.getArguments(), normalizedVariables); + normalizedValuesByAppliedDirective.put(queryAppliedDirective, normalizedArgumentValues); + } + } + }); + } + this.fieldDirectivesByName = ImmutableMap.copyOf(byName); this.fieldDirectivesByField = ImmutableMap.copyOf(byField); this.fieldAppliedDirectivesByName = ImmutableMap.copyOf(byNameApplied); this.fieldAppliedDirectivesByField = ImmutableMap.copyOf(byFieldApplied); + this.normalizedValuesByAppliedDirective = ImmutableMap.copyOf(normalizedValuesByAppliedDirective); }); } @@ -114,6 +156,12 @@ public Map> getImmediateAppliedDirectivesByFi return fieldAppliedDirectivesByField; } + @Override + public Map> getNormalizedInputValueByImmediateAppliedDirectives() { + computeValuesLazily(); + return normalizedValuesByAppliedDirective; + } + @Override public Map> getImmediateDirectivesByName() { computeValuesLazily(); diff --git a/src/main/java/graphql/execution/incremental/DeferredCallContext.java b/src/main/java/graphql/execution/incremental/DeferredCallContext.java index 15f428966f..d7d494aace 100644 --- a/src/main/java/graphql/execution/incremental/DeferredCallContext.java +++ b/src/main/java/graphql/execution/incremental/DeferredCallContext.java @@ -1,10 +1,7 @@ package graphql.execution.incremental; -import graphql.ExceptionWhileDataFetching; import graphql.GraphQLError; import graphql.Internal; -import graphql.execution.ResultPath; -import graphql.language.SourceLocation; import java.util.List; import java.util.concurrent.CopyOnWriteArrayList; @@ -23,12 +20,11 @@ public class DeferredCallContext { private final List errors = new CopyOnWriteArrayList<>(); - public void onFetchingException(ResultPath path, SourceLocation sourceLocation, Throwable throwable) { - ExceptionWhileDataFetching error = new ExceptionWhileDataFetching(path, throwable, sourceLocation); - onError(error); + public void addErrors(List errors) { + this.errors.addAll(errors); } - public void onError(GraphQLError graphqlError) { + public void addError(GraphQLError graphqlError) { errors.add(graphqlError); } diff --git a/src/main/java/graphql/execution/incremental/DeferredExecution.java b/src/main/java/graphql/execution/incremental/DeferredExecution.java index 3f14f5922e..321ecc1603 100644 --- a/src/main/java/graphql/execution/incremental/DeferredExecution.java +++ b/src/main/java/graphql/execution/incremental/DeferredExecution.java @@ -2,8 +2,7 @@ import graphql.ExperimentalApi; import graphql.normalized.incremental.NormalizedDeferredExecution; - -import javax.annotation.Nullable; +import org.jspecify.annotations.Nullable; /** * Represents details about the defer execution that can be associated with a {@link graphql.execution.MergedField}. diff --git a/src/main/java/graphql/execution/incremental/DeferredExecutionSupport.java b/src/main/java/graphql/execution/incremental/DeferredExecutionSupport.java index 034138d110..cbe73045b8 100644 --- a/src/main/java/graphql/execution/incremental/DeferredExecutionSupport.java +++ b/src/main/java/graphql/execution/incremental/DeferredExecutionSupport.java @@ -11,12 +11,14 @@ import graphql.execution.FieldValueInfo; import graphql.execution.MergedField; import graphql.execution.MergedSelectionSet; +import graphql.execution.ResultPath; import graphql.execution.instrumentation.Instrumentation; import graphql.incremental.IncrementalPayload; import graphql.util.FpKit; import java.util.Collections; import java.util.HashMap; +import java.util.HashSet; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; @@ -24,7 +26,6 @@ import java.util.concurrent.CompletableFuture; import java.util.function.BiFunction; import java.util.function.Supplier; -import java.util.stream.Collectors; /** * The purpose of this class hierarchy is to encapsulate most of the logic for deferring field execution, thus @@ -44,7 +45,7 @@ public interface DeferredExecutionSupport { List getNonDeferredFieldNames(List allFieldNames); - Set> createCalls(); + Set> createCalls(ExecutionStrategyParameters executionStrategyParameters); DeferredExecutionSupport NOOP = new DeferredExecutionSupport.NoOp(); @@ -105,20 +106,24 @@ public List getNonDeferredFieldNames(List allFieldNames) { } @Override - public Set> createCalls() { - return deferredExecutionToFields.keySet().stream() - .map(this::createDeferredFragmentCall) - .collect(Collectors.toSet()); + public Set> createCalls(ExecutionStrategyParameters executionStrategyParameters) { + ImmutableSet deferredExecutions = deferredExecutionToFields.keySet(); + Set> set = new HashSet<>(deferredExecutions.size()); + for (DeferredExecution deferredExecution : deferredExecutions) { + set.add(this.createDeferredFragmentCall(deferredExecution, executionStrategyParameters)); + } + return set; } - private DeferredFragmentCall createDeferredFragmentCall(DeferredExecution deferredExecution) { + private DeferredFragmentCall createDeferredFragmentCall(DeferredExecution deferredExecution, ExecutionStrategyParameters executionStrategyParameters) { DeferredCallContext deferredCallContext = new DeferredCallContext(); List mergedFields = deferredExecutionToFields.get(deferredExecution); - List>> calls = mergedFields.stream() - .map(currentField -> this.createResultSupplier(currentField, deferredCallContext)) - .collect(Collectors.toList()); + List>> calls = FpKit.arrayListSizedTo(mergedFields); + for (MergedField currentField : mergedFields) { + calls.add(this.createResultSupplier(currentField, deferredCallContext, executionStrategyParameters)); + } return new DeferredFragmentCall( deferredExecution.getLabel(), @@ -130,7 +135,8 @@ private DeferredFragmentCall createDeferredFragmentCall(DeferredExecution deferr private Supplier> createResultSupplier( MergedField currentField, - DeferredCallContext deferredCallContext + DeferredCallContext deferredCallContext, + ExecutionStrategyParameters executionStrategyParameters ) { Map fields = new LinkedHashMap<>(); fields.put(currentField.getResultKey(), currentField); @@ -138,10 +144,11 @@ private Supplier { MergedSelectionSet mergedSelectionSet = MergedSelectionSet.newMergedSelectionSet().subFields(fields).build(); + ResultPath path = parameters.getPath().segment(currentField.getResultKey()); builder.deferredCallContext(deferredCallContext) .field(currentField) .fields(mergedSelectionSet) - .path(parameters.getPath().segment(currentField.getResultKey())) + .path(path) .parent(null); // this is a break in the parent -> child chain - it's a new start effectively } ); @@ -149,7 +156,6 @@ private Supplier fieldValueResult = resolveFieldWithInfoFn .apply(executionContext, callParameters); - // Create a reference to the CompletableFuture that resolves an ExecutionResult - // so we can pass it to the Instrumentation "onDispatched" callback. CompletableFuture executionResultCF = fieldValueResult - .thenCompose(fvi -> fvi - .getFieldValueFuture() - .thenApply(fv -> ExecutionResultImpl.newExecutionResult().data(fv).build()) + .thenCompose(fvi -> { + executionContext.getDataLoaderDispatcherStrategy().executeDeferredOnFieldValueInfo(fvi, executionStrategyParameters); + + return fvi + .getFieldValueFuture() + .thenApply(fv -> ExecutionResultImpl.newExecutionResult().data(fv).build()); + } ); return executionResultCF @@ -199,7 +207,7 @@ public List getNonDeferredFieldNames(List allFieldNames) { } @Override - public Set> createCalls() { + public Set> createCalls(ExecutionStrategyParameters executionStrategyParameters) { return Collections.emptySet(); } } diff --git a/src/main/java/graphql/execution/incremental/IncrementalCallState.java b/src/main/java/graphql/execution/incremental/IncrementalCallState.java index f96a706f36..2f5c9742be 100644 --- a/src/main/java/graphql/execution/incremental/IncrementalCallState.java +++ b/src/main/java/graphql/execution/incremental/IncrementalCallState.java @@ -4,6 +4,7 @@ import graphql.execution.reactive.SingleSubscriberPublisher; import graphql.incremental.DelayedIncrementalPartialResult; import graphql.incremental.IncrementalPayload; +import graphql.util.InterThreadMemoizedSupplier; import graphql.util.LockKit; import org.reactivestreams.Publisher; @@ -13,6 +14,7 @@ import java.util.concurrent.ConcurrentLinkedDeque; import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicInteger; +import java.util.function.Supplier; import static graphql.incremental.DelayedIncrementalPartialResultImpl.newIncrementalExecutionResult; @@ -24,7 +26,7 @@ public class IncrementalCallState { private final AtomicBoolean incrementalCallsDetected = new AtomicBoolean(false); private final Deque> incrementalCalls = new ConcurrentLinkedDeque<>(); - private final SingleSubscriberPublisher publisher = new SingleSubscriberPublisher<>(); + private final Supplier> publisher = createPublisher(); private final AtomicInteger pendingCalls = new AtomicInteger(); private final LockKit.ReentrantLock publisherLock = new LockKit.ReentrantLock(); @@ -36,7 +38,7 @@ private void drainIncrementalCalls() { incrementalCall.invoke() .whenComplete((payload, exception) -> { if (exception != null) { - publisher.offerError(exception); + publisher.get().offerError(exception); return; } @@ -53,13 +55,13 @@ private void drainIncrementalCalls() { .hasNext(remainingCalls != 0) .build(); - publisher.offer(executionResult); + publisher.get().offer(executionResult); } finally { publisherLock.unlock(); } if (remainingCalls == 0) { - publisher.noMoreData(); + publisher.get().noMoreData(); } else { // Nested calls were added, let's try to drain the queue again. drainIncrementalCalls(); @@ -85,13 +87,20 @@ public boolean getIncrementalCallsDetected() { return incrementalCallsDetected.get(); } + private Supplier> createPublisher() { + // this will be created once and once only - any extra calls to .get() will return the previously created + // singleton object + return new InterThreadMemoizedSupplier<>(() -> new SingleSubscriberPublisher<>(this::drainIncrementalCalls)); + } + /** - * When this is called the deferred execution will begin + * This method will return a {@link Publisher} of deferred results. No field processing will be done + * until a {@link org.reactivestreams.Subscriber} is attached to this publisher. Once a {@link org.reactivestreams.Subscriber} + * is attached the deferred field result processing will be started and published as a series of events. * * @return the publisher of deferred results */ public Publisher startDeferredCalls() { - drainIncrementalCalls(); - return publisher; + return publisher.get(); } } diff --git a/src/main/java/graphql/execution/incremental/IncrementalUtils.java b/src/main/java/graphql/execution/incremental/IncrementalUtils.java index 2a89ade3fd..5dc1ac171c 100644 --- a/src/main/java/graphql/execution/incremental/IncrementalUtils.java +++ b/src/main/java/graphql/execution/incremental/IncrementalUtils.java @@ -7,6 +7,7 @@ import graphql.execution.ValuesResolver; import graphql.language.Directive; import graphql.language.NodeUtil; +import org.jspecify.annotations.Nullable; import java.util.List; import java.util.Locale; @@ -20,7 +21,7 @@ public class IncrementalUtils { private IncrementalUtils() { } - public static T createDeferredExecution( + public static @Nullable T createDeferredExecution( Map variables, List directives, Function builderFunction diff --git a/src/main/java/graphql/execution/instrumentation/ChainedInstrumentation.java b/src/main/java/graphql/execution/instrumentation/ChainedInstrumentation.java index 6decb929cd..daca12293f 100644 --- a/src/main/java/graphql/execution/instrumentation/ChainedInstrumentation.java +++ b/src/main/java/graphql/execution/instrumentation/ChainedInstrumentation.java @@ -1,7 +1,6 @@ package graphql.execution.instrumentation; import com.google.common.collect.ImmutableList; -import graphql.Assert; import graphql.ExecutionInput; import graphql.ExecutionResult; import graphql.ExperimentalApi; @@ -21,8 +20,8 @@ import graphql.schema.DataFetcher; import graphql.schema.GraphQLSchema; import graphql.validation.ValidationError; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; +import org.jspecify.annotations.NonNull; +import org.jspecify.annotations.Nullable; import java.util.AbstractMap; import java.util.Arrays; @@ -112,7 +111,7 @@ protected void chainedConsume(InstrumentationState state, BiConsumer createStateAsync(InstrumentationCreateStateParameters parameters) { + public @NonNull CompletableFuture createStateAsync(InstrumentationCreateStateParameters parameters) { return ChainedInstrumentationState.combineAll(instrumentations, parameters); } @@ -159,7 +158,7 @@ public ExecutionStrategyInstrumentationContext beginExecutionStrategy(Instrument } BiFunction mapper = (instrumentation, specificState) -> instrumentation.beginExecuteObject(parameters, specificState); ChainedInstrumentationState chainedInstrumentationState = (ChainedInstrumentationState) state; - if (instrumentations.size() == 1) { + if (instrumentations.size() == 1) { return mapper.apply(instrumentations.get(0), chainedInstrumentationState.getState(0)); } return new ChainedExecuteObjectInstrumentationContext(chainedMapAndDropNulls(chainedInstrumentationState, mapper)); @@ -182,11 +181,26 @@ public InstrumentationContext beginSubscribedFieldEvent(Instrum return chainedCtx(state, (instrumentation, specificState) -> instrumentation.beginFieldExecution(parameters, specificState)); } + @SuppressWarnings("deprecation") @Override public InstrumentationContext beginFieldFetch(InstrumentationFieldFetchParameters parameters, InstrumentationState state) { return chainedCtx(state, (instrumentation, specificState) -> instrumentation.beginFieldFetch(parameters, specificState)); } + @Override + public FieldFetchingInstrumentationContext beginFieldFetching(InstrumentationFieldFetchParameters parameters, InstrumentationState state) { + if (instrumentations.isEmpty()) { + return FieldFetchingInstrumentationContext.NOOP; + } + BiFunction mapper = (instrumentation, specificState) -> instrumentation.beginFieldFetching(parameters, specificState); + ChainedInstrumentationState chainedInstrumentationState = (ChainedInstrumentationState) state; + if (instrumentations.size() == 1) { + return mapper.apply(instrumentations.get(0), chainedInstrumentationState.getState(0)); + } + ImmutableList objects = chainedMapAndDropNulls(chainedInstrumentationState, mapper); + return new ChainedFieldFetchingInstrumentationContext(objects); + } + @Override public @Nullable InstrumentationContext beginFieldCompletion(InstrumentationFieldCompleteParameters parameters, InstrumentationState state) { return chainedCtx(state, (instrumentation, specificState) -> instrumentation.beginFieldCompletion(parameters, specificState)); @@ -198,41 +212,41 @@ public InstrumentationContext beginFieldFetch(InstrumentationFieldFetchP return chainedCtx(state, (instrumentation, specificState) -> instrumentation.beginFieldListCompletion(parameters, specificState)); } - @NotNull + @NonNull @Override public ExecutionInput instrumentExecutionInput(ExecutionInput executionInput, InstrumentationExecutionParameters parameters, InstrumentationState state) { return chainedInstrument(state, executionInput, (instrumentation, specificState, accumulator) -> instrumentation.instrumentExecutionInput(accumulator, parameters, specificState)); } - @NotNull + @NonNull @Override public DocumentAndVariables instrumentDocumentAndVariables(DocumentAndVariables documentAndVariables, InstrumentationExecutionParameters parameters, InstrumentationState state) { return chainedInstrument(state, documentAndVariables, (instrumentation, specificState, accumulator) -> instrumentation.instrumentDocumentAndVariables(accumulator, parameters, specificState)); } - @NotNull + @NonNull @Override public GraphQLSchema instrumentSchema(GraphQLSchema schema, InstrumentationExecutionParameters parameters, InstrumentationState state) { return chainedInstrument(state, schema, (instrumentation, specificState, accumulator) -> instrumentation.instrumentSchema(accumulator, parameters, specificState)); } - @NotNull + @NonNull @Override public ExecutionContext instrumentExecutionContext(ExecutionContext executionContext, InstrumentationExecutionParameters parameters, InstrumentationState state) { return chainedInstrument(state, executionContext, (instrumentation, specificState, accumulator) -> instrumentation.instrumentExecutionContext(accumulator, parameters, specificState)); } - @NotNull + @NonNull @Override public DataFetcher instrumentDataFetcher(DataFetcher dataFetcher, InstrumentationFieldFetchParameters parameters, InstrumentationState state) { return chainedInstrument(state, dataFetcher, (Instrumentation instrumentation, InstrumentationState specificState, DataFetcher accumulator) -> instrumentation.instrumentDataFetcher(accumulator, parameters, specificState)); } - @NotNull + @NonNull @Override public CompletableFuture instrumentExecutionResult(ExecutionResult executionResult, InstrumentationExecutionParameters parameters, InstrumentationState state) { ImmutableList> entries = chainedMapAndDropNulls(state, AbstractMap.SimpleEntry::new); @@ -344,8 +358,33 @@ public void onFieldValuesException() { } } + private static class ChainedFieldFetchingInstrumentationContext implements FieldFetchingInstrumentationContext { + + private final ImmutableList contexts; + + ChainedFieldFetchingInstrumentationContext(ImmutableList contexts) { + this.contexts = contexts; + } + + @Override + public void onDispatched() { + contexts.forEach(FieldFetchingInstrumentationContext::onDispatched); + } + + @Override + public void onFetchedValue(Object fetchedValue) { + contexts.forEach(context -> context.onFetchedValue(fetchedValue)); + } + + @Override + public void onCompleted(Object result, Throwable t) { + contexts.forEach(context -> context.onCompleted(result, t)); + } + } + private static class ChainedDeferredExecutionStrategyInstrumentationContext implements InstrumentationContext { + private final List> contexts; ChainedDeferredExecutionStrategyInstrumentationContext(List> contexts) { diff --git a/src/main/java/graphql/execution/instrumentation/ExecuteObjectInstrumentationContext.java b/src/main/java/graphql/execution/instrumentation/ExecuteObjectInstrumentationContext.java index 4e100238df..a9d8417756 100644 --- a/src/main/java/graphql/execution/instrumentation/ExecuteObjectInstrumentationContext.java +++ b/src/main/java/graphql/execution/instrumentation/ExecuteObjectInstrumentationContext.java @@ -3,11 +3,10 @@ import graphql.Internal; import graphql.PublicSpi; import graphql.execution.FieldValueInfo; -import org.jetbrains.annotations.NotNull; +import org.jspecify.annotations.NonNull; import java.util.List; import java.util.Map; -import java.util.concurrent.CompletableFuture; @PublicSpi public interface ExecuteObjectInstrumentationContext extends InstrumentationContext> { @@ -30,7 +29,7 @@ public void onCompleted(Map result, Throwable t) { * * @return a non null {@link InstrumentationContext} that maybe a no-op */ - @NotNull + @NonNull @Internal static ExecuteObjectInstrumentationContext nonNullCtx(ExecuteObjectInstrumentationContext nullableContext) { return nullableContext == null ? NOOP : nullableContext; diff --git a/src/main/java/graphql/execution/instrumentation/ExecutionStrategyInstrumentationContext.java b/src/main/java/graphql/execution/instrumentation/ExecutionStrategyInstrumentationContext.java index 7fc0a3e0d3..5b9abac713 100644 --- a/src/main/java/graphql/execution/instrumentation/ExecutionStrategyInstrumentationContext.java +++ b/src/main/java/graphql/execution/instrumentation/ExecutionStrategyInstrumentationContext.java @@ -4,10 +4,9 @@ import graphql.Internal; import graphql.PublicSpi; import graphql.execution.FieldValueInfo; -import org.jetbrains.annotations.NotNull; +import org.jspecify.annotations.NonNull; import java.util.List; -import java.util.concurrent.CompletableFuture; @PublicSpi public interface ExecutionStrategyInstrumentationContext extends InstrumentationContext { @@ -27,7 +26,7 @@ default void onFieldValuesException() { * * @return a non null {@link InstrumentationContext} that maybe a no-op */ - @NotNull + @NonNull @Internal static ExecutionStrategyInstrumentationContext nonNullCtx(ExecutionStrategyInstrumentationContext nullableContext) { return nullableContext == null ? NOOP : nullableContext; diff --git a/src/main/java/graphql/execution/instrumentation/FieldFetchingInstrumentationContext.java b/src/main/java/graphql/execution/instrumentation/FieldFetchingInstrumentationContext.java new file mode 100644 index 0000000000..38984c6f92 --- /dev/null +++ b/src/main/java/graphql/execution/instrumentation/FieldFetchingInstrumentationContext.java @@ -0,0 +1,69 @@ +package graphql.execution.instrumentation; + +import graphql.Internal; +import graphql.PublicSpi; +import graphql.execution.instrumentation.parameters.InstrumentationFieldFetchParameters; +import org.jspecify.annotations.NonNull; +import org.jspecify.annotations.Nullable; + +/** + * FieldFetchingInstrumentationContext is returned back from the {@link Instrumentation#beginFieldFetching(InstrumentationFieldFetchParameters, InstrumentationState)} + * method, and it's much like the normal {@link InstrumentationContext} type except it also + * gives the value that was returned by a fields {@link graphql.schema.DataFetcher}. This allows + * you to know if the field value is a completely materialised field or if it's a {@link java.util.concurrent.CompletableFuture} + * promise to a value. + */ +@PublicSpi +public interface FieldFetchingInstrumentationContext extends InstrumentationContext { + + /** + * This is called back with the value fetched for the field by its {@link graphql.schema.DataFetcher}. + * This can be a materialised java object or it maybe a {@link java.util.concurrent.CompletableFuture} + * promise to some async value that has not yet completed. + * + * @param fetchedValue a value that a field's {@link graphql.schema.DataFetcher} returned + */ + default void onFetchedValue(Object fetchedValue) { + } + + @Internal + FieldFetchingInstrumentationContext NOOP = new FieldFetchingInstrumentationContext() { + @Override + public void onDispatched() { + } + + @Override + public void onCompleted(Object result, Throwable t) { + } + }; + + /** + * This creates a no-op {@link InstrumentationContext} if the one passed in is null + * + * @param nullableContext a {@link InstrumentationContext} that can be null + * @return a non-null {@link InstrumentationContext} that maybe a no-op + */ + @NonNull + @Internal + static FieldFetchingInstrumentationContext nonNullCtx(FieldFetchingInstrumentationContext nullableContext) { + return nullableContext == null ? NOOP : nullableContext; + } + + @Internal + static FieldFetchingInstrumentationContext adapter(@Nullable InstrumentationContext context) { + if (context == null) { + return null; + } + return new FieldFetchingInstrumentationContext() { + @Override + public void onDispatched() { + context.onDispatched(); + } + + @Override + public void onCompleted(Object result, Throwable t) { + context.onCompleted(result, t); + } + }; + } +} diff --git a/src/main/java/graphql/execution/instrumentation/Instrumentation.java b/src/main/java/graphql/execution/instrumentation/Instrumentation.java index 977422e565..714f96fe3c 100644 --- a/src/main/java/graphql/execution/instrumentation/Instrumentation.java +++ b/src/main/java/graphql/execution/instrumentation/Instrumentation.java @@ -17,8 +17,8 @@ import graphql.schema.DataFetcher; import graphql.schema.GraphQLSchema; import graphql.validation.ValidationError; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; +import org.jspecify.annotations.NonNull; +import org.jspecify.annotations.Nullable; import java.util.List; import java.util.concurrent.CompletableFuture; @@ -196,12 +196,36 @@ default InstrumentationContext beginFieldExecution(InstrumentationFieldP * @param state the state created during the call to {@link #createStateAsync(InstrumentationCreateStateParameters)} * * @return a nullable {@link InstrumentationContext} object that will be called back when the step ends (assuming it's not null) + * + * @deprecated use {@link #beginFieldFetching(InstrumentationFieldFetchParameters, InstrumentationState)} instead */ + @Deprecated(since = "2024-04-18") @Nullable default InstrumentationContext beginFieldFetch(InstrumentationFieldFetchParameters parameters, InstrumentationState state) { return noOp(); } + /** + * This is called just before a field {@link DataFetcher} is invoked. The {@link FieldFetchingInstrumentationContext#onFetchedValue(Object)} + * callback will be invoked once a value is returned by a {@link DataFetcher} but perhaps before + * its value is completed if it's a {@link CompletableFuture} value. + *

+ * This method is the replacement method for the now deprecated {@link #beginFieldFetch(InstrumentationFieldFetchParameters, InstrumentationState)} + * method, and it should be implemented in new {@link Instrumentation} classes. This default version of this + * method calls back to the deprecated {@link #beginFieldFetch(InstrumentationFieldFetchParameters, InstrumentationState)} method + * so that older implementations continue to work. + * + * @param parameters the parameters to this step + * @param state the state created during the call to {@link #createStateAsync(InstrumentationCreateStateParameters)} + * + * @return a nullable {@link InstrumentationContext} object that will be called back when the step ends (assuming it's not null) + */ + @Nullable + default FieldFetchingInstrumentationContext beginFieldFetching(InstrumentationFieldFetchParameters parameters, InstrumentationState state) { + InstrumentationContext ctx = beginFieldFetch(parameters, state); + return FieldFetchingInstrumentationContext.adapter(ctx); + } + /** * This is called just before the complete field is started. * @@ -238,7 +262,7 @@ default InstrumentationContext beginFieldListCompletion(InstrumentationF * * @return a non-null instrumented ExecutionInput, the default is to return to the same object */ - @NotNull + @NonNull default ExecutionInput instrumentExecutionInput(ExecutionInput executionInput, InstrumentationExecutionParameters parameters, InstrumentationState state) { return executionInput; } @@ -252,7 +276,7 @@ default ExecutionInput instrumentExecutionInput(ExecutionInput executionInput, I * * @return a non-null instrumented DocumentAndVariables, the default is to return to the same objects */ - @NotNull + @NonNull default DocumentAndVariables instrumentDocumentAndVariables(DocumentAndVariables documentAndVariables, InstrumentationExecutionParameters parameters, InstrumentationState state) { return documentAndVariables; } @@ -267,7 +291,7 @@ default DocumentAndVariables instrumentDocumentAndVariables(DocumentAndVariables * * @return a non-null instrumented GraphQLSchema, the default is to return to the same object */ - @NotNull + @NonNull default GraphQLSchema instrumentSchema(GraphQLSchema schema, InstrumentationExecutionParameters parameters, InstrumentationState state) { return schema; } @@ -282,7 +306,7 @@ default GraphQLSchema instrumentSchema(GraphQLSchema schema, InstrumentationExec * * @return a non-null instrumented ExecutionContext, the default is to return to the same object */ - @NotNull + @NonNull default ExecutionContext instrumentExecutionContext(ExecutionContext executionContext, InstrumentationExecutionParameters parameters, InstrumentationState state) { return executionContext; } @@ -299,7 +323,7 @@ default ExecutionContext instrumentExecutionContext(ExecutionContext executionCo * * @return a non-null instrumented DataFetcher, the default is to return to the same object */ - @NotNull + @NonNull default DataFetcher instrumentDataFetcher(DataFetcher dataFetcher, InstrumentationFieldFetchParameters parameters, InstrumentationState state) { return dataFetcher; } @@ -313,7 +337,7 @@ default DataFetcher instrumentDataFetcher(DataFetcher dataFetcher, Instrum * * @return a new execution result completable future */ - @NotNull + @NonNull default CompletableFuture instrumentExecutionResult(ExecutionResult executionResult, InstrumentationExecutionParameters parameters, InstrumentationState state) { return CompletableFuture.completedFuture(executionResult); } diff --git a/src/main/java/graphql/execution/instrumentation/NoContextChainedInstrumentation.java b/src/main/java/graphql/execution/instrumentation/NoContextChainedInstrumentation.java index 1928df84f0..89e91b6e50 100644 --- a/src/main/java/graphql/execution/instrumentation/NoContextChainedInstrumentation.java +++ b/src/main/java/graphql/execution/instrumentation/NoContextChainedInstrumentation.java @@ -11,7 +11,7 @@ import graphql.execution.instrumentation.parameters.InstrumentationValidationParameters; import graphql.language.Document; import graphql.validation.ValidationError; -import org.jetbrains.annotations.Nullable; +import org.jspecify.annotations.Nullable; import java.util.List; import java.util.function.BiConsumer; @@ -98,6 +98,11 @@ public InstrumentationContext beginFieldFetch(InstrumentationFieldFetchP return runAll(state, (instrumentation, specificState) -> instrumentation.beginFieldFetch(parameters, specificState)); } + @Override + public FieldFetchingInstrumentationContext beginFieldFetching(InstrumentationFieldFetchParameters parameters, InstrumentationState state) { + return runAll(state, (instrumentation, specificState) -> instrumentation.beginFieldFetching(parameters, specificState)); + } + @Override public @Nullable InstrumentationContext beginFieldCompletion(InstrumentationFieldCompleteParameters parameters, InstrumentationState state) { return runAll(state, (instrumentation, specificState) -> instrumentation.beginFieldCompletion(parameters, specificState)); diff --git a/src/main/java/graphql/execution/instrumentation/SimpleInstrumentationContext.java b/src/main/java/graphql/execution/instrumentation/SimpleInstrumentationContext.java index 68c70b214e..0abfc744d6 100644 --- a/src/main/java/graphql/execution/instrumentation/SimpleInstrumentationContext.java +++ b/src/main/java/graphql/execution/instrumentation/SimpleInstrumentationContext.java @@ -1,11 +1,9 @@ package graphql.execution.instrumentation; import graphql.PublicApi; -import org.jetbrains.annotations.NotNull; +import org.jspecify.annotations.NonNull; -import java.util.concurrent.CompletableFuture; import java.util.function.BiConsumer; -import java.util.function.Consumer; /** * A simple implementation of {@link InstrumentationContext} @@ -43,7 +41,7 @@ public static InstrumentationContext noOp() { * * @return a non null {@link InstrumentationContext} that maybe a no-op */ - @NotNull + @NonNull public static InstrumentationContext nonNullCtx(InstrumentationContext nullableContext) { return nullableContext == null ? noOp() : nullableContext; } diff --git a/src/main/java/graphql/execution/instrumentation/SimplePerformantInstrumentation.java b/src/main/java/graphql/execution/instrumentation/SimplePerformantInstrumentation.java index dfffa5b729..26f30714fa 100644 --- a/src/main/java/graphql/execution/instrumentation/SimplePerformantInstrumentation.java +++ b/src/main/java/graphql/execution/instrumentation/SimplePerformantInstrumentation.java @@ -16,13 +16,12 @@ import graphql.schema.DataFetcher; import graphql.schema.GraphQLSchema; import graphql.validation.ValidationError; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; +import org.jspecify.annotations.NonNull; +import org.jspecify.annotations.Nullable; import java.util.List; import java.util.concurrent.CompletableFuture; -import static graphql.Assert.assertShouldNeverHappen; import static graphql.execution.instrumentation.SimpleInstrumentationContext.noOp; /** @@ -102,7 +101,6 @@ public class SimplePerformantInstrumentation implements Instrumentation { return noOp(); } - @Override public @Nullable InstrumentationContext beginFieldCompletion(InstrumentationFieldCompleteParameters parameters, InstrumentationState state) { return noOp(); @@ -114,32 +112,32 @@ public class SimplePerformantInstrumentation implements Instrumentation { } @Override - public @NotNull ExecutionInput instrumentExecutionInput(ExecutionInput executionInput, InstrumentationExecutionParameters parameters, InstrumentationState state) { + public @NonNull ExecutionInput instrumentExecutionInput(ExecutionInput executionInput, InstrumentationExecutionParameters parameters, InstrumentationState state) { return executionInput; } @Override - public @NotNull DocumentAndVariables instrumentDocumentAndVariables(DocumentAndVariables documentAndVariables, InstrumentationExecutionParameters parameters, InstrumentationState state) { + public @NonNull DocumentAndVariables instrumentDocumentAndVariables(DocumentAndVariables documentAndVariables, InstrumentationExecutionParameters parameters, InstrumentationState state) { return documentAndVariables; } @Override - public @NotNull GraphQLSchema instrumentSchema(GraphQLSchema schema, InstrumentationExecutionParameters parameters, InstrumentationState state) { + public @NonNull GraphQLSchema instrumentSchema(GraphQLSchema schema, InstrumentationExecutionParameters parameters, InstrumentationState state) { return schema; } @Override - public @NotNull ExecutionContext instrumentExecutionContext(ExecutionContext executionContext, InstrumentationExecutionParameters parameters, InstrumentationState state) { + public @NonNull ExecutionContext instrumentExecutionContext(ExecutionContext executionContext, InstrumentationExecutionParameters parameters, InstrumentationState state) { return executionContext; } @Override - public @NotNull DataFetcher instrumentDataFetcher(DataFetcher dataFetcher, InstrumentationFieldFetchParameters parameters, InstrumentationState state) { + public @NonNull DataFetcher instrumentDataFetcher(DataFetcher dataFetcher, InstrumentationFieldFetchParameters parameters, InstrumentationState state) { return dataFetcher; } @Override - public @NotNull CompletableFuture instrumentExecutionResult(ExecutionResult executionResult, InstrumentationExecutionParameters parameters, InstrumentationState state) { + public @NonNull CompletableFuture instrumentExecutionResult(ExecutionResult executionResult, InstrumentationExecutionParameters parameters, InstrumentationState state) { return CompletableFuture.completedFuture(executionResult); } } diff --git a/src/main/java/graphql/execution/instrumentation/dataloader/DataLoaderDispatcherInstrumentation.java b/src/main/java/graphql/execution/instrumentation/dataloader/DataLoaderDispatcherInstrumentation.java deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/main/java/graphql/execution/instrumentation/dataloader/FallbackDataLoaderDispatchStrategy.java b/src/main/java/graphql/execution/instrumentation/dataloader/FallbackDataLoaderDispatchStrategy.java index dba4378046..f33657cb63 100644 --- a/src/main/java/graphql/execution/instrumentation/dataloader/FallbackDataLoaderDispatchStrategy.java +++ b/src/main/java/graphql/execution/instrumentation/dataloader/FallbackDataLoaderDispatchStrategy.java @@ -7,7 +7,7 @@ /** - * Used when the execution strategy is not an AsyncExecutionStrategy: simply dispatch always after each DF. + * Used when we cant guarantee the fields will be counted right: simply dispatch always after each DF. */ @Internal public class FallbackDataLoaderDispatchStrategy implements DataLoaderDispatchStrategy { diff --git a/src/main/java/graphql/execution/instrumentation/dataloader/PerLevelDataLoaderDispatchStrategy.java b/src/main/java/graphql/execution/instrumentation/dataloader/PerLevelDataLoaderDispatchStrategy.java index a407346954..0d1903eaab 100644 --- a/src/main/java/graphql/execution/instrumentation/dataloader/PerLevelDataLoaderDispatchStrategy.java +++ b/src/main/java/graphql/execution/instrumentation/dataloader/PerLevelDataLoaderDispatchStrategy.java @@ -6,7 +6,6 @@ import graphql.execution.ExecutionContext; import graphql.execution.ExecutionStrategyParameters; import graphql.execution.FieldValueInfo; -import graphql.execution.MergedField; import graphql.schema.DataFetcher; import graphql.util.LockKit; import org.dataloader.DataLoaderRegistry; @@ -27,55 +26,81 @@ private static class CallStack { private final LockKit.ReentrantLock lock = new LockKit.ReentrantLock(); private final LevelMap expectedFetchCountPerLevel = new LevelMap(); private final LevelMap fetchCountPerLevel = new LevelMap(); - private final LevelMap expectedStrategyCallsPerLevel = new LevelMap(); - private final LevelMap happenedStrategyCallsPerLevel = new LevelMap(); + + private final LevelMap expectedExecuteObjectCallsPerLevel = new LevelMap(); + private final LevelMap happenedExecuteObjectCallsPerLevel = new LevelMap(); + private final LevelMap happenedOnFieldValueCallsPerLevel = new LevelMap(); private final Set dispatchedLevels = new LinkedHashSet<>(); public CallStack() { - expectedStrategyCallsPerLevel.set(1, 1); + expectedExecuteObjectCallsPerLevel.set(1, 1); } void increaseExpectedFetchCount(int level, int count) { expectedFetchCountPerLevel.increment(level, count); } + void clearExpectedFetchCount() { + expectedFetchCountPerLevel.clear(); + } + void increaseFetchCount(int level) { fetchCountPerLevel.increment(level, 1); } - void increaseExpectedStrategyCalls(int level, int count) { - expectedStrategyCallsPerLevel.increment(level, count); + void clearFetchCount() { + fetchCountPerLevel.clear(); + } + + void increaseExpectedExecuteObjectCalls(int level, int count) { + expectedExecuteObjectCallsPerLevel.increment(level, count); } - void increaseHappenedStrategyCalls(int level) { - happenedStrategyCallsPerLevel.increment(level, 1); + void clearExpectedObjectCalls() { + expectedExecuteObjectCallsPerLevel.clear(); + } + + void increaseHappenedExecuteObjectCalls(int level) { + happenedExecuteObjectCallsPerLevel.increment(level, 1); + } + + void clearHappenedExecuteObjectCalls() { + happenedExecuteObjectCallsPerLevel.clear(); } void increaseHappenedOnFieldValueCalls(int level) { happenedOnFieldValueCallsPerLevel.increment(level, 1); } - boolean allStrategyCallsHappened(int level) { - return happenedStrategyCallsPerLevel.get(level) == expectedStrategyCallsPerLevel.get(level); + void clearHappenedOnFieldValueCalls() { + happenedOnFieldValueCallsPerLevel.clear(); + } + + boolean allExecuteObjectCallsHappened(int level) { + return happenedExecuteObjectCallsPerLevel.get(level) == expectedExecuteObjectCallsPerLevel.get(level); } boolean allOnFieldCallsHappened(int level) { - return happenedOnFieldValueCallsPerLevel.get(level) == expectedStrategyCallsPerLevel.get(level); + return happenedOnFieldValueCallsPerLevel.get(level) == expectedExecuteObjectCallsPerLevel.get(level); } boolean allFetchesHappened(int level) { return fetchCountPerLevel.get(level) == expectedFetchCountPerLevel.get(level); } + void clearDispatchLevels() { + dispatchedLevels.clear(); + } + @Override public String toString() { return "CallStack{" + "expectedFetchCountPerLevel=" + expectedFetchCountPerLevel + ", fetchCountPerLevel=" + fetchCountPerLevel + - ", expectedStrategyCallsPerLevel=" + expectedStrategyCallsPerLevel + - ", happenedStrategyCallsPerLevel=" + happenedStrategyCallsPerLevel + + ", expectedExecuteObjectCallsPerLevel=" + expectedExecuteObjectCallsPerLevel + + ", happenedExecuteObjectCallsPerLevel=" + happenedExecuteObjectCallsPerLevel + ", happenedOnFieldValueCallsPerLevel=" + happenedOnFieldValueCallsPerLevel + ", dispatchedLevels" + dispatchedLevels + '}'; @@ -98,26 +123,30 @@ public PerLevelDataLoaderDispatchStrategy(ExecutionContext executionContext) { } @Override - public void deferredField(ExecutionContext executionContext, MergedField currentField) { + public void executeDeferredOnFieldValueInfo(FieldValueInfo fieldValueInfo, ExecutionStrategyParameters executionStrategyParameters) { throw new UnsupportedOperationException("Data Loaders cannot be used to resolve deferred fields"); } @Override public void executionStrategy(ExecutionContext executionContext, ExecutionStrategyParameters parameters) { int curLevel = parameters.getExecutionStepInfo().getPath().getLevel() + 1; - increaseCallCounts(curLevel, parameters); + increaseHappenedExecuteObjectAndIncreaseExpectedFetchCount(curLevel, parameters); } @Override - public void executionStrategyOnFieldValuesInfo(List fieldValueInfoList, ExecutionStrategyParameters parameters) { - int curLevel = parameters.getPath().getLevel() + 1; - onFieldValuesInfoDispatchIfNeeded(fieldValueInfoList, curLevel, parameters); + public void executionSerialStrategy(ExecutionContext executionContext, ExecutionStrategyParameters parameters) { + resetCallStack(); + increaseHappenedExecuteObjectAndIncreaseExpectedFetchCount(1, 1); + } + + @Override + public void executionStrategyOnFieldValuesInfo(List fieldValueInfoList) { + onFieldValuesInfoDispatchIfNeeded(fieldValueInfoList, 1); } - public void executionStrategyOnFieldValuesException(Throwable t, ExecutionStrategyParameters executionStrategyParameters) { - int curLevel = executionStrategyParameters.getPath().getLevel() + 1; + public void executionStrategyOnFieldValuesException(Throwable t) { callStack.lock.runLocked(() -> - callStack.increaseHappenedOnFieldValueCalls(curLevel) + callStack.increaseHappenedOnFieldValueCalls(1) ); } @@ -125,13 +154,13 @@ public void executionStrategyOnFieldValuesException(Throwable t, ExecutionStrate @Override public void executeObject(ExecutionContext executionContext, ExecutionStrategyParameters parameters) { int curLevel = parameters.getExecutionStepInfo().getPath().getLevel() + 1; - increaseCallCounts(curLevel, parameters); + increaseHappenedExecuteObjectAndIncreaseExpectedFetchCount(curLevel, parameters); } @Override public void executeObjectOnFieldValuesInfo(List fieldValueInfoList, ExecutionStrategyParameters parameters) { int curLevel = parameters.getPath().getLevel() + 1; - onFieldValuesInfoDispatchIfNeeded(fieldValueInfoList, curLevel, parameters); + onFieldValuesInfoDispatchIfNeeded(fieldValueInfoList, curLevel); } @@ -143,16 +172,30 @@ public void executeObjectOnFieldValuesException(Throwable t, ExecutionStrategyPa ); } + private void increaseHappenedExecuteObjectAndIncreaseExpectedFetchCount(int curLevel, ExecutionStrategyParameters executionStrategyParameters) { + increaseHappenedExecuteObjectAndIncreaseExpectedFetchCount(curLevel, executionStrategyParameters.getFields().size()); + } - private void increaseCallCounts(int curLevel, ExecutionStrategyParameters executionStrategyParameters) { - int fieldCount = executionStrategyParameters.getFields().size(); + private void increaseHappenedExecuteObjectAndIncreaseExpectedFetchCount(int curLevel, int fieldCount) { callStack.lock.runLocked(() -> { + callStack.increaseHappenedExecuteObjectCalls(curLevel); callStack.increaseExpectedFetchCount(curLevel, fieldCount); - callStack.increaseHappenedStrategyCalls(curLevel); }); } - private void onFieldValuesInfoDispatchIfNeeded(List fieldValueInfoList, int curLevel, ExecutionStrategyParameters parameters) { + private void resetCallStack() { + callStack.lock.runLocked(() -> { + callStack.clearDispatchLevels(); + callStack.clearExpectedObjectCalls(); + callStack.clearExpectedFetchCount(); + callStack.clearFetchCount(); + callStack.clearHappenedExecuteObjectCalls(); + callStack.clearHappenedOnFieldValueCalls(); + callStack.expectedExecuteObjectCallsPerLevel.set(1, 1); + }); + } + + private void onFieldValuesInfoDispatchIfNeeded(List fieldValueInfoList, int curLevel) { boolean dispatchNeeded = callStack.lock.callLocked(() -> handleOnFieldValuesInfo(fieldValueInfoList, curLevel) ); @@ -166,18 +209,21 @@ private void onFieldValuesInfoDispatchIfNeeded(List fieldValueIn // private boolean handleOnFieldValuesInfo(List fieldValueInfos, int curLevel) { callStack.increaseHappenedOnFieldValueCalls(curLevel); - int expectedStrategyCalls = getCountForList(fieldValueInfos); - callStack.increaseExpectedStrategyCalls(curLevel + 1, expectedStrategyCalls); + int expectedOnObjectCalls = getObjectCountForList(fieldValueInfos); + callStack.increaseExpectedExecuteObjectCalls(curLevel + 1, expectedOnObjectCalls); return dispatchIfNeeded(curLevel + 1); } - private int getCountForList(List fieldValueInfos) { + /** + * the amount of (non nullable) objects that will require an execute object call + */ + private int getObjectCountForList(List fieldValueInfos) { int result = 0; for (FieldValueInfo fieldValueInfo : fieldValueInfos) { if (fieldValueInfo.getCompleteValueType() == FieldValueInfo.CompleteValueType.OBJECT) { result += 1; } else if (fieldValueInfo.getCompleteValueType() == FieldValueInfo.CompleteValueType.LIST) { - result += getCountForList(fieldValueInfo.getFieldValueInfos()); + result += getObjectCountForList(fieldValueInfo.getFieldValueInfos()); } } return result; @@ -221,7 +267,7 @@ private boolean levelReady(int level) { return callStack.allFetchesHappened(1); } if (levelReady(level - 1) && callStack.allOnFieldCallsHappened(level - 1) - && callStack.allStrategyCallsHappened(level) && callStack.allFetchesHappened(level)) { + && callStack.allExecuteObjectCallsHappened(level) && callStack.allFetchesHappened(level)) { return true; } diff --git a/src/main/java/graphql/execution/instrumentation/dataloader/PerLevelDataLoaderDispatchStrategyWithDeferAlwaysDispatch.java b/src/main/java/graphql/execution/instrumentation/dataloader/PerLevelDataLoaderDispatchStrategyWithDeferAlwaysDispatch.java new file mode 100644 index 0000000000..d7c84f4789 --- /dev/null +++ b/src/main/java/graphql/execution/instrumentation/dataloader/PerLevelDataLoaderDispatchStrategyWithDeferAlwaysDispatch.java @@ -0,0 +1,330 @@ +package graphql.execution.instrumentation.dataloader; + +import graphql.Assert; +import graphql.Internal; +import graphql.execution.DataLoaderDispatchStrategy; +import graphql.execution.ExecutionContext; +import graphql.execution.ExecutionStrategyParameters; +import graphql.execution.FieldValueInfo; +import graphql.execution.MergedField; +import graphql.schema.DataFetcher; +import graphql.util.LockKit; +import org.dataloader.DataLoaderRegistry; + +import java.util.LinkedHashSet; +import java.util.List; +import java.util.Set; +import java.util.concurrent.atomic.AtomicBoolean; + +/** + * The execution of a query can be divided into 2 phases: first, the non-deferred fields are executed and only once + * they are completely resolved, we start to execute the deferred fields. + * The behavior of this Data Loader strategy is quite different during those 2 phases. During the execution of the + * deferred fields the Data Loader will not attempt to dispatch in a optimal way. It will essentially dispatch for + * every field fetched, which is quite ineffective. + * This is the first iteration of the Data Loader strategy with support for @defer, and it will be improved in the + * future. + */ +@Internal +public class PerLevelDataLoaderDispatchStrategyWithDeferAlwaysDispatch implements DataLoaderDispatchStrategy { + + private final CallStack callStack; + private final ExecutionContext executionContext; + + /** + * This flag is used to determine if we have started the deferred execution. + * The value of this flag is set to true as soon as we identified that a deferred field is being executed, and then + * the flag stays on that state for the remainder of the execution. + */ + private final AtomicBoolean startedDeferredExecution = new AtomicBoolean(false); + + + private static class CallStack { + + private final LockKit.ReentrantLock lock = new LockKit.ReentrantLock(); + private final LevelMap expectedFetchCountPerLevel = new LevelMap(); + private final LevelMap fetchCountPerLevel = new LevelMap(); + + private final LevelMap expectedExecuteObjectCallsPerLevel = new LevelMap(); + private final LevelMap happenedExecuteObjectCallsPerLevel = new LevelMap(); + + private final LevelMap happenedOnFieldValueCallsPerLevel = new LevelMap(); + + private final Set dispatchedLevels = new LinkedHashSet<>(); + + public CallStack() { + expectedExecuteObjectCallsPerLevel.set(1, 1); + } + + void increaseExpectedFetchCount(int level, int count) { + expectedFetchCountPerLevel.increment(level, count); + } + + void clearExpectedFetchCount() { + expectedFetchCountPerLevel.clear(); + } + + void increaseFetchCount(int level) { + fetchCountPerLevel.increment(level, 1); + } + + void clearFetchCount() { + fetchCountPerLevel.clear(); + } + + void increaseExpectedExecuteObjectCalls(int level, int count) { + expectedExecuteObjectCallsPerLevel.increment(level, count); + } + + void clearExpectedObjectCalls() { + expectedExecuteObjectCallsPerLevel.clear(); + } + + void increaseHappenedExecuteObjectCalls(int level) { + happenedExecuteObjectCallsPerLevel.increment(level, 1); + } + + void clearHappenedExecuteObjectCalls() { + happenedExecuteObjectCallsPerLevel.clear(); + } + + void increaseHappenedOnFieldValueCalls(int level) { + happenedOnFieldValueCallsPerLevel.increment(level, 1); + } + + void clearHappenedOnFieldValueCalls() { + happenedOnFieldValueCallsPerLevel.clear(); + } + + boolean allExecuteObjectCallsHappened(int level) { + return happenedExecuteObjectCallsPerLevel.get(level) == expectedExecuteObjectCallsPerLevel.get(level); + } + + boolean allOnFieldCallsHappened(int level) { + return happenedOnFieldValueCallsPerLevel.get(level) == expectedExecuteObjectCallsPerLevel.get(level); + } + + boolean allFetchesHappened(int level) { + return fetchCountPerLevel.get(level) == expectedFetchCountPerLevel.get(level); + } + + void clearDispatchLevels() { + dispatchedLevels.clear(); + } + + @Override + public String toString() { + return "CallStack{" + + "expectedFetchCountPerLevel=" + expectedFetchCountPerLevel + + ", fetchCountPerLevel=" + fetchCountPerLevel + + ", expectedExecuteObjectCallsPerLevel=" + expectedExecuteObjectCallsPerLevel + + ", happenedExecuteObjectCallsPerLevel=" + happenedExecuteObjectCallsPerLevel + + ", happenedOnFieldValueCallsPerLevel=" + happenedOnFieldValueCallsPerLevel + + ", dispatchedLevels" + dispatchedLevels + + '}'; + } + + + public boolean dispatchIfNotDispatchedBefore(int level) { + if (dispatchedLevels.contains(level)) { + Assert.assertShouldNeverHappen("level " + level + " already dispatched"); + return false; + } + dispatchedLevels.add(level); + return true; + } + } + + public PerLevelDataLoaderDispatchStrategyWithDeferAlwaysDispatch(ExecutionContext executionContext) { + this.callStack = new CallStack(); + this.executionContext = executionContext; + } + + @Override + public void executeDeferredOnFieldValueInfo(FieldValueInfo fieldValueInfo, ExecutionStrategyParameters executionStrategyParameters) { + this.startedDeferredExecution.set(true); + } + + @Override + public void executionStrategy(ExecutionContext executionContext, ExecutionStrategyParameters parameters) { + if (this.startedDeferredExecution.get()) { + return; + } + int curLevel = parameters.getExecutionStepInfo().getPath().getLevel() + 1; + increaseHappenedExecuteObjectAndIncreaseExpectedFetchCount(curLevel, parameters); + + } + + @Override + public void executionSerialStrategy(ExecutionContext executionContext, ExecutionStrategyParameters parameters) { + resetCallStack(); + increaseHappenedExecuteObjectAndIncreaseExpectedFetchCount(1, 1); + } + + @Override + public void executionStrategyOnFieldValuesInfo(List fieldValueInfoList) { + if (this.startedDeferredExecution.get()) { + this.dispatch(); + } + onFieldValuesInfoDispatchIfNeeded(fieldValueInfoList, 1); + } + + public void executionStrategyOnFieldValuesException(Throwable t) { + callStack.lock.runLocked(() -> + callStack.increaseHappenedOnFieldValueCalls(1) + ); + } + + + @Override + public void executeObject(ExecutionContext executionContext, ExecutionStrategyParameters parameters) { + if (this.startedDeferredExecution.get()) { + return; + } + int curLevel = parameters.getExecutionStepInfo().getPath().getLevel() + 1; + increaseHappenedExecuteObjectAndIncreaseExpectedFetchCount(curLevel, parameters); + } + + + + @Override + public void executeObjectOnFieldValuesInfo(List fieldValueInfoList, ExecutionStrategyParameters parameters) { + if (this.startedDeferredExecution.get()) { + this.dispatch(); + } + int curLevel = parameters.getPath().getLevel() + 1; + onFieldValuesInfoDispatchIfNeeded(fieldValueInfoList, curLevel); + } + + + @Override + public void executeObjectOnFieldValuesException(Throwable t, ExecutionStrategyParameters parameters) { + int curLevel = parameters.getPath().getLevel() + 1; + callStack.lock.runLocked(() -> + callStack.increaseHappenedOnFieldValueCalls(curLevel) + ); + } + + private void increaseHappenedExecuteObjectAndIncreaseExpectedFetchCount(int curLevel, ExecutionStrategyParameters parameters) { + int nonDeferredFields = 0; + for (MergedField field : parameters.getFields().getSubFieldsList()) { + if (!field.isDeferred()) { + nonDeferredFields++; + } + } + increaseHappenedExecuteObjectAndIncreaseExpectedFetchCount(curLevel, nonDeferredFields); + } + + private void increaseHappenedExecuteObjectAndIncreaseExpectedFetchCount(int curLevel, int fieldCount) { + callStack.lock.runLocked(() -> { + callStack.increaseHappenedExecuteObjectCalls(curLevel); + callStack.increaseExpectedFetchCount(curLevel, fieldCount); + }); + } + + private void resetCallStack() { + callStack.lock.runLocked(() -> { + callStack.clearDispatchLevels(); + callStack.clearExpectedObjectCalls(); + callStack.clearExpectedFetchCount(); + callStack.clearFetchCount(); + callStack.clearHappenedExecuteObjectCalls(); + callStack.clearHappenedOnFieldValueCalls(); + callStack.expectedExecuteObjectCallsPerLevel.set(1, 1); + }); + } + private void onFieldValuesInfoDispatchIfNeeded(List fieldValueInfoList, int curLevel) { + boolean dispatchNeeded = callStack.lock.callLocked(() -> + handleOnFieldValuesInfo(fieldValueInfoList, curLevel) + ); + if (dispatchNeeded) { + dispatch(); + } + } + + // + // thread safety: called with callStack.lock + // + private boolean handleOnFieldValuesInfo(List fieldValueInfos, int curLevel) { + callStack.increaseHappenedOnFieldValueCalls(curLevel); + int expectedStrategyCalls = getObjectCountForList(fieldValueInfos); + callStack.increaseExpectedExecuteObjectCalls(curLevel + 1, expectedStrategyCalls); + return dispatchIfNeeded(curLevel + 1); + } + + /** + * the amount of (non nullable) objects that will require an execute object call + */ + private int getObjectCountForList(List fieldValueInfos) { + int result = 0; + for (FieldValueInfo fieldValueInfo : fieldValueInfos) { + if (fieldValueInfo.getCompleteValueType() == FieldValueInfo.CompleteValueType.OBJECT) { + result += 1; + } else if (fieldValueInfo.getCompleteValueType() == FieldValueInfo.CompleteValueType.LIST) { + result += getObjectCountForList(fieldValueInfo.getFieldValueInfos()); + } + } + return result; + } + + + @Override + public void fieldFetched(ExecutionContext executionContext, + ExecutionStrategyParameters executionStrategyParameters, + DataFetcher dataFetcher, + Object fetchedValue) { + + final boolean dispatchNeeded; + + if (executionStrategyParameters.getField().isDeferred() || this.startedDeferredExecution.get()) { + this.startedDeferredExecution.set(true); + dispatchNeeded = true; + } else { + int level = executionStrategyParameters.getPath().getLevel(); + dispatchNeeded = callStack.lock.callLocked(() -> { + callStack.increaseFetchCount(level); + return dispatchIfNeeded(level); + }); + } + + if (dispatchNeeded) { + dispatch(); + } + + } + + + // + // thread safety : called with callStack.lock + // + private boolean dispatchIfNeeded(int level) { + boolean ready = levelReady(level); + if (ready) { + return callStack.dispatchIfNotDispatchedBefore(level); + } + return false; + } + + // + // thread safety: called with callStack.lock + // + private boolean levelReady(int level) { + if (level == 1) { + // level 1 is special: there is only one strategy call and that's it + return callStack.allFetchesHappened(1); + } + if (levelReady(level - 1) && callStack.allOnFieldCallsHappened(level - 1) + && callStack.allExecuteObjectCallsHappened(level) && callStack.allFetchesHappened(level)) { + + return true; + } + return false; + } + + void dispatch() { + DataLoaderRegistry dataLoaderRegistry = executionContext.getDataLoaderRegistry(); + dataLoaderRegistry.dispatchAll(); + } + +} + diff --git a/src/main/java/graphql/execution/instrumentation/fieldvalidation/FieldValidationInstrumentation.java b/src/main/java/graphql/execution/instrumentation/fieldvalidation/FieldValidationInstrumentation.java index d1f30fbfbd..408fd261be 100644 --- a/src/main/java/graphql/execution/instrumentation/fieldvalidation/FieldValidationInstrumentation.java +++ b/src/main/java/graphql/execution/instrumentation/fieldvalidation/FieldValidationInstrumentation.java @@ -8,7 +8,7 @@ import graphql.execution.instrumentation.InstrumentationState; import graphql.execution.instrumentation.SimplePerformantInstrumentation; import graphql.execution.instrumentation.parameters.InstrumentationExecuteOperationParameters; -import org.jetbrains.annotations.Nullable; +import org.jspecify.annotations.Nullable; import java.util.List; diff --git a/src/main/java/graphql/execution/instrumentation/fieldvalidation/FieldValidationSupport.java b/src/main/java/graphql/execution/instrumentation/fieldvalidation/FieldValidationSupport.java index 888a012cc4..454fb30677 100644 --- a/src/main/java/graphql/execution/instrumentation/fieldvalidation/FieldValidationSupport.java +++ b/src/main/java/graphql/execution/instrumentation/fieldvalidation/FieldValidationSupport.java @@ -7,6 +7,7 @@ import graphql.analysis.QueryTraverser; import graphql.analysis.QueryVisitorFieldEnvironment; import graphql.analysis.QueryVisitorStub; +import graphql.collect.ImmutableKit; import graphql.execution.ExecutionContext; import graphql.execution.ResultPath; import graphql.language.Field; @@ -140,7 +141,7 @@ private static class FieldValidationEnvironmentImpl implements FieldValidationEn FieldValidationEnvironmentImpl(ExecutionContext executionContext, Map> fieldArgumentsMap) { this.executionContext = executionContext; this.fieldArgumentsMap = fieldArgumentsMap; - this.fieldArguments = fieldArgumentsMap.values().stream().flatMap(List::stream).collect(ImmutableList.toImmutableList()); + this.fieldArguments = ImmutableKit.flatMapList(fieldArgumentsMap.values()); } diff --git a/src/main/java/graphql/execution/instrumentation/threadpools/ExecutorInstrumentation.java b/src/main/java/graphql/execution/instrumentation/threadpools/ExecutorInstrumentation.java deleted file mode 100644 index af210df041..0000000000 --- a/src/main/java/graphql/execution/instrumentation/threadpools/ExecutorInstrumentation.java +++ /dev/null @@ -1,166 +0,0 @@ -package graphql.execution.instrumentation.threadpools; - -import com.google.common.annotations.Beta; -import graphql.Assert; -import graphql.Internal; -import graphql.TrivialDataFetcher; -import graphql.execution.Async; -import graphql.execution.instrumentation.InstrumentationState; -import graphql.execution.instrumentation.SimplePerformantInstrumentation; -import graphql.execution.instrumentation.parameters.InstrumentationFieldFetchParameters; -import graphql.schema.DataFetcher; -import graphql.schema.DataFetchingEnvironment; -import org.jetbrains.annotations.NotNull; - -import java.util.concurrent.CompletableFuture; -import java.util.concurrent.CompletionStage; -import java.util.concurrent.Executor; -import java.util.function.Consumer; -import java.util.function.Function; -import java.util.function.Supplier; - -import static graphql.execution.instrumentation.threadpools.ExecutorInstrumentation.Action.FETCHING; -import static graphql.execution.instrumentation.threadpools.ExecutorInstrumentation.Action.PROCESSING; - -/** - * This instrumentation can be used to control on what thread calls to {@link DataFetcher}s happen on. - *

- * If your data fetching is inherently IO bound then you could use a IO oriented thread pool for your fetches and transfer control - * back to a CPU oriented thread pool and allow graphql-java code to run the post-processing of results there. - *

- * An IO oriented thread pool is typically a multiple of {@link Runtime#availableProcessors()} while a CPU oriented thread pool - * is typically no more than {@link Runtime#availableProcessors()}. - *

- * The instrumentation will use the {@link graphql.execution.instrumentation.Instrumentation#instrumentDataFetcher(DataFetcher, InstrumentationFieldFetchParameters, InstrumentationState)} - * method to change your data fetchers, so they are executed on a thread pool dedicated to fetching (if you provide one). - *

- * Once the data fetcher value is returns it will transfer control back to a processing thread pool (if you provide one). - *

- * This code uses {@link CompletableFuture#supplyAsync(Supplier, Executor)} and {@link CompletableFuture#thenApplyAsync(Function, Executor)} to transfer - * control between thread pools. - */ -@Internal -@Beta -public class ExecutorInstrumentation extends SimplePerformantInstrumentation { - - private static final Consumer NOOP = a -> { - }; - - /** - * This describes what action is currently being done. This is mostly intended for testing. - */ - enum Action {FETCHING, PROCESSING} - - private final Executor fetchExecutor; - private final Executor processingExecutor; - private final Consumer actionObserver; - - private ExecutorInstrumentation(Executor fetchExecutor, Executor processingExecutor, Consumer actionObserver) { - this.fetchExecutor = fetchExecutor; - this.processingExecutor = processingExecutor; - this.actionObserver = actionObserver; - } - - public Executor getFetchExecutor() { - return fetchExecutor; - } - - public Executor getProcessingExecutor() { - return processingExecutor; - } - - public static Builder newThreadPoolExecutionInstrumentation() { - return new Builder(); - } - - public static class Builder { - Executor fetchExecutor; - Executor processingExecutor; - private Consumer actionObserver; - - public Builder fetchExecutor(Executor fetchExecutor) { - this.fetchExecutor = fetchExecutor; - return this; - } - - public Builder processingExecutor(Executor processingExecutor) { - this.processingExecutor = processingExecutor; - return this; - } - - /** - * This is really intended for testing but this consumer will be called during - * stages to indicate what is happening. - * - * @param actionObserver the observer code - * - * @return this builder - */ - public Builder actionObserver(Consumer actionObserver) { - this.actionObserver = Assert.assertNotNull(actionObserver); - return this; - } - - public ExecutorInstrumentation build() { - return new ExecutorInstrumentation(fetchExecutor, processingExecutor, actionObserver != null ? actionObserver : NOOP); - } - - } - - @Override - public @NotNull DataFetcher instrumentDataFetcher(DataFetcher originalDataFetcher, InstrumentationFieldFetchParameters parameters, InstrumentationState state) { - if (originalDataFetcher instanceof TrivialDataFetcher) { - return originalDataFetcher; - } - return environment -> { - CompletableFuture> invokedCF; - if (fetchExecutor != null) { - // run the fetch asynchronously via the fetch executor - // the CF will be left running on that fetch executors thread - invokedCF = CompletableFuture.supplyAsync(invokedAsync(originalDataFetcher, environment), fetchExecutor); - } else { - invokedCF = invokedSync(originalDataFetcher, environment); - } - if (processingExecutor != null) { - invokedCF = invokedCF.thenApplyAsync(processingControl(), processingExecutor); - } else { - invokedCF = invokedCF.thenApply(processingControl()); - } - return invokedCF.thenCompose(cs -> cs); - }; - } - - - private Supplier> invokedAsync(DataFetcher originalDataFetcher, DataFetchingEnvironment environment) { - return () -> { - actionObserver.accept(FETCHING); - return invokeOriginalDF(originalDataFetcher, environment); - }; - } - - private CompletableFuture> invokedSync(DataFetcher originalDataFetcher, DataFetchingEnvironment environment) { - actionObserver.accept(FETCHING); - return CompletableFuture.completedFuture(invokeOriginalDF(originalDataFetcher, environment)); - } - - private Function, CompletionStage> processingControl() { - return completionStage -> { - actionObserver.accept(PROCESSING); - return completionStage; - }; - } - - private CompletionStage invokeOriginalDF(DataFetcher originalDataFetcher, DataFetchingEnvironment environment) { - Object value; - try { - value = originalDataFetcher.get(environment); - } catch (Exception e) { - return Async.exceptionallyCompletedFuture(e); - } - if (value instanceof CompletionStage) { - return ((CompletionStage) value); - } else { - return CompletableFuture.completedFuture(value); - } - } -} diff --git a/src/main/java/graphql/execution/instrumentation/tracing/TracingInstrumentation.java b/src/main/java/graphql/execution/instrumentation/tracing/TracingInstrumentation.java index daa67d4ea7..ed18f68ab8 100644 --- a/src/main/java/graphql/execution/instrumentation/tracing/TracingInstrumentation.java +++ b/src/main/java/graphql/execution/instrumentation/tracing/TracingInstrumentation.java @@ -14,8 +14,8 @@ import graphql.execution.instrumentation.parameters.InstrumentationValidationParameters; import graphql.language.Document; import graphql.validation.ValidationError; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; +import org.jspecify.annotations.NonNull; +import org.jspecify.annotations.Nullable; import java.util.LinkedHashMap; import java.util.List; @@ -77,7 +77,7 @@ public TracingInstrumentation(Options options) { } @Override - public @NotNull CompletableFuture instrumentExecutionResult(ExecutionResult executionResult, InstrumentationExecutionParameters parameters, InstrumentationState rawState) { + public @NonNull CompletableFuture instrumentExecutionResult(ExecutionResult executionResult, InstrumentationExecutionParameters parameters, InstrumentationState rawState) { Map currentExt = executionResult.getExtensions(); TracingSupport tracingSupport = ofState(rawState); diff --git a/src/main/java/graphql/execution/reactive/CompletionStageMappingOrderedPublisher.java b/src/main/java/graphql/execution/reactive/CompletionStageMappingOrderedPublisher.java new file mode 100644 index 0000000000..91915c450e --- /dev/null +++ b/src/main/java/graphql/execution/reactive/CompletionStageMappingOrderedPublisher.java @@ -0,0 +1,36 @@ +package graphql.execution.reactive; + +import graphql.Internal; +import org.jspecify.annotations.NonNull; +import org.reactivestreams.Publisher; +import org.reactivestreams.Subscriber; + +import java.util.concurrent.CompletionStage; +import java.util.function.Function; + +/** + * A reactive Publisher that bridges over another Publisher of `D` and maps the results + * to type `U` via a CompletionStage, handling errors in that stage but keeps the results + * in order of downstream publishing. This means it must queue unfinished + * completion stages in memory in arrival order. + * + * @param the downstream type + * @param the upstream type to be mapped to + */ +@Internal +public class CompletionStageMappingOrderedPublisher extends CompletionStageMappingPublisher { + /** + * You need the following : + * + * @param upstreamPublisher an upstream source of data + * @param mapper a mapper function that turns upstream data into a promise of mapped D downstream data + */ + public CompletionStageMappingOrderedPublisher(Publisher upstreamPublisher, Function> mapper) { + super(upstreamPublisher, mapper); + } + + @Override + protected @NonNull Subscriber createSubscriber(Subscriber downstreamSubscriber) { + return new CompletionStageOrderedSubscriber<>(mapper, downstreamSubscriber); + } +} diff --git a/src/main/java/graphql/execution/reactive/CompletionStageMappingPublisher.java b/src/main/java/graphql/execution/reactive/CompletionStageMappingPublisher.java index 18bfabbc6c..824e9e0840 100644 --- a/src/main/java/graphql/execution/reactive/CompletionStageMappingPublisher.java +++ b/src/main/java/graphql/execution/reactive/CompletionStageMappingPublisher.java @@ -1,31 +1,26 @@ package graphql.execution.reactive; import graphql.Internal; -import graphql.util.LockKit; +import org.jspecify.annotations.NonNull; import org.reactivestreams.Publisher; import org.reactivestreams.Subscriber; -import org.reactivestreams.Subscription; -import java.util.ArrayDeque; -import java.util.Queue; import java.util.concurrent.CompletionStage; -import java.util.concurrent.atomic.AtomicBoolean; -import java.util.concurrent.atomic.AtomicReference; -import java.util.function.BiConsumer; import java.util.function.Function; +import static graphql.Assert.assertNotNullWithNPE; + /** * A reactive Publisher that bridges over another Publisher of `D` and maps the results * to type `U` via a CompletionStage, handling errors in that stage * - * @param the down stream type - * @param the up stream type to be mapped to + * @param the downstream type + * @param the upstream type to be mapped to */ -@SuppressWarnings("ReactiveStreamsPublisherImplementation") @Internal public class CompletionStageMappingPublisher implements Publisher { - private final Publisher upstreamPublisher; - private final Function> mapper; + protected final Publisher upstreamPublisher; + protected final Function> mapper; /** * You need the following : @@ -40,9 +35,16 @@ public CompletionStageMappingPublisher(Publisher upstreamPublisher, Function< @Override public void subscribe(Subscriber downstreamSubscriber) { - upstreamPublisher.subscribe(new CompletionStageSubscriber(downstreamSubscriber)); + assertNotNullWithNPE(downstreamSubscriber, () -> "Subscriber passed to subscribe must not be null"); + upstreamPublisher.subscribe(createSubscriber(downstreamSubscriber)); + } + + @NonNull + protected Subscriber createSubscriber(Subscriber downstreamSubscriber) { + return new CompletionStageSubscriber<>(mapper, downstreamSubscriber); } + /** * Get instance of an upstreamPublisher * @@ -52,126 +54,4 @@ public Publisher getUpstreamPublisher() { return upstreamPublisher; } - @SuppressWarnings("ReactiveStreamsSubscriberImplementation") - @Internal - public class CompletionStageSubscriber implements Subscriber { - private final Subscriber downstreamSubscriber; - Subscription delegatingSubscription; - final Queue> inFlightDataQ; - final LockKit.ReentrantLock lock = new LockKit.ReentrantLock(); - final AtomicReference onCompleteOrErrorRun; - final AtomicBoolean onCompleteOrErrorRunCalled; - - public CompletionStageSubscriber(Subscriber downstreamSubscriber) { - this.downstreamSubscriber = downstreamSubscriber; - inFlightDataQ = new ArrayDeque<>(); - onCompleteOrErrorRun = new AtomicReference<>(); - onCompleteOrErrorRunCalled = new AtomicBoolean(false); - } - - - @Override - public void onSubscribe(Subscription subscription) { - delegatingSubscription = new DelegatingSubscription(subscription); - downstreamSubscriber.onSubscribe(delegatingSubscription); - } - - @Override - public void onNext(U u) { - // for safety - no more data after we have called done/error - we should not get this BUT belts and braces - if (onCompleteOrErrorRunCalled.get()) { - return; - } - try { - CompletionStage completionStage = mapper.apply(u); - offerToInFlightQ(completionStage); - completionStage.whenComplete(whenNextFinished(completionStage)); - } catch (RuntimeException throwable) { - handleThrowable(throwable); - } - } - - private BiConsumer whenNextFinished(CompletionStage completionStage) { - return (d, throwable) -> { - try { - if (throwable != null) { - handleThrowable(throwable); - } else { - downstreamSubscriber.onNext(d); - } - } finally { - Runnable runOnCompleteOrErrorRun = onCompleteOrErrorRun.get(); - boolean empty = removeFromInFlightQAndCheckIfEmpty(completionStage); - if (empty && runOnCompleteOrErrorRun != null) { - onCompleteOrErrorRun.set(null); - runOnCompleteOrErrorRun.run(); - } - } - }; - } - - private void handleThrowable(Throwable throwable) { - downstreamSubscriber.onError(throwable); - // - // reactive semantics say that IF an exception happens on a publisher - // then onError is called and no more messages flow. But since the exception happened - // during the mapping, the upstream publisher does not no about this. - // so we cancel to bring the semantics back together, that is as soon as an exception - // has happened, no more messages flow - // - delegatingSubscription.cancel(); - } - - @Override - public void onError(Throwable t) { - onCompleteOrError(() -> { - onCompleteOrErrorRunCalled.set(true); - downstreamSubscriber.onError(t); - }); - } - - @Override - public void onComplete() { - onCompleteOrError(() -> { - onCompleteOrErrorRunCalled.set(true); - downstreamSubscriber.onComplete(); - }); - } - - /** - * Get instance of downstream subscriber - * - * @return {@link Subscriber} - */ - public Subscriber getDownstreamSubscriber() { - return downstreamSubscriber; - } - - private void onCompleteOrError(Runnable doneCodeToRun) { - if (inFlightQIsEmpty()) { - // run right now - doneCodeToRun.run(); - } else { - onCompleteOrErrorRun.set(doneCodeToRun); - } - } - - private void offerToInFlightQ(CompletionStage completionStage) { - lock.runLocked(() -> - inFlightDataQ.offer(completionStage) - ); - } - - private boolean removeFromInFlightQAndCheckIfEmpty(CompletionStage completionStage) { - // uncontested locks in java are cheap - we don't expect much contention here - return lock.callLocked(() -> { - inFlightDataQ.remove(completionStage); - return inFlightDataQ.isEmpty(); - }); - } - - private boolean inFlightQIsEmpty() { - return lock.callLocked(inFlightDataQ::isEmpty); - } - } } diff --git a/src/main/java/graphql/execution/reactive/CompletionStageOrderedSubscriber.java b/src/main/java/graphql/execution/reactive/CompletionStageOrderedSubscriber.java new file mode 100644 index 0000000000..53a8dd4719 --- /dev/null +++ b/src/main/java/graphql/execution/reactive/CompletionStageOrderedSubscriber.java @@ -0,0 +1,84 @@ +package graphql.execution.reactive; + +import graphql.Internal; +import org.reactivestreams.Subscriber; + +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.CompletionException; +import java.util.concurrent.CompletionStage; +import java.util.function.Function; + +/** + * This subscriber can be used to map between a {@link org.reactivestreams.Publisher} of U + * elements and map them into {@link CompletionStage} of D promises, and it keeps them in the order + * the Publisher provided them. + * + * @param published upstream elements + * @param mapped downstream values + */ +@Internal +public class CompletionStageOrderedSubscriber extends CompletionStageSubscriber implements Subscriber { + + public CompletionStageOrderedSubscriber(Function> mapper, Subscriber downstreamSubscriber) { + super(mapper, downstreamSubscriber); + } + + @Override + protected void whenNextFinished(CompletionStage completionStage, D d, Throwable throwable) { + try { + if (throwable != null) { + handleThrowableDuringMapping(throwable); + } else { + emptyInFlightQueueIfWeCan(); + } + } finally { + boolean empty = inFlightQIsEmpty(); + finallyAfterEachPromiseFinishes(empty); + } + } + + private void emptyInFlightQueueIfWeCan() { + // done inside a memory lock, so we cant offer new CFs to the queue + // until we have processed any completed ones from the start of + // the queue. + lock.runLocked(() -> { + // + // from the top of the in flight queue, take all the CFs that have + // completed... but stop if they are not done + while (!inFlightDataQ.isEmpty()) { + CompletionStage cs = inFlightDataQ.peek(); + if (cs != null) { + // + CompletableFuture cf = cs.toCompletableFuture(); + if (cf.isDone()) { + // take it off the queue + inFlightDataQ.poll(); + D value; + try { + //noinspection unchecked + value = (D) cf.join(); + } catch (RuntimeException rte) { + // + // if we get an exception while joining on a value, we + // send it into the exception handling and break out + handleThrowableDuringMapping(cfExceptionUnwrap(rte)); + break; + } + downstreamSubscriber.onNext(value); + } else { + // if the CF is not done, then we have to stop processing + // to keep the results in order inside the inFlightQueue + break; + } + } + } + }); + } + + private Throwable cfExceptionUnwrap(Throwable throwable) { + if (throwable instanceof CompletionException & throwable.getCause() != null) { + return throwable.getCause(); + } + return throwable; + } +} diff --git a/src/main/java/graphql/execution/reactive/CompletionStageSubscriber.java b/src/main/java/graphql/execution/reactive/CompletionStageSubscriber.java new file mode 100644 index 0000000000..b185ce9bba --- /dev/null +++ b/src/main/java/graphql/execution/reactive/CompletionStageSubscriber.java @@ -0,0 +1,201 @@ +package graphql.execution.reactive; + +import graphql.Internal; +import graphql.util.LockKit; +import org.jspecify.annotations.NonNull; +import org.reactivestreams.Subscriber; +import org.reactivestreams.Subscription; + +import java.util.ArrayDeque; +import java.util.Queue; +import java.util.concurrent.CompletionStage; +import java.util.concurrent.atomic.AtomicBoolean; +import java.util.concurrent.atomic.AtomicReference; +import java.util.function.BiConsumer; +import java.util.function.Function; + +/** + * This subscriber can be used to map between a {@link org.reactivestreams.Publisher} of U + * elements and map them into {@link CompletionStage} of D promises. + * + * @param published upstream elements + * @param mapped downstream values + */ +@Internal +public class CompletionStageSubscriber implements Subscriber { + protected final Function> mapper; + protected final Subscriber downstreamSubscriber; + protected Subscription delegatingSubscription; + protected final Queue> inFlightDataQ; + protected final LockKit.ReentrantLock lock = new LockKit.ReentrantLock(); + protected final AtomicReference onCompleteRun; + protected final AtomicBoolean isTerminal; + + public CompletionStageSubscriber(Function> mapper, Subscriber downstreamSubscriber) { + this.mapper = mapper; + this.downstreamSubscriber = downstreamSubscriber; + inFlightDataQ = new ArrayDeque<>(); + onCompleteRun = new AtomicReference<>(); + isTerminal = new AtomicBoolean(false); + } + + /** + * Get instance of downstream subscriber + * + * @return {@link Subscriber} + */ + public Subscriber getDownstreamSubscriber() { + return downstreamSubscriber; + } + + @Override + public void onSubscribe(Subscription subscription) { + delegatingSubscription = new DelegatingSubscription(subscription); + downstreamSubscriber.onSubscribe(delegatingSubscription); + } + + @Override + public void onNext(U u) { + // for safety - no more data after we have called done/error - we should not get this BUT belts and braces + if (isTerminal()) { + return; + } + try { + CompletionStage completionStage = mapper.apply(u); + offerToInFlightQ(completionStage); + completionStage.whenComplete(whenComplete(completionStage)); + } catch (RuntimeException throwable) { + handleThrowableDuringMapping(throwable); + } + } + + @NonNull + private BiConsumer whenComplete(CompletionStage completionStage) { + return (d, throwable) -> { + if (isTerminal()) { + return; + } + whenNextFinished(completionStage, d, throwable); + }; + } + + /** + * This is called as each mapped {@link CompletionStage} completes with + * a value or exception + * + * @param completionStage the completion stage that has completed + * @param d the value completed + * @param throwable or the throwable that happened during completion + */ + protected void whenNextFinished(CompletionStage completionStage, D d, Throwable throwable) { + try { + if (throwable != null) { + handleThrowableDuringMapping(throwable); + } else { + downstreamSubscriber.onNext(d); + } + } finally { + boolean empty = removeFromInFlightQAndCheckIfEmpty(completionStage); + finallyAfterEachPromiseFinishes(empty); + } + } + + protected void finallyAfterEachPromiseFinishes(boolean isInFlightEmpty) { + // + // if the runOnCompleteOrErrorRun runnable is set, the upstream has + // called onComplete() already, but the CFs have not all completed + // yet, so we have to check whenever a CF completes + // + Runnable runOnCompleteOrErrorRun = onCompleteRun.get(); + if (isInFlightEmpty && runOnCompleteOrErrorRun != null) { + onCompleteRun.set(null); + runOnCompleteOrErrorRun.run(); + } + } + + protected void handleThrowableDuringMapping(Throwable throwable) { + // only do this once + if (isTerminal.compareAndSet(false, true)) { + downstreamSubscriber.onError(throwable); + // + // Reactive semantics say that IF an exception happens on a publisher, + // then onError is called and no more messages flow. But since the exception happened + // during the mapping, the upstream publisher does not know about this. + // So we cancel to bring the semantics back together, that is as soon as an exception + // has happened, no more messages flow + // + delegatingSubscription.cancel(); + + cancelInFlightFutures(); + } + } + + @Override + public void onError(Throwable t) { + // we immediately terminate - we don't wait for any promises to complete + if (isTerminal.compareAndSet(false, true)) { + downstreamSubscriber.onError(t); + cancelInFlightFutures(); + } + } + + @Override + public void onComplete() { + onComplete(() -> { + if (isTerminal.compareAndSet(false, true)) { + downstreamSubscriber.onComplete(); + } + }); + } + + private void onComplete(Runnable doneCodeToRun) { + if (inFlightQIsEmpty()) { + // run right now + doneCodeToRun.run(); + } else { + onCompleteRun.set(doneCodeToRun); + } + } + + protected void offerToInFlightQ(CompletionStage completionStage) { + lock.runLocked(() -> + inFlightDataQ.offer(completionStage) + ); + } + + private boolean removeFromInFlightQAndCheckIfEmpty(CompletionStage completionStage) { + // uncontested locks in java are cheap - we don't expect much contention here + return lock.callLocked(() -> { + inFlightDataQ.remove(completionStage); + return inFlightDataQ.isEmpty(); + }); + } + + /** + * If the promise is backed by frameworks such as Reactor, then the cancel() + * can cause them to propagate the cancel back into the reactive chain + */ + private void cancelInFlightFutures() { + lock.runLocked(() -> { + while (!inFlightDataQ.isEmpty()) { + CompletionStage cs = inFlightDataQ.poll(); + if (cs != null) { + cs.toCompletableFuture().cancel(false); + } + } + }); + } + + protected boolean inFlightQIsEmpty() { + return lock.callLocked(inFlightDataQ::isEmpty); + } + + /** + * The two terminal states are onComplete or onError + * + * @return true if it's in a terminal state + */ + protected boolean isTerminal() { + return isTerminal.get(); + } +} diff --git a/src/main/java/graphql/execution/reactive/NonBlockingMutexExecutor.java b/src/main/java/graphql/execution/reactive/NonBlockingMutexExecutor.java index 38c6eb1238..4c2b44f387 100644 --- a/src/main/java/graphql/execution/reactive/NonBlockingMutexExecutor.java +++ b/src/main/java/graphql/execution/reactive/NonBlockingMutexExecutor.java @@ -2,7 +2,7 @@ import graphql.Internal; -import org.jetbrains.annotations.NotNull; +import org.jspecify.annotations.NonNull; import java.util.concurrent.Executor; import java.util.concurrent.atomic.AtomicReference; @@ -37,7 +37,7 @@ class NonBlockingMutexExecutor implements Executor { private final AtomicReference last = new AtomicReference<>(); @Override - public void execute(final @NotNull Runnable command) { + public void execute(final @NonNull Runnable command) { final RunNode newNode = new RunNode(assertNotNull(command, () -> "Runnable must not be null")); final RunNode prevLast = last.getAndSet(newNode); if (prevLast != null) { @@ -76,9 +76,9 @@ private void runAll(RunNode next) { if (last.compareAndSet(current, null)) { return; // end-of-queue: we're done. } else { - //noinspection StatementWithEmptyBody while ((next = current.get()) == null) { - // Thread.onSpinWait(); in Java 9 + // hint to the CPU we are actively waiting + Thread.onSpinWait(); } } } @@ -93,4 +93,4 @@ private RunNode(final Runnable runnable) { } } -} \ No newline at end of file +} diff --git a/src/main/java/graphql/execution/reactive/ReactiveSupport.java b/src/main/java/graphql/execution/reactive/ReactiveSupport.java new file mode 100644 index 0000000000..3e02f11592 --- /dev/null +++ b/src/main/java/graphql/execution/reactive/ReactiveSupport.java @@ -0,0 +1,184 @@ +package graphql.execution.reactive; + +import graphql.DuckTyped; +import graphql.Internal; +import org.reactivestreams.Publisher; +import org.reactivestreams.Subscriber; +import org.reactivestreams.Subscription; + +import java.util.Objects; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.Flow; +import java.util.concurrent.atomic.AtomicReference; + +/** + * This provides support for a DataFetcher to be able to + * return a reactive streams {@link Publisher} or Java JDK {@link Flow.Publisher} + * as a value, and it can be turned into a {@link CompletableFuture} + * that we can get an async value from. + */ +@Internal +public class ReactiveSupport { + + @DuckTyped(shape = "CompletableFuture | Object") + public static Object fetchedObject(Object fetchedObject) { + if (fetchedObject instanceof Flow.Publisher) { + return flowPublisherToCF((Flow.Publisher) fetchedObject); + } + if (fetchedObject instanceof Publisher) { + return reactivePublisherToCF((Publisher) fetchedObject); + } + return fetchedObject; + } + + private static CompletableFuture reactivePublisherToCF(Publisher publisher) { + ReactivePublisherToCompletableFuture cf = new ReactivePublisherToCompletableFuture<>(); + publisher.subscribe(cf); + return cf; + } + + private static CompletableFuture flowPublisherToCF(Flow.Publisher publisher) { + FlowPublisherToCompletableFuture cf = new FlowPublisherToCompletableFuture<>(); + publisher.subscribe(cf); + return cf; + } + + /** + * The implementations between reactive Publishers and Flow.Publishers are almost exactly the same except the + * subscription class is different. So this is a common class that contains most of the common logic + * + * @param for two + * @param for subscription + */ + private static abstract class PublisherToCompletableFuture extends CompletableFuture { + + private final AtomicReference subscriptionRef = new AtomicReference<>(); + + abstract void doSubscriptionCancel(S s); + + @SuppressWarnings("SameParameterValue") + abstract void doSubscriptionRequest(S s, long n); + + private boolean validateSubscription(S current, S next) { + Objects.requireNonNull(next, "Subscription cannot be null"); + if (current != null) { + doSubscriptionCancel(next); + return false; + } + return true; + } + + /** + * This overrides the {@link CompletableFuture#cancel(boolean)} method + * such that subscription is also cancelled. + * + * @param mayInterruptIfRunning this value has no effect in this + * implementation because interrupts are not used to control + * processing. + * @return a boolean if it was cancelled + */ + @Override + public boolean cancel(boolean mayInterruptIfRunning) { + boolean cancelled = super.cancel(mayInterruptIfRunning); + if (cancelled) { + S s = subscriptionRef.getAndSet(null); + if (s != null) { + doSubscriptionCancel(s); + } + } + return cancelled; + } + + void onSubscribeImpl(S s) { + if (validateSubscription(subscriptionRef.getAndSet(s), s)) { + doSubscriptionRequest(s, Long.MAX_VALUE); + } + } + + void onNextImpl(T t) { + S s = subscriptionRef.getAndSet(null); + if (s != null) { + complete(t); + doSubscriptionCancel(s); + } + } + + void onErrorImpl(Throwable t) { + if (subscriptionRef.getAndSet(null) != null) { + completeExceptionally(t); + } + } + + void onCompleteImpl() { + if (subscriptionRef.getAndSet(null) != null) { + complete(null); + } + } + } + + private static class ReactivePublisherToCompletableFuture extends PublisherToCompletableFuture implements Subscriber { + + @Override + void doSubscriptionCancel(Subscription subscription) { + subscription.cancel(); + } + + @Override + void doSubscriptionRequest(Subscription subscription, long n) { + subscription.request(n); + } + + @Override + public void onSubscribe(Subscription s) { + onSubscribeImpl(s); + } + + @Override + public void onNext(T t) { + onNextImpl(t); + } + + @Override + public void onError(Throwable t) { + onErrorImpl(t); + } + + @Override + public void onComplete() { + onCompleteImpl(); + } + } + + private static class FlowPublisherToCompletableFuture extends PublisherToCompletableFuture implements Flow.Subscriber { + + @Override + void doSubscriptionCancel(Flow.Subscription subscription) { + subscription.cancel(); + } + + @Override + void doSubscriptionRequest(Flow.Subscription subscription, long n) { + subscription.request(n); + } + + @Override + public void onSubscribe(Flow.Subscription s) { + onSubscribeImpl(s); + } + + @Override + public void onNext(T t) { + onNextImpl(t); + } + + @Override + public void onError(Throwable t) { + onErrorImpl(t); + } + + @Override + public void onComplete() { + onCompleteImpl(); + } + } +} diff --git a/src/main/java/graphql/execution/reactive/SubscriptionPublisher.java b/src/main/java/graphql/execution/reactive/SubscriptionPublisher.java index ae4176bb2e..7b8b08d19f 100644 --- a/src/main/java/graphql/execution/reactive/SubscriptionPublisher.java +++ b/src/main/java/graphql/execution/reactive/SubscriptionPublisher.java @@ -31,10 +31,15 @@ public class SubscriptionPublisher implements Publisher { * * @param upstreamPublisher the original publisher of objects that then have a graphql selection set applied to them * @param mapper a mapper that turns object into promises to execution results which are then published on this stream + * @param keepOrdered this indicates that the order of results should be kep in the same order as the source events arrive */ @Internal - public SubscriptionPublisher(Publisher upstreamPublisher, Function> mapper) { - mappingPublisher = new CompletionStageMappingPublisher<>(upstreamPublisher, mapper); + public SubscriptionPublisher(Publisher upstreamPublisher, Function> mapper, boolean keepOrdered) { + if (keepOrdered) { + mappingPublisher = new CompletionStageMappingOrderedPublisher<>(upstreamPublisher, mapper); + } else { + mappingPublisher = new CompletionStageMappingPublisher<>(upstreamPublisher, mapper); + } } /** diff --git a/src/main/java/graphql/execution/values/InputInterceptor.java b/src/main/java/graphql/execution/values/InputInterceptor.java index b5420e5035..0fb7534d59 100644 --- a/src/main/java/graphql/execution/values/InputInterceptor.java +++ b/src/main/java/graphql/execution/values/InputInterceptor.java @@ -3,8 +3,8 @@ import graphql.GraphQLContext; import graphql.Internal; import graphql.schema.GraphQLInputType; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; +import org.jspecify.annotations.NonNull; +import org.jspecify.annotations.Nullable; import java.util.Locale; @@ -36,7 +36,7 @@ public interface InputInterceptor { * @return a value that may differ from the original value */ Object intercept(@Nullable Object value, - @NotNull GraphQLInputType graphQLType, - @NotNull GraphQLContext graphqlContext, - @NotNull Locale locale); + @NonNull GraphQLInputType graphQLType, + @NonNull GraphQLContext graphqlContext, + @NonNull Locale locale); } diff --git a/src/main/java/graphql/execution/values/legacycoercing/LegacyCoercingInputInterceptor.java b/src/main/java/graphql/execution/values/legacycoercing/LegacyCoercingInputInterceptor.java index e6f9f5d363..6ac9041be4 100644 --- a/src/main/java/graphql/execution/values/legacycoercing/LegacyCoercingInputInterceptor.java +++ b/src/main/java/graphql/execution/values/legacycoercing/LegacyCoercingInputInterceptor.java @@ -5,8 +5,8 @@ import graphql.execution.values.InputInterceptor; import graphql.scalar.CoercingUtil; import graphql.schema.GraphQLInputType; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; +import org.jspecify.annotations.NonNull; +import org.jspecify.annotations.Nullable; import java.math.BigDecimal; import java.util.Locale; @@ -77,7 +77,7 @@ private LegacyCoercingInputInterceptor(BiFunction merge(@NotNull Map leftMap, @NotNull Map rightMap) { + @NonNull + public Map merge(@NonNull Map leftMap, @NonNull Map rightMap) { if (leftMap.isEmpty()) { return mapCast(rightMap); } @@ -55,7 +55,7 @@ private Object mergeObjects(Object leftVal, Object rightVal) { } } - @NotNull + @NonNull private List appendLists(Object leftVal, Object rightVal) { List target = new ArrayList<>(listCast(leftVal)); target.addAll(listCast(rightVal)); diff --git a/src/main/java/graphql/extensions/ExtensionsBuilder.java b/src/main/java/graphql/extensions/ExtensionsBuilder.java index fe37c64743..69bd85c473 100644 --- a/src/main/java/graphql/extensions/ExtensionsBuilder.java +++ b/src/main/java/graphql/extensions/ExtensionsBuilder.java @@ -3,8 +3,8 @@ import com.google.common.collect.ImmutableMap; import graphql.ExecutionResult; import graphql.PublicApi; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; +import org.jspecify.annotations.NonNull; +import org.jspecify.annotations.Nullable; import java.util.Collections; import java.util.LinkedHashMap; @@ -69,7 +69,7 @@ public int getChangeCount() { * * @return this builder for fluent style reasons */ - public ExtensionsBuilder addValues(@NotNull Map newValues) { + public ExtensionsBuilder addValues(@NonNull Map newValues) { assertNotNull(newValues); if (!newValues.isEmpty()) { changes.add(newValues); @@ -85,7 +85,7 @@ public ExtensionsBuilder addValues(@NotNull Map newValues) { * * @return this builder for fluent style reasons */ - public ExtensionsBuilder addValue(@NotNull Object key, @Nullable Object value) { + public ExtensionsBuilder addValue(@NonNull Object key, @Nullable Object value) { assertNotNull(key); return addValues(Collections.singletonMap(key, value)); } diff --git a/src/main/java/graphql/extensions/ExtensionsMerger.java b/src/main/java/graphql/extensions/ExtensionsMerger.java index 7ad57461c0..9e4199ff3a 100644 --- a/src/main/java/graphql/extensions/ExtensionsMerger.java +++ b/src/main/java/graphql/extensions/ExtensionsMerger.java @@ -1,7 +1,7 @@ package graphql.extensions; import graphql.PublicSpi; -import org.jetbrains.annotations.NotNull; +import org.jspecify.annotations.NonNull; import java.util.Map; @@ -40,6 +40,6 @@ public interface ExtensionsMerger { * * @return a non null merged map */ - @NotNull - Map merge(@NotNull Map leftMap, @NotNull Map rightMap); + @NonNull + Map merge(@NonNull Map leftMap, @NonNull Map rightMap); } diff --git a/src/main/java/graphql/incremental/DeferPayload.java b/src/main/java/graphql/incremental/DeferPayload.java index 58e5ac0994..ddec3d531b 100644 --- a/src/main/java/graphql/incremental/DeferPayload.java +++ b/src/main/java/graphql/incremental/DeferPayload.java @@ -3,11 +3,12 @@ import graphql.ExecutionResult; import graphql.ExperimentalApi; import graphql.GraphQLError; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import java.util.Objects; /** * Represents a defer payload @@ -22,12 +23,12 @@ private DeferPayload(Object data, List path, String label, List the type to cast the result to + * @return the resolved data */ @Nullable public T getData() { - //noinspection unchecked + // noinspection unchecked return (T) this.data; } @@ -37,12 +38,22 @@ public T getData() { @Override public Map toSpecification() { Map map = new LinkedHashMap<>(super.toSpecification()); + map.put("data", data); + return map; + } - if (data != null) { - map.put("data", data); - } + @Override + public int hashCode() { + return Objects.hash(super.hashCode(), data); + } - return map; + @Override + public boolean equals(Object obj) { + if (this == obj) return true; + if (obj == null || getClass() != obj.getClass()) return false; + if (!super.equals(obj)) return false; + DeferPayload that = (DeferPayload) obj; + return Objects.equals(data, that.data); } /** diff --git a/src/main/java/graphql/incremental/DelayedIncrementalPartialResult.java b/src/main/java/graphql/incremental/DelayedIncrementalPartialResult.java index 706944e528..5992e3c83a 100644 --- a/src/main/java/graphql/incremental/DelayedIncrementalPartialResult.java +++ b/src/main/java/graphql/incremental/DelayedIncrementalPartialResult.java @@ -1,8 +1,8 @@ package graphql.incremental; import graphql.ExperimentalApi; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.util.List; import java.util.Map; diff --git a/src/main/java/graphql/incremental/DelayedIncrementalPartialResultImpl.java b/src/main/java/graphql/incremental/DelayedIncrementalPartialResultImpl.java index 461d658e7d..3412d77298 100644 --- a/src/main/java/graphql/incremental/DelayedIncrementalPartialResultImpl.java +++ b/src/main/java/graphql/incremental/DelayedIncrementalPartialResultImpl.java @@ -1,12 +1,12 @@ package graphql.incremental; import graphql.ExperimentalApi; +import graphql.util.FpKit; import java.util.Collections; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; -import java.util.stream.Collectors; @ExperimentalApi public class DelayedIncrementalPartialResultImpl implements DelayedIncrementalPartialResult { @@ -44,10 +44,12 @@ public Map toSpecification() { result.put("extensions", extensions); } - if(incrementalItems != null) { - result.put("incremental", incrementalItems.stream() - .map(IncrementalPayload::toSpecification) - .collect(Collectors.toList())); + if (incrementalItems != null) { + List> list = FpKit.arrayListSizedTo(incrementalItems); + for (IncrementalPayload incrementalItem : incrementalItems) { + list.add(incrementalItem.toSpecification()); + } + result.put("incremental", list); } return result; diff --git a/src/main/java/graphql/incremental/IncrementalExecutionResult.java b/src/main/java/graphql/incremental/IncrementalExecutionResult.java index b3dc1b929e..7d59fbe958 100644 --- a/src/main/java/graphql/incremental/IncrementalExecutionResult.java +++ b/src/main/java/graphql/incremental/IncrementalExecutionResult.java @@ -2,9 +2,9 @@ import graphql.ExecutionResult; import graphql.ExperimentalApi; +import org.jspecify.annotations.Nullable; import org.reactivestreams.Publisher; -import javax.annotation.Nullable; import java.util.List; /** @@ -86,6 +86,7 @@ public interface IncrementalExecutionResult extends ExecutionResult { /** * Indicates whether there are pending incremental data. + * * @return "true" if there are incremental data, "false" otherwise. */ boolean hasNext(); @@ -103,7 +104,11 @@ public interface IncrementalExecutionResult extends ExecutionResult { List getIncremental(); /** - * This {@link Publisher} will asynchronously emit events containing defer and/or stream payloads. + * This method will return a {@link Publisher} of deferred results. No field processing will be done + * until a {@link org.reactivestreams.Subscriber} is attached to this publisher. + *

+ * Once a {@link org.reactivestreams.Subscriber} is attached the deferred field result processing will be + * started and published as a series of events. * * @return a {@link Publisher} that clients can subscribe to receive incremental payloads. */ diff --git a/src/main/java/graphql/incremental/IncrementalExecutionResultImpl.java b/src/main/java/graphql/incremental/IncrementalExecutionResultImpl.java index 765453260d..2f9470b949 100644 --- a/src/main/java/graphql/incremental/IncrementalExecutionResultImpl.java +++ b/src/main/java/graphql/incremental/IncrementalExecutionResultImpl.java @@ -3,14 +3,14 @@ import graphql.ExecutionResult; import graphql.ExecutionResultImpl; import graphql.ExperimentalApi; +import org.jspecify.annotations.Nullable; import org.reactivestreams.Publisher; -import javax.annotation.Nullable; import java.util.LinkedHashMap; import java.util.LinkedList; import java.util.List; import java.util.Map; -import java.util.stream.Collectors; +import java.util.function.Consumer; @ExperimentalApi public class IncrementalExecutionResultImpl extends ExecutionResultImpl implements IncrementalExecutionResult { @@ -52,17 +52,24 @@ public static Builder fromExecutionResult(ExecutionResult executionResult) { return new Builder().from(executionResult); } + @Override + public IncrementalExecutionResult transform(Consumer> builderConsumer) { + var builder = fromExecutionResult(this); + builderConsumer.accept(builder); + return builder.build(); + } + @Override public Map toSpecification() { Map map = new LinkedHashMap<>(super.toSpecification()); map.put("hasNext", hasNext); if (this.incremental != null) { - map.put("incremental", - this.incremental.stream() - .map(IncrementalPayload::toSpecification) - .collect(Collectors.toCollection(LinkedList::new)) - ); + LinkedList> linkedList = new LinkedList<>(); + for (IncrementalPayload incrementalPayload : this.incremental) { + linkedList.add(incrementalPayload.toSpecification()); + } + map.put("incremental", linkedList); } return map; @@ -91,6 +98,8 @@ public Builder incrementalItemPublisher(Publisher getExtensions() { return this.extensions; } - protected Map toSpecification() { + public Map toSpecification() { Map result = new LinkedHashMap<>(); result.put("path", path); @@ -80,9 +79,30 @@ protected Map toSpecification() { } protected Object errorsToSpec(List errors) { - return errors.stream().map(GraphQLError::toSpecification).collect(toList()); + List> list = FpKit.arrayListSizedTo(errors); + for (GraphQLError error : errors) { + list.add(error.toSpecification()); + } + return list; } + public int hashCode() { + return Objects.hash(path, label, errors, extensions); + } + + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (obj == null || getClass() != obj.getClass()) { + return false; + } + IncrementalPayload that = (IncrementalPayload) obj; + return Objects.equals(path, that.path) && + Objects.equals(label, that.label) && + Objects.equals(errors, that.errors) && + Objects.equals(extensions, that.extensions); + } protected static abstract class Builder> { protected List path; @@ -122,25 +142,25 @@ public T errors(List errors) { return (T) this; } - public Builder addErrors(List errors) { + public T addErrors(List errors) { this.errors.addAll(errors); - return this; + return (T) this; } - public Builder addError(GraphQLError error) { + public T addError(GraphQLError error) { this.errors.add(error); - return this; + return (T) this; } - public Builder extensions(Map extensions) { + public T extensions(Map extensions) { this.extensions = extensions; - return this; + return (T) this; } - public Builder addExtension(String key, Object value) { + public T addExtension(String key, Object value) { this.extensions = (this.extensions == null ? new LinkedHashMap<>() : this.extensions); this.extensions.put(key, value); - return this; + return (T) this; } } } diff --git a/src/main/java/graphql/incremental/StreamPayload.java b/src/main/java/graphql/incremental/StreamPayload.java index e8bdfcf85c..c8b0f652e8 100644 --- a/src/main/java/graphql/incremental/StreamPayload.java +++ b/src/main/java/graphql/incremental/StreamPayload.java @@ -2,11 +2,12 @@ import graphql.ExperimentalApi; import graphql.GraphQLError; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import java.util.Objects; /** * Represents a stream payload @@ -21,12 +22,12 @@ private StreamPayload(List items, List path, String label, List< } /** - * @return the resolved list of items * @param the type to cast the result to + * @return the resolved list of items */ @Nullable public List getItems() { - //noinspection unchecked + // noinspection unchecked return (List) this.items; } @@ -36,12 +37,22 @@ public List getItems() { @Override public Map toSpecification() { Map map = new LinkedHashMap<>(super.toSpecification()); + map.put("items", items); + return map; + } - if (items != null) { - map.put("items", items); - } + @Override + public int hashCode() { + return Objects.hash(super.hashCode(), items); + } - return map; + @Override + public boolean equals(Object obj) { + if (this == obj) return true; + if (obj == null || getClass() != obj.getClass()) return false; + if (!super.equals(obj)) return false; + StreamPayload that = (StreamPayload) obj; + return Objects.equals(items, that.items); } /** diff --git a/src/main/java/graphql/introspection/GoodFaithIntrospection.java b/src/main/java/graphql/introspection/GoodFaithIntrospection.java index bd7285cbd1..ae7da12569 100644 --- a/src/main/java/graphql/introspection/GoodFaithIntrospection.java +++ b/src/main/java/graphql/introspection/GoodFaithIntrospection.java @@ -134,7 +134,7 @@ private static boolean isIntrospectionEnabled(GraphQLContext graphQlContext) { if (!isEnabledJvmWide()) { return false; } - return !graphQlContext.getOrDefault(GOOD_FAITH_INTROSPECTION_DISABLED, false); + return !graphQlContext.getBoolean(GOOD_FAITH_INTROSPECTION_DISABLED, false); } public static class BadFaithIntrospectionError implements GraphQLError { diff --git a/src/main/java/graphql/introspection/Introspection.java b/src/main/java/graphql/introspection/Introspection.java index ced6cbf818..f9a80f3e80 100644 --- a/src/main/java/graphql/introspection/Introspection.java +++ b/src/main/java/graphql/introspection/Introspection.java @@ -36,7 +36,7 @@ import graphql.schema.GraphQLSchema; import graphql.schema.GraphQLUnionType; import graphql.schema.InputValueWithState; -import org.jetbrains.annotations.NotNull; +import org.jspecify.annotations.NonNull; import java.util.ArrayList; import java.util.HashSet; @@ -134,7 +134,7 @@ public static Optional isIntrospectionSensible(MergedSelectionS return Optional.empty(); } - @NotNull + @NonNull private static Optional mkDisabledError(MergedField schemaField) { IntrospectionDisabledError error = new IntrospectionDisabledError(schemaField.getSingleField().getSourceLocation()); return Optional.of(ExecutionResult.newExecutionResult().addError(error).build()); @@ -144,7 +144,7 @@ private static boolean isIntrospectionEnabled(GraphQLContext graphQlContext) { if (!isEnabledJvmWide()) { return false; } - return !graphQlContext.getOrDefault(INTROSPECTION_DISABLED, false); + return !graphQlContext.getBoolean(INTROSPECTION_DISABLED, false); } private static final Map> introspectionDataFetchers = new LinkedHashMap<>(); @@ -845,4 +845,4 @@ private static GraphQLFieldDefinition getSystemFieldDef(GraphQLSchema schema, Gr } return null; } -} \ No newline at end of file +} diff --git a/src/main/java/graphql/introspection/IntrospectionWithDirectivesSupport.java b/src/main/java/graphql/introspection/IntrospectionWithDirectivesSupport.java index a533dd1e2d..ba939f51d5 100644 --- a/src/main/java/graphql/introspection/IntrospectionWithDirectivesSupport.java +++ b/src/main/java/graphql/introspection/IntrospectionWithDirectivesSupport.java @@ -8,8 +8,8 @@ import graphql.language.AstPrinter; import graphql.language.Node; import graphql.schema.DataFetcher; -import graphql.schema.GraphQLAppliedDirectiveArgument; import graphql.schema.GraphQLAppliedDirective; +import graphql.schema.GraphQLAppliedDirectiveArgument; import graphql.schema.GraphQLCodeRegistry; import graphql.schema.GraphQLDirective; import graphql.schema.GraphQLDirectiveContainer; @@ -23,7 +23,7 @@ import graphql.schema.SchemaTransformer; import graphql.util.TraversalControl; import graphql.util.TraverserContext; -import org.jetbrains.annotations.NotNull; +import org.jspecify.annotations.NonNull; import java.util.List; import java.util.Set; @@ -238,7 +238,7 @@ private List filterAppliedDirectives(GraphQLSchema sche }).collect(toList()); } - @NotNull + @NonNull private DirectivePredicateEnvironment buildDirectivePredicateEnv(GraphQLSchema schema, boolean isDefinedDirective, GraphQLDirectiveContainer container, String directiveName) { return new DirectivePredicateEnvironment() { @Override diff --git a/src/main/java/graphql/language/AstPrinter.java b/src/main/java/graphql/language/AstPrinter.java index b48fa2075d..fe7a848d8d 100644 --- a/src/main/java/graphql/language/AstPrinter.java +++ b/src/main/java/graphql/language/AstPrinter.java @@ -3,18 +3,17 @@ import graphql.PublicApi; import graphql.collect.ImmutableKit; -import java.io.PrintWriter; +import java.io.IOException; +import java.io.UncheckedIOException; import java.io.Writer; -import java.util.Collections; +import java.util.Iterator; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; -import java.util.StringJoiner; import static graphql.Assert.assertShouldNeverHappen; import static graphql.Assert.assertTrue; -import static graphql.util.EscapeUtil.escapeJsonString; -import static java.lang.String.valueOf; +import static graphql.util.EscapeUtil.escapeJsonStringTo; /** * This can take graphql language AST and print it out as a string @@ -75,40 +74,57 @@ public class AstPrinter { private NodePrinter argument() { if (compactMode) { - return (out, node) -> out.append(node.getName()).append(':').append(value(node.getValue())); + return (out, node) -> { + out.append(node.getName()).append(':'); + value(out, node.getValue()); + }; } - return (out, node) -> out.append(node.getName()).append(": ").append(value(node.getValue())); + return (out, node) -> { + out.append(node.getName()).append(": "); + value(out, node.getValue()); + }; } private NodePrinter document() { if (compactMode) { - return (out, node) -> out.append(join(node.getDefinitions(), " ")); + return (out, node) -> join(out, node.getDefinitions(), " "); } - return (out, node) -> out.append(join(node.getDefinitions(), "\n\n")).append("\n"); + return (out, node) -> { + join(out, node.getDefinitions(), "\n\n"); + out.append('\n'); + }; } private NodePrinter directive() { final String argSep = compactMode ? "," : ", "; return (out, node) -> { - String arguments = wrap("(", join(node.getArguments(), argSep), ")"); - out.append('@').append(node.getName()).append(arguments); + out.append('@'); + out.append(node.getName()); + if (!isEmpty(node.getArguments())) { + out.append('('); + join(out, node.getArguments(), argSep); + out.append(')'); + } }; } private NodePrinter directiveDefinition() { final String argSep = compactMode ? "," : ", "; return (out, node) -> { - out.append(description(node)); - String arguments = wrap("(", join(node.getInputValueDefinitions(), argSep), ")"); - String locations = join(node.getDirectiveLocations(), " | "); - String repeatable = node.isRepeatable() ? "repeatable " : ""; - out.append("directive @") - .append(node.getName()) - .append(arguments) - .append(" ") - .append(repeatable) - .append("on ") - .append(locations); + description(out, node); + out.append("directive @"); + out.append(node.getName()); + if (!isEmpty(node.getInputValueDefinitions())) { + out.append('('); + join(out, node.getInputValueDefinitions(), argSep); + out.append(')'); + } + out.append(" "); + if (node.isRepeatable()) { + out.append("repeatable "); + } + out.append("on "); + join(out, node.getDirectiveLocations(), " | "); }; } @@ -118,13 +134,15 @@ private NodePrinter directiveLocation() { private NodePrinter enumTypeDefinition() { return (out, node) -> { - out.append(description(node)); - out.append(spaced( - "enum", - node.getName(), - directives(node.getDirectives()), - block(node.getEnumValueDefinitions()) - )); + description(out, node); + out.append("enum "); + out.append(node.getName()); + if (!isEmpty(node.getDirectives())) { + out.append(' '); + directives(out, node.getDirectives()); + } + out.append(' '); + block(out, node.getEnumValueDefinitions()); }; } @@ -134,11 +152,12 @@ private NodePrinter enumValue() { private NodePrinter enumValueDefinition() { return (out, node) -> { - out.append(description(node)); - out.append(spaced( - node.getName(), - directives(node.getDirectives()) - )); + description(out, node); + out.append(node.getName()); + if (!isEmpty(node.getDirectives())) { + out.append(' '); + directives(out, node.getDirectives()); + } }; } @@ -146,128 +165,131 @@ private NodePrinter field() { final String argSep = compactMode ? "," : ", "; final String aliasSuffix = compactMode ? ":" : ": "; return (out, node) -> { - String alias = wrap("", node.getAlias(), aliasSuffix); String name = node.getName(); - String arguments = wrap("(", join(node.getArguments(), argSep), ")"); - String directives = directives(node.getDirectives()); - String selectionSet = node(node.getSelectionSet()); - - if (compactMode) { - out.append(spaced( - alias + name + arguments, - directives - )); - out.append(selectionSet); - } else { - out.append(spaced( - alias + name + arguments, - directives, - selectionSet - )); - } + if (!isEmpty(node.getAlias())) { + out.append(node.getAlias()); + out.append(aliasSuffix); + } + out.append(name); + if (!isEmpty(node.getArguments())) { + out.append('('); + join(out, node.getArguments(), argSep); + out.append(')'); + } + if (!isEmpty(node.getDirectives())) { + out.append(' '); + directives(out, node.getDirectives()); + } + if (node.getSelectionSet() != null && !isEmpty(node.getSelectionSet().getSelections())) { + if (!compactMode) { + out.append(' '); + } + node(out, node.getSelectionSet()); + } }; } - private NodePrinter fieldDefinition() { final String argSep = compactMode ? "," : ", "; return (out, node) -> { - String args; - if (hasDescription(Collections.singletonList(node)) && !compactMode) { - out.append(description(node)); - args = join(node.getInputValueDefinitions(), "\n"); - out.append(node.getName()) - .append(wrap("(\n", args, ")")) - .append(": ") - .append(spaced( - type(node.getType()), - directives(node.getDirectives()) - )); + if (hasDescription(node) && !compactMode) { + description(out, node); + out.append(node.getName()); + if (!isEmpty(node.getInputValueDefinitions())) { + out.append("(\n"); + join(out, node.getInputValueDefinitions(), "\n"); + out.append(')'); + } + out.append(": "); + type(out, node.getType()); + if (!isEmpty(node.getDirectives())) { + out.append(' '); + directives(out, node.getDirectives()); + } } else { - args = join(node.getInputValueDefinitions(), argSep); - out.append(node.getName()) - .append(wrap("(", args, ")")) - .append(": ") - .append(spaced( - type(node.getType()), - directives(node.getDirectives()) - )); + out.append(node.getName()); + if (!isEmpty(node.getInputValueDefinitions())) { + out.append('('); + join(out, node.getInputValueDefinitions(), argSep); + out.append(')'); + } + out.append(": "); + type(out, node.getType()); + if (!isEmpty(node.getDirectives())) { + out.append(' '); + directives(out, node.getDirectives()); + } } }; } - private boolean hasDescription(List nodes) { - for (Node node : nodes) { - if (node instanceof AbstractDescribedNode) { - AbstractDescribedNode describedNode = (AbstractDescribedNode) node; - if (describedNode.getDescription() != null) { - return true; - } - } + private static boolean hasDescription(Node node) { + if (node instanceof AbstractDescribedNode) { + AbstractDescribedNode describedNode = (AbstractDescribedNode) node; + return describedNode.getDescription() != null; } - return false; } private NodePrinter fragmentDefinition() { return (out, node) -> { - String name = node.getName(); - String typeCondition = type(node.getTypeCondition()); - String directives = directives(node.getDirectives()); - String selectionSet = node(node.getSelectionSet()); - - out.append("fragment ").append(name).append(" on ").append(typeCondition) - .append(' ') - .append(directives) - .append(selectionSet); + out.append("fragment "); + out.append(node.getName()); + out.append(" on "); + type(out, node.getTypeCondition()); + out.append(' '); + directives(out, node.getDirectives()); + node(out, node.getSelectionSet()); }; } private NodePrinter fragmentSpread() { return (out, node) -> { - String name = node.getName(); - String directives = directives(node.getDirectives()); - - out.append("...").append(name).append(directives); + out.append("..."); + out.append(node.getName()); + directives(out, node.getDirectives()); }; } private NodePrinter inlineFragment() { return (out, node) -> { - TypeName typeName = node.getTypeCondition(); - //Inline fragments may not have a type condition - String typeCondition = typeName == null ? "" : wrap("on ", type(typeName), ""); - String directives = directives(node.getDirectives()); - String selectionSet = node(node.getSelectionSet()); - + out.append("..."); if (compactMode) { // believe it or not but "...on Foo" is valid syntax - out.append("..."); - out.append(spaced( - typeCondition, - directives - )); - out.append(selectionSet); + if (node.getTypeCondition() != null) { + out.append("on "); + type(out, node.getTypeCondition()); + } + directives(out, node.getDirectives()); + node(out, node.getSelectionSet()); } else { - out.append(spaced( - "...", - typeCondition, - directives, - selectionSet - )); + if (node.getTypeCondition() != null) { + out.append(" on "); + type(out, node.getTypeCondition()); + } + if (!isEmpty(node.getDirectives())) { + out.append(' '); + directives(out, node.getDirectives()); + } + out.append(' '); + node(out, node.getSelectionSet()); } }; } private NodePrinter inputObjectTypeDefinition() { return (out, node) -> { - out.append(description(node)); - out.append(spaced( - "input", - node.getName(), - directives(node.getDirectives()), - block(node.getInputValueDefinitions()) - )); + description(out, node); + out.append("input "); + out.append(node.getName()); + if (!isEmpty(node.getDirectives())) { + out.append(' '); + directives(out, node.getDirectives()); + } + if (!isEmpty(node.getInputValueDefinitions())) { + out.append(' '); + block(out, node.getInputValueDefinitions()); + } }; } @@ -275,192 +297,272 @@ private NodePrinter inputValueDefinition() { String nameTypeSep = compactMode ? ":" : ": "; String defaultValueEquals = compactMode ? "=" : "= "; return (out, node) -> { - Value defaultValue = node.getDefaultValue(); - out.append(description(node)); - out.append(spaced( - node.getName() + nameTypeSep + type(node.getType()), - wrap(defaultValueEquals, defaultValue, ""), - directives(node.getDirectives()) - )); + Value defaultValue = node.getDefaultValue(); + description(out, node); + out.append(node.getName()); + out.append(nameTypeSep); + type(out, node.getType()); + if (defaultValue != null) { + out.append(' '); + out.append(defaultValueEquals); + node(out, defaultValue); + } + if (!isEmpty(node.getDirectives())) { + out.append(' '); + directives(out, node.getDirectives()); + } }; } private NodePrinter interfaceTypeDefinition() { return (out, node) -> { - out.append(description(node)); - out.append(spaced( - "interface", - node.getName(), - wrap("implements ", join(node.getImplements(), " & "), ""), - directives(node.getDirectives()), - block(node.getFieldDefinitions()) - )); + description(out, node); + out.append("interface "); + out.append(node.getName()); + if (!isEmpty(node.getImplements())) { + out.append(" implements "); + join(out, node.getImplements(), " & "); + } + if (!isEmpty(node.getDirectives())) { + out.append(' '); + directives(out, node.getDirectives()); + } + if (!isEmpty(node.getFieldDefinitions())) { + out.append(' '); + block(out, node.getFieldDefinitions()); + } }; } private NodePrinter objectField() { String nameValueSep = compactMode ? ":" : " : "; - return (out, node) -> out.append(node.getName()).append(nameValueSep).append(value(node.getValue())); + return (out, node) -> { + out.append(node.getName()); + out.append(nameValueSep); + value(out, node.getValue()); + }; } private NodePrinter operationDefinition() { final String argSep = compactMode ? "," : ", "; return (out, node) -> { - String op = node.getOperation().toString().toLowerCase(); String name = node.getName(); - String varDefinitions = wrap("(", join(nvl(node.getVariableDefinitions()), argSep), ")"); - String directives = directives(node.getDirectives()); - String selectionSet = node(node.getSelectionSet()); - // Anonymous queries with no directives or variable definitions can use // the query short form. - if (isEmpty(name) && isEmpty(directives) && isEmpty(varDefinitions) && op.equals("query")) { - out.append(selectionSet); + if (isEmpty(name) && isEmpty(node.getDirectives()) && isEmpty(node.getVariableDefinitions()) + && node.getOperation() == OperationDefinition.Operation.QUERY) { + node(out, node.getSelectionSet()); } else { - if (compactMode) { - out.append(spaced(op, smooshed(name, varDefinitions), directives)); - out.append(selectionSet); - } else { - out.append(spaced(op, smooshed(name, varDefinitions), directives, selectionSet)); + out.append(node.getOperation().toString().toLowerCase()); + if (!isEmpty(name)) { + out.append(' '); + out.append(name); } + if (!isEmpty(node.getVariableDefinitions())) { + if (isEmpty(name)) { + out.append(' '); + } + out.append('('); + join(out, node.getVariableDefinitions(), argSep); + out.append(')'); + } + if (!isEmpty(node.getDirectives())) { + out.append(' '); + directives(out, node.getDirectives()); + } + if (!compactMode) { + out.append(' '); + } + node(out, node.getSelectionSet()); } }; } private NodePrinter operationTypeDefinition() { String nameTypeSep = compactMode ? ":" : ": "; - return (out, node) -> out.append(node.getName()).append(nameTypeSep).append(type(node.getTypeName())); + return (out, node) -> { + out.append(node.getName()); + out.append(nameTypeSep); + type(out, node.getTypeName()); + }; } private NodePrinter objectTypeDefinition() { return (out, node) -> { - out.append(description(node)); - out.append(spaced( - "type", - node.getName(), - wrap("implements ", join(node.getImplements(), " & "), ""), - directives(node.getDirectives()), - block(node.getFieldDefinitions()) - )); + description(out, node); + out.append("type "); + out.append(node.getName()); + if (!isEmpty(node.getImplements())) { + out.append(" implements "); + join(out, node.getImplements(), " & "); + } + if (!isEmpty(node.getDirectives())) { + out.append(' '); + directives(out, node.getDirectives()); + } + if (!isEmpty(node.getFieldDefinitions())) { + out.append(' '); + block(out, node.getFieldDefinitions()); + } }; } private NodePrinter selectionSet() { - return (out, node) -> { - String block = block(node.getSelections()); - out.append(block); - }; + return (out, node) -> block(out, node.getSelections()); } private NodePrinter scalarTypeDefinition() { return (out, node) -> { - out.append(description(node)); - out.append(spaced( - "scalar", - node.getName(), - directives(node.getDirectives()))); + description(out, node); + out.append("scalar "); + out.append(node.getName()); + if (!isEmpty(node.getDirectives())) { + out.append(' '); + directives(out, node.getDirectives()); + } }; } private NodePrinter schemaDefinition() { return (out, node) -> { - out.append(description(node)); - out.append(spaced( - "schema", - directives(node.getDirectives()), - block(node.getOperationTypeDefinitions()) - )); + description(out, node); + out.append("schema "); + if (!isEmpty(node.getDirectives())) { + directives(out, node.getDirectives()); + out.append(' '); + } + block(out, node.getOperationTypeDefinitions()); }; } - private NodePrinter type() { - return (out, node) -> out.append(type(node)); + private NodePrinter> type() { + return this::type; } - private String type(Type type) { + private void type(StringBuilder out, Type type) { if (type instanceof NonNullType) { NonNullType inner = (NonNullType) type; - return wrap("", type(inner.getType()), "!"); + type(out, inner.getType()); + out.append('!'); } else if (type instanceof ListType) { ListType inner = (ListType) type; - return wrap("[", type(inner.getType()), "]"); + out.append('['); + type(out, inner.getType()); + out.append(']'); } else { TypeName inner = (TypeName) type; - return inner.getName(); + out.append(inner.getName()); } } private NodePrinter objectTypeExtensionDefinition() { - return (out, node) -> out.append("extend ").append(node(node, ObjectTypeDefinition.class)); + return (out, node) -> { + out.append("extend "); + node(out, node, ObjectTypeDefinition.class); + }; } private NodePrinter enumTypeExtensionDefinition() { - return (out, node) -> out.append("extend ").append(node(node, EnumTypeDefinition.class)); + return (out, node) -> { + out.append("extend "); + node(out, node, EnumTypeDefinition.class); + }; } private NodePrinter interfaceTypeExtensionDefinition() { - return (out, node) -> out.append("extend ").append(node(node, InterfaceTypeDefinition.class)); + return (out, node) -> { + out.append("extend "); + node(out, node, InterfaceTypeDefinition.class); + }; } private NodePrinter unionTypeExtensionDefinition() { - return (out, node) -> out.append("extend ").append(node(node, UnionTypeDefinition.class)); + return (out, node) -> { + out.append("extend "); + node(out, node, UnionTypeDefinition.class); + }; } private NodePrinter scalarTypeExtensionDefinition() { - return (out, node) -> out.append("extend ").append(node(node, ScalarTypeDefinition.class)); + return (out, node) -> { + out.append("extend "); + node(out, node, ScalarTypeDefinition.class); + }; } private NodePrinter inputObjectTypeExtensionDefinition() { - return (out, node) -> out.append("extend ").append(node(node, InputObjectTypeDefinition.class)); + return (out, node) -> { + out.append("extend "); + node(out, node, InputObjectTypeDefinition.class); + }; } private NodePrinter schemaExtensionDefinition() { - return (out, node) -> out.append("extend ").append(node(node, SchemaDefinition.class)); + return (out, node) -> { + out.append("extend "); + node(out, node, SchemaDefinition.class); + }; } private NodePrinter unionTypeDefinition() { String barSep = compactMode ? "|" : " | "; String equals = compactMode ? "=" : "= "; return (out, node) -> { - out.append(description(node)); - out.append(spaced( - "union", - node.getName(), - directives(node.getDirectives()), - equals + join(node.getMemberTypes(), barSep) - )); + description(out, node); + out.append("union "); + out.append(node.getName()); + if (!isEmpty(node.getDirectives())) { + out.append(' '); + directives(out, node.getDirectives()); + } + out.append(' '); + out.append(equals); + join(out, node.getMemberTypes(), barSep); }; } private NodePrinter variableDefinition() { String nameTypeSep = compactMode ? ":" : ": "; String defaultValueEquals = compactMode ? "=" : " = "; - return (out, node) -> out.append('$') - .append(node.getName()) - .append(nameTypeSep) - .append(type(node.getType())) - .append(wrap(defaultValueEquals, node.getDefaultValue(), "")) - .append(directives(node.getDirectives())); + return (out, node) -> { + out.append('$'); + out.append(node.getName()); + out.append(nameTypeSep); + type(out, node.getType()); + if (node.getDefaultValue() != null) { + out.append(defaultValueEquals); + node(out, node.getDefaultValue()); + } + directives(out, node.getDirectives()); + }; } private NodePrinter variableReference() { return (out, node) -> out.append('$').append(node.getName()); } - private String node(Node node) { + private String node(Node node) { return node(node, null); } - private String node(Node node, Class startClass) { + private void node(StringBuilder out, Node node) { + node(out, node, null); + } + + private String node(Node node, Class startClass) { + StringBuilder builder = new StringBuilder(); + node(builder, node, startClass); + return builder.toString(); + } + + private void node(StringBuilder out, Node node, Class startClass) { if (startClass != null) { assertTrue(startClass.isInstance(node), () -> "The starting class must be in the inherit tree"); } - StringBuilder builder = new StringBuilder(); - NodePrinter printer = _findPrinter(node, startClass); - printer.print(builder, node); - return builder.toString(); + NodePrinter> printer = _findPrinter(node, startClass); + printer.print(out, node); } @SuppressWarnings("unchecked") @@ -473,7 +575,7 @@ NodePrinter _findPrinter(Node node, Class startClass) { return (out, type) -> { }; } - Class clazz = startClass != null ? startClass : node.getClass(); + Class clazz = startClass != null ? startClass : node.getClass(); while (clazz != Object.class) { NodePrinter nodePrinter = printers.get(clazz); if (nodePrinter != null) { @@ -485,67 +587,86 @@ NodePrinter _findPrinter(Node node, Class startClass) { return assertShouldNeverHappen("We have a missing printer implementation for %s : report a bug!", clazz); } - private boolean isEmpty(List list) { + private static boolean isEmpty(List list) { return list == null || list.isEmpty(); } - private boolean isEmpty(String s) { + private static boolean isEmpty(String s) { return s == null || s.isBlank(); } - private List nvl(List list) { + private static List nvl(List list) { return list != null ? list : ImmutableKit.emptyList(); } - private NodePrinter value() { - return (out, node) -> out.append(value(node)); + private NodePrinter> value() { + return this::value; } - private String value(Value value) { + private void value(StringBuilder out, Value value) { String argSep = compactMode ? "," : ", "; if (value instanceof IntValue) { - return valueOf(((IntValue) value).getValue()); + out.append(((IntValue) value).getValue()); } else if (value instanceof FloatValue) { - return valueOf(((FloatValue) value).getValue()); + out.append(((FloatValue) value).getValue()); } else if (value instanceof StringValue) { - return "\"" + escapeJsonString(((StringValue) value).getValue()) + "\""; + out.append('"'); + escapeJsonStringTo(out, ((StringValue) value).getValue()); + out.append('"'); } else if (value instanceof EnumValue) { - return valueOf(((EnumValue) value).getName()); + out.append(((EnumValue) value).getName()); } else if (value instanceof BooleanValue) { - return valueOf(((BooleanValue) value).isValue()); + out.append(((BooleanValue) value).isValue()); } else if (value instanceof NullValue) { - return "null"; + out.append("null"); } else if (value instanceof ArrayValue) { - return "[" + join(((ArrayValue) value).getValues(), argSep) + "]"; + out.append('['); + join(out, ((ArrayValue) value).getValues(), argSep); + out.append(']'); } else if (value instanceof ObjectValue) { - return "{" + join(((ObjectValue) value).getObjectFields(), argSep) + "}"; + out.append('{'); + join(out, ((ObjectValue) value).getObjectFields(), argSep); + out.append('}'); } else if (value instanceof VariableReference) { - return "$" + ((VariableReference) value).getName(); + out.append('$'); + out.append(((VariableReference) value).getName()); } - return ""; } - private String description(Node node) { + private void description(StringBuilder out, Node node) { Description description = ((AbstractDescribedNode) node).getDescription(); if (description == null || description.getContent() == null || compactMode) { - return ""; + return; } - String s; - boolean startNewLine = description.getContent().length() > 0 && description.getContent().charAt(0) == '\n'; +; if (description.isMultiLine()) { - s = "\"\"\"" + (startNewLine ? "" : "\n") + description.getContent() + "\n\"\"\"\n"; + out.append("\"\"\""); + if (description.getContent().isEmpty() || description.getContent().charAt(0) != '\n') { + out.append('\n'); + } + out.append(description.getContent()); + out.append("\n\"\"\"\n"); } else { - s = "\"" + escapeJsonString(description.getContent()) + "\"\n"; + out.append('"'); + escapeJsonStringTo(out, description.getContent()); + out.append("\"\n"); } - return s; } - private String directives(List directives) { - return join(nvl(directives), compactMode ? "" : " "); + private void directives(StringBuilder out, List directives) { + join(out, nvl(directives), compactMode ? "" : " "); } - private String join(List nodes, String delim) { - return join(nodes, delim, "", ""); + private > void join(StringBuilder out, List nodes, String delim) { + if (isEmpty(nodes)) { + return; + } + Iterator iterator = nodes.iterator(); + node(out, iterator.next()); + while (iterator.hasNext()) { + out.append(delim); + node(out, iterator.next()); + } } /* @@ -553,58 +674,22 @@ private String join(List nodes, String delim) { * This encodes that knowledge of those that don't require delimiters */ @SuppressWarnings("SameParameterValue") - private String joinTight(List nodes, String delim, String prefix, String suffix) { - StringBuilder joined = new StringBuilder(); - joined.append(prefix); + private > void joinTight(StringBuilder output, List nodes, String delim, String prefix, String suffix) { + output.append(prefix); - String lastNodeText = ""; boolean first = true; for (T node : nodes) { if (first) { first = false; } else { - boolean canButtTogether = lastNodeText.endsWith("}"); - if (!canButtTogether) { - joined.append(delim); + if (output.charAt(output.length() - 1) != '}') { + output.append(delim); } } - String nodeText = this.node(node); - lastNodeText = nodeText; - joined.append(nodeText); - } - - joined.append(suffix); - return joined.toString(); - } - - private String join(List nodes, String delim, String prefix, String suffix) { - StringJoiner joiner = new StringJoiner(delim, prefix, suffix); - - for (T node : nodes) { - joiner.add(node(node)); - } - - return joiner.toString(); - } - - private String spaced(String... args) { - return join(" ", args); - } - - private String smooshed(String... args) { - return join("", args); - } - - private String join(String delim, String... args) { - StringJoiner joiner = new StringJoiner(delim); - - for (final String arg : args) { - if (!isEmpty(arg)) { - joiner.add(arg); - } + node(output, node); } - return joiner.toString(); + output.append(suffix); } String wrap(String start, String maybeString, String end) { @@ -617,27 +702,31 @@ String wrap(String start, String maybeString, String end) { return start + maybeString + (!isEmpty(end) ? end : ""); } - private String block(List nodes) { + private > void block(StringBuilder out, List nodes) { if (isEmpty(nodes)) { - return "{}"; + return; } if (compactMode) { - String joinedNodes = joinTight(nodes, " ", "", ""); - return "{" + joinedNodes + "}"; + out.append('{'); + joinTight(out, nodes, " ", "", ""); + out.append('}'); + } else { + int offset = out.length(); + out.append("{\n"); + join(out, nodes, "\n"); + indent(out, offset); + out.append("\n}"); } - return indent(new StringBuilder().append("{\n").append(join(nodes, "\n"))) - + "\n}"; } - private StringBuilder indent(StringBuilder maybeString) { - for (int i = 0; i < maybeString.length(); i++) { + private static void indent(StringBuilder maybeString, int offset) { + for (int i = offset; i < maybeString.length(); i++) { char c = maybeString.charAt(i); if (c == '\n') { maybeString.replace(i, i + 1, "\n "); i += 3; } } - return maybeString; } @SuppressWarnings("SameParameterValue") @@ -657,10 +746,33 @@ String wrap(String start, Node maybeNode, String end) { */ public static String printAst(Node node) { StringBuilder builder = new StringBuilder(); - printImpl(builder, node, false); + printAstTo(node, builder); return builder.toString(); } + /** + * This will pretty print the AST node in graphql language format to the given Appendable + * + * @param node the AST node to print + * @param appendable the Appendable to write the output to + * + */ + public static void printAstTo(Node node, Appendable appendable) { + if (appendable instanceof StringBuilder) { + printImpl((StringBuilder) appendable, node, false); + } else if (appendable instanceof Writer) { + printAst((Writer) appendable, node); + } else { + StringBuilder builder = new StringBuilder(); + printImpl(builder, node, false); + try { + appendable.append(builder); + } catch (IOException e) { + throw new UncheckedIOException(e); + } + } + } + /** * This will pretty print the AST node in graphql language format * @@ -669,8 +781,11 @@ public static String printAst(Node node) { */ public static void printAst(Writer writer, Node node) { String ast = printAst(node); - PrintWriter printer = new PrintWriter(writer); - printer.write(ast); + try { + writer.write(ast); + } catch (IOException e) { + throw new UncheckedIOException(e); + } } /** @@ -687,7 +802,7 @@ public static String printAstCompact(Node node) { return builder.toString(); } - private static void printImpl(StringBuilder writer, Node node, boolean compactMode) { + private static void printImpl(StringBuilder writer, Node node, boolean compactMode) { AstPrinter astPrinter = new AstPrinter(compactMode); NodePrinter printer = astPrinter._findPrinter(node); printer.print(writer, node); diff --git a/src/main/java/graphql/language/AstSignature.java b/src/main/java/graphql/language/AstSignature.java index 84b1d0e871..f6964305b2 100644 --- a/src/main/java/graphql/language/AstSignature.java +++ b/src/main/java/graphql/language/AstSignature.java @@ -1,6 +1,5 @@ package graphql.language; -import com.google.common.collect.ImmutableList; import graphql.PublicApi; import graphql.collect.ImmutableKit; import graphql.util.TraversalControl; @@ -149,16 +148,15 @@ private Document dropUnusedQueryDefinitions(Document document, final String oper NodeVisitorStub visitor = new NodeVisitorStub() { @Override public TraversalControl visitDocument(Document node, TraverserContext context) { - List wantedDefinitions = node.getDefinitions().stream() - .filter(d -> { + List wantedDefinitions = ImmutableKit.filter(node.getDefinitions(), + d -> { if (d instanceof OperationDefinition) { OperationDefinition operationDefinition = (OperationDefinition) d; return isThisOperation(operationDefinition, operationName); } return d instanceof FragmentDefinition; // SDL in a query makes no sense - its gone should it be present - }) - .collect(ImmutableList.toImmutableList()); + }); Document changedNode = node.transform(builder -> { builder.definitions(wantedDefinitions); diff --git a/src/main/java/graphql/language/Document.java b/src/main/java/graphql/language/Document.java index 3fdd459640..1f613686e4 100644 --- a/src/main/java/graphql/language/Document.java +++ b/src/main/java/graphql/language/Document.java @@ -55,10 +55,9 @@ public List getDefinitions() { * @return a list of definitions of that class or empty list */ public List getDefinitionsOfType(Class definitionClass) { - return definitions.stream() - .filter(d -> definitionClass.isAssignableFrom(d.getClass())) - .map(definitionClass::cast) - .collect(ImmutableList.toImmutableList()); + return ImmutableKit.filterAndMap(definitions, + d -> definitionClass.isAssignableFrom(d.getClass()), + definitionClass::cast); } /** diff --git a/src/main/java/graphql/language/InterfaceTypeDefinition.java b/src/main/java/graphql/language/InterfaceTypeDefinition.java index 51b6ef61e8..c86c0fa486 100644 --- a/src/main/java/graphql/language/InterfaceTypeDefinition.java +++ b/src/main/java/graphql/language/InterfaceTypeDefinition.java @@ -21,7 +21,7 @@ import static graphql.language.NodeChildrenContainer.newNodeChildrenContainer; @PublicApi -public class InterfaceTypeDefinition extends AbstractDescribedNode implements ImplementingTypeDefinition, DirectivesContainer, NamedNode, SDLExtensionDefinition { +public class InterfaceTypeDefinition extends AbstractDescribedNode implements ImplementingTypeDefinition, DirectivesContainer, NamedNode { private final String name; private final ImmutableList implementz; diff --git a/src/main/java/graphql/language/InterfaceTypeExtensionDefinition.java b/src/main/java/graphql/language/InterfaceTypeExtensionDefinition.java index a693c52866..2de917065b 100644 --- a/src/main/java/graphql/language/InterfaceTypeExtensionDefinition.java +++ b/src/main/java/graphql/language/InterfaceTypeExtensionDefinition.java @@ -14,7 +14,7 @@ import static graphql.collect.ImmutableKit.emptyList; @PublicApi -public class InterfaceTypeExtensionDefinition extends InterfaceTypeDefinition { +public class InterfaceTypeExtensionDefinition extends InterfaceTypeDefinition implements SDLExtensionDefinition { @Internal protected InterfaceTypeExtensionDefinition(String name, diff --git a/src/main/java/graphql/language/NodeParentTree.java b/src/main/java/graphql/language/NodeParentTree.java index fc78ea093d..a5e51d89fc 100644 --- a/src/main/java/graphql/language/NodeParentTree.java +++ b/src/main/java/graphql/language/NodeParentTree.java @@ -3,6 +3,7 @@ import com.google.common.collect.ImmutableList; import graphql.Internal; import graphql.PublicApi; +import graphql.collect.ImmutableKit; import java.util.ArrayDeque; import java.util.ArrayList; @@ -42,10 +43,9 @@ public NodeParentTree(Deque nodeStack) { } private ImmutableList mkPath(Deque copy) { - return copy.stream() - .filter(node1 -> node1 instanceof NamedNode) - .map(node1 -> ((NamedNode) node1).getName()) - .collect(ImmutableList.toImmutableList()); + return ImmutableKit.filterAndMap(copy, + node1 -> node1 instanceof NamedNode, + node1 -> ((NamedNode) node1).getName()); } diff --git a/src/main/java/graphql/language/OperationDefinition.java b/src/main/java/graphql/language/OperationDefinition.java index 1a7197c88f..b60aac3a11 100644 --- a/src/main/java/graphql/language/OperationDefinition.java +++ b/src/main/java/graphql/language/OperationDefinition.java @@ -21,7 +21,7 @@ import static graphql.language.NodeChildrenContainer.newNodeChildrenContainer; @PublicApi -public class OperationDefinition extends AbstractNode implements Definition, SelectionSetContainer, DirectivesContainer { +public class OperationDefinition extends AbstractNode implements Definition, SelectionSetContainer, DirectivesContainer, NamedNode { public enum Operation { QUERY, MUTATION, SUBSCRIPTION diff --git a/src/main/java/graphql/language/SelectionSet.java b/src/main/java/graphql/language/SelectionSet.java index 2ff152657c..8e85bdcdef 100644 --- a/src/main/java/graphql/language/SelectionSet.java +++ b/src/main/java/graphql/language/SelectionSet.java @@ -54,10 +54,9 @@ public List getSelections() { * @return a list of selections of that class or empty list */ public List getSelectionsOfType(Class selectionClass) { - return selections.stream() - .filter(d -> selectionClass.isAssignableFrom(d.getClass())) - .map(selectionClass::cast) - .collect(ImmutableList.toImmutableList()); + return ImmutableKit.filterAndMap(selections, + d -> selectionClass.isAssignableFrom(d.getClass()), + selectionClass::cast); } @Override diff --git a/src/main/java/graphql/normalized/ArgumentMaker.java b/src/main/java/graphql/normalized/ArgumentMaker.java new file mode 100644 index 0000000000..c6ad4868ba --- /dev/null +++ b/src/main/java/graphql/normalized/ArgumentMaker.java @@ -0,0 +1,110 @@ +package graphql.normalized; + +import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableMap; +import graphql.Internal; +import graphql.execution.directives.QueryAppliedDirective; +import graphql.execution.directives.QueryAppliedDirectiveArgument; +import graphql.execution.directives.QueryDirectives; +import graphql.language.Argument; +import graphql.language.ArrayValue; +import graphql.language.NullValue; +import graphql.language.ObjectField; +import graphql.language.ObjectValue; +import graphql.language.Value; +import org.jspecify.annotations.NonNull; +import org.jspecify.annotations.Nullable; + +import java.util.List; +import java.util.Map; + +import static graphql.collect.ImmutableKit.emptyMap; +import static graphql.collect.ImmutableKit.map; +import static graphql.language.Argument.newArgument; + +/** + * This class is a peer class and broken out of {@link ExecutableNormalizedOperationToAstCompiler} to deal with + * argument value making. + */ +@Internal +class ArgumentMaker { + + static List createArguments(ExecutableNormalizedField executableNormalizedField, + VariableAccumulator variableAccumulator) { + ImmutableList.Builder result = ImmutableList.builder(); + ImmutableMap normalizedArguments = executableNormalizedField.getNormalizedArguments(); + for (String argName : normalizedArguments.keySet()) { + NormalizedInputValue normalizedInputValue = normalizedArguments.get(argName); + Value value = argValue(executableNormalizedField, null, argName, normalizedInputValue, variableAccumulator); + Argument argument = newArgument() + .name(argName) + .value(value) + .build(); + result.add(argument); + } + return result.build(); + } + + static List createDirectiveArguments(ExecutableNormalizedField executableNormalizedField, + QueryDirectives queryDirectives, + QueryAppliedDirective queryAppliedDirective, + VariableAccumulator variableAccumulator) { + + Map argValueMap = queryDirectives.getNormalizedInputValueByImmediateAppliedDirectives().getOrDefault(queryAppliedDirective, emptyMap()); + + ImmutableList.Builder result = ImmutableList.builder(); + for (QueryAppliedDirectiveArgument directiveArgument : queryAppliedDirective.getArguments()) { + String argName = directiveArgument.getName(); + if (argValueMap != null && argValueMap.containsKey(argName)) { + NormalizedInputValue normalizedInputValue = argValueMap.get(argName); + Value value = argValue(executableNormalizedField, queryAppliedDirective, argName, normalizedInputValue, variableAccumulator); + Argument argument = newArgument() + .name(argName) + .value(value) + .build(); + result.add(argument); + } + } + return result.build(); + } + + @SuppressWarnings("unchecked") + private static Value argValue(ExecutableNormalizedField executableNormalizedField, + QueryAppliedDirective queryAppliedDirective, + String argName, + @Nullable Object value, + VariableAccumulator variableAccumulator) { + if (value instanceof List) { + ArrayValue.Builder arrayValue = ArrayValue.newArrayValue(); + arrayValue.values(map((List) value, val -> argValue(executableNormalizedField, queryAppliedDirective, argName, val, variableAccumulator))); + return arrayValue.build(); + } + if (value instanceof Map) { + ObjectValue.Builder objectValue = ObjectValue.newObjectValue(); + Map map = (Map) value; + for (String fieldName : map.keySet()) { + Value fieldValue = argValue(executableNormalizedField, queryAppliedDirective, argName, (NormalizedInputValue) map.get(fieldName), variableAccumulator); + objectValue.objectField(ObjectField.newObjectField().name(fieldName).value(fieldValue).build()); + } + return objectValue.build(); + } + if (value == null) { + return NullValue.newNullValue().build(); + } + return (Value) value; + } + + @NonNull + private static Value argValue(ExecutableNormalizedField executableNormalizedField, + QueryAppliedDirective queryAppliedDirective, + String argName, + NormalizedInputValue normalizedInputValue, + VariableAccumulator variableAccumulator) { + if (variableAccumulator.shouldMakeVariable(executableNormalizedField, queryAppliedDirective, argName, normalizedInputValue)) { + VariableValueWithDefinition variableWithDefinition = variableAccumulator.accumulateVariable(normalizedInputValue); + return variableWithDefinition.getVariableReference(); + } else { + return argValue(executableNormalizedField, queryAppliedDirective, argName, normalizedInputValue.getValue(), variableAccumulator); + } + } +} diff --git a/src/main/java/graphql/normalized/ExecutableNormalizedField.java b/src/main/java/graphql/normalized/ExecutableNormalizedField.java index f9db04b00a..963c2ae5a9 100644 --- a/src/main/java/graphql/normalized/ExecutableNormalizedField.java +++ b/src/main/java/graphql/normalized/ExecutableNormalizedField.java @@ -19,8 +19,8 @@ import graphql.schema.GraphQLUnionType; import graphql.util.FpKit; import graphql.util.MutableRef; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; +import org.jspecify.annotations.NonNull; +import org.jspecify.annotations.Nullable; import java.util.ArrayList; import java.util.Collection; @@ -136,7 +136,7 @@ private ExecutableNormalizedField(Builder builder) { * * @return true if the field is conditional */ - public boolean isConditional(@NotNull GraphQLSchema schema) { + public boolean isConditional(@NonNull GraphQLSchema schema) { if (parent == null) { return false; } @@ -655,7 +655,7 @@ public Builder resolvedArguments(@Nullable Map arguments) { return this; } - public Builder astArguments(@NotNull List astArguments) { + public Builder astArguments(@NonNull List astArguments) { this.astArguments = ImmutableList.copyOf(astArguments); return this; } diff --git a/src/main/java/graphql/normalized/ExecutableNormalizedOperationFactory.java b/src/main/java/graphql/normalized/ExecutableNormalizedOperationFactory.java index 085fad0afb..3becba6701 100644 --- a/src/main/java/graphql/normalized/ExecutableNormalizedOperationFactory.java +++ b/src/main/java/graphql/normalized/ExecutableNormalizedOperationFactory.java @@ -12,6 +12,7 @@ import graphql.execution.AbortExecutionException; import graphql.execution.CoercedVariables; import graphql.execution.MergedField; +import graphql.execution.NormalizedVariables; import graphql.execution.RawVariables; import graphql.execution.ValuesResolver; import graphql.execution.conditional.ConditionalNodes; @@ -42,7 +43,7 @@ import graphql.schema.GraphQLUnionType; import graphql.schema.GraphQLUnmodifiedType; import graphql.schema.impl.SchemaUtil; -import org.jetbrains.annotations.Nullable; +import org.jspecify.annotations.Nullable; import java.util.ArrayList; import java.util.Collection; @@ -52,6 +53,7 @@ import java.util.Locale; import java.util.Map; import java.util.Objects; +import java.util.Optional; import java.util.Set; import java.util.function.Function; import java.util.function.Predicate; @@ -423,7 +425,7 @@ public static ExecutableNormalizedOperation createExecutableNormalizedOperationW rawVariables, options.getGraphQLContext(), options.getLocale()); - Map normalizedVariableValues = ValuesResolver.getNormalizedVariableValues(graphQLSchema, + NormalizedVariables normalizedVariableValues = ValuesResolver.getNormalizedVariableValues(graphQLSchema, variableDefinitions, rawVariables, options.getGraphQLContext(), @@ -445,7 +447,7 @@ private static class ExecutableNormalizedOperationFactoryImpl { private final OperationDefinition operationDefinition; private final Map fragments; private final CoercedVariables coercedVariableValues; - private final @Nullable Map normalizedVariableValues; + private final @Nullable NormalizedVariables normalizedVariableValues; private final Options options; private final List possibleMergerList = new ArrayList<>(); @@ -457,12 +459,14 @@ private static class ExecutableNormalizedOperationFactoryImpl { private int fieldCount = 0; private int maxDepthSeen = 0; + private final List rootEnfs = new ArrayList<>(); + private ExecutableNormalizedOperationFactoryImpl( GraphQLSchema graphQLSchema, OperationDefinition operationDefinition, Map fragments, CoercedVariables coercedVariableValues, - @Nullable Map normalizedVariableValues, + @Nullable NormalizedVariables normalizedVariableValues, Options options ) { this.graphQLSchema = graphQLSchema; @@ -477,26 +481,8 @@ private ExecutableNormalizedOperationFactoryImpl( * Creates a new ExecutableNormalizedOperation for the provided query */ private ExecutableNormalizedOperation createNormalizedQueryImpl() { - GraphQLObjectType rootType = SchemaUtil.getOperationRootType(graphQLSchema, operationDefinition); - - CollectNFResult collectFromOperationResult = collectFromOperation(rootType); - - for (ExecutableNormalizedField topLevel : collectFromOperationResult.children) { - ImmutableList fieldAndAstParents = collectFromOperationResult.normalizedFieldToAstFields.get(topLevel); - MergedField mergedField = newMergedField(fieldAndAstParents); + buildEnfsRecursively(null, null, 0); - captureMergedField(topLevel, mergedField); - - updateFieldToNFMap(topLevel, fieldAndAstParents); - updateCoordinatedToNFMap(topLevel); - - int depthSeen = buildFieldWithChildren( - topLevel, - fieldAndAstParents, - 1); - maxDepthSeen = Math.max(maxDepthSeen, depthSeen); - } - // getPossibleMergerList for (PossibleMerger possibleMerger : possibleMergerList) { List childrenWithSameResultKey = possibleMerger.parent.getChildrenWithSameResultKey(possibleMerger.resultKey); ENFMerger.merge(possibleMerger.parent, childrenWithSameResultKey, graphQLSchema, options.deferSupport); @@ -504,7 +490,7 @@ private ExecutableNormalizedOperation createNormalizedQueryImpl() { return new ExecutableNormalizedOperation( operationDefinition.getOperation(), operationDefinition.getName(), - new ArrayList<>(collectFromOperationResult.children), + new ArrayList<>(rootEnfs), fieldToNormalizedField.build(), normalizedFieldToMergedField.build(), normalizedFieldToQueryDirectives.build(), @@ -516,22 +502,74 @@ private ExecutableNormalizedOperation createNormalizedQueryImpl() { private void captureMergedField(ExecutableNormalizedField enf, MergedField mergedFld) { // QueryDirectivesImpl is a lazy object and only computes itself when asked for - QueryDirectives queryDirectives = new QueryDirectivesImpl(mergedFld, graphQLSchema, coercedVariableValues.toMap(), options.getGraphQLContext(), options.getLocale()); + QueryDirectives queryDirectives = new QueryDirectivesImpl(mergedFld, + graphQLSchema, + coercedVariableValues, + () -> normalizedVariableValues, + options.getGraphQLContext(), + options.getLocale()); normalizedFieldToQueryDirectives.put(enf, queryDirectives); normalizedFieldToMergedField.put(enf, mergedFld); } - private int buildFieldWithChildren(ExecutableNormalizedField executableNormalizedField, - ImmutableList fieldAndAstParents, - int curLevel) { - checkMaxDepthExceeded(curLevel); + private void buildEnfsRecursively(@Nullable ExecutableNormalizedField executableNormalizedField, + @Nullable ImmutableList fieldAndAstParents, + int curLevel) { + if (this.maxDepthSeen < curLevel) { + this.maxDepthSeen = curLevel; + checkMaxDepthExceeded(curLevel); + } + Set possibleObjects; + List collectedFields; - CollectNFResult nextLevel = collectFromMergedField(executableNormalizedField, fieldAndAstParents, curLevel + 1); + // special handling for the root selection Set + if (executableNormalizedField == null) { + GraphQLObjectType rootType = SchemaUtil.getOperationRootType(graphQLSchema, operationDefinition); + possibleObjects = ImmutableSet.of(rootType); + collectedFields = new ArrayList<>(); + collectFromSelectionSet(operationDefinition.getSelectionSet(), collectedFields, rootType, possibleObjects, null); + } else { + List fieldDefs = executableNormalizedField.getFieldDefinitions(graphQLSchema); + possibleObjects = resolvePossibleObjects(fieldDefs); + if (possibleObjects.isEmpty()) { + return; + } + collectedFields = new ArrayList<>(); + for (CollectedField fieldAndAstParent : fieldAndAstParents) { + if (fieldAndAstParent.field.getSelectionSet() == null) { + continue; + } + // the AST parent comes from the previous collect from selection set call + // and is the type to which the field belongs (the container type of the field) and output type + // of the field needs to be determined based on the field name + GraphQLFieldDefinition fieldDefinition = Introspection.getFieldDef(graphQLSchema, fieldAndAstParent.astTypeCondition, fieldAndAstParent.field.getName()); + // it must a composite type, because the field has a selection set + GraphQLCompositeType selectionSetType = (GraphQLCompositeType) unwrapAll(fieldDefinition.getType()); + this.collectFromSelectionSet(fieldAndAstParent.field.getSelectionSet(), + collectedFields, + selectionSetType, + possibleObjects, + null + ); + } + } - int maxDepthSeen = curLevel; - for (ExecutableNormalizedField childENF : nextLevel.children) { - executableNormalizedField.addChild(childENF); - ImmutableList childFieldAndAstParents = nextLevel.normalizedFieldToAstFields.get(childENF); + Map> fieldsByName = fieldsByResultKey(collectedFields); + ImmutableList.Builder resultNFs = ImmutableList.builder(); + ImmutableListMultimap.Builder normalizedFieldToAstFields = ImmutableListMultimap.builder(); + createNFs(resultNFs, fieldsByName, normalizedFieldToAstFields, curLevel + 1, executableNormalizedField); + + ImmutableList nextLevelChildren = resultNFs.build(); + ImmutableListMultimap nextLevelNormalizedFieldToAstFields = normalizedFieldToAstFields.build(); + + for (ExecutableNormalizedField childENF : nextLevelChildren) { + if (executableNormalizedField == null) { + // all root ENFs don't have a parent, but are collected in the rootEnfs list + rootEnfs.add(childENF); + } else { + executableNormalizedField.addChild(childENF); + } + ImmutableList childFieldAndAstParents = nextLevelNormalizedFieldToAstFields.get(childENF); MergedField mergedField = newMergedField(childFieldAndAstParents); captureMergedField(childENF, mergedField); @@ -539,14 +577,11 @@ private int buildFieldWithChildren(ExecutableNormalizedField executableNormalize updateFieldToNFMap(childENF, childFieldAndAstParents); updateCoordinatedToNFMap(childENF); - int depthSeen = buildFieldWithChildren(childENF, + // recursive call + buildEnfsRecursively(childENF, childFieldAndAstParents, curLevel + 1); - maxDepthSeen = Math.max(maxDepthSeen, depthSeen); - - checkMaxDepthExceeded(maxDepthSeen); } - return maxDepthSeen; } private void checkMaxDepthExceeded(int depthSeen) { @@ -555,13 +590,13 @@ private void checkMaxDepthExceeded(int depthSeen) { } } - private static MergedField newMergedField(ImmutableList fieldAndAstParents) { + private static MergedField newMergedField(ImmutableList fieldAndAstParents) { return MergedField.newMergedField(map(fieldAndAstParents, fieldAndAstParent -> fieldAndAstParent.field)).build(); } private void updateFieldToNFMap(ExecutableNormalizedField executableNormalizedField, - ImmutableList mergedField) { - for (FieldAndAstParent astField : mergedField) { + ImmutableList mergedField) { + for (CollectedField astField : mergedField) { fieldToNormalizedField.put(astField.field, executableNormalizedField); } } @@ -573,37 +608,6 @@ private void updateCoordinatedToNFMap(ExecutableNormalizedField topLevel) { } } - public CollectNFResult collectFromMergedField(ExecutableNormalizedField executableNormalizedField, - ImmutableList mergedField, - int level) { - List fieldDefs = executableNormalizedField.getFieldDefinitions(graphQLSchema); - Set possibleObjects = resolvePossibleObjects(fieldDefs); - if (possibleObjects.isEmpty()) { - return new CollectNFResult(ImmutableKit.emptyList(), ImmutableListMultimap.of()); - } - - List collectedFields = new ArrayList<>(); - for (FieldAndAstParent fieldAndAstParent : mergedField) { - if (fieldAndAstParent.field.getSelectionSet() == null) { - continue; - } - GraphQLFieldDefinition fieldDefinition = Introspection.getFieldDef(graphQLSchema, fieldAndAstParent.astParentType, fieldAndAstParent.field.getName()); - GraphQLUnmodifiedType astParentType = unwrapAll(fieldDefinition.getType()); - this.collectFromSelectionSet(fieldAndAstParent.field.getSelectionSet(), - collectedFields, - (GraphQLCompositeType) astParentType, - possibleObjects, - null - ); - } - Map> fieldsByName = fieldsByResultKey(collectedFields); - ImmutableList.Builder resultNFs = ImmutableList.builder(); - ImmutableListMultimap.Builder normalizedFieldToAstFields = ImmutableListMultimap.builder(); - - createNFs(resultNFs, fieldsByName, normalizedFieldToAstFields, level, executableNormalizedField); - - return new CollectNFResult(resultNFs.build(), normalizedFieldToAstFields.build()); - } private Map> fieldsByResultKey(List collectedFields) { Map> fieldsByName = new LinkedHashMap<>(); @@ -613,25 +617,10 @@ private Map> fieldsByResultKey(List return fieldsByName; } - public CollectNFResult collectFromOperation(GraphQLObjectType rootType) { - - - Set possibleObjects = ImmutableSet.of(rootType); - List collectedFields = new ArrayList<>(); - collectFromSelectionSet(operationDefinition.getSelectionSet(), collectedFields, rootType, possibleObjects, null); - // group by result key - Map> fieldsByName = fieldsByResultKey(collectedFields); - ImmutableList.Builder resultNFs = ImmutableList.builder(); - ImmutableListMultimap.Builder normalizedFieldToAstFields = ImmutableListMultimap.builder(); - - createNFs(resultNFs, fieldsByName, normalizedFieldToAstFields, 1, null); - - return new CollectNFResult(resultNFs.build(), normalizedFieldToAstFields.build()); - } private void createNFs(ImmutableList.Builder nfListBuilder, Map> fieldsByName, - ImmutableListMultimap.Builder normalizedFieldToAstFields, + ImmutableListMultimap.Builder normalizedFieldToAstFields, int level, ExecutableNormalizedField parent) { for (String resultKey : fieldsByName.keySet()) { @@ -643,7 +632,7 @@ private void createNFs(ImmutableList.Builder nfListBu continue; } for (CollectedField collectedField : fieldGroup.fields) { - normalizedFieldToAstFields.put(nf, new FieldAndAstParent(collectedField.field, collectedField.astTypeCondition)); + normalizedFieldToAstFields.put(nf, collectedField); } nfListBuilder.add(nf); @@ -657,6 +646,7 @@ private void createNFs(ImmutableList.Builder nfListBu } } + // new single ENF private ExecutableNormalizedField createNF(CollectedFieldGroup collectedFieldGroup, int level, ExecutableNormalizedField parent) { @@ -674,7 +664,7 @@ private ExecutableNormalizedField createNF(CollectedFieldGroup collectedFieldGro Map argumentValues = ValuesResolver.getArgumentValues(fieldDefinition.getArguments(), field.getArguments(), CoercedVariables.of(this.coercedVariableValues.toMap()), this.options.graphQLContext, this.options.locale); Map normalizedArgumentValues = null; if (this.normalizedVariableValues != null) { - normalizedArgumentValues = ValuesResolver.getNormalizedArgumentValues(fieldDefinition.getArguments(), field.getArguments(), this.normalizedVariableValues); + normalizedArgumentValues = ValuesResolver.getNormalizedArgumentValues(fieldDefinition.getArguments(), field.getArguments(), this.normalizedVariableValues.toMap()); } ImmutableList objectTypeNames = map(objectTypes, GraphQLObjectType::getName); return ExecutableNormalizedField.newNormalizedField() @@ -847,7 +837,7 @@ private void collectInlineFragment(List result, collectFromSelectionSet(inlineFragment.getSelectionSet(), result, newAstTypeCondition, newPossibleObjects, newDeferredExecution); } - private NormalizedDeferredExecution buildDeferredExecution( + private @Nullable NormalizedDeferredExecution buildDeferredExecution( List directives, Set newPossibleObjects) { if (!options.deferSupport) { @@ -942,26 +932,6 @@ public CollectedField(Field field, Set objectTypes, GraphQLCo } } - public static class CollectNFResult { - private final Collection children; - private final ImmutableListMultimap normalizedFieldToAstFields; - - public CollectNFResult(Collection children, ImmutableListMultimap normalizedFieldToAstFields) { - this.children = children; - this.normalizedFieldToAstFields = normalizedFieldToAstFields; - } - } - - private static class FieldAndAstParent { - final Field field; - final GraphQLCompositeType astParentType; - - private FieldAndAstParent(Field field, GraphQLCompositeType astParentType) { - this.field = field; - this.astParentType = astParentType; - } - } - private static class CollectedFieldGroup { Set objectTypes; Set fields; diff --git a/src/main/java/graphql/normalized/ExecutableNormalizedOperationToAstCompiler.java b/src/main/java/graphql/normalized/ExecutableNormalizedOperationToAstCompiler.java index 877decb767..9509d9554b 100644 --- a/src/main/java/graphql/normalized/ExecutableNormalizedOperationToAstCompiler.java +++ b/src/main/java/graphql/normalized/ExecutableNormalizedOperationToAstCompiler.java @@ -1,36 +1,31 @@ package graphql.normalized; import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableMap; import graphql.Assert; import graphql.Directives; import graphql.ExperimentalApi; import graphql.PublicApi; +import graphql.execution.directives.QueryAppliedDirective; import graphql.execution.directives.QueryDirectives; import graphql.introspection.Introspection; import graphql.language.Argument; -import graphql.language.ArrayValue; import graphql.language.Directive; import graphql.language.Document; import graphql.language.Field; import graphql.language.InlineFragment; -import graphql.language.NullValue; -import graphql.language.ObjectField; -import graphql.language.ObjectValue; import graphql.language.OperationDefinition; import graphql.language.Selection; import graphql.language.SelectionSet; import graphql.language.StringValue; import graphql.language.TypeName; -import graphql.language.Value; import graphql.normalized.incremental.NormalizedDeferredExecution; import graphql.schema.GraphQLCompositeType; import graphql.schema.GraphQLFieldDefinition; import graphql.schema.GraphQLObjectType; import graphql.schema.GraphQLSchema; import graphql.schema.GraphQLUnmodifiedType; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; +import org.jspecify.annotations.NonNull; +import org.jspecify.annotations.Nullable; import java.util.ArrayList; import java.util.LinkedHashMap; @@ -41,12 +36,12 @@ import java.util.stream.Collectors; import static graphql.collect.ImmutableKit.emptyList; -import static graphql.collect.ImmutableKit.map; import static graphql.language.Argument.newArgument; import static graphql.language.Field.newField; import static graphql.language.InlineFragment.newInlineFragment; import static graphql.language.SelectionSet.newSelectionSet; import static graphql.language.TypeName.newTypeName; +import static graphql.normalized.ArgumentMaker.createArguments; import static graphql.schema.GraphQLTypeUtil.unwrapAll; /** @@ -100,10 +95,10 @@ public Map getVariables() { * * @return a {@link CompilerResult} object */ - public static CompilerResult compileToDocument(@NotNull GraphQLSchema schema, - @NotNull OperationDefinition.Operation operationKind, + public static CompilerResult compileToDocument(@NonNull GraphQLSchema schema, + OperationDefinition.@NonNull Operation operationKind, @Nullable String operationName, - @NotNull List topLevelFields, + @NonNull List topLevelFields, @Nullable VariablePredicate variablePredicate) { return compileToDocument(schema, operationKind, operationName, topLevelFields, Map.of(), variablePredicate); } @@ -123,11 +118,11 @@ public static CompilerResult compileToDocument(@NotNull GraphQLSchema schema, * * @return a {@link CompilerResult} object */ - public static CompilerResult compileToDocument(@NotNull GraphQLSchema schema, - @NotNull OperationDefinition.Operation operationKind, + public static CompilerResult compileToDocument(@NonNull GraphQLSchema schema, + OperationDefinition.@NonNull Operation operationKind, @Nullable String operationName, - @NotNull List topLevelFields, - @NotNull Map normalizedFieldToQueryDirectives, + @NonNull List topLevelFields, + @NonNull Map normalizedFieldToQueryDirectives, @Nullable VariablePredicate variablePredicate) { return compileToDocument(schema, operationKind, operationName, topLevelFields, normalizedFieldToQueryDirectives, variablePredicate, false); } @@ -150,10 +145,10 @@ public static CompilerResult compileToDocument(@NotNull GraphQLSchema schema, * @see ExecutableNormalizedOperationToAstCompiler#compileToDocument(GraphQLSchema, OperationDefinition.Operation, String, List, VariablePredicate) */ @ExperimentalApi - public static CompilerResult compileToDocumentWithDeferSupport(@NotNull GraphQLSchema schema, - @NotNull OperationDefinition.Operation operationKind, + public static CompilerResult compileToDocumentWithDeferSupport(@NonNull GraphQLSchema schema, + OperationDefinition.@NonNull Operation operationKind, @Nullable String operationName, - @NotNull List topLevelFields, + @NonNull List topLevelFields, @Nullable VariablePredicate variablePredicate ) { return compileToDocumentWithDeferSupport(schema, operationKind, operationName, topLevelFields, Map.of(), variablePredicate); @@ -177,21 +172,21 @@ public static CompilerResult compileToDocumentWithDeferSupport(@NotNull GraphQLS * @see ExecutableNormalizedOperationToAstCompiler#compileToDocument(GraphQLSchema, OperationDefinition.Operation, String, List, Map, VariablePredicate) */ @ExperimentalApi - public static CompilerResult compileToDocumentWithDeferSupport(@NotNull GraphQLSchema schema, - @NotNull OperationDefinition.Operation operationKind, + public static CompilerResult compileToDocumentWithDeferSupport(@NonNull GraphQLSchema schema, + OperationDefinition.@NonNull Operation operationKind, @Nullable String operationName, - @NotNull List topLevelFields, - @NotNull Map normalizedFieldToQueryDirectives, + @NonNull List topLevelFields, + @NonNull Map normalizedFieldToQueryDirectives, @Nullable VariablePredicate variablePredicate ) { return compileToDocument(schema, operationKind, operationName, topLevelFields, normalizedFieldToQueryDirectives, variablePredicate, true); } - private static CompilerResult compileToDocument(@NotNull GraphQLSchema schema, - @NotNull OperationDefinition.Operation operationKind, + private static CompilerResult compileToDocument(@NonNull GraphQLSchema schema, + OperationDefinition.@NonNull Operation operationKind, @Nullable String operationName, - @NotNull List topLevelFields, - @NotNull Map normalizedFieldToQueryDirectives, + @NonNull List topLevelFields, + @NonNull Map normalizedFieldToQueryDirectives, @Nullable VariablePredicate variablePredicate, boolean deferSupport) { GraphQLObjectType operationType = getOperationType(schema, operationKind); @@ -216,9 +211,9 @@ private static CompilerResult compileToDocument(@NotNull GraphQLSchema schema, } private static List> subselectionsForNormalizedField(GraphQLSchema schema, - @NotNull String parentOutputType, + @NonNull String parentOutputType, List executableNormalizedFields, - @NotNull Map normalizedFieldToQueryDirectives, + @NonNull Map normalizedFieldToQueryDirectives, VariableAccumulator variableAccumulator, boolean deferSupport) { if (deferSupport) { @@ -229,9 +224,9 @@ private static List> subselectionsForNormalizedField(GraphQLSchema } private static List> subselectionsForNormalizedFieldNoDeferSupport(GraphQLSchema schema, - @NotNull String parentOutputType, + @NonNull String parentOutputType, List executableNormalizedFields, - @NotNull Map normalizedFieldToQueryDirectives, + @NonNull Map normalizedFieldToQueryDirectives, VariableAccumulator variableAccumulator) { ImmutableList.Builder> selections = ImmutableList.builder(); @@ -265,9 +260,9 @@ private static List> subselectionsForNormalizedFieldNoDeferSupport( private static List> subselectionsForNormalizedFieldWithDeferSupport(GraphQLSchema schema, - @NotNull String parentOutputType, + @NonNull String parentOutputType, List executableNormalizedFields, - @NotNull Map normalizedFieldToQueryDirectives, + @NonNull Map normalizedFieldToQueryDirectives, VariableAccumulator variableAccumulator) { ImmutableList.Builder> selections = ImmutableList.builder(); @@ -339,7 +334,7 @@ private static List> subselectionsForNormalizedFieldWithDeferSuppor */ private static Map selectionForNormalizedField(GraphQLSchema schema, ExecutableNormalizedField executableNormalizedField, - @NotNull Map normalizedFieldToQueryDirectives, + @NonNull Map normalizedFieldToQueryDirectives, VariableAccumulator variableAccumulator, boolean deferSupport) { Map groupedFields = new LinkedHashMap<>(); @@ -357,7 +352,7 @@ private static Map selectionForNormalizedField(GraphQLSchema sche private static Field selectionForNormalizedField(GraphQLSchema schema, String objectTypeName, ExecutableNormalizedField executableNormalizedField, - @NotNull Map normalizedFieldToQueryDirectives, + @NonNull Map normalizedFieldToQueryDirectives, VariableAccumulator variableAccumulator, boolean deferSupport) { final List> subSelections; @@ -382,20 +377,34 @@ private static Field selectionForNormalizedField(GraphQLSchema schema, QueryDirectives queryDirectives = normalizedFieldToQueryDirectives.get(executableNormalizedField); - Field.Builder builder = newField() .name(executableNormalizedField.getFieldName()) .alias(executableNormalizedField.getAlias()) .selectionSet(selectionSet) .arguments(arguments); + + List directives = buildDirectives(executableNormalizedField, queryDirectives, variableAccumulator); + return builder + .directives(directives) + .build(); + } + + private static @NonNull List buildDirectives(ExecutableNormalizedField executableNormalizedField, QueryDirectives queryDirectives, VariableAccumulator variableAccumulator) { if (queryDirectives == null || queryDirectives.getImmediateAppliedDirectivesByField().isEmpty()) { - return builder.build(); - } else { - List directives = queryDirectives.getImmediateAppliedDirectivesByField().keySet().stream().flatMap(field -> field.getDirectives().stream()).collect(Collectors.toList()); - return builder - .directives(directives) - .build(); + return emptyList(); } + return queryDirectives.getImmediateAppliedDirectivesByField().entrySet().stream() + .flatMap(entry -> entry.getValue().stream()) + .map(queryAppliedDirective -> buildDirective(executableNormalizedField, queryDirectives, queryAppliedDirective, variableAccumulator)) + .collect(Collectors.toList()); + } + + private static Directive buildDirective(ExecutableNormalizedField executableNormalizedField, QueryDirectives queryDirectives, QueryAppliedDirective queryAppliedDirective, VariableAccumulator variableAccumulator) { + + List arguments = ArgumentMaker.createDirectiveArguments(executableNormalizedField, queryDirectives, queryAppliedDirective, variableAccumulator); + return Directive.newDirective() + .name(queryAppliedDirective.getName()) + .arguments(arguments).build(); } @Nullable @@ -407,61 +416,8 @@ private static SelectionSet selectionSet(List fields) { return newSelectionSet().selections(fields).build(); } - private static List createArguments(ExecutableNormalizedField executableNormalizedField, - VariableAccumulator variableAccumulator) { - ImmutableList.Builder result = ImmutableList.builder(); - ImmutableMap normalizedArguments = executableNormalizedField.getNormalizedArguments(); - for (String argName : normalizedArguments.keySet()) { - NormalizedInputValue normalizedInputValue = normalizedArguments.get(argName); - Value value = argValue(executableNormalizedField, argName, normalizedInputValue, variableAccumulator); - Argument argument = newArgument() - .name(argName) - .value(value) - .build(); - result.add(argument); - } - return result.build(); - } - - @SuppressWarnings("unchecked") - private static Value argValue(ExecutableNormalizedField executableNormalizedField, - String argName, - @Nullable Object value, - VariableAccumulator variableAccumulator) { - if (value instanceof List) { - ArrayValue.Builder arrayValue = ArrayValue.newArrayValue(); - arrayValue.values(map((List) value, val -> argValue(executableNormalizedField, argName, val, variableAccumulator))); - return arrayValue.build(); - } - if (value instanceof Map) { - ObjectValue.Builder objectValue = ObjectValue.newObjectValue(); - Map map = (Map) value; - for (String fieldName : map.keySet()) { - Value fieldValue = argValue(executableNormalizedField, argName, (NormalizedInputValue) map.get(fieldName), variableAccumulator); - objectValue.objectField(ObjectField.newObjectField().name(fieldName).value(fieldValue).build()); - } - return objectValue.build(); - } - if (value == null) { - return NullValue.newNullValue().build(); - } - return (Value) value; - } - - @NotNull - private static Value argValue(ExecutableNormalizedField executableNormalizedField, - String argName, - NormalizedInputValue normalizedInputValue, - VariableAccumulator variableAccumulator) { - if (variableAccumulator.shouldMakeVariable(executableNormalizedField, argName, normalizedInputValue)) { - VariableValueWithDefinition variableWithDefinition = variableAccumulator.accumulateVariable(normalizedInputValue); - return variableWithDefinition.getVariableReference(); - } else { - return argValue(executableNormalizedField, argName, normalizedInputValue.getValue(), variableAccumulator); - } - } - @NotNull + @NonNull private static GraphQLFieldDefinition getFieldDefinition(GraphQLSchema schema, String parentType, ExecutableNormalizedField nf) { @@ -470,8 +426,8 @@ private static GraphQLFieldDefinition getFieldDefinition(GraphQLSchema schema, @Nullable - private static GraphQLObjectType getOperationType(@NotNull GraphQLSchema schema, - @NotNull OperationDefinition.Operation operationKind) { + private static GraphQLObjectType getOperationType(@NonNull GraphQLSchema schema, + OperationDefinition.@NonNull Operation operationKind) { switch (operationKind) { case QUERY: return schema.getQueryType(); diff --git a/src/main/java/graphql/normalized/ValueToVariableValueCompiler.java b/src/main/java/graphql/normalized/ValueToVariableValueCompiler.java index a120c8e707..87144dcc42 100644 --- a/src/main/java/graphql/normalized/ValueToVariableValueCompiler.java +++ b/src/main/java/graphql/normalized/ValueToVariableValueCompiler.java @@ -15,8 +15,8 @@ import graphql.language.VariableDefinition; import graphql.language.VariableReference; import graphql.parser.Parser; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; +import org.jspecify.annotations.NonNull; +import org.jspecify.annotations.Nullable; import java.util.LinkedHashMap; import java.util.List; @@ -76,7 +76,7 @@ private static List normalisedValueToVariableValues(List arrayVa .collect(toList()); } - @NotNull + @NonNull private static Map normalisedValueToVariableValues(Map objectMap) { Map output = new LinkedHashMap<>(); objectMap.forEach((k, v) -> { @@ -97,7 +97,7 @@ private static Map toVariableValue(ObjectValue objectValue) { return map; } - @NotNull + @NonNull private static List toVariableValues(List arrayValues) { // some values can be null (NullValue) and hence we can use Immutable Lists return arrayValues.stream() diff --git a/src/main/java/graphql/normalized/VariableAccumulator.java b/src/main/java/graphql/normalized/VariableAccumulator.java index ccf1d43e12..08b3db4eb4 100644 --- a/src/main/java/graphql/normalized/VariableAccumulator.java +++ b/src/main/java/graphql/normalized/VariableAccumulator.java @@ -1,8 +1,9 @@ package graphql.normalized; import graphql.Internal; +import graphql.execution.directives.QueryAppliedDirective; import graphql.language.VariableDefinition; -import org.jetbrains.annotations.Nullable; +import org.jspecify.annotations.Nullable; import java.util.ArrayList; import java.util.LinkedHashMap; @@ -28,8 +29,14 @@ public VariableAccumulator(@Nullable VariablePredicate variablePredicate) { valueWithDefinitions = new ArrayList<>(); } - public boolean shouldMakeVariable(ExecutableNormalizedField executableNormalizedField, String argName, NormalizedInputValue normalizedInputValue) { - return variablePredicate != null && variablePredicate.shouldMakeVariable(executableNormalizedField, argName, normalizedInputValue); + public boolean shouldMakeVariable(ExecutableNormalizedField executableNormalizedField, QueryAppliedDirective queryAppliedDirective, String argName, NormalizedInputValue normalizedInputValue) { + // when a variable is used on the argument to a query directive then the queryAppliedDirective will be nonnull. + // otherwise it must be a field argument + if (queryAppliedDirective != null) { + return variablePredicate != null && variablePredicate.shouldMakeVariable(executableNormalizedField, queryAppliedDirective, argName, normalizedInputValue); + } else { + return variablePredicate != null && variablePredicate.shouldMakeVariable(executableNormalizedField, argName, normalizedInputValue); + } } public VariableValueWithDefinition accumulateVariable(NormalizedInputValue normalizedInputValue) { diff --git a/src/main/java/graphql/normalized/VariablePredicate.java b/src/main/java/graphql/normalized/VariablePredicate.java index e4a0347050..a516c308ec 100644 --- a/src/main/java/graphql/normalized/VariablePredicate.java +++ b/src/main/java/graphql/normalized/VariablePredicate.java @@ -1,6 +1,7 @@ package graphql.normalized; import graphql.PublicSpi; +import graphql.execution.directives.QueryAppliedDirective; /** * This predicate indicates whether a variable should be made for this field argument OR whether it will be compiled @@ -17,5 +18,25 @@ public interface VariablePredicate { * * @return true if a variable should be made */ - boolean shouldMakeVariable(ExecutableNormalizedField executableNormalizedField, String argName, NormalizedInputValue normalizedInputValue); + boolean shouldMakeVariable(ExecutableNormalizedField executableNormalizedField, + String argName, + NormalizedInputValue normalizedInputValue); + + /** + * Return true if a variable should be made for this query directive argument + * on the specified field + * + * @param executableNormalizedField the field in question + * @param queryAppliedDirective the query directive in question + * @param argName the argument on the directive + * @param normalizedInputValue the input value for that argument + * + * @return true if a variable should be made + */ + default boolean shouldMakeVariable(ExecutableNormalizedField executableNormalizedField, + QueryAppliedDirective queryAppliedDirective, + String argName, + NormalizedInputValue normalizedInputValue) { + return false; + } } diff --git a/src/main/java/graphql/normalized/incremental/NormalizedDeferredExecution.java b/src/main/java/graphql/normalized/incremental/NormalizedDeferredExecution.java index a3f789e063..2eab7b5044 100644 --- a/src/main/java/graphql/normalized/incremental/NormalizedDeferredExecution.java +++ b/src/main/java/graphql/normalized/incremental/NormalizedDeferredExecution.java @@ -2,8 +2,8 @@ import graphql.ExperimentalApi; import graphql.schema.GraphQLObjectType; +import org.jspecify.annotations.Nullable; -import javax.annotation.Nullable; import java.util.Set; /** diff --git a/src/main/java/graphql/normalized/nf/NormalizedDocument.java b/src/main/java/graphql/normalized/nf/NormalizedDocument.java new file mode 100644 index 0000000000..6bb306fa50 --- /dev/null +++ b/src/main/java/graphql/normalized/nf/NormalizedDocument.java @@ -0,0 +1,47 @@ +package graphql.normalized.nf; + +import graphql.Assert; +import graphql.ExperimentalApi; +import org.jspecify.annotations.Nullable; + +import java.util.List; +import java.util.Map; + +@ExperimentalApi +public class NormalizedDocument { + + private final List normalizedOperations; + + public NormalizedDocument(List normalizedOperations) { + this.normalizedOperations = normalizedOperations; + } + + public List getNormalizedOperations() { + return normalizedOperations; + } + + public NormalizedOperation getSingleNormalizedOperation() { + Assert.assertTrue(normalizedOperations.size() == 1, "Expecting a single normalized operation"); + return normalizedOperations.get(0).getNormalizedOperation(); + } + + public static class NormalizedOperationWithAssumedSkipIncludeVariables { + + Map assumedSkipIncludeVariables; + NormalizedOperation normalizedOperation; + + public NormalizedOperationWithAssumedSkipIncludeVariables(@Nullable Map assumedSkipIncludeVariables, NormalizedOperation normalizedOperation) { + this.assumedSkipIncludeVariables = assumedSkipIncludeVariables; + this.normalizedOperation = normalizedOperation; + } + + public Map getAssumedSkipIncludeVariables() { + return assumedSkipIncludeVariables; + } + + public NormalizedOperation getNormalizedOperation() { + return normalizedOperation; + } + } +} + diff --git a/src/main/java/graphql/normalized/nf/NormalizedDocumentFactory.java b/src/main/java/graphql/normalized/nf/NormalizedDocumentFactory.java new file mode 100644 index 0000000000..0d5c5c77b1 --- /dev/null +++ b/src/main/java/graphql/normalized/nf/NormalizedDocumentFactory.java @@ -0,0 +1,683 @@ +package graphql.normalized.nf; + +import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableListMultimap; +import com.google.common.collect.ImmutableMap; +import com.google.common.collect.ImmutableSet; +import graphql.Assert; +import graphql.ExperimentalApi; +import graphql.GraphQLContext; +import graphql.collect.ImmutableKit; +import graphql.execution.AbortExecutionException; +import graphql.execution.MergedField; +import graphql.execution.conditional.ConditionalNodes; +import graphql.execution.directives.QueryDirectives; +import graphql.introspection.Introspection; +import graphql.language.Directive; +import graphql.language.Document; +import graphql.language.Field; +import graphql.language.FragmentDefinition; +import graphql.language.FragmentSpread; +import graphql.language.InlineFragment; +import graphql.language.NodeUtil; +import graphql.language.OperationDefinition; +import graphql.language.Selection; +import graphql.language.SelectionSet; +import graphql.schema.FieldCoordinates; +import graphql.schema.GraphQLCompositeType; +import graphql.schema.GraphQLFieldDefinition; +import graphql.schema.GraphQLInterfaceType; +import graphql.schema.GraphQLNamedOutputType; +import graphql.schema.GraphQLObjectType; +import graphql.schema.GraphQLSchema; +import graphql.schema.GraphQLType; +import graphql.schema.GraphQLUnionType; +import graphql.schema.GraphQLUnmodifiedType; +import graphql.schema.impl.SchemaUtil; +import org.jspecify.annotations.Nullable; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.LinkedHashMap; +import java.util.LinkedHashSet; +import java.util.List; +import java.util.Locale; +import java.util.Map; +import java.util.Set; +import java.util.stream.Collectors; + +import static graphql.Assert.assertNotNull; +import static graphql.Assert.assertShouldNeverHappen; +import static graphql.collect.ImmutableKit.map; +import static graphql.schema.GraphQLTypeUtil.unwrapAll; +import static graphql.util.FpKit.filterSet; +import static graphql.util.FpKit.groupingBy; +import static graphql.util.FpKit.intersection; +import static java.util.Collections.singleton; +import static java.util.Collections.singletonList; + +@ExperimentalApi +public class NormalizedDocumentFactory { + + public static class Options { + + + private final GraphQLContext graphQLContext; + private final Locale locale; + private final int maxChildrenDepth; + private final int maxFieldsCount; + + private final boolean deferSupport; + + /** + * The default max fields count is 100,000. + * This is big enough for even very large queries, but + * can be changed via {#setDefaultOptions + */ + public static final int DEFAULT_MAX_FIELDS_COUNT = 100_000; + private static Options defaultOptions = new Options(GraphQLContext.getDefault(), + Locale.getDefault(), + Integer.MAX_VALUE, + DEFAULT_MAX_FIELDS_COUNT, + false); + + private Options(GraphQLContext graphQLContext, + Locale locale, + int maxChildrenDepth, + int maxFieldsCount, + boolean deferSupport) { + this.graphQLContext = graphQLContext; + this.locale = locale; + this.maxChildrenDepth = maxChildrenDepth; + this.deferSupport = deferSupport; + this.maxFieldsCount = maxFieldsCount; + } + + /** + * Sets new default Options used when creating instances of {@link NormalizedDocument}. + * + * @param options new default options + */ + public static void setDefaultOptions(Options options) { + defaultOptions = Assert.assertNotNull(options); + } + + + /** + * Returns the default options used when creating instances of {@link NormalizedDocument}. + * + * @return the default options + */ + public static Options defaultOptions() { + return defaultOptions; + } + + /** + * Locale to use when parsing the query. + *

+ * e.g. can be passed to {@link graphql.schema.Coercing} for parsing. + * + * @param locale the locale to use + * + * @return new options object to use + */ + public Options locale(Locale locale) { + return new Options(this.graphQLContext, locale, this.maxChildrenDepth, this.maxFieldsCount, this.deferSupport); + } + + /** + * Context object to use when parsing the operation. + *

+ * Can be used to intercept input values e.g. using {@link graphql.execution.values.InputInterceptor}. + * + * @param graphQLContext the context to use + * + * @return new options object to use + */ + public Options graphQLContext(GraphQLContext graphQLContext) { + return new Options(graphQLContext, this.locale, this.maxChildrenDepth, this.maxFieldsCount, this.deferSupport); + } + + /** + * Controls the maximum depth of the operation. Can be used to prevent + * against malicious operations. + * + * @param maxChildrenDepth the max depth + * + * @return new options object to use + */ + public Options maxChildrenDepth(int maxChildrenDepth) { + return new Options(this.graphQLContext, this.locale, maxChildrenDepth, this.maxFieldsCount, this.deferSupport); + } + + /** + * Controls the maximum number of ENFs created. Can be used to prevent + * against malicious operations. + * + * @param maxFieldsCount the max number of ENFs created + * + * @return new options object to use + */ + public Options maxFieldsCount(int maxFieldsCount) { + return new Options(this.graphQLContext, this.locale, this.maxChildrenDepth, maxFieldsCount, this.deferSupport); + } + + /** + * Controls whether defer execution is supported when creating instances of {@link NormalizedDocument}. + * + * @param deferSupport true to enable support for defer + * + * @return new options object to use + */ + @ExperimentalApi + public Options deferSupport(boolean deferSupport) { + return new Options(this.graphQLContext, this.locale, this.maxChildrenDepth, this.maxFieldsCount, deferSupport); + } + + /** + * @return context to use during operation parsing + * + * @see #graphQLContext(GraphQLContext) + */ + public GraphQLContext getGraphQLContext() { + return graphQLContext; + } + + /** + * @return locale to use during operation parsing + * + * @see #locale(Locale) + */ + public Locale getLocale() { + return locale; + } + + /** + * @return maximum children depth before aborting parsing + * + * @see #maxChildrenDepth(int) + */ + public int getMaxChildrenDepth() { + return maxChildrenDepth; + } + + public int getMaxFieldsCount() { + return maxFieldsCount; + } + + } + + private static final ConditionalNodes conditionalNodes = new ConditionalNodes(); + + private NormalizedDocumentFactory() { + + } + + public static NormalizedDocument createNormalizedDocument( + GraphQLSchema graphQLSchema, + Document document) { + return createNormalizedDocument( + graphQLSchema, + document, + Options.defaultOptions()); + } + + + public static NormalizedDocument createNormalizedDocument(GraphQLSchema graphQLSchema, + Document document, + Options options) { + return new NormalizedDocumentFactoryImpl( + graphQLSchema, + document, + options + ).createNormalizedQueryImpl(); + } + + + private static class NormalizedDocumentFactoryImpl { + private final GraphQLSchema graphQLSchema; + private final Document document; + private final Options options; + private final Map fragments; + + private final List possibleMergerList = new ArrayList<>(); + + private ImmutableListMultimap.Builder fieldToNormalizedField = ImmutableListMultimap.builder(); + private ImmutableMap.Builder normalizedFieldToMergedField = ImmutableMap.builder(); + private ImmutableMap.Builder normalizedFieldToQueryDirectives = ImmutableMap.builder(); + private ImmutableListMultimap.Builder coordinatesToNormalizedFields = ImmutableListMultimap.builder(); + + private int fieldCount = 0; + private int maxDepthSeen = 0; + + private final List rootEnfs = new ArrayList<>(); + + private final Set skipIncludeVariableNames = new LinkedHashSet<>(); + + private Map assumedSkipIncludeVariableValues; + + private NormalizedDocumentFactoryImpl( + GraphQLSchema graphQLSchema, + Document document, + Options options + ) { + this.graphQLSchema = graphQLSchema; + this.document = document; + this.options = options; + this.fragments = NodeUtil.getFragmentsByName(document); + } + + /** + * Creates a new NormalizedDocument for the provided query + */ + private NormalizedDocument createNormalizedQueryImpl() { + List normalizedOperations = new ArrayList<>(); + for (OperationDefinition operationDefinition : document.getDefinitionsOfType(OperationDefinition.class)) { + + assumedSkipIncludeVariableValues = null; + skipIncludeVariableNames.clear(); + NormalizedOperation normalizedOperation = createNormalizedOperation(operationDefinition); + + if (skipIncludeVariableNames.size() == 0) { + normalizedOperations.add(new NormalizedDocument.NormalizedOperationWithAssumedSkipIncludeVariables(null, normalizedOperation)); + } else { + int combinations = (int) Math.pow(2, skipIncludeVariableNames.size()); + for (int i = 0; i < combinations; i++) { + assumedSkipIncludeVariableValues = new LinkedHashMap<>(); + int variableIndex = 0; + for (String variableName : skipIncludeVariableNames) { + assumedSkipIncludeVariableValues.put(variableName, (i & (1 << variableIndex++)) != 0); + } + NormalizedOperation operationWithAssumedVariables = createNormalizedOperation(operationDefinition); + normalizedOperations.add(new NormalizedDocument.NormalizedOperationWithAssumedSkipIncludeVariables(assumedSkipIncludeVariableValues, operationWithAssumedVariables)); + } + } + } + + return new NormalizedDocument( + normalizedOperations + ); + } + + private NormalizedOperation createNormalizedOperation(OperationDefinition operationDefinition) { + this.rootEnfs.clear(); + this.fieldCount = 0; + this.maxDepthSeen = 0; + this.possibleMergerList.clear(); + fieldToNormalizedField = ImmutableListMultimap.builder(); + normalizedFieldToMergedField = ImmutableMap.builder(); + normalizedFieldToQueryDirectives = ImmutableMap.builder(); + coordinatesToNormalizedFields = ImmutableListMultimap.builder(); + + buildNormalizedFieldsRecursively(null, operationDefinition, null, 0); + + for (PossibleMerger possibleMerger : possibleMergerList) { + List childrenWithSameResultKey = possibleMerger.parent.getChildrenWithSameResultKey(possibleMerger.resultKey); + NormalizedFieldsMerger.merge(possibleMerger.parent, childrenWithSameResultKey, graphQLSchema); + } + + NormalizedOperation normalizedOperation = new NormalizedOperation( + operationDefinition.getOperation(), + operationDefinition.getName(), + new ArrayList<>(rootEnfs), + fieldToNormalizedField.build(), + normalizedFieldToMergedField.build(), + normalizedFieldToQueryDirectives.build(), + coordinatesToNormalizedFields.build(), + fieldCount, + maxDepthSeen + ); + return normalizedOperation; + } + + + private void captureMergedField(NormalizedField enf, MergedField mergedFld) { +// // QueryDirectivesImpl is a lazy object and only computes itself when asked for +// QueryDirectives queryDirectives = new QueryDirectivesImpl(mergedFld, graphQLSchema, coercedVariableValues.toMap(), options.getGraphQLContext(), options.getLocale()); +// normalizedFieldToQueryDirectives.put(enf, queryDirectives); + normalizedFieldToMergedField.put(enf, mergedFld); + } + + private void buildNormalizedFieldsRecursively(@Nullable NormalizedField normalizedField, + @Nullable OperationDefinition operationDefinition, + @Nullable ImmutableList fieldAndAstParents, + int curLevel) { + if (this.maxDepthSeen < curLevel) { + this.maxDepthSeen = curLevel; + checkMaxDepthExceeded(curLevel); + } + Set possibleObjects; + List collectedFields; + + // special handling for the root selection Set + if (normalizedField == null) { + GraphQLObjectType rootType = SchemaUtil.getOperationRootType(graphQLSchema, operationDefinition); + possibleObjects = ImmutableSet.of(rootType); + collectedFields = new ArrayList<>(); + collectFromSelectionSet(operationDefinition.getSelectionSet(), collectedFields, rootType, possibleObjects); + } else { + List fieldDefs = normalizedField.getFieldDefinitions(graphQLSchema); + possibleObjects = resolvePossibleObjects(fieldDefs); + if (possibleObjects.isEmpty()) { + return; + } + collectedFields = new ArrayList<>(); + for (CollectedField fieldAndAstParent : fieldAndAstParents) { + if (fieldAndAstParent.field.getSelectionSet() == null) { + continue; + } + // the AST parent comes from the previous collect from selection set call + // and is the type to which the field belongs (the container type of the field) and output type + // of the field needs to be determined based on the field name + GraphQLFieldDefinition fieldDefinition = Introspection.getFieldDef(graphQLSchema, fieldAndAstParent.astTypeCondition, fieldAndAstParent.field.getName()); + // it must a composite type, because the field has a selection set + GraphQLCompositeType selectionSetType = (GraphQLCompositeType) unwrapAll(fieldDefinition.getType()); + this.collectFromSelectionSet(fieldAndAstParent.field.getSelectionSet(), + collectedFields, + selectionSetType, + possibleObjects + ); + } + } + + Map> fieldsByName = fieldsByResultKey(collectedFields); + ImmutableList.Builder resultNFs = ImmutableList.builder(); + ImmutableListMultimap.Builder normalizedFieldToAstFields = ImmutableListMultimap.builder(); + createNFs(resultNFs, fieldsByName, normalizedFieldToAstFields, curLevel + 1, normalizedField); + + ImmutableList nextLevelChildren = resultNFs.build(); + ImmutableListMultimap nextLevelNormalizedFieldToAstFields = normalizedFieldToAstFields.build(); + + for (NormalizedField childENF : nextLevelChildren) { + if (normalizedField == null) { + // all root ENFs don't have a parent, but are collected in the rootEnfs list + rootEnfs.add(childENF); + } else { + normalizedField.addChild(childENF); + } + ImmutableList childFieldAndAstParents = nextLevelNormalizedFieldToAstFields.get(childENF); + + MergedField mergedField = newMergedField(childFieldAndAstParents); + captureMergedField(childENF, mergedField); + + updateFieldToNFMap(childENF, childFieldAndAstParents); + updateCoordinatedToNFMap(childENF); + + // recursive call + buildNormalizedFieldsRecursively(childENF, + null, + childFieldAndAstParents, + curLevel + 1); + } + } + + private void checkMaxDepthExceeded(int depthSeen) { + if (depthSeen > this.options.getMaxChildrenDepth()) { + throw new AbortExecutionException("Maximum query depth exceeded. " + depthSeen + " > " + this.options.getMaxChildrenDepth()); + } + } + + private static MergedField newMergedField(ImmutableList fieldAndAstParents) { + return MergedField.newMergedField(map(fieldAndAstParents, fieldAndAstParent -> fieldAndAstParent.field)).build(); + } + + private void updateFieldToNFMap(NormalizedField NormalizedField, + ImmutableList mergedField) { + for (CollectedField astField : mergedField) { + fieldToNormalizedField.put(astField.field, NormalizedField); + } + } + + private void updateCoordinatedToNFMap(NormalizedField topLevel) { + for (String objectType : topLevel.getObjectTypeNames()) { + FieldCoordinates coordinates = FieldCoordinates.coordinates(objectType, topLevel.getFieldName()); + coordinatesToNormalizedFields.put(coordinates, topLevel); + } + } + + + private Map> fieldsByResultKey(List collectedFields) { + Map> fieldsByName = new LinkedHashMap<>(); + for (CollectedField collectedField : collectedFields) { + fieldsByName.computeIfAbsent(collectedField.field.getResultKey(), ignored -> new ArrayList<>()).add(collectedField); + } + return fieldsByName; + } + + + private void createNFs(ImmutableList.Builder nfListBuilder, + Map> fieldsByName, + ImmutableListMultimap.Builder normalizedFieldToAstFields, + int level, + NormalizedField parent) { + for (String resultKey : fieldsByName.keySet()) { + List fieldsWithSameResultKey = fieldsByName.get(resultKey); + List commonParentsGroups = groupByCommonParents(fieldsWithSameResultKey); + for (CollectedFieldGroup fieldGroup : commonParentsGroups) { + NormalizedField nf = createNF(fieldGroup, level, parent); + if (nf == null) { + continue; + } + for (CollectedField collectedField : fieldGroup.fields) { + normalizedFieldToAstFields.put(nf, collectedField); + } + nfListBuilder.add(nf); + + } + if (commonParentsGroups.size() > 1) { + possibleMergerList.add(new PossibleMerger(parent, resultKey)); + } + } + } + + // new single ENF + private NormalizedField createNF(CollectedFieldGroup collectedFieldGroup, + int level, + NormalizedField parent) { + + this.fieldCount++; + if (this.fieldCount > this.options.getMaxFieldsCount()) { + throw new AbortExecutionException("Maximum field count exceeded. " + this.fieldCount + " > " + this.options.getMaxFieldsCount()); + } + Field field; + Set objectTypes = collectedFieldGroup.objectTypes; + field = collectedFieldGroup.fields.iterator().next().field; + List directives = collectedFieldGroup.fields.stream().flatMap(f -> f.field.getDirectives().stream()).collect(Collectors.toList()); + String fieldName = field.getName(); + ImmutableList objectTypeNames = map(objectTypes, GraphQLObjectType::getName); + return NormalizedField.newNormalizedField() + .alias(field.getAlias()) + .astArguments(field.getArguments()) + .astDirectives(directives) + .objectTypeNames(objectTypeNames) + .fieldName(fieldName) + .level(level) + .parent(parent) + .build(); + } + + + private List groupByCommonParents(Collection fields) { + ImmutableSet.Builder objectTypes = ImmutableSet.builder(); + for (CollectedField collectedField : fields) { + objectTypes.addAll(collectedField.objectTypes); + } + Set allRelevantObjects = objectTypes.build(); + Map> groupByAstParent = groupingBy(fields, fieldAndType -> fieldAndType.astTypeCondition); + if (groupByAstParent.size() == 1) { + return singletonList(new CollectedFieldGroup(ImmutableSet.copyOf(fields), allRelevantObjects)); + } + ImmutableList.Builder result = ImmutableList.builder(); + for (GraphQLObjectType objectType : allRelevantObjects) { + Set relevantFields = filterSet(fields, field -> field.objectTypes.contains(objectType)); + result.add(new CollectedFieldGroup(relevantFields, singleton(objectType))); + } + return result.build(); + } + + + private void collectFromSelectionSet(SelectionSet selectionSet, + List result, + GraphQLCompositeType astTypeCondition, + Set possibleObjects + ) { + for (Selection selection : selectionSet.getSelections()) { + if (selection instanceof Field) { + collectField(result, (Field) selection, possibleObjects, astTypeCondition); + } else if (selection instanceof InlineFragment) { + collectInlineFragment(result, (InlineFragment) selection, possibleObjects, astTypeCondition); + } else if (selection instanceof FragmentSpread) { + collectFragmentSpread(result, (FragmentSpread) selection, possibleObjects); + } + } + } + + private void collectFragmentSpread(List result, + FragmentSpread fragmentSpread, + Set possibleObjects + ) { +// if (!conditionalNodes.shouldInclude(fragmentSpread, +// this.coercedVariableValues.toMap(), +// this.graphQLSchema, +// this.options.graphQLContext)) { +// return; +// } + FragmentDefinition fragmentDefinition = assertNotNull(this.fragments.get(fragmentSpread.getName())); + +// if (!conditionalNodes.shouldInclude(fragmentDefinition, +// this.coercedVariableValues.toMap(), +// this.graphQLSchema, +// this.options.graphQLContext)) { +// return; +// } + GraphQLCompositeType newAstTypeCondition = (GraphQLCompositeType) assertNotNull(this.graphQLSchema.getType(fragmentDefinition.getTypeCondition().getName())); + Set newPossibleObjects = narrowDownPossibleObjects(possibleObjects, newAstTypeCondition); + collectFromSelectionSet(fragmentDefinition.getSelectionSet(), result, newAstTypeCondition, newPossibleObjects); + } + + private void collectInlineFragment(List result, + InlineFragment inlineFragment, + Set possibleObjects, + GraphQLCompositeType astTypeCondition + ) { +// if (!conditionalNodes.shouldInclude(inlineFragment, this.coercedVariableValues.toMap(), this.graphQLSchema, this.options.graphQLContext)) { +// return; +// } + Set newPossibleObjects = possibleObjects; + GraphQLCompositeType newAstTypeCondition = astTypeCondition; + + if (inlineFragment.getTypeCondition() != null) { + newAstTypeCondition = (GraphQLCompositeType) this.graphQLSchema.getType(inlineFragment.getTypeCondition().getName()); + newPossibleObjects = narrowDownPossibleObjects(possibleObjects, newAstTypeCondition); + + } + + + collectFromSelectionSet(inlineFragment.getSelectionSet(), result, newAstTypeCondition, newPossibleObjects); + } + + private void collectField(List result, + Field field, + Set possibleObjectTypes, + GraphQLCompositeType astTypeCondition + ) { + Boolean shouldInclude; + if (assumedSkipIncludeVariableValues == null) { + if ((shouldInclude = conditionalNodes.shouldIncludeWithoutVariables(field)) == null) { + + String skipVariableName = conditionalNodes.getSkipVariableName(field); + String includeVariableName = conditionalNodes.getIncludeVariableName(field); + if (skipVariableName != null) { + skipIncludeVariableNames.add(skipVariableName); + } + if (includeVariableName != null) { + skipIncludeVariableNames.add(includeVariableName); + } + } + if (shouldInclude != null && !shouldInclude) { + return; + } + } else { + if (!conditionalNodes.shouldInclude(field, (Map) assumedSkipIncludeVariableValues, graphQLSchema, null)) { + return; + } + } + // this means there is actually no possible type for this field, and we are done + if (possibleObjectTypes.isEmpty()) { + return; + } + result.add(new CollectedField(field, possibleObjectTypes, astTypeCondition)); + } + + private Set narrowDownPossibleObjects(Set currentOnes, + GraphQLCompositeType typeCondition) { + + ImmutableSet resolvedTypeCondition = resolvePossibleObjects(typeCondition); + if (currentOnes.isEmpty()) { + return resolvedTypeCondition; + } + + // Faster intersection, as either set often has a size of 1. + return intersection(currentOnes, resolvedTypeCondition); + } + + private ImmutableSet resolvePossibleObjects(List defs) { + ImmutableSet.Builder builder = ImmutableSet.builder(); + + for (GraphQLFieldDefinition def : defs) { + GraphQLUnmodifiedType outputType = unwrapAll(def.getType()); + if (outputType instanceof GraphQLCompositeType) { + builder.addAll(resolvePossibleObjects((GraphQLCompositeType) outputType)); + } + } + + return builder.build(); + } + + private ImmutableSet resolvePossibleObjects(GraphQLCompositeType type) { + if (type instanceof GraphQLObjectType) { + return ImmutableSet.of((GraphQLObjectType) type); + } else if (type instanceof GraphQLInterfaceType) { + return ImmutableSet.copyOf(graphQLSchema.getImplementations((GraphQLInterfaceType) type)); + } else if (type instanceof GraphQLUnionType) { + List unionTypes = ((GraphQLUnionType) type).getTypes(); + return ImmutableSet.copyOf(ImmutableKit.map(unionTypes, GraphQLObjectType.class::cast)); + } else { + return assertShouldNeverHappen(); + } + } + + private static class PossibleMerger { + NormalizedField parent; + String resultKey; + + public PossibleMerger(NormalizedField parent, String resultKey) { + this.parent = parent; + this.resultKey = resultKey; + } + } + + private static class CollectedField { + Field field; + Set objectTypes; + GraphQLCompositeType astTypeCondition; + + public CollectedField(Field field, Set objectTypes, GraphQLCompositeType astTypeCondition) { + this.field = field; + this.objectTypes = objectTypes; + this.astTypeCondition = astTypeCondition; + } + } + + private static class CollectedFieldGroup { + Set objectTypes; + Set fields; + + public CollectedFieldGroup(Set fields, Set objectTypes) { + this.fields = fields; + this.objectTypes = objectTypes; + } + } + } + +} diff --git a/src/main/java/graphql/normalized/nf/NormalizedField.java b/src/main/java/graphql/normalized/nf/NormalizedField.java new file mode 100644 index 0000000000..3b8aa08bdd --- /dev/null +++ b/src/main/java/graphql/normalized/nf/NormalizedField.java @@ -0,0 +1,678 @@ +package graphql.normalized.nf; + +import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableMap; +import graphql.ExperimentalApi; +import graphql.Internal; +import graphql.Mutable; +import graphql.collect.ImmutableKit; +import graphql.introspection.Introspection; +import graphql.language.Argument; +import graphql.language.Directive; +import graphql.normalized.ExecutableNormalizedOperation; +import graphql.normalized.NormalizedInputValue; +import graphql.schema.GraphQLFieldDefinition; +import graphql.schema.GraphQLInterfaceType; +import graphql.schema.GraphQLNamedOutputType; +import graphql.schema.GraphQLObjectType; +import graphql.schema.GraphQLOutputType; +import graphql.schema.GraphQLSchema; +import graphql.schema.GraphQLUnionType; +import graphql.util.FpKit; +import graphql.util.MutableRef; +import org.jspecify.annotations.NonNull; +import org.jspecify.annotations.Nullable; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.LinkedHashMap; +import java.util.LinkedHashSet; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.function.Consumer; + +import static graphql.Assert.assertNotNull; +import static graphql.Assert.assertTrue; +import static graphql.schema.GraphQLTypeUtil.simplePrint; +import static graphql.schema.GraphQLTypeUtil.unwrapAll; +import static java.util.stream.Collectors.joining; +import static java.util.stream.Collectors.toList; +import static java.util.stream.Collectors.toSet; + +/** + * An {@link NormalizedField} represents a field in an executable graphql operation. Its models what + * could be executed during a given operation. + *

+ * This class is intentionally mutable for performance reasons since building immutable parent child + * objects is too expensive. + */ +@ExperimentalApi +@Mutable +public class NormalizedField { + private final String alias; + private final ImmutableMap normalizedArguments; + private final LinkedHashMap resolvedArguments; + private final ImmutableList astArguments; + private List astDirectives; + + // Mutable List on purpose: it is modified after creation + private final LinkedHashSet objectTypeNames; + private final ArrayList children; + private NormalizedField parent; + + private final String fieldName; + private final int level; + + + private NormalizedField(Builder builder) { + this.alias = builder.alias; + this.resolvedArguments = builder.resolvedArguments; + this.normalizedArguments = builder.normalizedArguments; + this.astArguments = builder.astArguments; + this.objectTypeNames = builder.objectTypeNames; + this.fieldName = assertNotNull(builder.fieldName); + this.children = builder.children; + this.level = builder.level; + this.parent = builder.parent; + this.astDirectives = builder.astDirectives; + } + + /** + * Determines whether this {@link NormalizedField} needs a fragment to select the field. However, it considers the parent + * output type when determining whether it needs a fragment. + *

+ * Consider the following schema + * + *

+     * interface Animal {
+     *     name: String
+     *     parent: Animal
+     * }
+     * type Cat implements Animal {
+     *     name: String
+     *     parent: Cat
+     * }
+     * type Dog implements Animal {
+     *     name: String
+     *     parent: Dog
+     *     isGoodBoy: Boolean
+     * }
+     * type Query {
+     *     animal: Animal
+     * }
+     * 
+ *

+ * and the following query + * + *

+     * {
+     *     animal {
+     *         parent {
+     *             name
+     *         }
+     *     }
+     * }
+     * 
+ *

+ * Then we would get the following {@link ExecutableNormalizedOperation} + * + *

+     * -Query.animal: Animal
+     * --[Cat, Dog].parent: Cat, Dog
+     * ---[Cat, Dog].name: String
+     * 
+ *

+ * If we simply checked the {@link #parent}'s {@link #getFieldDefinitions(GraphQLSchema)} that would + * point us to {@code Cat.parent} and {@code Dog.parent} whose output types would incorrectly answer + * our question whether this is conditional? + *

+ * We MUST consider that the output type of the {@code parent} field is {@code Animal} and + * NOT {@code Cat} or {@code Dog} as their respective implementations would say. + * + * @param schema - the graphql schema in play + * @return true if the field is conditional + */ + public boolean isConditional(@NonNull GraphQLSchema schema) { + if (parent == null) { + return false; + } + + for (GraphQLInterfaceType commonParentOutputInterface : parent.getInterfacesCommonToAllOutputTypes(schema)) { + List implementations = schema.getImplementations(commonParentOutputInterface); + // __typename + if (fieldName.equals(Introspection.TypeNameMetaFieldDef.getName()) && implementations.size() == objectTypeNames.size()) { + return false; + } + if (commonParentOutputInterface.getField(fieldName) == null) { + continue; + } + if (implementations.size() == objectTypeNames.size()) { + return false; + } + } + + // __typename is the only field in a union type that CAN be NOT conditional + GraphQLFieldDefinition parentFieldDef = parent.getOneFieldDefinition(schema); + if (unwrapAll(parentFieldDef.getType()) instanceof GraphQLUnionType) { + GraphQLUnionType parentOutputTypeAsUnion = (GraphQLUnionType) unwrapAll(parentFieldDef.getType()); + if (fieldName.equals(Introspection.TypeNameMetaFieldDef.getName()) && objectTypeNames.size() == parentOutputTypeAsUnion.getTypes().size()) { + return false; // Not conditional + } + } + + // This means there is no Union or Interface which could serve as unconditional parent + if (objectTypeNames.size() > 1) { + return true; // Conditional + } + if (parent.objectTypeNames.size() > 1) { + return true; + } + + GraphQLObjectType oneObjectType = (GraphQLObjectType) schema.getType(objectTypeNames.iterator().next()); + return unwrapAll(parentFieldDef.getType()) != oneObjectType; + } + + public boolean hasChildren() { + return children.size() > 0; + } + + public GraphQLOutputType getType(GraphQLSchema schema) { + List fieldDefinitions = getFieldDefinitions(schema); + Set fieldTypes = fieldDefinitions.stream().map(fd -> simplePrint(fd.getType())).collect(toSet()); + assertTrue(fieldTypes.size() == 1, () -> "More than one type ... use getTypes"); + return fieldDefinitions.get(0).getType(); + } + + public List getTypes(GraphQLSchema schema) { + return ImmutableKit.map(getFieldDefinitions(schema), fd -> fd.getType()); + } + + public void forEachFieldDefinition(GraphQLSchema schema, Consumer consumer) { + var fieldDefinition = resolveIntrospectionField(schema, objectTypeNames, fieldName); + if (fieldDefinition != null) { + consumer.accept(fieldDefinition); + return; + } + + for (String objectTypeName : objectTypeNames) { + GraphQLObjectType type = (GraphQLObjectType) assertNotNull(schema.getType(objectTypeName)); + consumer.accept(assertNotNull(type.getField(fieldName), "No field %s found for type %s", fieldName, objectTypeName)); + } + } + + public List getFieldDefinitions(GraphQLSchema schema) { + ImmutableList.Builder builder = ImmutableList.builder(); + forEachFieldDefinition(schema, builder::add); + return builder.build(); + } + + /** + * This is NOT public as it is not recommended usage. + *

+ * Internally there are cases where we know it is safe to use this, so this exists. + */ + private GraphQLFieldDefinition getOneFieldDefinition(GraphQLSchema schema) { + var fieldDefinition = resolveIntrospectionField(schema, objectTypeNames, fieldName); + if (fieldDefinition != null) { + return fieldDefinition; + } + + String objectTypeName = objectTypeNames.iterator().next(); + GraphQLObjectType type = (GraphQLObjectType) assertNotNull(schema.getType(objectTypeName)); + return assertNotNull(type.getField(fieldName), "No field %s found for type %s", fieldName, objectTypeName); + } + + private static GraphQLFieldDefinition resolveIntrospectionField(GraphQLSchema schema, Set objectTypeNames, String fieldName) { + if (fieldName.equals(schema.getIntrospectionTypenameFieldDefinition().getName())) { + return schema.getIntrospectionTypenameFieldDefinition(); + } else if (objectTypeNames.size() == 1 && objectTypeNames.iterator().next().equals(schema.getQueryType().getName())) { + if (fieldName.equals(schema.getIntrospectionSchemaFieldDefinition().getName())) { + return schema.getIntrospectionSchemaFieldDefinition(); + } else if (fieldName.equals(schema.getIntrospectionTypeFieldDefinition().getName())) { + return schema.getIntrospectionTypeFieldDefinition(); + } + } + return null; + } + + @Internal + public void addObjectTypeNames(Collection objectTypeNames) { + this.objectTypeNames.addAll(objectTypeNames); + } + + @Internal + public void setObjectTypeNames(Collection objectTypeNames) { + this.objectTypeNames.clear(); + this.objectTypeNames.addAll(objectTypeNames); + } + + @Internal + public void addChild(NormalizedField normalizedField) { + this.children.add(normalizedField); + } + + @Internal + public void clearChildren() { + this.children.clear(); + } + + + /** + * All merged fields have the same name so this is the name of the {@link NormalizedField}. + *

+ * WARNING: This is not always the key in the execution result, because of possible field aliases. + * + * @return the name of this {@link NormalizedField} + * @see #getResultKey() + * @see #getAlias() + */ + public String getName() { + return getFieldName(); + } + + /** + * @return the same value as {@link #getName()} + * @see #getResultKey() + * @see #getAlias() + */ + public String getFieldName() { + return fieldName; + } + + /** + * Returns the result key of this {@link NormalizedField} within the overall result. + * This is either a field alias or the value of {@link #getName()} + * + * @return the result key for this {@link NormalizedField}. + * @see #getName() + */ + public String getResultKey() { + if (alias != null) { + return alias; + } + return getName(); + } + + /** + * @return the field alias used or null if there is none + * @see #getResultKey() + * @see #getName() + */ + public String getAlias() { + return alias; + } + + /** + * @return a list of the {@link Argument}s on the field + */ + public ImmutableList getAstArguments() { + return astArguments; + } + + public List getAstDirectives() { + return astDirectives; + } + + public void setAstDirectives(List astDirectives) { + this.astDirectives = astDirectives; + } + + + /** + * Returns an argument value as a {@link NormalizedInputValue} which contains its type name and its current value + * + * @param name the name of the argument + * @return an argument value + */ + public NormalizedInputValue getNormalizedArgument(String name) { + return normalizedArguments.get(name); + } + + /** + * @return a map of all the arguments in {@link NormalizedInputValue} form + */ + public ImmutableMap getNormalizedArguments() { + return normalizedArguments; + } + + /** + * @return a map of the resolved argument values + */ + public LinkedHashMap getResolvedArguments() { + return resolvedArguments; + } + + + /** + * A {@link NormalizedField} can sometimes (for non-concrete types like interfaces and unions) + * have more than one object type it could be when executed. There is no way to know what it will be until + * the field is executed over data and the type is resolved via a {@link graphql.schema.TypeResolver}. + *

+ * This method returns all the possible types a field can be which is one or more {@link GraphQLObjectType} + * names. + *

+ * Warning: This returns a Mutable Set. No defensive copy is made for performance reasons. + * + * @return a set of the possible type names this field could be. + */ + public Set getObjectTypeNames() { + return objectTypeNames; + } + + + /** + * This returns the first entry in {@link #getObjectTypeNames()}. Sometimes you know a field cant be more than one + * type and this method is a shortcut one to help you. + * + * @return the first entry from + */ + public String getSingleObjectTypeName() { + return objectTypeNames.iterator().next(); + } + + /** + * @return a helper method show field details + */ + public String printDetails() { + StringBuilder result = new StringBuilder(); + if (getAlias() != null) { + result.append(getAlias()).append(": "); + } + return result + objectTypeNamesToString() + "." + fieldName; + } + + /** + * @return a helper method to show the object types names as a string + */ + public String objectTypeNamesToString() { + if (objectTypeNames.size() == 1) { + return objectTypeNames.iterator().next(); + } else { + return objectTypeNames.toString(); + } + } + + /** + * This returns the list of the result keys (see {@link #getResultKey()} that lead from this field upwards to + * its parent field + * + * @return a list of the result keys from this {@link NormalizedField} to the top of the operation via parent fields + */ + public List getListOfResultKeys() { + LinkedList list = new LinkedList<>(); + NormalizedField current = this; + while (current != null) { + list.addFirst(current.getResultKey()); + current = current.parent; + } + return list; + } + + /** + * @return the children of the {@link NormalizedField} + */ + public List getChildren() { + return children; + } + + /** + * Returns the list of child fields that would have the same result key + * + * @param resultKey the result key to check + * @return a list of all direct {@link NormalizedField} children with the specified result key + */ + public List getChildrenWithSameResultKey(String resultKey) { + return FpKit.filterList(children, child -> child.getResultKey().equals(resultKey)); + } + + public List getChildren(int includingRelativeLevel) { + List result = new ArrayList<>(); + assertTrue(includingRelativeLevel >= 1, () -> "relative level must be >= 1"); + + this.getChildren().forEach(child -> { + traverseImpl(child, result::add, 1, includingRelativeLevel); + }); + return result; + } + + /** + * This returns the child fields that can be used if the object is of the specified object type + * + * @param objectTypeName the object type + * @return a list of child fields that would apply to that object type + */ + public List getChildren(String objectTypeName) { + return children.stream() + .filter(cld -> cld.objectTypeNames.contains(objectTypeName)) + .collect(toList()); + } + + /** + * the level of the {@link NormalizedField} in the operation hierarchy with top level fields + * starting at 1 + * + * @return the level of the {@link NormalizedField} in the operation hierarchy + */ + public int getLevel() { + return level; + } + + /** + * @return the parent of this {@link NormalizedField} or null if it's a top level field + */ + public NormalizedField getParent() { + return parent; + } + + + @Internal + public void replaceParent(NormalizedField newParent) { + this.parent = newParent; + } + + + @Override + public String toString() { + return "NormalizedField{" + + objectTypeNamesToString() + "." + fieldName + + ", alias=" + alias + + ", level=" + level + + ", children=" + children.stream().map(NormalizedField::toString).collect(joining("\n")) + + '}'; + } + + + /** + * Traverse from this {@link NormalizedField} down into itself and all of its children + * + * @param consumer the callback for each {@link NormalizedField} in the hierarchy. + */ + public void traverseSubTree(Consumer consumer) { + this.getChildren().forEach(child -> { + traverseImpl(child, consumer, 1, Integer.MAX_VALUE); + }); + } + + private void traverseImpl(NormalizedField root, + Consumer consumer, + int curRelativeLevel, + int abortAfter) { + if (curRelativeLevel > abortAfter) { + return; + } + consumer.accept(root); + root.getChildren().forEach(child -> { + traverseImpl(child, consumer, curRelativeLevel + 1, abortAfter); + }); + } + + /** + * This tries to find interfaces common to all the field output types. + *

+ * i.e. goes through {@link #getFieldDefinitions(GraphQLSchema)} and finds interfaces that + * all the field's unwrapped output types are assignable to. + */ + @SuppressWarnings({"unchecked", "rawtypes"}) + private Set getInterfacesCommonToAllOutputTypes(GraphQLSchema schema) { + // Shortcut for performance + if (objectTypeNames.size() == 1) { + var fieldDef = getOneFieldDefinition(schema); + var outputType = unwrapAll(fieldDef.getType()); + + if (outputType instanceof GraphQLObjectType) { + return new LinkedHashSet<>((List) ((GraphQLObjectType) outputType).getInterfaces()); + } else if (outputType instanceof GraphQLInterfaceType) { + var result = new LinkedHashSet<>((List) ((GraphQLInterfaceType) outputType).getInterfaces()); + result.add(outputType); + return result; + } else { + return Collections.emptySet(); + } + } + + MutableRef> commonInterfaces = new MutableRef<>(); + forEachFieldDefinition(schema, (fieldDef) -> { + var outputType = unwrapAll(fieldDef.getType()); + + List outputTypeInterfaces; + if (outputType instanceof GraphQLObjectType) { + outputTypeInterfaces = (List) ((GraphQLObjectType) outputType).getInterfaces(); + } else if (outputType instanceof GraphQLInterfaceType) { + // This interface and superinterfaces + List superInterfaces = ((GraphQLInterfaceType) outputType).getInterfaces(); + + outputTypeInterfaces = new ArrayList<>(superInterfaces.size() + 1); + outputTypeInterfaces.add((GraphQLInterfaceType) outputType); + + if (!superInterfaces.isEmpty()) { + outputTypeInterfaces.addAll((List) superInterfaces); + } + } else { + outputTypeInterfaces = Collections.emptyList(); + } + + if (commonInterfaces.value == null) { + commonInterfaces.value = new LinkedHashSet<>(outputTypeInterfaces); + } else { + commonInterfaces.value.retainAll(outputTypeInterfaces); + } + }); + + return commonInterfaces.value; + } + + /** + * @return a {@link Builder} of {@link NormalizedField}s + */ + public static Builder newNormalizedField() { + return new Builder(); + } + + /** + * Allows this {@link NormalizedField} to be transformed via a {@link Builder} consumer callback + * + * @param builderConsumer the consumer given a builder + * @return a new transformed {@link NormalizedField} + */ + public NormalizedField transform(Consumer builderConsumer) { + Builder builder = new Builder(this); + builderConsumer.accept(builder); + return builder.build(); + } + + + public static class Builder { + private LinkedHashSet objectTypeNames = new LinkedHashSet<>(); + private String fieldName; + private ArrayList children = new ArrayList<>(); + private int level; + private NormalizedField parent; + private String alias; + private ImmutableMap normalizedArguments = ImmutableKit.emptyMap(); + private LinkedHashMap resolvedArguments = new LinkedHashMap<>(); + private ImmutableList astArguments = ImmutableKit.emptyList(); + private List astDirectives = Collections.emptyList(); + + + private Builder() { + } + + private Builder(NormalizedField existing) { + this.alias = existing.alias; + this.normalizedArguments = existing.normalizedArguments; + this.astArguments = existing.astArguments; + this.resolvedArguments = existing.resolvedArguments; + this.objectTypeNames = new LinkedHashSet<>(existing.getObjectTypeNames()); + this.fieldName = existing.getFieldName(); + this.children = new ArrayList<>(existing.children); + this.level = existing.getLevel(); + this.parent = existing.getParent(); + } + + public Builder clearObjectTypesNames() { + this.objectTypeNames.clear(); + return this; + } + + public Builder objectTypeNames(List objectTypeNames) { + this.objectTypeNames.addAll(objectTypeNames); + return this; + } + + public Builder alias(String alias) { + this.alias = alias; + return this; + } + + public Builder normalizedArguments(@Nullable Map arguments) { + this.normalizedArguments = arguments == null ? ImmutableKit.emptyMap() : ImmutableMap.copyOf(arguments); + return this; + } + + public Builder resolvedArguments(@Nullable Map arguments) { + this.resolvedArguments = arguments == null ? new LinkedHashMap<>() : new LinkedHashMap<>(arguments); + return this; + } + + public Builder astArguments(@NonNull List astArguments) { + this.astArguments = ImmutableList.copyOf(astArguments); + return this; + } + + public Builder astDirectives(@NonNull List astDirectives) { + this.astDirectives = astDirectives; + return this; + } + + + public Builder fieldName(String fieldName) { + this.fieldName = fieldName; + return this; + } + + + public Builder children(List children) { + this.children.clear(); + this.children.addAll(children); + return this; + } + + public Builder level(int level) { + this.level = level; + return this; + } + + public Builder parent(NormalizedField parent) { + this.parent = parent; + return this; + } + + + public NormalizedField build() { + return new NormalizedField(this); + } + } +} diff --git a/src/main/java/graphql/normalized/nf/NormalizedFieldsMerger.java b/src/main/java/graphql/normalized/nf/NormalizedFieldsMerger.java new file mode 100644 index 0000000000..4261aa5307 --- /dev/null +++ b/src/main/java/graphql/normalized/nf/NormalizedFieldsMerger.java @@ -0,0 +1,195 @@ +package graphql.normalized.nf; + +import graphql.Internal; +import graphql.introspection.Introspection; +import graphql.language.Argument; +import graphql.language.AstComparator; +import graphql.language.Directive; +import graphql.schema.GraphQLInterfaceType; +import graphql.schema.GraphQLObjectType; +import graphql.schema.GraphQLSchema; + +import java.util.ArrayList; +import java.util.Iterator; +import java.util.LinkedHashSet; +import java.util.List; +import java.util.Objects; +import java.util.Optional; +import java.util.Set; + +@Internal +public class NormalizedFieldsMerger { + + public static void merge( + NormalizedField parent, + List childrenWithSameResultKey, + GraphQLSchema schema + ) { + // they have all the same result key + // we can only merge the fields if they have the same field name + arguments + all children are the same + List> possibleGroupsToMerge = new ArrayList<>(); + for (NormalizedField field : childrenWithSameResultKey) { + boolean addToGroup = false; + overPossibleGroups: + for (Set group : possibleGroupsToMerge) { + for (NormalizedField fieldInGroup : group) { + if (field.getFieldName().equals(Introspection.TypeNameMetaFieldDef.getName())) { + addToGroup = true; + group.add(field); + continue overPossibleGroups; + } + if (field.getFieldName().equals(fieldInGroup.getFieldName()) && + sameArguments(field.getAstArguments(), fieldInGroup.getAstArguments()) + && isFieldInSharedInterface(field, fieldInGroup, schema) + ) { + addToGroup = true; + group.add(field); + continue overPossibleGroups; + } + } + } + if (!addToGroup) { + LinkedHashSet group = new LinkedHashSet<>(); + group.add(field); + possibleGroupsToMerge.add(group); + } + } + for (Set groupOfFields : possibleGroupsToMerge) { + // for each group we check if it could be merged + List> listOfChildrenForGroup = new ArrayList<>(); + for (NormalizedField fieldInGroup : groupOfFields) { + Set childrenSets = new LinkedHashSet<>(fieldInGroup.getChildren()); + listOfChildrenForGroup.add(childrenSets); + } + boolean mergeable = areFieldSetsTheSame(listOfChildrenForGroup); + if (mergeable) { + Set mergedObjects = new LinkedHashSet<>(); + List mergedDirectives = new ArrayList<>(); + groupOfFields.forEach(f -> mergedObjects.addAll(f.getObjectTypeNames())); + groupOfFields.forEach(f -> mergedDirectives.addAll(f.getAstDirectives())); + // patching the first one to contain more objects, remove all others + Iterator iterator = groupOfFields.iterator(); + NormalizedField first = iterator.next(); + + while (iterator.hasNext()) { + NormalizedField next = iterator.next(); + parent.getChildren().remove(next); + } + first.setObjectTypeNames(mergedObjects); + first.setAstDirectives(mergedDirectives); + } + } + } + + private static boolean isFieldInSharedInterface(NormalizedField fieldOne, NormalizedField fieldTwo, GraphQLSchema schema) { + + /* + * we can get away with only checking one of the object names, because all object names in one ENF are guaranteed to be the same field. + * This comes from how the ENFs are created in the factory before. + */ + String firstObject = fieldOne.getSingleObjectTypeName(); + String secondObject = fieldTwo.getSingleObjectTypeName(); + // we know that the field names are the same, therefore we can just take the first one + String fieldName = fieldOne.getFieldName(); + + GraphQLObjectType objectTypeOne = schema.getObjectType(firstObject); + GraphQLObjectType objectTypeTwo = schema.getObjectType(secondObject); + List interfacesOne = (List) objectTypeOne.getInterfaces(); + List interfacesTwo = (List) objectTypeTwo.getInterfaces(); + + Optional firstInterfaceFound = interfacesOne.stream().filter(singleInterface -> singleInterface.getFieldDefinition(fieldName) != null).findFirst(); + Optional secondInterfaceFound = interfacesTwo.stream().filter(singleInterface -> singleInterface.getFieldDefinition(fieldName) != null).findFirst(); + if (!firstInterfaceFound.isPresent() || !secondInterfaceFound.isPresent()) { + return false; + } + return firstInterfaceFound.get().getName().equals(secondInterfaceFound.get().getName()); + } + + + private static boolean areFieldSetsTheSame(List> listOfSets) { + if (listOfSets.size() == 0 || listOfSets.size() == 1) { + return true; + } + Set first = listOfSets.get(0); + Iterator> iterator = listOfSets.iterator(); + iterator.next(); + while (iterator.hasNext()) { + Set set = iterator.next(); + if (!compareTwoFieldSets(first, set)) { + return false; + } + } + List> nextLevel = new ArrayList<>(); + for (Set set : listOfSets) { + for (NormalizedField fieldInSet : set) { + nextLevel.add(new LinkedHashSet<>(fieldInSet.getChildren())); + } + } + return areFieldSetsTheSame(nextLevel); + } + + private static boolean compareTwoFieldSets(Set setOne, Set setTwo) { + if (setOne.size() != setTwo.size()) { + return false; + } + for (NormalizedField field : setOne) { + if (!isContained(field, setTwo)) { + return false; + } + } + return true; + } + + private static boolean isContained(NormalizedField searchFor, Set set) { + for (NormalizedField field : set) { + if (compareWithoutChildren(searchFor, field)) { + return true; + } + } + return false; + } + + private static boolean compareWithoutChildren(NormalizedField one, NormalizedField two) { + + if (!one.getObjectTypeNames().equals(two.getObjectTypeNames())) { + return false; + } + if (!Objects.equals(one.getAlias(), two.getAlias())) { + return false; + } + if (!Objects.equals(one.getFieldName(), two.getFieldName())) { + return false; + } + if (!sameArguments(one.getAstArguments(), two.getAstArguments())) { + return false; + } + return true; + } + + // copied from graphql.validation.rules.OverlappingFieldsCanBeMerged + private static boolean sameArguments(List arguments1, List arguments2) { + if (arguments1.size() != arguments2.size()) { + return false; + } + for (Argument argument : arguments1) { + Argument matchedArgument = findArgumentByName(argument.getName(), arguments2); + if (matchedArgument == null) { + return false; + } + if (!AstComparator.sameValue(argument.getValue(), matchedArgument.getValue())) { + return false; + } + } + return true; + } + + private static Argument findArgumentByName(String name, List arguments) { + for (Argument argument : arguments) { + if (argument.getName().equals(name)) { + return argument; + } + } + return null; + } + +} diff --git a/src/main/java/graphql/normalized/nf/NormalizedOperation.java b/src/main/java/graphql/normalized/nf/NormalizedOperation.java new file mode 100644 index 0000000000..6d3c333d0b --- /dev/null +++ b/src/main/java/graphql/normalized/nf/NormalizedOperation.java @@ -0,0 +1,180 @@ +package graphql.normalized.nf; + +import com.google.common.collect.ImmutableListMultimap; +import graphql.Assert; +import graphql.ExperimentalApi; +import graphql.execution.MergedField; +import graphql.execution.ResultPath; +import graphql.execution.directives.QueryDirectives; +import graphql.language.Field; +import graphql.language.OperationDefinition; +import graphql.schema.FieldCoordinates; +import graphql.schema.GraphQLFieldsContainer; + +import java.util.List; +import java.util.Map; + +/** + * A {@link NormalizedOperation} represent how the text of a graphql operation (sometimes known colloquially as a query) + * will be executed at runtime according to the graphql specification. It handles complex mechanisms like merging + * duplicate fields into one and also detecting when the types of a given field may actually be for more than one possible object + * type. + *

+ * An operation consists of a list of {@link NormalizedField}s in a parent child hierarchy + */ +@ExperimentalApi +public class NormalizedOperation { + private final OperationDefinition.Operation operation; + private final String operationName; + private final List rootFields; + private final ImmutableListMultimap fieldToNormalizedField; + private final Map normalizedFieldToMergedField; + private final Map normalizedFieldToQueryDirectives; + private final ImmutableListMultimap coordinatesToNormalizedFields; + private final int operationFieldCount; + private final int operationDepth; + + public NormalizedOperation( + OperationDefinition.Operation operation, + String operationName, + List rootFields, + ImmutableListMultimap fieldToNormalizedField, + Map normalizedFieldToMergedField, + Map normalizedFieldToQueryDirectives, + ImmutableListMultimap coordinatesToNormalizedFields, + int operationFieldCount, + int operationDepth) { + this.operation = operation; + this.operationName = operationName; + this.rootFields = rootFields; + this.fieldToNormalizedField = fieldToNormalizedField; + this.normalizedFieldToMergedField = normalizedFieldToMergedField; + this.normalizedFieldToQueryDirectives = normalizedFieldToQueryDirectives; + this.coordinatesToNormalizedFields = coordinatesToNormalizedFields; + this.operationFieldCount = operationFieldCount; + this.operationDepth = operationDepth; + } + + /** + * @return operation AST being executed + */ + public OperationDefinition.Operation getOperation() { + return operation; + } + + /** + * @return the operation name, which can be null + */ + public String getOperationName() { + return operationName; + } + + /** + * @return This returns how many {@link NormalizedField}s are in the operation. + */ + public int getOperationFieldCount() { + return operationFieldCount; + } + + /** + * @return This returns the depth of the operation + */ + public int getOperationDepth() { + return operationDepth; + } + + /** + * This multimap shows how a given {@link NormalizedField} maps to a one or more field coordinate in the schema + * + * @return a multimap of fields to schema field coordinates + */ + public ImmutableListMultimap getCoordinatesToNormalizedFields() { + return coordinatesToNormalizedFields; + } + + /** + * @return a list of the top level {@link NormalizedField}s in this operation. + */ + public List getRootFields() { + return rootFields; + } + + /** + * This is a multimap and the size of it reflects all the normalized fields in the operation + * + * @return an immutable list multimap of {@link Field} to {@link NormalizedField} + */ + public ImmutableListMultimap getFieldToNormalizedField() { + return fieldToNormalizedField; + } + + /** + * Looks up one or more {@link NormalizedField}s given a {@link Field} AST element in the operation + * + * @param field the field to look up + * + * @return zero, one or more possible {@link NormalizedField}s that represent that field + */ + public List getNormalizedFields(Field field) { + return fieldToNormalizedField.get(field); + } + + /** + * @return a map of {@link NormalizedField} to {@link MergedField}s + */ + public Map getNormalizedFieldToMergedField() { + return normalizedFieldToMergedField; + } + + /** + * Looks up the {@link MergedField} given a {@link NormalizedField} + * + * @param NormalizedField the field to use the key + * + * @return a {@link MergedField} or null if its not present + */ + public MergedField getMergedField(NormalizedField NormalizedField) { + return normalizedFieldToMergedField.get(NormalizedField); + } + + /** + * @return a map of {@link NormalizedField} to its {@link QueryDirectives} + */ + public Map getNormalizedFieldToQueryDirectives() { + return normalizedFieldToQueryDirectives; + + } + + /** + * This looks up the {@link QueryDirectives} associated with the given {@link NormalizedField} + * + * @param NormalizedField the executable normalised field in question + * + * @return the fields query directives or null + */ + public QueryDirectives getQueryDirectives(NormalizedField NormalizedField) { + return normalizedFieldToQueryDirectives.get(NormalizedField); + } + + /** + * This will find a {@link NormalizedField} given a merged field and a result path. If this does not find a field it will assert with an exception + * + * @param mergedField the merged field + * @param fieldsContainer the containing type of that field + * @param resultPath the result path in play + * + * @return the NormalizedField + */ + public NormalizedField getNormalizedField(MergedField mergedField, GraphQLFieldsContainer fieldsContainer, ResultPath resultPath) { + List NormalizedFields = fieldToNormalizedField.get(mergedField.getSingleField()); + List keysOnlyPath = resultPath.getKeysOnly(); + for (NormalizedField NormalizedField : NormalizedFields) { + if (NormalizedField.getListOfResultKeys().equals(keysOnlyPath)) { + if (NormalizedField.getObjectTypeNames().contains(fieldsContainer.getName())) { + return NormalizedField; + } + } + } + return Assert.assertShouldNeverHappen("normalized field not found"); + } +} diff --git a/src/main/java/graphql/normalized/nf/NormalizedOperationToAstCompiler.java b/src/main/java/graphql/normalized/nf/NormalizedOperationToAstCompiler.java new file mode 100644 index 0000000000..71fa804173 --- /dev/null +++ b/src/main/java/graphql/normalized/nf/NormalizedOperationToAstCompiler.java @@ -0,0 +1,248 @@ +package graphql.normalized.nf; + +import com.google.common.collect.ImmutableList; +import graphql.Assert; +import graphql.ExperimentalApi; +import graphql.introspection.Introspection; +import graphql.language.Argument; +import graphql.language.Directive; +import graphql.language.Document; +import graphql.language.Field; +import graphql.language.InlineFragment; +import graphql.language.OperationDefinition; +import graphql.language.Selection; +import graphql.language.SelectionSet; +import graphql.language.TypeName; +import graphql.schema.GraphQLCompositeType; +import graphql.schema.GraphQLFieldDefinition; +import graphql.schema.GraphQLObjectType; +import graphql.schema.GraphQLSchema; +import graphql.schema.GraphQLUnmodifiedType; +import org.jspecify.annotations.NonNull; +import org.jspecify.annotations.Nullable; + +import java.util.ArrayList; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; + +import static graphql.collect.ImmutableKit.emptyList; +import static graphql.language.Field.newField; +import static graphql.language.InlineFragment.newInlineFragment; +import static graphql.language.SelectionSet.newSelectionSet; +import static graphql.language.TypeName.newTypeName; +import static graphql.schema.GraphQLTypeUtil.unwrapAll; + +/** + * This class can take a list of {@link NormalizedField}s and compiling out a + * normalised operation {@link Document} that would represent how those fields + * may be executed. + *

+ * This is essentially the reverse of {@link NormalizedDocumentFactory} which takes + * operation text and makes {@link NormalizedField}s from it, this takes {@link NormalizedField}s + * and makes operation text from it. + *

+ * You could for example send that operation text onto to some other graphql server if it + * has the same schema as the one provided. + */ +@ExperimentalApi +public class NormalizedOperationToAstCompiler { + + /** + * The result is a {@link Document} and a map of variables + * that would go with that document. + */ + public static class CompilerResult { + private final Document document; + private final Map variables; + + public CompilerResult(Document document, Map variables) { + this.document = document; + this.variables = variables; + } + + public Document getDocument() { + return document; + } + + public Map getVariables() { + return variables; + } + } + + public static CompilerResult compileToDocument(GraphQLSchema graphQLSchema, + GraphQLObjectType rootType, + List rootFields, + @Nullable String operationName, + OperationDefinition.Operation operationKind) { + + return compileToDocumentImpl(graphQLSchema, rootType, rootFields, operationName, operationKind); + } + + public static CompilerResult compileToDocument(GraphQLSchema graphQLSchema, + GraphQLObjectType rootType, + NormalizedField singleRootField, + @Nullable String operationName, + OperationDefinition.Operation operationKind) { + return compileToDocumentImpl(graphQLSchema, rootType, ImmutableList.of(singleRootField), operationName, operationKind); + + + } + + + public static CompilerResult compileToDocument(GraphQLSchema schema, + NormalizedOperation normalizedOperation) { + GraphQLObjectType operationType = getOperationType(schema, normalizedOperation.getOperation()); + + return compileToDocumentImpl( + schema, + operationType, + normalizedOperation.getRootFields(), + normalizedOperation.getOperationName(), + normalizedOperation.getOperation() + ); + } + + private static CompilerResult compileToDocumentImpl(GraphQLSchema schema, + GraphQLObjectType rootType, + List rootFields, + @Nullable String operationName, + OperationDefinition.Operation operationKind) { + + List> selections = subSelectionsForNormalizedFields(schema, rootType.getName(), rootFields); + SelectionSet selectionSet = new SelectionSet(selections); + + OperationDefinition.Builder definitionBuilder = OperationDefinition.newOperationDefinition() + .name(operationName) + .operation(operationKind) + .selectionSet(selectionSet); + +// definitionBuilder.variableDefinitions(variableAccumulator.getVariableDefinitions()); + + return new CompilerResult( + Document.newDocument() + .definition(definitionBuilder.build()) + .build(), + null + ); + } + + + private static List> subSelectionsForNormalizedFields(GraphQLSchema schema, + @NonNull String parentOutputType, + List normalizedFields + ) { + ImmutableList.Builder> selections = ImmutableList.builder(); + + // All conditional fields go here instead of directly to selections, so they can be grouped together + // in the same inline fragment in the output + Map> fieldsByTypeCondition = new LinkedHashMap<>(); + + for (NormalizedField nf : normalizedFields) { + if (nf.isConditional(schema)) { + selectionForNormalizedField(schema, nf) + .forEach((objectTypeName, field) -> + fieldsByTypeCondition + .computeIfAbsent(objectTypeName, ignored -> new ArrayList<>()) + .add(field)); + } else { + selections.add(selectionForNormalizedField(schema, parentOutputType, nf)); + } + } + + fieldsByTypeCondition.forEach((objectTypeName, fields) -> { + TypeName typeName = newTypeName(objectTypeName).build(); + InlineFragment inlineFragment = newInlineFragment() + .typeCondition(typeName) + .selectionSet(selectionSet(fields)) + .build(); + selections.add(inlineFragment); + }); + + return selections.build(); + } + + /** + * @return Map of object type names to list of fields + */ + private static Map selectionForNormalizedField(GraphQLSchema schema, + NormalizedField normalizedField + ) { + Map groupedFields = new LinkedHashMap<>(); + + for (String objectTypeName : normalizedField.getObjectTypeNames()) { + groupedFields.put(objectTypeName, selectionForNormalizedField(schema, objectTypeName, normalizedField)); + } + + return groupedFields; + } + + /** + * @return Map of object type names to list of fields + */ + private static Field selectionForNormalizedField(GraphQLSchema schema, + String objectTypeName, + NormalizedField normalizedField) { + + final List> subSelections; + if (normalizedField.getChildren().isEmpty()) { + subSelections = emptyList(); + } else { + GraphQLFieldDefinition fieldDef = getFieldDefinition(schema, objectTypeName, normalizedField); + GraphQLUnmodifiedType fieldOutputType = unwrapAll(fieldDef.getType()); + + subSelections = subSelectionsForNormalizedFields( + schema, + fieldOutputType.getName(), + normalizedField.getChildren() + ); + } + + SelectionSet selectionSet = selectionSetOrNullIfEmpty(subSelections); +// List arguments = createArguments(executableNormalizedField, variableAccumulator); + List arguments = normalizedField.getAstArguments(); + List directives = normalizedField.getAstDirectives(); + + + Field.Builder builder = newField() + .name(normalizedField.getFieldName()) + .alias(normalizedField.getAlias()) + .selectionSet(selectionSet) + .directives(directives) + .arguments(arguments); + return builder.build(); + } + + @Nullable + private static SelectionSet selectionSetOrNullIfEmpty(List> selections) { + return selections.isEmpty() ? null : newSelectionSet().selections(selections).build(); + } + + private static SelectionSet selectionSet(List fields) { + return newSelectionSet().selections(fields).build(); + } + + + @NonNull + private static GraphQLFieldDefinition getFieldDefinition(GraphQLSchema schema, + String parentType, + NormalizedField nf) { + return Introspection.getFieldDef(schema, (GraphQLCompositeType) schema.getType(parentType), nf.getName()); + } + + + private static GraphQLObjectType getOperationType(@NonNull GraphQLSchema schema, + OperationDefinition.@NonNull Operation operationKind) { + switch (operationKind) { + case QUERY: + return schema.getQueryType(); + case MUTATION: + return schema.getMutationType(); + case SUBSCRIPTION: + return schema.getSubscriptionType(); + } + + return Assert.assertShouldNeverHappen("Unknown operation kind " + operationKind); + } + +} diff --git a/src/main/java/graphql/parser/ExtendedBailStrategy.java b/src/main/java/graphql/parser/ExtendedBailStrategy.java index a0861ed0c1..8a83904402 100644 --- a/src/main/java/graphql/parser/ExtendedBailStrategy.java +++ b/src/main/java/graphql/parser/ExtendedBailStrategy.java @@ -42,6 +42,10 @@ public Token recoverInline(Parser recognizer) throws RecognitionException { InvalidSyntaxException mkMoreTokensException(Token token) { SourceLocation sourceLocation = AntlrHelper.createSourceLocation(multiSourceReader, token); + if (environment.getParserOptions().isRedactTokenParserErrorMessages()) { + return new MoreTokensSyntaxException(environment.getI18N(), sourceLocation); + } + String sourcePreview = AntlrHelper.createPreview(multiSourceReader, token.getLine()); return new MoreTokensSyntaxException(environment.getI18N(), sourceLocation, token.getText(), sourcePreview); @@ -66,7 +70,7 @@ private InvalidSyntaxException mkException(Parser recognizer, RecognitionExcepti String msgKey; List args; SourceLocation location = sourceLocation == null ? SourceLocation.EMPTY : sourceLocation; - if (offendingToken == null) { + if (offendingToken == null || environment.getParserOptions().isRedactTokenParserErrorMessages()) { msgKey = "InvalidSyntaxBail.noToken"; args = ImmutableList.of(location.getLine(), location.getColumn()); } else { diff --git a/src/main/java/graphql/parser/GraphqlAntlrToLanguage.java b/src/main/java/graphql/parser/GraphqlAntlrToLanguage.java index 006499f4ff..125e184d19 100644 --- a/src/main/java/graphql/parser/GraphqlAntlrToLanguage.java +++ b/src/main/java/graphql/parser/GraphqlAntlrToLanguage.java @@ -67,7 +67,7 @@ import org.antlr.v4.runtime.ParserRuleContext; import org.antlr.v4.runtime.Token; import org.antlr.v4.runtime.tree.TerminalNode; -import org.jetbrains.annotations.Nullable; +import org.jspecify.annotations.Nullable; import java.math.BigDecimal; import java.math.BigInteger; diff --git a/src/main/java/graphql/parser/MultiSourceReader.java b/src/main/java/graphql/parser/MultiSourceReader.java index acbcef40e0..fad54b2fa0 100644 --- a/src/main/java/graphql/parser/MultiSourceReader.java +++ b/src/main/java/graphql/parser/MultiSourceReader.java @@ -23,6 +23,10 @@ @PublicApi public class MultiSourceReader extends Reader { + // In Java version 16+, LineNumberReader.read considers end-of-stream to be a line terminator + // and will increment the line number, whereas in previous versions it doesn't. + private static final boolean LINE_NUMBER_READER_EOS_IS_TERMINATOR; + private final List sourceParts; private final StringBuilder data = new StringBuilder(); private int currentIndex = 0; @@ -30,6 +34,21 @@ public class MultiSourceReader extends Reader { private final boolean trackData; private final LockKit.ReentrantLock readerLock = new LockKit.ReentrantLock(); + static { + LINE_NUMBER_READER_EOS_IS_TERMINATOR = lineNumberReaderEOSIsTerminator(); + } + + private static boolean lineNumberReaderEOSIsTerminator() { + LineNumberReader reader = new LineNumberReader(new StringReader("a")); + try { + reader.read(); + reader.read(); + } catch (IOException e) { + throw new UncheckedIOException(e); + } + return reader.getLineNumber() > 0; + } + private MultiSourceReader(Builder builder) { this.sourceParts = builder.sourceParts; @@ -46,10 +65,16 @@ public int read(char[] cbuf, int off, int len) throws IOException { } SourcePart sourcePart = sourceParts.get(currentIndex); int read = sourcePart.lineReader.read(cbuf, off, len); - overallLineNumber = calcLineNumber(); if (read == -1) { currentIndex++; - } else { + sourcePart.reachedEndOfStream = true; + } else if (read > 0) { + sourcePart.lastRead = cbuf[off + read - 1]; + } + // note: calcLineNumber() must be called after updating sourcePart.reachedEndOfStream + // and sourcePart.lastRead + overallLineNumber = calcLineNumber(); + if (read != -1) { trackData(cbuf, off, read); return read; } @@ -68,7 +93,7 @@ private void trackData(char[] cbuf, int off, int len) { private int calcLineNumber() { int linenumber = 0; for (SourcePart sourcePart : sourceParts) { - linenumber += sourcePart.lineReader.getLineNumber(); + linenumber += sourcePart.getLineNumber(); } return linenumber; } @@ -125,7 +150,7 @@ public SourceAndLine getSourceAndLineFromOverallLine(int overallLineNumber) { sourceAndLine.sourceName = sourcePart.sourceName; if (sourcePart == currentPart) { // we cant go any further - int partLineNumber = currentPart.lineReader.getLineNumber(); + int partLineNumber = currentPart.getLineNumber(); previousPage = page; page += partLineNumber; if (page > overallLineNumber) { @@ -136,7 +161,7 @@ public SourceAndLine getSourceAndLineFromOverallLine(int overallLineNumber) { return sourceAndLine; } else { previousPage = page; - int partLineNumber = sourcePart.lineReader.getLineNumber(); + int partLineNumber = sourcePart.getLineNumber(); page += partLineNumber; if (page > overallLineNumber) { sourceAndLine.line = overallLineNumber - previousPage; @@ -157,9 +182,9 @@ public int getLineNumber() { return 0; } if (currentIndex >= sourceParts.size()) { - return sourceParts.get(sourceParts.size() - 1).lineReader.getLineNumber(); + return sourceParts.get(sourceParts.size() - 1).getLineNumber(); } - return sourceParts.get(currentIndex).lineReader.getLineNumber(); + return sourceParts.get(currentIndex).getLineNumber(); }); } @@ -220,6 +245,24 @@ private static class SourcePart { String sourceName; LineNumberReader lineReader; boolean closed; + char lastRead; + boolean reachedEndOfStream = false; + + /** + * This handles the discrepancy between LineNumberReader.getLineNumber() for Java versions + * 16+ vs below. Use this instead of lineReader.getLineNumber() directly. + * @return The current line number. EOS is not considered a line terminator. + */ + int getLineNumber() { + int lineNumber = lineReader.getLineNumber(); + if (reachedEndOfStream + && LINE_NUMBER_READER_EOS_IS_TERMINATOR + && lastRead != '\r' + && lastRead != '\n') { + return Math.max(lineNumber - 1, 0); + } + return lineNumber; + } } diff --git a/src/main/java/graphql/parser/Parser.java b/src/main/java/graphql/parser/Parser.java index 15a0f5f641..53cdab37b7 100644 --- a/src/main/java/graphql/parser/Parser.java +++ b/src/main/java/graphql/parser/Parser.java @@ -25,7 +25,7 @@ import org.antlr.v4.runtime.atn.PredictionMode; import org.antlr.v4.runtime.tree.ParseTreeListener; import org.antlr.v4.runtime.tree.TerminalNode; -import org.jetbrains.annotations.NotNull; +import org.jspecify.annotations.NonNull; import java.io.IOException; import java.io.Reader; @@ -270,7 +270,7 @@ private static MultiSourceReader setupMultiSourceReader(ParserEnvironment enviro return multiSourceReader; } - @NotNull + @NonNull private static SafeTokenReader setupSafeTokenReader(ParserEnvironment environment, ParserOptions parserOptions, MultiSourceReader multiSourceReader) { int maxCharacters = parserOptions.getMaxCharacters(); Consumer onTooManyCharacters = it -> { @@ -279,7 +279,7 @@ private static SafeTokenReader setupSafeTokenReader(ParserEnvironment environmen return new SafeTokenReader(multiSourceReader, maxCharacters, onTooManyCharacters); } - @NotNull + @NonNull private static CodePointCharStream setupCharStream(SafeTokenReader safeTokenReader) { CodePointCharStream charStream; try { @@ -290,7 +290,7 @@ private static CodePointCharStream setupCharStream(SafeTokenReader safeTokenRead return charStream; } - @NotNull + @NonNull private static GraphqlLexer setupGraphqlLexer(ParserEnvironment environment, MultiSourceReader multiSourceReader, CodePointCharStream charStream) { GraphqlLexer lexer = new GraphqlLexer(charStream); lexer.removeErrorListeners(); @@ -301,7 +301,7 @@ public void syntaxError(Recognizer recognizer, Object offendingSymbol, int String preview = AntlrHelper.createPreview(multiSourceReader, line); String msgKey; List args; - if (antlerMsg == null) { + if (antlerMsg == null || environment.getParserOptions().isRedactTokenParserErrorMessages()) { msgKey = "InvalidSyntax.noMessage"; args = ImmutableList.of(sourceLocation.getLine(), sourceLocation.getColumn()); } else { @@ -315,7 +315,7 @@ public void syntaxError(Recognizer recognizer, Object offendingSymbol, int return lexer; } - @NotNull + @NonNull private SafeTokenSource getSafeTokenSource(ParserEnvironment environment, ParserOptions parserOptions, MultiSourceReader multiSourceReader, GraphqlLexer lexer) { int maxTokens = parserOptions.getMaxTokens(); int maxWhitespaceTokens = parserOptions.getMaxWhitespaceTokens(); diff --git a/src/main/java/graphql/parser/ParserOptions.java b/src/main/java/graphql/parser/ParserOptions.java index 965e71876d..0adfb73f6d 100644 --- a/src/main/java/graphql/parser/ParserOptions.java +++ b/src/main/java/graphql/parser/ParserOptions.java @@ -62,6 +62,7 @@ public class ParserOptions { .maxTokens(MAX_QUERY_TOKENS) // to prevent a billion laughs style attacks, we set a default for graphql-java .maxWhitespaceTokens(MAX_WHITESPACE_TOKENS) .maxRuleDepth(MAX_RULE_DEPTH) + .redactTokenParserErrorMessages(false) .build(); private static ParserOptions defaultJvmOperationParserOptions = newParserOptions() @@ -73,6 +74,7 @@ public class ParserOptions { .maxTokens(MAX_QUERY_TOKENS) // to prevent a billion laughs style attacks, we set a default for graphql-java .maxWhitespaceTokens(MAX_WHITESPACE_TOKENS) .maxRuleDepth(MAX_RULE_DEPTH) + .redactTokenParserErrorMessages(false) .build(); private static ParserOptions defaultJvmSdlParserOptions = newParserOptions() @@ -84,6 +86,7 @@ public class ParserOptions { .maxTokens(Integer.MAX_VALUE) // we are less worried about a billion laughs with SDL parsing since the call path is not facing attackers .maxWhitespaceTokens(Integer.MAX_VALUE) .maxRuleDepth(Integer.MAX_VALUE) + .redactTokenParserErrorMessages(false) .build(); /** @@ -189,6 +192,7 @@ public static void setDefaultSdlParserOptions(ParserOptions options) { private final int maxTokens; private final int maxWhitespaceTokens; private final int maxRuleDepth; + private final boolean redactTokenParserErrorMessages; private final ParsingListener parsingListener; private ParserOptions(Builder builder) { @@ -200,6 +204,7 @@ private ParserOptions(Builder builder) { this.maxTokens = builder.maxTokens; this.maxWhitespaceTokens = builder.maxWhitespaceTokens; this.maxRuleDepth = builder.maxRuleDepth; + this.redactTokenParserErrorMessages = builder.redactTokenParserErrorMessages; this.parsingListener = builder.parsingListener; } @@ -294,6 +299,16 @@ public int getMaxRuleDepth() { return maxRuleDepth; } + /** + * Option to redact offending tokens in parser error messages. + * By default, the parser will include the offending token in the error message, if possible. + * + * @return true if the token parser messages should be redacted + */ + public boolean isRedactTokenParserErrorMessages() { + return redactTokenParserErrorMessages; + } + public ParsingListener getParsingListener() { return parsingListener; } @@ -319,6 +334,7 @@ public static class Builder { private int maxTokens = MAX_QUERY_TOKENS; private int maxWhitespaceTokens = MAX_WHITESPACE_TOKENS; private int maxRuleDepth = MAX_RULE_DEPTH; + private boolean redactTokenParserErrorMessages = false; Builder() { } @@ -331,6 +347,7 @@ public static class Builder { this.maxTokens = parserOptions.maxTokens; this.maxWhitespaceTokens = parserOptions.maxWhitespaceTokens; this.maxRuleDepth = parserOptions.maxRuleDepth; + this.redactTokenParserErrorMessages = parserOptions.redactTokenParserErrorMessages; this.parsingListener = parserOptions.parsingListener; } @@ -374,6 +391,11 @@ public Builder maxRuleDepth(int maxRuleDepth) { return this; } + public Builder redactTokenParserErrorMessages(boolean redactTokenParserErrorMessages) { + this.redactTokenParserErrorMessages = redactTokenParserErrorMessages; + return this; + } + public Builder parsingListener(ParsingListener parsingListener) { this.parsingListener = assertNotNull(parsingListener); return this; diff --git a/src/main/java/graphql/parser/SafeTokenReader.java b/src/main/java/graphql/parser/SafeTokenReader.java index be102be0d2..8c655d9426 100644 --- a/src/main/java/graphql/parser/SafeTokenReader.java +++ b/src/main/java/graphql/parser/SafeTokenReader.java @@ -1,7 +1,7 @@ package graphql.parser; import graphql.Internal; -import org.jetbrains.annotations.NotNull; +import org.jspecify.annotations.NonNull; import java.io.IOException; import java.io.Reader; @@ -40,7 +40,7 @@ private int checkHowMany(int read, int howMany) { } @Override - public int read(char @NotNull [] buff, int off, int len) throws IOException { + public int read(char @NonNull [] buff, int off, int len) throws IOException { int howMany = delegate.read(buff, off, len); return checkHowMany(howMany, howMany); } @@ -52,13 +52,13 @@ public int read() throws IOException { } @Override - public int read(@NotNull CharBuffer target) throws IOException { + public int read(@NonNull CharBuffer target) throws IOException { int howMany = delegate.read(target); return checkHowMany(howMany, howMany); } @Override - public int read( char @NotNull [] buff) throws IOException { + public int read(char @NonNull [] buff) throws IOException { int howMany = delegate.read(buff); return checkHowMany(howMany, howMany); } diff --git a/src/main/java/graphql/parser/exceptions/InvalidUnicodeSyntaxException.java b/src/main/java/graphql/parser/exceptions/InvalidUnicodeSyntaxException.java index be75127047..46b7ad37b3 100644 --- a/src/main/java/graphql/parser/exceptions/InvalidUnicodeSyntaxException.java +++ b/src/main/java/graphql/parser/exceptions/InvalidUnicodeSyntaxException.java @@ -4,12 +4,12 @@ import graphql.i18n.I18n; import graphql.language.SourceLocation; import graphql.parser.InvalidSyntaxException; -import org.jetbrains.annotations.NotNull; +import org.jspecify.annotations.NonNull; @Internal public class InvalidUnicodeSyntaxException extends InvalidSyntaxException { - public InvalidUnicodeSyntaxException(@NotNull I18n i18N, @NotNull String msgKey, @NotNull SourceLocation sourceLocation, @NotNull String offendingToken) { + public InvalidUnicodeSyntaxException(@NonNull I18n i18N, @NonNull String msgKey, @NonNull SourceLocation sourceLocation, @NonNull String offendingToken) { super(i18N.msg(msgKey, offendingToken, sourceLocation.getLine(), sourceLocation.getColumn()), sourceLocation, offendingToken, null, null); } diff --git a/src/main/java/graphql/parser/exceptions/MoreTokensSyntaxException.java b/src/main/java/graphql/parser/exceptions/MoreTokensSyntaxException.java index 6f73b38e4c..2956f3f95a 100644 --- a/src/main/java/graphql/parser/exceptions/MoreTokensSyntaxException.java +++ b/src/main/java/graphql/parser/exceptions/MoreTokensSyntaxException.java @@ -4,14 +4,21 @@ import graphql.i18n.I18n; import graphql.language.SourceLocation; import graphql.parser.InvalidSyntaxException; -import org.jetbrains.annotations.NotNull; +import org.jspecify.annotations.NonNull; @Internal public class MoreTokensSyntaxException extends InvalidSyntaxException { @Internal - public MoreTokensSyntaxException(@NotNull I18n i18N, @NotNull SourceLocation sourceLocation, @NotNull String offendingToken, @NotNull String sourcePreview) { + public MoreTokensSyntaxException(@NonNull I18n i18N, @NonNull SourceLocation sourceLocation, @NonNull String offendingToken, @NonNull String sourcePreview) { super(i18N.msg("InvalidSyntaxMoreTokens.full", offendingToken, sourceLocation.getLine(), sourceLocation.getColumn()), sourceLocation, offendingToken, sourcePreview, null); } + + @Internal + public MoreTokensSyntaxException(@NonNull I18n i18N, @NonNull SourceLocation sourceLocation) { + super(i18N.msg("InvalidSyntaxMoreTokens.noMessage", sourceLocation.getLine(), sourceLocation.getColumn()), + sourceLocation, null, null, null); + } + } diff --git a/src/main/java/graphql/parser/exceptions/ParseCancelledException.java b/src/main/java/graphql/parser/exceptions/ParseCancelledException.java index ab183367f3..4fe9541522 100644 --- a/src/main/java/graphql/parser/exceptions/ParseCancelledException.java +++ b/src/main/java/graphql/parser/exceptions/ParseCancelledException.java @@ -4,14 +4,14 @@ import graphql.i18n.I18n; import graphql.language.SourceLocation; import graphql.parser.InvalidSyntaxException; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; +import org.jspecify.annotations.NonNull; +import org.jspecify.annotations.Nullable; @Internal public class ParseCancelledException extends InvalidSyntaxException { @Internal - public ParseCancelledException(@NotNull I18n i18N, @Nullable SourceLocation sourceLocation, @Nullable String offendingToken, int maxTokens, @NotNull String tokenType) { + public ParseCancelledException(@NonNull I18n i18N, @Nullable SourceLocation sourceLocation, @Nullable String offendingToken, int maxTokens, @NonNull String tokenType) { super(i18N.msg("ParseCancelled.full", maxTokens, tokenType), sourceLocation, offendingToken, null, null); } diff --git a/src/main/java/graphql/parser/exceptions/ParseCancelledTooDeepException.java b/src/main/java/graphql/parser/exceptions/ParseCancelledTooDeepException.java index c5f9499ec4..fe8717bedf 100644 --- a/src/main/java/graphql/parser/exceptions/ParseCancelledTooDeepException.java +++ b/src/main/java/graphql/parser/exceptions/ParseCancelledTooDeepException.java @@ -4,14 +4,14 @@ import graphql.i18n.I18n; import graphql.language.SourceLocation; import graphql.parser.InvalidSyntaxException; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; +import org.jspecify.annotations.NonNull; +import org.jspecify.annotations.Nullable; @Internal public class ParseCancelledTooDeepException extends InvalidSyntaxException { @Internal - public ParseCancelledTooDeepException(@NotNull I18n i18N, @Nullable SourceLocation sourceLocation, @Nullable String offendingToken, int maxTokens, @NotNull String tokenType) { + public ParseCancelledTooDeepException(@NonNull I18n i18N, @Nullable SourceLocation sourceLocation, @Nullable String offendingToken, int maxTokens, @NonNull String tokenType) { super(i18N.msg("ParseCancelled.tooDeep", maxTokens, tokenType), sourceLocation, offendingToken, null, null); } diff --git a/src/main/java/graphql/parser/exceptions/ParseCancelledTooManyCharsException.java b/src/main/java/graphql/parser/exceptions/ParseCancelledTooManyCharsException.java index 1c84189f65..b861c78cfe 100644 --- a/src/main/java/graphql/parser/exceptions/ParseCancelledTooManyCharsException.java +++ b/src/main/java/graphql/parser/exceptions/ParseCancelledTooManyCharsException.java @@ -3,13 +3,13 @@ import graphql.Internal; import graphql.i18n.I18n; import graphql.parser.InvalidSyntaxException; -import org.jetbrains.annotations.NotNull; +import org.jspecify.annotations.NonNull; @Internal public class ParseCancelledTooManyCharsException extends InvalidSyntaxException { @Internal - public ParseCancelledTooManyCharsException(@NotNull I18n i18N, int maxCharacters) { + public ParseCancelledTooManyCharsException(@NonNull I18n i18N, int maxCharacters) { super(i18N.msg("ParseCancelled.tooManyChars", maxCharacters), null, null, null, null); } diff --git a/src/main/java/graphql/scalar/GraphqlBooleanCoercing.java b/src/main/java/graphql/scalar/GraphqlBooleanCoercing.java index 8c06b874e6..cea304a65b 100644 --- a/src/main/java/graphql/scalar/GraphqlBooleanCoercing.java +++ b/src/main/java/graphql/scalar/GraphqlBooleanCoercing.java @@ -9,8 +9,8 @@ import graphql.schema.CoercingParseLiteralException; import graphql.schema.CoercingParseValueException; import graphql.schema.CoercingSerializeException; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; +import org.jspecify.annotations.NonNull; +import org.jspecify.annotations.Nullable; import java.math.BigDecimal; import java.util.Locale; @@ -54,8 +54,8 @@ private Boolean convertImpl(Object input) { } - @NotNull - private Boolean serializeImpl(@NotNull Object input, @NotNull Locale locale) { + @NonNull + private Boolean serializeImpl(@NonNull Object input, @NonNull Locale locale) { Boolean result = convertImpl(input); if (result == null) { throw new CoercingSerializeException( @@ -65,8 +65,8 @@ private Boolean serializeImpl(@NotNull Object input, @NotNull Locale locale) { return result; } - @NotNull - private Boolean parseValueImpl(@NotNull Object input, @NotNull Locale locale) { + @NonNull + private Boolean parseValueImpl(@NonNull Object input, @NonNull Locale locale) { if (!(input instanceof Boolean)) { throw new CoercingParseValueException( i18nMsg(locale, "Boolean.unexpectedRawValueType", typeName(input)) @@ -75,7 +75,7 @@ private Boolean parseValueImpl(@NotNull Object input, @NotNull Locale locale) { return (Boolean) input; } - private static boolean parseLiteralImpl(@NotNull Object input, @NotNull Locale locale) { + private static boolean parseLiteralImpl(@NonNull Object input, @NonNull Locale locale) { if (!(input instanceof BooleanValue)) { throw new CoercingParseLiteralException( i18nMsg(locale, "Boolean.unexpectedAstType", typeName(input)) @@ -84,8 +84,8 @@ private static boolean parseLiteralImpl(@NotNull Object input, @NotNull Locale l return ((BooleanValue) input).isValue(); } - @NotNull - private BooleanValue valueToLiteralImpl(@NotNull Object input, @NotNull Locale locale) { + @NonNull + private BooleanValue valueToLiteralImpl(@NonNull Object input, @NonNull Locale locale) { Boolean result = convertImpl(input); if (result == null) { assertShouldNeverHappen(i18nMsg(locale, "Boolean.notBoolean", typeName(input))); @@ -95,45 +95,45 @@ private BooleanValue valueToLiteralImpl(@NotNull Object input, @NotNull Locale l @Override @Deprecated - public Boolean serialize(@NotNull Object dataFetcherResult) { + public Boolean serialize(@NonNull Object dataFetcherResult) { return serializeImpl(dataFetcherResult, Locale.getDefault()); } @Override - public @Nullable Boolean serialize(@NotNull Object dataFetcherResult, @NotNull GraphQLContext graphQLContext, @NotNull Locale locale) throws CoercingSerializeException { + public @Nullable Boolean serialize(@NonNull Object dataFetcherResult, @NonNull GraphQLContext graphQLContext, @NonNull Locale locale) throws CoercingSerializeException { return serializeImpl(dataFetcherResult, locale); } @Override @Deprecated - public Boolean parseValue(@NotNull Object input) { + public Boolean parseValue(@NonNull Object input) { return parseValueImpl(input, Locale.getDefault()); } @Override - public Boolean parseValue(@NotNull Object input, @NotNull GraphQLContext graphQLContext, @NotNull Locale locale) throws CoercingParseValueException { + public Boolean parseValue(@NonNull Object input, @NonNull GraphQLContext graphQLContext, @NonNull Locale locale) throws CoercingParseValueException { return parseValueImpl(input, locale); } @Override @Deprecated - public Boolean parseLiteral(@NotNull Object input) { + public Boolean parseLiteral(@NonNull Object input) { return parseLiteralImpl(input, Locale.getDefault()); } @Override - public @Nullable Boolean parseLiteral(@NotNull Value input, @NotNull CoercedVariables variables, @NotNull GraphQLContext graphQLContext, @NotNull Locale locale) throws CoercingParseLiteralException { + public @Nullable Boolean parseLiteral(@NonNull Value input, @NonNull CoercedVariables variables, @NonNull GraphQLContext graphQLContext, @NonNull Locale locale) throws CoercingParseLiteralException { return parseLiteralImpl(input, locale); } @Override @Deprecated - public @NotNull Value valueToLiteral(@NotNull Object input) { + public @NonNull Value valueToLiteral(@NonNull Object input) { return valueToLiteralImpl(input, Locale.getDefault()); } @Override - public @NotNull Value valueToLiteral(@NotNull Object input, @NotNull GraphQLContext graphQLContext, @NotNull Locale locale) { + public @NonNull Value valueToLiteral(@NonNull Object input, @NonNull GraphQLContext graphQLContext, @NonNull Locale locale) { return valueToLiteralImpl(input, locale); } } diff --git a/src/main/java/graphql/scalar/GraphqlFloatCoercing.java b/src/main/java/graphql/scalar/GraphqlFloatCoercing.java index 7efa270274..d1863ed450 100644 --- a/src/main/java/graphql/scalar/GraphqlFloatCoercing.java +++ b/src/main/java/graphql/scalar/GraphqlFloatCoercing.java @@ -10,8 +10,8 @@ import graphql.schema.CoercingParseLiteralException; import graphql.schema.CoercingParseValueException; import graphql.schema.CoercingSerializeException; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; +import org.jspecify.annotations.NonNull; +import org.jspecify.annotations.Nullable; import java.math.BigDecimal; import java.util.Locale; @@ -52,8 +52,8 @@ private Double convertImpl(Object input) { return doubleInput; } - @NotNull - private Double serialiseImpl(Object input, @NotNull Locale locale) { + @NonNull + private Double serialiseImpl(Object input, @NonNull Locale locale) { Double result = convertImpl(input); if (result == null) { throw new CoercingSerializeException( @@ -63,8 +63,8 @@ private Double serialiseImpl(Object input, @NotNull Locale locale) { return result; } - @NotNull - private Double parseValueImpl(@NotNull Object input, @NotNull Locale locale) { + @NonNull + private Double parseValueImpl(@NonNull Object input, @NonNull Locale locale) { if (!(input instanceof Number)) { throw new CoercingParseValueException( i18nMsg(locale, "Float.unexpectedRawValueType", typeName(input)) @@ -81,7 +81,7 @@ private Double parseValueImpl(@NotNull Object input, @NotNull Locale locale) { return result; } - private static double parseLiteralImpl(@NotNull Object input, @NotNull Locale locale) { + private static double parseLiteralImpl(@NonNull Object input, @NonNull Locale locale) { if (input instanceof IntValue) { return ((IntValue) input).getValue().doubleValue(); } else if (input instanceof FloatValue) { @@ -93,8 +93,8 @@ private static double parseLiteralImpl(@NotNull Object input, @NotNull Locale lo } } - @NotNull - private FloatValue valueToLiteralImpl(Object input, @NotNull Locale locale) { + @NonNull + private FloatValue valueToLiteralImpl(Object input, @NonNull Locale locale) { Double result = convertImpl(input); if (result == null) { assertShouldNeverHappen(i18nMsg(locale, "Float.notFloat", typeName(input))); @@ -104,45 +104,45 @@ private FloatValue valueToLiteralImpl(Object input, @NotNull Locale locale) { @Override @Deprecated - public Double serialize(@NotNull Object dataFetcherResult) { + public Double serialize(@NonNull Object dataFetcherResult) { return serialiseImpl(dataFetcherResult, Locale.getDefault()); } @Override - public @Nullable Double serialize(@NotNull Object dataFetcherResult, @NotNull GraphQLContext graphQLContext, @NotNull Locale locale) throws CoercingSerializeException { + public @Nullable Double serialize(@NonNull Object dataFetcherResult, @NonNull GraphQLContext graphQLContext, @NonNull Locale locale) throws CoercingSerializeException { return serialiseImpl(dataFetcherResult, locale); } @Override @Deprecated - public @NotNull Double parseValue(@NotNull Object input) { + public @NonNull Double parseValue(@NonNull Object input) { return parseValueImpl(input, Locale.getDefault()); } @Override - public Double parseValue(@NotNull Object input, @NotNull GraphQLContext graphQLContext, @NotNull Locale locale) throws CoercingParseValueException { + public Double parseValue(@NonNull Object input, @NonNull GraphQLContext graphQLContext, @NonNull Locale locale) throws CoercingParseValueException { return parseValueImpl(input, locale); } @Override @Deprecated - public Double parseLiteral(@NotNull Object input) { + public Double parseLiteral(@NonNull Object input) { return parseLiteralImpl(input, Locale.getDefault()); } @Override - public @Nullable Double parseLiteral(@NotNull Value input, @NotNull CoercedVariables variables, @NotNull GraphQLContext graphQLContext, @NotNull Locale locale) throws CoercingParseLiteralException { + public @Nullable Double parseLiteral(@NonNull Value input, @NonNull CoercedVariables variables, @NonNull GraphQLContext graphQLContext, @NonNull Locale locale) throws CoercingParseLiteralException { return parseLiteralImpl(input, locale); } @Override @Deprecated - public Value valueToLiteral(@NotNull Object input) { + public Value valueToLiteral(@NonNull Object input) { return valueToLiteralImpl(input, Locale.getDefault()); } @Override - public @NotNull Value valueToLiteral(@NotNull Object input, @NotNull GraphQLContext graphQLContext, @NotNull Locale locale) { + public @NonNull Value valueToLiteral(@NonNull Object input, @NonNull GraphQLContext graphQLContext, @NonNull Locale locale) { return valueToLiteralImpl(input, locale); } } diff --git a/src/main/java/graphql/scalar/GraphqlIDCoercing.java b/src/main/java/graphql/scalar/GraphqlIDCoercing.java index 4631c93c5d..7c8c6336cf 100644 --- a/src/main/java/graphql/scalar/GraphqlIDCoercing.java +++ b/src/main/java/graphql/scalar/GraphqlIDCoercing.java @@ -10,14 +10,13 @@ import graphql.schema.CoercingParseLiteralException; import graphql.schema.CoercingParseValueException; import graphql.schema.CoercingSerializeException; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; +import org.jspecify.annotations.NonNull; +import org.jspecify.annotations.Nullable; import java.math.BigInteger; import java.util.Locale; import java.util.UUID; -import static graphql.Assert.assertNotNull; import static graphql.Assert.assertShouldNeverHappen; import static graphql.scalar.CoercingUtil.i18nMsg; import static graphql.scalar.CoercingUtil.typeName; @@ -49,8 +48,8 @@ private String convertImpl(Object input) { } - @NotNull - private String serializeImpl(Object input, @NotNull Locale locale) { + @NonNull + private String serializeImpl(Object input, @NonNull Locale locale) { String result = String.valueOf(input); if (result == null) { throw new CoercingSerializeException( @@ -60,8 +59,8 @@ private String serializeImpl(Object input, @NotNull Locale locale) { return result; } - @NotNull - private String parseValueImpl(Object input, @NotNull Locale locale) { + @NonNull + private String parseValueImpl(Object input, @NonNull Locale locale) { String result = convertImpl(input); if (result == null) { throw new CoercingParseValueException( @@ -71,7 +70,7 @@ private String parseValueImpl(Object input, @NotNull Locale locale) { return result; } - private String parseLiteralImpl(Object input, @NotNull Locale locale) { + private String parseLiteralImpl(Object input, @NonNull Locale locale) { if (input instanceof StringValue) { return ((StringValue) input).getValue(); } @@ -83,8 +82,8 @@ private String parseLiteralImpl(Object input, @NotNull Locale locale) { ); } - @NotNull - private StringValue valueToLiteralImpl(Object input, @NotNull Locale locale) { + @NonNull + private StringValue valueToLiteralImpl(Object input, @NonNull Locale locale) { String result = convertImpl(input); if (result == null) { assertShouldNeverHappen(i18nMsg(locale, "ID.notId", typeName(input))); @@ -94,45 +93,45 @@ private StringValue valueToLiteralImpl(Object input, @NotNull Locale locale) { @Override @Deprecated - public String serialize(@NotNull Object dataFetcherResult) { + public String serialize(@NonNull Object dataFetcherResult) { return serializeImpl(dataFetcherResult, Locale.getDefault()); } @Override - public @Nullable Object serialize(@NotNull Object dataFetcherResult, @NotNull GraphQLContext graphQLContext, @NotNull Locale locale) throws CoercingSerializeException { + public @Nullable Object serialize(@NonNull Object dataFetcherResult, @NonNull GraphQLContext graphQLContext, @NonNull Locale locale) throws CoercingSerializeException { return serializeImpl(dataFetcherResult, locale); } @Override @Deprecated - public String parseValue(@NotNull Object input) { + public String parseValue(@NonNull Object input) { return parseValueImpl(input, Locale.getDefault()); } @Override - public Object parseValue(@NotNull Object input, @NotNull GraphQLContext graphQLContext, @NotNull Locale locale) throws CoercingParseValueException { + public Object parseValue(@NonNull Object input, @NonNull GraphQLContext graphQLContext, @NonNull Locale locale) throws CoercingParseValueException { return parseValueImpl(input, locale); } @Override @Deprecated - public String parseLiteral(@NotNull Object input) { + public String parseLiteral(@NonNull Object input) { return parseLiteralImpl(input, Locale.getDefault()); } @Override - public @Nullable Object parseLiteral(@NotNull Value input, @NotNull CoercedVariables variables, @NotNull GraphQLContext graphQLContext, @NotNull Locale locale) throws CoercingParseLiteralException { + public @Nullable Object parseLiteral(@NonNull Value input, @NonNull CoercedVariables variables, @NonNull GraphQLContext graphQLContext, @NonNull Locale locale) throws CoercingParseLiteralException { return parseLiteralImpl(input, locale); } @Override @Deprecated - public Value valueToLiteral(@NotNull Object input) { + public Value valueToLiteral(@NonNull Object input) { return valueToLiteralImpl(input, Locale.getDefault()); } @Override - public @NotNull Value valueToLiteral(@NotNull Object input, @NotNull GraphQLContext graphQLContext, @NotNull Locale locale) { + public @NonNull Value valueToLiteral(@NonNull Object input, @NonNull GraphQLContext graphQLContext, @NonNull Locale locale) { return valueToLiteralImpl(input, locale); } } diff --git a/src/main/java/graphql/scalar/GraphqlIntCoercing.java b/src/main/java/graphql/scalar/GraphqlIntCoercing.java index cf428fc8cf..bac8822f13 100644 --- a/src/main/java/graphql/scalar/GraphqlIntCoercing.java +++ b/src/main/java/graphql/scalar/GraphqlIntCoercing.java @@ -9,8 +9,8 @@ import graphql.schema.CoercingParseLiteralException; import graphql.schema.CoercingParseValueException; import graphql.schema.CoercingSerializeException; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; +import org.jspecify.annotations.NonNull; +import org.jspecify.annotations.Nullable; import java.math.BigDecimal; import java.math.BigInteger; @@ -51,8 +51,8 @@ private Integer convertImpl(Object input) { } } - @NotNull - private Integer serialiseImpl(Object input, @NotNull Locale locale) { + @NonNull + private Integer serialiseImpl(Object input, @NonNull Locale locale) { Integer result = convertImpl(input); if (result == null) { throw new CoercingSerializeException( @@ -62,8 +62,8 @@ private Integer serialiseImpl(Object input, @NotNull Locale locale) { return result; } - @NotNull - private Integer parseValueImpl(@NotNull Object input, @NotNull Locale locale) { + @NonNull + private Integer parseValueImpl(@NonNull Object input, @NonNull Locale locale) { if (!(input instanceof Number)) { throw new CoercingParseValueException( i18nMsg(locale, "Int.notInt", typeName(input)) @@ -104,7 +104,7 @@ private BigInteger convertParseValueImpl(Object input) { } } - private static int parseLiteralImpl(Object input, @NotNull Locale locale) { + private static int parseLiteralImpl(Object input, @NonNull Locale locale) { if (!(input instanceof IntValue)) { throw new CoercingParseLiteralException( i18nMsg(locale, "Scalar.unexpectedAstType", "IntValue", typeName(input)) @@ -119,7 +119,7 @@ private static int parseLiteralImpl(Object input, @NotNull Locale locale) { return value.intValue(); } - private IntValue valueToLiteralImpl(Object input, @NotNull Locale locale) { + private IntValue valueToLiteralImpl(Object input, @NonNull Locale locale) { Integer result = convertImpl(input); if (result == null) { assertShouldNeverHappen(i18nMsg(locale, "Int.notInt", typeName(input))); @@ -130,45 +130,45 @@ private IntValue valueToLiteralImpl(Object input, @NotNull Locale locale) { @Override @Deprecated - public Integer serialize(@NotNull Object dataFetcherResult) { + public Integer serialize(@NonNull Object dataFetcherResult) { return serialiseImpl(dataFetcherResult, Locale.getDefault()); } @Override - public @Nullable Integer serialize(@NotNull Object dataFetcherResult, @NotNull GraphQLContext graphQLContext, @NotNull Locale locale) throws CoercingSerializeException { + public @Nullable Integer serialize(@NonNull Object dataFetcherResult, @NonNull GraphQLContext graphQLContext, @NonNull Locale locale) throws CoercingSerializeException { return serialiseImpl(dataFetcherResult, locale); } @Override @Deprecated - public Integer parseValue(@NotNull Object input) { + public Integer parseValue(@NonNull Object input) { return parseValueImpl(input, Locale.getDefault()); } @Override - public Integer parseValue(@NotNull Object input, @NotNull GraphQLContext graphQLContext, @NotNull Locale locale) throws CoercingParseValueException { + public Integer parseValue(@NonNull Object input, @NonNull GraphQLContext graphQLContext, @NonNull Locale locale) throws CoercingParseValueException { return parseValueImpl(input, locale); } @Override @Deprecated - public Integer parseLiteral(@NotNull Object input) { + public Integer parseLiteral(@NonNull Object input) { return parseLiteralImpl(input, Locale.getDefault()); } @Override - public @Nullable Integer parseLiteral(@NotNull Value input, @NotNull CoercedVariables variables, @NotNull GraphQLContext graphQLContext, @NotNull Locale locale) throws CoercingParseLiteralException { + public @Nullable Integer parseLiteral(@NonNull Value input, @NonNull CoercedVariables variables, @NonNull GraphQLContext graphQLContext, @NonNull Locale locale) throws CoercingParseLiteralException { return parseLiteralImpl(input, locale); } @Override @Deprecated - public @NotNull Value valueToLiteral(@NotNull Object input) { + public @NonNull Value valueToLiteral(@NonNull Object input) { return valueToLiteralImpl(input, Locale.getDefault()); } @Override - public @NotNull Value valueToLiteral(@NotNull Object input, @NotNull GraphQLContext graphQLContext, @NotNull Locale locale) { + public @NonNull Value valueToLiteral(@NonNull Object input, @NonNull GraphQLContext graphQLContext, @NonNull Locale locale) { return valueToLiteralImpl(input, locale); } } diff --git a/src/main/java/graphql/scalar/GraphqlStringCoercing.java b/src/main/java/graphql/scalar/GraphqlStringCoercing.java index 9040cc03f8..64ab93a911 100644 --- a/src/main/java/graphql/scalar/GraphqlStringCoercing.java +++ b/src/main/java/graphql/scalar/GraphqlStringCoercing.java @@ -9,8 +9,8 @@ import graphql.schema.CoercingParseLiteralException; import graphql.schema.CoercingParseValueException; import graphql.schema.CoercingSerializeException; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; +import org.jspecify.annotations.NonNull; +import org.jspecify.annotations.Nullable; import java.util.Locale; @@ -28,7 +28,7 @@ private String toStringImpl(Object input) { return String.valueOf(input); } - private String parseValueImpl(@NotNull Object input, @NotNull Locale locale) { + private String parseValueImpl(@NonNull Object input, @NonNull Locale locale) { if (!(input instanceof String)) { throw new CoercingParseValueException( i18nMsg(locale, "String.unexpectedRawValueType", typeName(input)) @@ -37,7 +37,7 @@ private String parseValueImpl(@NotNull Object input, @NotNull Locale locale) { return (String) input; } - private String parseLiteralImpl(@NotNull Object input, Locale locale) { + private String parseLiteralImpl(@NonNull Object input, Locale locale) { if (!(input instanceof StringValue)) { throw new CoercingParseLiteralException( i18nMsg(locale, "Scalar.unexpectedAstType", "StringValue", typeName(input)) @@ -46,51 +46,51 @@ private String parseLiteralImpl(@NotNull Object input, Locale locale) { return ((StringValue) input).getValue(); } - private StringValue valueToLiteralImpl(@NotNull Object input) { + private StringValue valueToLiteralImpl(@NonNull Object input) { return StringValue.newStringValue(input.toString()).build(); } @Override @Deprecated - public String serialize(@NotNull Object dataFetcherResult) { + public String serialize(@NonNull Object dataFetcherResult) { return toStringImpl(dataFetcherResult); } @Override - public @Nullable String serialize(@NotNull Object dataFetcherResult, @NotNull GraphQLContext graphQLContext, @NotNull Locale locale) throws CoercingSerializeException { + public @Nullable String serialize(@NonNull Object dataFetcherResult, @NonNull GraphQLContext graphQLContext, @NonNull Locale locale) throws CoercingSerializeException { return toStringImpl(dataFetcherResult); } @Override @Deprecated - public String parseValue(@NotNull Object input) { + public String parseValue(@NonNull Object input) { return parseValueImpl(input, Locale.getDefault()); } @Override - public String parseValue(@NotNull Object input, @NotNull GraphQLContext graphQLContext, @NotNull Locale locale) throws CoercingParseValueException { + public String parseValue(@NonNull Object input, @NonNull GraphQLContext graphQLContext, @NonNull Locale locale) throws CoercingParseValueException { return parseValueImpl(input, locale); } @Override @Deprecated - public String parseLiteral(@NotNull Object input) { + public String parseLiteral(@NonNull Object input) { return parseLiteralImpl(input, Locale.getDefault()); } @Override - public @Nullable String parseLiteral(@NotNull Value input, @NotNull CoercedVariables variables, @NotNull GraphQLContext graphQLContext, @NotNull Locale locale) throws CoercingParseLiteralException { + public @Nullable String parseLiteral(@NonNull Value input, @NonNull CoercedVariables variables, @NonNull GraphQLContext graphQLContext, @NonNull Locale locale) throws CoercingParseLiteralException { return parseLiteralImpl(input, locale); } @Override @Deprecated - public @NotNull Value valueToLiteral(@NotNull Object input) { + public @NonNull Value valueToLiteral(@NonNull Object input) { return valueToLiteralImpl(input); } @Override - public @NotNull Value valueToLiteral(@NotNull Object input, @NotNull GraphQLContext graphQLContext, @NotNull Locale locale) { + public @NonNull Value valueToLiteral(@NonNull Object input, @NonNull GraphQLContext graphQLContext, @NonNull Locale locale) { return valueToLiteralImpl(input); } } diff --git a/src/main/java/graphql/schema/Coercing.java b/src/main/java/graphql/schema/Coercing.java index cf8de535a5..3f580776aa 100644 --- a/src/main/java/graphql/schema/Coercing.java +++ b/src/main/java/graphql/schema/Coercing.java @@ -5,8 +5,8 @@ import graphql.PublicSpi; import graphql.execution.CoercedVariables; import graphql.language.Value; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; +import org.jspecify.annotations.NonNull; +import org.jspecify.annotations.Nullable; import java.util.Locale; import java.util.Map; @@ -54,7 +54,7 @@ public interface Coercing { * @throws graphql.schema.CoercingSerializeException if value input can't be serialized */ @Deprecated(since = "2022-08-22") - default @Nullable O serialize(@NotNull Object dataFetcherResult) throws CoercingSerializeException { + default @Nullable O serialize(@NonNull Object dataFetcherResult) throws CoercingSerializeException { throw new UnsupportedOperationException("The non deprecated version of serialize has not been implemented by this scalar : " + this.getClass()); } @@ -75,7 +75,7 @@ public interface Coercing { * * @throws graphql.schema.CoercingSerializeException if value input can't be serialized */ - default @Nullable O serialize(@NotNull Object dataFetcherResult, @NotNull GraphQLContext graphQLContext, @NotNull Locale locale) throws CoercingSerializeException { + default @Nullable O serialize(@NonNull Object dataFetcherResult, @NonNull GraphQLContext graphQLContext, @NonNull Locale locale) throws CoercingSerializeException { assertNotNull(dataFetcherResult); assertNotNull(graphQLContext); return serialize(dataFetcherResult); @@ -98,7 +98,7 @@ public interface Coercing { * @throws graphql.schema.CoercingParseValueException if value input can't be parsed */ @Deprecated(since = "2022-08-22") - default @Nullable I parseValue(@NotNull Object input) throws CoercingParseValueException { + default @Nullable I parseValue(@NonNull Object input) throws CoercingParseValueException { throw new UnsupportedOperationException("The non deprecated version of parseValue has not been implemented by this scalar : " + this.getClass()); } @@ -119,7 +119,7 @@ public interface Coercing { * @throws graphql.schema.CoercingParseValueException if value input can't be parsed */ @Nullable - default I parseValue(@NotNull Object input, @NotNull GraphQLContext graphQLContext, @NotNull Locale locale) throws CoercingParseValueException { + default I parseValue(@NonNull Object input, @NonNull GraphQLContext graphQLContext, @NonNull Locale locale) throws CoercingParseValueException { assertNotNull(input); assertNotNull(graphQLContext); assertNotNull(locale); @@ -144,7 +144,7 @@ default I parseValue(@NotNull Object input, @NotNull GraphQLContext graphQLConte * @throws graphql.schema.CoercingParseLiteralException if input literal can't be parsed */ @Deprecated(since = "2022-08-22") - default @Nullable I parseLiteral(@NotNull Object input) throws CoercingParseLiteralException { + default @Nullable I parseLiteral(@NonNull Object input) throws CoercingParseLiteralException { throw new UnsupportedOperationException("The non deprecated version of parseLiteral has not been implemented by this scalar : " + this.getClass()); } @@ -198,7 +198,7 @@ default I parseValue(@NotNull Object input, @NotNull GraphQLContext graphQLConte * * @throws graphql.schema.CoercingParseLiteralException if input literal can't be parsed */ - default @Nullable I parseLiteral(@NotNull Value input, @NotNull CoercedVariables variables, @NotNull GraphQLContext graphQLContext, @NotNull Locale locale) throws CoercingParseLiteralException { + default @Nullable I parseLiteral(@NonNull Value input, @NonNull CoercedVariables variables, @NonNull GraphQLContext graphQLContext, @NonNull Locale locale) throws CoercingParseLiteralException { assertNotNull(input); assertNotNull(graphQLContext); assertNotNull(locale); @@ -218,7 +218,7 @@ default I parseValue(@NotNull Object input, @NotNull GraphQLContext graphQLConte * @return The literal matching the external input value. */ @Deprecated(since = "2022-08-22") - default @NotNull Value valueToLiteral(@NotNull Object input) { + default @NonNull Value valueToLiteral(@NonNull Object input) { throw new UnsupportedOperationException("The non deprecated version of valueToLiteral has not been implemented by this scalar : " + this.getClass()); } @@ -233,7 +233,7 @@ default I parseValue(@NotNull Object input, @NotNull GraphQLContext graphQLConte * * @return The literal matching the external input value. */ - default @NotNull Value valueToLiteral(@NotNull Object input, @NotNull GraphQLContext graphQLContext, @NotNull Locale locale) { + default @NonNull Value valueToLiteral(@NonNull Object input, @NonNull GraphQLContext graphQLContext, @NonNull Locale locale) { assertNotNull(input); assertNotNull(graphQLContext); assertNotNull(locale); diff --git a/src/main/java/graphql/schema/DataFetcherFactories.java b/src/main/java/graphql/schema/DataFetcherFactories.java index e9f6a88bb5..2345535d56 100644 --- a/src/main/java/graphql/schema/DataFetcherFactories.java +++ b/src/main/java/graphql/schema/DataFetcherFactories.java @@ -20,7 +20,18 @@ public class DataFetcherFactories { * @return a data fetcher factory that always returns the provided data fetcher */ public static DataFetcherFactory useDataFetcher(DataFetcher dataFetcher) { - return fieldDefinition -> dataFetcher; + //noinspection deprecation + return new DataFetcherFactory<>() { + @Override + public DataFetcher get(DataFetcherFactoryEnvironment environment) { + return dataFetcher; + } + + @Override + public DataFetcher get(GraphQLFieldDefinition fieldDefinition) { + return dataFetcher; + } + }; } /** @@ -32,7 +43,7 @@ public static DataFetcherFactory useDataFetcher(DataFetcher dataFetche * * @return a new data fetcher that wraps the provided data fetcher */ - public static DataFetcher wrapDataFetcher(DataFetcher delegateDataFetcher, BiFunction mapFunction) { + public static DataFetcher wrapDataFetcher(DataFetcher delegateDataFetcher, BiFunction mapFunction) { return environment -> { Object value = delegateDataFetcher.get(environment); if (value instanceof CompletionStage) { diff --git a/src/main/java/graphql/schema/DataFetcherFactory.java b/src/main/java/graphql/schema/DataFetcherFactory.java index ece0dcb6ea..9e7eafa872 100644 --- a/src/main/java/graphql/schema/DataFetcherFactory.java +++ b/src/main/java/graphql/schema/DataFetcherFactory.java @@ -19,7 +19,23 @@ public interface DataFetcherFactory { * @param environment the environment that needs the data fetcher * * @return a data fetcher + * + * @deprecated This method will go away at some point and {@link DataFetcherFactory#get(GraphQLFieldDefinition)} will be used */ + @Deprecated(since = "2024-11-26") DataFetcher get(DataFetcherFactoryEnvironment environment); + /** + * Returns a {@link graphql.schema.DataFetcher} given the field definition + * which is cheaper in object allocation terms. + * + * @param fieldDefinition the field that needs the data fetcher + * + * @return a data fetcher + */ + + default DataFetcher get(GraphQLFieldDefinition fieldDefinition) { + return null; + } + } diff --git a/src/main/java/graphql/schema/DataFetcherFactoryEnvironment.java b/src/main/java/graphql/schema/DataFetcherFactoryEnvironment.java index 318b5f2bd3..7ff5aefb9a 100644 --- a/src/main/java/graphql/schema/DataFetcherFactoryEnvironment.java +++ b/src/main/java/graphql/schema/DataFetcherFactoryEnvironment.java @@ -5,8 +5,12 @@ /** * This is passed to a {@link graphql.schema.DataFetcherFactory} when it is invoked to * get a {@link graphql.schema.DataFetcher} + * + * @deprecated This class will go away at some point in the future since its pointless wrapper + * of a {@link GraphQLFieldDefinition} */ @PublicApi +@Deprecated(since = "2024-11-26") public class DataFetcherFactoryEnvironment { private final GraphQLFieldDefinition fieldDefinition; diff --git a/src/main/java/graphql/schema/DataFetchingEnvironment.java b/src/main/java/graphql/schema/DataFetchingEnvironment.java index ce46ad75c9..cc38ec0cc1 100644 --- a/src/main/java/graphql/schema/DataFetchingEnvironment.java +++ b/src/main/java/graphql/schema/DataFetchingEnvironment.java @@ -13,6 +13,8 @@ import graphql.language.OperationDefinition; import org.dataloader.DataLoader; import org.dataloader.DataLoaderRegistry; +import org.jspecify.annotations.NonNull; +import org.jspecify.annotations.Nullable; import java.util.List; import java.util.Locale; @@ -37,6 +39,7 @@ public interface DataFetchingEnvironment extends IntrospectionDataFetchingEnviro * * @return can be null for the root query, otherwise it is never null */ + @Nullable T getSource(); /** @@ -61,6 +64,7 @@ public interface DataFetchingEnvironment extends IntrospectionDataFetchingEnviro * * @return the named argument or null if it's not present */ + @Nullable T getArgument(String name); /** @@ -97,6 +101,7 @@ public interface DataFetchingEnvironment extends IntrospectionDataFetchingEnviro * * @return can NOT be null */ + @NonNull GraphQLContext getGraphQlContext(); /** @@ -114,6 +119,7 @@ public interface DataFetchingEnvironment extends IntrospectionDataFetchingEnviro * * @return can be null if no field context objects are passed back by previous parent fields */ + @Nullable T getLocalContext(); /** @@ -228,6 +234,7 @@ public interface DataFetchingEnvironment extends IntrospectionDataFetchingEnviro * * @see org.dataloader.DataLoaderRegistry#getDataLoader(String) */ + @Nullable DataLoader getDataLoader(String dataLoaderName); /** diff --git a/src/main/java/graphql/schema/DataFetchingEnvironmentImpl.java b/src/main/java/graphql/schema/DataFetchingEnvironmentImpl.java index 4377330e48..356988055f 100644 --- a/src/main/java/graphql/schema/DataFetchingEnvironmentImpl.java +++ b/src/main/java/graphql/schema/DataFetchingEnvironmentImpl.java @@ -17,6 +17,8 @@ import graphql.language.OperationDefinition; import org.dataloader.DataLoader; import org.dataloader.DataLoaderRegistry; +import org.jspecify.annotations.NonNull; +import org.jspecify.annotations.Nullable; import java.util.List; import java.util.Locale; @@ -129,12 +131,12 @@ public T getContext() { } @Override - public GraphQLContext getGraphQlContext() { + public @NonNull GraphQLContext getGraphQlContext() { return graphQLContext; } @Override - public T getLocalContext() { + public @Nullable T getLocalContext() { return (T) localContext; } @@ -204,7 +206,7 @@ public ExecutionStepInfo getExecutionStepInfo() { } @Override - public DataLoader getDataLoader(String dataLoaderName) { + public @Nullable DataLoader getDataLoader(String dataLoaderName) { return dataLoaderRegistry.getDataLoader(dataLoaderName); } diff --git a/src/main/java/graphql/schema/DataFetchingFieldSelectionSetImpl.java b/src/main/java/graphql/schema/DataFetchingFieldSelectionSetImpl.java index da71043740..4800a0dfcf 100644 --- a/src/main/java/graphql/schema/DataFetchingFieldSelectionSetImpl.java +++ b/src/main/java/graphql/schema/DataFetchingFieldSelectionSetImpl.java @@ -90,7 +90,10 @@ public static DataFetchingFieldSelectionSet newCollector(GraphQLSchema schema, G private final Supplier normalizedFieldSupplier; - private LockKit.ComputedOnce computedOnce = new LockKit.ComputedOnce(); + private final LockKit.ReentrantLock lock = new LockKit.ReentrantLock(); + private volatile boolean computedValues; + private volatile boolean computedImmediateValues; + // we have multiple entries in this map so that we can do glob matching in multiple ways // however it needs to be normalised back to a set of unique fields when give back out to // the caller. @@ -109,7 +112,7 @@ public boolean contains(String fieldGlobPattern) { if (fieldGlobPattern == null || fieldGlobPattern.isEmpty()) { return false; } - computeValuesLazily(); + computeValuesLazily(false); fieldGlobPattern = removeLeadingSlash(fieldGlobPattern); PathMatcher globMatcher = globMatcher(fieldGlobPattern); for (String flattenedField : flattenedFieldsForGlobSearching) { @@ -159,7 +162,7 @@ public List getFields(String fieldGlobPattern, String... fieldGlo if (fieldGlobPattern == null || fieldGlobPattern.isEmpty()) { return emptyList(); } - computeValuesLazily(); + computeValuesLazily(false); List targetNames = new ArrayList<>(); for (String flattenedField : flattenedFieldsForGlobSearching) { @@ -178,7 +181,7 @@ public List getFields(String fieldGlobPattern, String... fieldGlo @Override public List getFields() { - computeValuesLazily(); + computeValuesLazily(false); return toSetSemanticsList(normalisedSelectionSetFields.values().stream() .flatMap(Collection::stream)); } @@ -190,7 +193,7 @@ private List toSetSemanticsList(Stream stream) { @Override public List getImmediateFields() { - computeValuesLazily(); + computeValuesLazily(true); return immediateFields; } @@ -204,24 +207,40 @@ public Map> getFieldsGroupedByResultKey(String field return getFields(fieldGlobPattern, fieldGlobPatterns).stream().collect(Collectors.groupingBy(SelectedField::getResultKey)); } - private void computeValuesLazily() { - if (computedOnce.hasBeenComputed()) { + private void computeValuesLazily(boolean immediate) { + if (computedValues) { + return; + } + + // Avoid recomputing the immediate fields if they have already been computed. + if (immediate && computedImmediateValues) { return; } + // this supplier is a once only thread synced call - so do it outside this lock // if only to have only 1 lock in action at a time ExecutableNormalizedField currentNormalisedField = normalizedFieldSupplier.get(); - computedOnce.runOnce(() -> { + + lock.runLocked(() -> { + if (computedValues) { + return; + } + + if (computedImmediateValues && immediate) { + return; + } + flattenedFieldsForGlobSearching = new LinkedHashSet<>(); normalisedSelectionSetFields = new LinkedHashMap<>(); ImmutableList.Builder immediateFieldsBuilder = ImmutableList.builder(); - traverseSubSelectedFields(currentNormalisedField, immediateFieldsBuilder, "", "", true); + traverseSubSelectedFields(currentNormalisedField, immediateFieldsBuilder, "", "", true, immediate); immediateFields = immediateFieldsBuilder.build(); + computedImmediateValues = true; + computedValues = !immediate; }); } - - private void traverseSubSelectedFields(ExecutableNormalizedField currentNormalisedField, ImmutableList.Builder immediateFieldsBuilder, String qualifiedFieldPrefix, String simpleFieldPrefix, boolean firstLevel) { + private void traverseSubSelectedFields(ExecutableNormalizedField currentNormalisedField, ImmutableList.Builder immediateFieldsBuilder, String qualifiedFieldPrefix, String simpleFieldPrefix, boolean firstLevel, boolean immediate) { List children = currentNormalisedField.getChildren(); for (ExecutableNormalizedField normalizedSubSelectedField : children) { String typeQualifiedName = mkTypeQualifiedName(normalizedSubSelectedField); @@ -241,8 +260,8 @@ private void traverseSubSelectedFields(ExecutableNormalizedField currentNormalis normalisedSelectionSetFields.computeIfAbsent(globQualifiedName, newList()).add(selectedField); normalisedSelectionSetFields.computeIfAbsent(globSimpleName, newList()).add(selectedField); - if (normalizedSubSelectedField.hasChildren()) { - traverseSubSelectedFields(normalizedSubSelectedField, immediateFieldsBuilder, globQualifiedName, globSimpleName, false); + if (normalizedSubSelectedField.hasChildren() && !immediate) { + traverseSubSelectedFields(normalizedSubSelectedField, immediateFieldsBuilder, globQualifiedName, globSimpleName, false, false); } } } @@ -276,7 +295,7 @@ private List mkIterable(String fieldGlobPattern, String[] fieldGlobPatte @Override public String toString() { - if (!computedOnce.hasBeenComputed()) { + if (!computedValues) { return "notComputed"; } return String.join("\n", flattenedFieldsForGlobSearching); diff --git a/src/main/java/graphql/schema/DelegatingDataFetchingEnvironment.java b/src/main/java/graphql/schema/DelegatingDataFetchingEnvironment.java index 41d6795556..b39d8a40b0 100644 --- a/src/main/java/graphql/schema/DelegatingDataFetchingEnvironment.java +++ b/src/main/java/graphql/schema/DelegatingDataFetchingEnvironment.java @@ -12,6 +12,8 @@ import graphql.language.OperationDefinition; import org.dataloader.DataLoader; import org.dataloader.DataLoaderRegistry; +import org.jspecify.annotations.NonNull; +import org.jspecify.annotations.Nullable; import java.util.List; import java.util.Locale; @@ -70,12 +72,12 @@ public T getContext() { } @Override - public GraphQLContext getGraphQlContext() { + public @NonNull GraphQLContext getGraphQlContext() { return delegateEnvironment.getGraphQlContext(); } @Override - public T getLocalContext() { + public @Nullable T getLocalContext() { return delegateEnvironment.getLocalContext(); } @@ -146,7 +148,7 @@ public QueryDirectives getQueryDirectives() { } @Override - public DataLoader getDataLoader(String dataLoaderName) { + public @Nullable DataLoader getDataLoader(String dataLoaderName) { return delegateEnvironment.getDataLoader(dataLoaderName); } diff --git a/src/main/java/graphql/schema/GraphQLAppliedDirectiveArgument.java b/src/main/java/graphql/schema/GraphQLAppliedDirectiveArgument.java index 6f19bbd126..4446894ec9 100644 --- a/src/main/java/graphql/schema/GraphQLAppliedDirectiveArgument.java +++ b/src/main/java/graphql/schema/GraphQLAppliedDirectiveArgument.java @@ -8,8 +8,8 @@ import graphql.language.Value; import graphql.util.TraversalControl; import graphql.util.TraverserContext; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; +import org.jspecify.annotations.NonNull; +import org.jspecify.annotations.Nullable; import java.util.ArrayList; import java.util.List; @@ -70,7 +70,7 @@ public boolean hasSetValue() { /** * @return an input value with state for an applied directive argument */ - public @NotNull InputValueWithState getArgumentValue() { + public @NonNull InputValueWithState getArgumentValue() { return value; } @@ -218,7 +218,7 @@ public Builder definition(Argument definition) { * * @return this builder */ - public Builder valueLiteral(@NotNull Value value) { + public Builder valueLiteral(@NonNull Value value) { this.value = InputValueWithState.newLiteralValue(value); return this; } @@ -233,7 +233,7 @@ public Builder valueProgrammatic(@Nullable Object value) { return this; } - public Builder inputValueWithState(@NotNull InputValueWithState value) { + public Builder inputValueWithState(@NonNull InputValueWithState value) { this.value = Assert.assertNotNull(value); return this; } diff --git a/src/main/java/graphql/schema/GraphQLArgument.java b/src/main/java/graphql/schema/GraphQLArgument.java index 5f52f294cb..55d22dcff2 100644 --- a/src/main/java/graphql/schema/GraphQLArgument.java +++ b/src/main/java/graphql/schema/GraphQLArgument.java @@ -8,8 +8,8 @@ import graphql.language.Value; import graphql.util.TraversalControl; import graphql.util.TraverserContext; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; +import org.jspecify.annotations.NonNull; +import org.jspecify.annotations.Nullable; import java.util.ArrayList; import java.util.List; @@ -104,7 +104,7 @@ public GraphQLInputType getType() { * * @return a {@link InputValueWithState} that represents the arguments default value */ - public @NotNull InputValueWithState getArgumentDefaultValue() { + public @NonNull InputValueWithState getArgumentDefaultValue() { return defaultValue; } @@ -125,7 +125,7 @@ public boolean hasSetValue() { * @deprecated use {@link GraphQLAppliedDirectiveArgument} instead */ @Deprecated(since = "2022-02-24") - public @NotNull InputValueWithState getArgumentValue() { + public @NonNull InputValueWithState getArgumentValue() { return value; } @@ -382,7 +382,7 @@ public Builder defaultValue(Object defaultValue) { * * @return this builder */ - public Builder defaultValueLiteral(@NotNull Value defaultValue) { + public Builder defaultValueLiteral(@NonNull Value defaultValue) { this.defaultValue = InputValueWithState.newLiteralValue(defaultValue); return this; } @@ -432,7 +432,7 @@ public Builder value(@Nullable Object value) { * @deprecated use {@link GraphQLAppliedDirectiveArgument} methods instead */ @Deprecated(since = "2022-02-24") - public Builder valueLiteral(@NotNull Value value) { + public Builder valueLiteral(@NonNull Value value) { this.value = InputValueWithState.newLiteralValue(value); return this; } diff --git a/src/main/java/graphql/schema/GraphQLCodeRegistry.java b/src/main/java/graphql/schema/GraphQLCodeRegistry.java index 768d13897e..26574b819c 100644 --- a/src/main/java/graphql/schema/GraphQLCodeRegistry.java +++ b/src/main/java/graphql/schema/GraphQLCodeRegistry.java @@ -84,6 +84,7 @@ public boolean hasDataFetcher(FieldCoordinates coordinates) { return hasDataFetcherImpl(coordinates, dataFetcherMap, systemDataFetcherMap); } + @SuppressWarnings("deprecation") private static DataFetcher getDataFetcherImpl(FieldCoordinates coordinates, GraphQLFieldDefinition fieldDefinition, Map> dataFetcherMap, Map> systemDataFetcherMap, DataFetcherFactory defaultDataFetcherFactory) { assertNotNull(coordinates); assertNotNull(fieldDefinition); @@ -95,9 +96,15 @@ private static DataFetcher getDataFetcherImpl(FieldCoordinates coordinates, G dataFetcherFactory = defaultDataFetcherFactory; } } - return dataFetcherFactory.get(newDataFetchingFactoryEnvironment() - .fieldDefinition(fieldDefinition) - .build()); + // call direct from the field - cheaper to not make a new environment object + DataFetcher dataFetcher = dataFetcherFactory.get(fieldDefinition); + if (dataFetcher == null) { + DataFetcherFactoryEnvironment factoryEnvironment = newDataFetchingFactoryEnvironment() + .fieldDefinition(fieldDefinition) + .build(); + dataFetcher = dataFetcherFactory.get(factoryEnvironment); + } + return dataFetcher; } private static boolean hasDataFetcherImpl(FieldCoordinates coords, Map> dataFetcherMap, Map> systemDataFetcherMap) { @@ -149,7 +156,7 @@ private static TypeResolver getTypeResolverForUnion(GraphQLUnionType parentType, if (typeResolver == null) { typeResolver = parentType.getTypeResolver(); } - return assertNotNull(typeResolver, "There must be a type resolver for union %s",parentType.getName()); + return assertNotNull(typeResolver, "There must be a type resolver for union %s", parentType.getName()); } /** @@ -189,7 +196,7 @@ public static class Builder { private final Map> systemDataFetcherMap = new LinkedHashMap<>(); private final Map typeResolverMap = new HashMap<>(); private GraphqlFieldVisibility fieldVisibility = DEFAULT_FIELD_VISIBILITY; - private DataFetcherFactory defaultDataFetcherFactory = env -> PropertyDataFetcher.fetching(env.getFieldDefinition().getName()); + private DataFetcherFactory defaultDataFetcherFactory = SingletonPropertyDataFetcher.singletonFactory(); private boolean changed = false; private Builder() { diff --git a/src/main/java/graphql/schema/GraphQLEnumType.java b/src/main/java/graphql/schema/GraphQLEnumType.java index 78d08fa900..856907315d 100644 --- a/src/main/java/graphql/schema/GraphQLEnumType.java +++ b/src/main/java/graphql/schema/GraphQLEnumType.java @@ -13,7 +13,7 @@ import graphql.util.FpKit; import graphql.util.TraversalControl; import graphql.util.TraverserContext; -import org.jetbrains.annotations.NotNull; +import org.jspecify.annotations.NonNull; import java.util.ArrayList; import java.util.LinkedHashMap; @@ -150,7 +150,7 @@ private ImmutableMap buildMap(List assertShouldNeverHappen("Duplicated definition for field '%s' in type '%s'", fld1.getName(), this.name))); } - private Object getValueByName(@NotNull Object value, GraphQLContext graphQLContext, Locale locale) { + private Object getValueByName(@NonNull Object value, GraphQLContext graphQLContext, Locale locale) { GraphQLEnumValueDefinition enumValueDefinition = valueDefinitionMap.get(value.toString()); if (enumValueDefinition != null) { return enumValueDefinition.getValue(); diff --git a/src/main/java/graphql/schema/GraphQLInputObjectField.java b/src/main/java/graphql/schema/GraphQLInputObjectField.java index 60e680fb30..14ce1cf591 100644 --- a/src/main/java/graphql/schema/GraphQLInputObjectField.java +++ b/src/main/java/graphql/schema/GraphQLInputObjectField.java @@ -8,7 +8,7 @@ import graphql.language.Value; import graphql.util.TraversalControl; import graphql.util.TraverserContext; -import org.jetbrains.annotations.NotNull; +import org.jspecify.annotations.NonNull; import java.util.ArrayList; import java.util.List; @@ -87,7 +87,7 @@ public GraphQLInputType getType() { * * @return a input value with captured state */ - public @NotNull InputValueWithState getInputFieldDefaultValue() { + public @NonNull InputValueWithState getInputFieldDefaultValue() { return defaultValue; } diff --git a/src/main/java/graphql/schema/GraphQLInputObjectType.java b/src/main/java/graphql/schema/GraphQLInputObjectType.java index 9929f93493..e10eddadb7 100644 --- a/src/main/java/graphql/schema/GraphQLInputObjectType.java +++ b/src/main/java/graphql/schema/GraphQLInputObjectType.java @@ -1,5 +1,6 @@ package graphql.schema; +import com.google.common.collect.ImmutableCollection; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import graphql.Directives; @@ -152,7 +153,8 @@ public GraphQLInputObjectField getFieldDefinition(String name) { @Override public List getFieldDefinitions() { - return ImmutableList.copyOf(fieldMap.values()); + ImmutableCollection values = fieldMap.values(); + return values instanceof ImmutableList ? (ImmutableList) values : ImmutableList.copyOf(values); } public InputObjectTypeDefinition getDefinition() { diff --git a/src/main/java/graphql/schema/GraphQLNamedSchemaElement.java b/src/main/java/graphql/schema/GraphQLNamedSchemaElement.java index 4c0801b078..704bc99623 100644 --- a/src/main/java/graphql/schema/GraphQLNamedSchemaElement.java +++ b/src/main/java/graphql/schema/GraphQLNamedSchemaElement.java @@ -2,8 +2,8 @@ import graphql.PublicApi; import graphql.language.Node; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; +import org.jspecify.annotations.NonNull; +import org.jspecify.annotations.Nullable; /** * A Schema element which has a name and also a description and AST Node which it is based on. @@ -14,7 +14,7 @@ public interface GraphQLNamedSchemaElement extends GraphQLSchemaElement { /** * @return the name of this element. This cant be null */ - @NotNull + @NonNull String getName(); /** diff --git a/src/main/java/graphql/schema/GraphQLSchema.java b/src/main/java/graphql/schema/GraphQLSchema.java index a24928869c..5b480810c9 100644 --- a/src/main/java/graphql/schema/GraphQLSchema.java +++ b/src/main/java/graphql/schema/GraphQLSchema.java @@ -18,8 +18,8 @@ import graphql.schema.validation.InvalidSchemaException; import graphql.schema.validation.SchemaValidationError; import graphql.schema.validation.SchemaValidator; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; +import org.jspecify.annotations.NonNull; +import org.jspecify.annotations.Nullable; import java.util.ArrayList; import java.util.Collection; @@ -230,7 +230,7 @@ public Set getAdditionalTypes() { * * @return the type */ - public @Nullable GraphQLType getType(@NotNull String typeName) { + public @Nullable GraphQLType getType(@NonNull String typeName) { return typeMap.get(typeName); } @@ -847,16 +847,11 @@ private GraphQLSchema buildImpl() { // schemas built via the schema generator have the deprecated directive BUT we want it present for hand built // schemas - it's inherently part of the spec! - if (additionalDirectives.stream().noneMatch(d -> d.getName().equals(Directives.DeprecatedDirective.getName()))) { - additionalDirectives.add(Directives.DeprecatedDirective); - } - - if (additionalDirectives.stream().noneMatch(d -> d.getName().equals(Directives.SpecifiedByDirective.getName()))) { - additionalDirectives.add(Directives.SpecifiedByDirective); - } - if (additionalDirectives.stream().noneMatch(d -> d.getName().equals(Directives.OneOfDirective.getName()))) { - additionalDirectives.add(Directives.OneOfDirective); - } + addBuiltInDirective(Directives.DeprecatedDirective, additionalDirectives); + addBuiltInDirective(Directives.SpecifiedByDirective, additionalDirectives); + addBuiltInDirective(Directives.OneOfDirective, additionalDirectives); + addBuiltInDirective(Directives.DeferDirective, additionalDirectives); + addBuiltInDirective(Directives.ExperimentalDisableErrorPropagationDirective, additionalDirectives); // quick build - no traversing final GraphQLSchema partiallyBuiltSchema = new GraphQLSchema(this); @@ -879,6 +874,12 @@ private GraphQLSchema buildImpl() { return validateSchema(finalSchema); } + private void addBuiltInDirective(GraphQLDirective qlDirective, Set additionalDirectives1) { + if (additionalDirectives1.stream().noneMatch(d -> d.getName().equals(qlDirective.getName()))) { + additionalDirectives1.add(qlDirective); + } + } + private GraphQLSchema validateSchema(GraphQLSchema graphQLSchema) { Collection errors = new SchemaValidator().validateSchema(graphQLSchema); if (!errors.isEmpty()) { diff --git a/src/main/java/graphql/schema/GraphQLUnionType.java b/src/main/java/graphql/schema/GraphQLUnionType.java index 9af647c6c4..6910084afd 100644 --- a/src/main/java/graphql/schema/GraphQLUnionType.java +++ b/src/main/java/graphql/schema/GraphQLUnionType.java @@ -96,7 +96,12 @@ public List getTypes() { * @return true if the object type is a member of this union type. */ public boolean isPossibleType(GraphQLObjectType graphQLObjectType) { - return getTypes().stream().anyMatch(nt -> nt.getName().equals(graphQLObjectType.getName())); + for (GraphQLNamedOutputType type : getTypes()) { + if (type.getName().equals(graphQLObjectType.getName())) { + return true; + } + } + return false; } // to be removed in a future version when all code is in the code registry diff --git a/src/main/java/graphql/schema/GraphqlDirectivesContainerTypeBuilder.java b/src/main/java/graphql/schema/GraphqlDirectivesContainerTypeBuilder.java index b9db03ebb0..34187889fb 100644 --- a/src/main/java/graphql/schema/GraphqlDirectivesContainerTypeBuilder.java +++ b/src/main/java/graphql/schema/GraphqlDirectivesContainerTypeBuilder.java @@ -7,14 +7,12 @@ import static graphql.Assert.assertNotNull; -@SuppressWarnings("unchecked") @Internal public abstract class GraphqlDirectivesContainerTypeBuilder, BASE extends GraphqlTypeBuilder> extends GraphqlTypeBuilder { protected final List appliedDirectives = new ArrayList<>(); protected final List directives = new ArrayList<>(); - public B replaceAppliedDirectives(List directives) { assertNotNull(directives, () -> "directive can't be null"); this.appliedDirectives.clear(); @@ -22,26 +20,39 @@ public B replaceAppliedDirectives(List directives) { return (B) this; } + /** + * @param directives the variable args of directives + * + * @return this builder + */ public B withAppliedDirectives(GraphQLAppliedDirective... directives) { assertNotNull(directives, () -> "directives can't be null"); - this.appliedDirectives.clear(); for (GraphQLAppliedDirective directive : directives) { withAppliedDirective(directive); } return (B) this; } + /** + * @param directive the directive to add + * + * @return this builder + */ public B withAppliedDirective(GraphQLAppliedDirective directive) { assertNotNull(directive, () -> "directive can't be null"); this.appliedDirectives.add(directive); return (B) this; } + /** + * @param builder the directive builder + * + * @return this builder + */ public B withAppliedDirective(GraphQLAppliedDirective.Builder builder) { - return withAppliedDirectives(builder.build()); + return withAppliedDirective(builder.build()); } - /** * @param directives the list of directives * @@ -67,7 +78,6 @@ public B replaceDirectives(List directives) { @Deprecated(since = "2022-02-24") public B withDirectives(GraphQLDirective... directives) { assertNotNull(directives, () -> "directives can't be null"); - this.directives.clear(); for (GraphQLDirective directive : directives) { withDirective(directive); } diff --git a/src/main/java/graphql/schema/InputValueWithState.java b/src/main/java/graphql/schema/InputValueWithState.java index 33ef45d062..1d489a117e 100644 --- a/src/main/java/graphql/schema/InputValueWithState.java +++ b/src/main/java/graphql/schema/InputValueWithState.java @@ -2,8 +2,8 @@ import graphql.PublicApi; import graphql.language.Value; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; +import org.jspecify.annotations.NonNull; +import org.jspecify.annotations.Nullable; import static graphql.Assert.assertNotNull; @@ -44,7 +44,7 @@ private InputValueWithState(State state, Object value) { public static final InputValueWithState NOT_SET = new InputValueWithState(State.NOT_SET, null); - public static InputValueWithState newLiteralValue(@NotNull Value value) { + public static InputValueWithState newLiteralValue(@NonNull Value value) { assertNotNull(value, () -> "value literal can't be null"); return new InputValueWithState(State.LITERAL, value); } @@ -88,4 +88,4 @@ public String toString() { ", value=" + value + '}'; } -} \ No newline at end of file +} diff --git a/src/main/java/graphql/schema/PropertyDataFetcher.java b/src/main/java/graphql/schema/PropertyDataFetcher.java index 77cfdcf062..38382f4da9 100644 --- a/src/main/java/graphql/schema/PropertyDataFetcher.java +++ b/src/main/java/graphql/schema/PropertyDataFetcher.java @@ -4,6 +4,9 @@ import graphql.Assert; import graphql.PublicApi; +import java.lang.invoke.MethodHandle; +import java.lang.invoke.MethodHandles; +import java.lang.invoke.MethodType; import java.util.function.Function; import java.util.function.Supplier; @@ -17,11 +20,12 @@ *
  • If the source is null, return null
  • *
  • If the source is a Map, return map.get(propertyName)
  • *
  • If a function is provided, it is used
  • + *
  • Find a public JavaBean getter method named `getPropertyName()` or `isPropertyName()` using {@link java.lang.invoke.LambdaMetafactory#metafactory(MethodHandles.Lookup, String, MethodType, MethodType, MethodHandle, MethodType)}
  • + *
  • Find a public Record like method named `propertyName()`
  • *
  • Find a public JavaBean getter method named `getPropertyName()` or `isPropertyName()`
  • *
  • Find any getter method named `getPropertyName()` or `isPropertyName()` and call method.setAccessible(true)
  • *
  • Find a public field named `propertyName`
  • *
  • Find any field named `propertyName` and call field.setAccessible(true)
  • - *
  • Find a public Record like method named `propertyName()`
  • *
  • If this cant find anything, then null is returned
  • * *

    diff --git a/src/main/java/graphql/schema/PropertyFetchingImpl.java b/src/main/java/graphql/schema/PropertyFetchingImpl.java index 6126159cf0..c17ba706b6 100644 --- a/src/main/java/graphql/schema/PropertyFetchingImpl.java +++ b/src/main/java/graphql/schema/PropertyFetchingImpl.java @@ -3,10 +3,7 @@ import graphql.GraphQLException; import graphql.Internal; import graphql.schema.fetching.LambdaFetchingSupport; -import graphql.util.EscapeUtil; import graphql.util.StringKit; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; @@ -14,7 +11,6 @@ import java.lang.reflect.Modifier; import java.util.Arrays; import java.util.Comparator; -import java.util.Locale; import java.util.Map; import java.util.Objects; import java.util.Optional; diff --git a/src/main/java/graphql/schema/SingletonPropertyDataFetcher.java b/src/main/java/graphql/schema/SingletonPropertyDataFetcher.java new file mode 100644 index 0000000000..8455963f0f --- /dev/null +++ b/src/main/java/graphql/schema/SingletonPropertyDataFetcher.java @@ -0,0 +1,71 @@ +package graphql.schema; + +import java.util.function.Supplier; + +/** + * The {@link SingletonPropertyDataFetcher} is much like the {@link PropertyDataFetcher} except + * that it is designed to only ever fetch properties via the name of the field passed in. + *

    + * This uses the same code as {@link PropertyDataFetcher} and hence is also controlled + * by static methods such as {@link PropertyDataFetcher#setUseNegativeCache(boolean)} + * + * @param for two + */ +public class SingletonPropertyDataFetcher implements LightDataFetcher { + + private static final SingletonPropertyDataFetcher SINGLETON_FETCHER = new SingletonPropertyDataFetcher<>(); + + private static final DataFetcherFactory SINGLETON_FETCHER_FACTORY = new DataFetcherFactory() { + @SuppressWarnings("deprecation") + @Override + public DataFetcher get(DataFetcherFactoryEnvironment environment) { + return SINGLETON_FETCHER; + } + + @Override + public DataFetcher get(GraphQLFieldDefinition fieldDefinition) { + return SINGLETON_FETCHER; + } + }; + + /** + * This returns the same singleton {@link LightDataFetcher} that fetches property values + * based on the name of the field that iis passed into it. + * + * @return a singleton property data fetcher + */ + public static LightDataFetcher singleton() { + return SINGLETON_FETCHER; + } + + /** + * This returns the same singleton {@link DataFetcherFactory} that returns the value of {@link #singleton()} + * + * @return a singleton data fetcher factory + */ + public static DataFetcherFactory singletonFactory() { + return SINGLETON_FETCHER_FACTORY; + } + + private SingletonPropertyDataFetcher() { + } + + @Override + public T get(GraphQLFieldDefinition fieldDefinition, Object sourceObject, Supplier environmentSupplier) throws Exception { + return fetchImpl(fieldDefinition, sourceObject, environmentSupplier); + } + + @Override + public T get(DataFetchingEnvironment environment) throws Exception { + return fetchImpl(environment.getFieldDefinition(), environment.getSource(), () -> environment); + } + + private T fetchImpl(GraphQLFieldDefinition fieldDefinition, Object source, Supplier environmentSupplier) { + if (source == null) { + return null; + } + // this is the same code that PropertyDataFetcher uses and hence unit tests for it include this one + //noinspection unchecked + return (T) PropertyDataFetcherHelper.getPropertyValue(fieldDefinition.getName(), source, fieldDefinition.getType(), environmentSupplier); + } +} diff --git a/src/main/java/graphql/schema/diffing/DiffImpl.java b/src/main/java/graphql/schema/diffing/DiffImpl.java index efff71cdd0..f24eb934a6 100644 --- a/src/main/java/graphql/schema/diffing/DiffImpl.java +++ b/src/main/java/graphql/schema/diffing/DiffImpl.java @@ -226,6 +226,10 @@ private void addChildToQueue(int fixedEditorialCost, Mapping newMapping = parentPartialMapping.extendMapping(v_i, availableTargetVertices.get(assignments[0])); + if (costMatrixSum >= Integer.MAX_VALUE && optimalEdit.mapping == null) { + throw new RuntimeException("bug: could not find any allowed mapping"); + } + if (lowerBoundForPartialMapping >= optimalEdit.ged) { return; } @@ -440,41 +444,9 @@ private double calcLowerBoundMappingCost(Vertex v, boolean equalNodes = v.getType().equals(u.getType()) && v.getProperties().equals(u.getProperties()); - Collection adjacentEdgesV = completeSourceGraph.getAdjacentEdgesNonCopy(v); - Multiset multisetLabelsV = HashMultiset.create(); - - for (Edge edge : adjacentEdgesV) { - // test if this is an inner edge (meaning it not part of the subgraph induced by the partial mapping) - // we know that v is not part of the mapped vertices, therefore we only need to test the "to" vertex - if (!partialMapping.containsSource(edge.getTo())) { - multisetLabelsV.add(edge.getLabel()); - } - } - - Collection adjacentEdgesU = completeTargetGraph.getAdjacentEdgesNonCopy(u); - Multiset multisetLabelsU = HashMultiset.create(); - for (Edge edge : adjacentEdgesU) { - // test if this is an inner edge (meaning it not part of the subgraph induced by the partial mapping) - // we know that u is not part of the mapped vertices, therefore we only need to test the "to" vertex - if (!partialMapping.containsTarget(edge.getTo())) { - multisetLabelsU.add(edge.getLabel()); - } - } - - int anchoredVerticesCost = calcAnchoredVerticesCost(v, u, partialMapping); - - Multiset intersection = Multisets.intersection(multisetLabelsV, multisetLabelsU); - int multiSetEditDistance = Math.max(multisetLabelsV.size(), multisetLabelsU.size()) - intersection.size(); - - double result = (equalNodes ? 0 : 1) + multiSetEditDistance + anchoredVerticesCost; - return result; - } - - - private int calcAnchoredVerticesCost(Vertex v, - Vertex u, - Mapping partialMapping) { int anchoredVerticesCost = 0; + Multiset multisetInnerEdgeLabelsV = HashMultiset.create(); + Multiset multisetInnerEdgeLabelsU = HashMultiset.create(); Collection adjacentEdgesV = completeSourceGraph.getAdjacentEdgesNonCopy(v); Collection adjacentEdgesU = completeTargetGraph.getAdjacentEdgesNonCopy(u); @@ -485,55 +457,60 @@ private int calcAnchoredVerticesCost(Vertex v, Set matchedTargetEdges = new LinkedHashSet<>(); Set matchedTargetEdgesInverse = new LinkedHashSet<>(); - outer: for (Edge edgeV : adjacentEdgesV) { - // we are only interested in edges from anchored vertices - if (!partialMapping.containsSource(edgeV.getTo())) { + + Vertex targetTo = partialMapping.getTarget(edgeV.getTo()); + if (targetTo == null) { + // meaning it is an inner edge(not part of the subgraph induced by the partial mapping) + multisetInnerEdgeLabelsV.add(edgeV.getLabel()); continue; } - for (Edge edgeU : adjacentEdgesU) { - // looking for an adjacent edge from u matching it - if (partialMapping.getTarget(edgeV.getTo()) == edgeU.getTo()) { - matchedTargetEdges.add(edgeU); - // found two adjacent edges, comparing the labels - if (!Objects.equals(edgeV.getLabel(), edgeU.getLabel())) { - anchoredVerticesCost++; - } - continue outer; + /* question is if the edge from v is mapped onto an edge from u + (also edge are not mapped directly, but the vertices are) + and if the adjacent edge is mapped onto an adjacent edge, + we need to check the labels of the edges + */ + Edge matchedTargetEdge = completeTargetGraph.getEdge(u, targetTo); + if (matchedTargetEdge != null) { + matchedTargetEdges.add(matchedTargetEdge); + if (!Objects.equals(edgeV.getLabel(), matchedTargetEdge.getLabel())) { + anchoredVerticesCost++; } + } else { +// // no matching adjacent edge from u found means there is no +// // edge from edgeV.getTo() to mapped(edgeV.getTo()) +// // and we need to increase the costs + anchoredVerticesCost++; } - // no matching adjacent edge from u found means there is no - // edge from edgeV.getTo() to mapped(edgeV.getTo()) - // and we need to increase the costs - anchoredVerticesCost++; } - outer: for (Edge edgeV : adjacentEdgesInverseV) { + + Vertex targetFrom = partialMapping.getTarget(edgeV.getFrom()); // we are only interested in edges from anchored vertices - if (!partialMapping.containsSource(edgeV.getFrom())) { + if (targetFrom == null) { continue; } - for (Edge edgeU : adjacentEdgesInverseU) { - if (partialMapping.getTarget(edgeV.getFrom()) == edgeU.getFrom()) { - matchedTargetEdgesInverse.add(edgeU); - if (!Objects.equals(edgeV.getLabel(), edgeU.getLabel())) { - anchoredVerticesCost++; - } - continue outer; + Edge matachedTargetEdge = completeTargetGraph.getEdge(targetFrom, u); + if (matachedTargetEdge != null) { + matchedTargetEdgesInverse.add(matachedTargetEdge); + if (!Objects.equals(edgeV.getLabel(), matachedTargetEdge.getLabel())) { + anchoredVerticesCost++; } + } else { + anchoredVerticesCost++; } - anchoredVerticesCost++; - } - /** - * what is missing now is all edges from u (and inverse), which have not been matched. - */ for (Edge edgeU : adjacentEdgesU) { - // we are only interested in edges from anchored vertices - if (!partialMapping.containsTarget(edgeU.getTo()) || matchedTargetEdges.contains(edgeU)) { + // test if this is an inner edge (meaning it not part of the subgraph induced by the partial mapping) + // we know that u is not part of the mapped vertices, therefore we only need to test the "to" vertex + if (!partialMapping.containsTarget(edgeU.getTo())) { + multisetInnerEdgeLabelsU.add(edgeU.getLabel()); + continue; + } + if (matchedTargetEdges.contains(edgeU)) { continue; } anchoredVerticesCost++; @@ -547,7 +524,12 @@ private int calcAnchoredVerticesCost(Vertex v, anchoredVerticesCost++; } - return anchoredVerticesCost; + + Multiset intersectionInnerEdgeLabels = Multisets.intersection(multisetInnerEdgeLabelsV, multisetInnerEdgeLabelsU); + int multiSetEditDistanceForInnerEdges = Math.max(multisetInnerEdgeLabelsV.size(), multisetInnerEdgeLabelsU.size()) - intersectionInnerEdgeLabels.size(); + + int result = (equalNodes ? 0 : 1) + multiSetEditDistanceForInnerEdges + anchoredVerticesCost; + return result; } @@ -574,5 +556,4 @@ private double calcLowerBoundMappingCostForIsolated(Vertex vertex, return 1 + adjacentEdges.size() + anchoredInverseEdges; } - } diff --git a/src/main/java/graphql/schema/diffing/SchemaDiffing.java b/src/main/java/graphql/schema/diffing/SchemaDiffing.java index de047bf1fd..b12f8aec5a 100644 --- a/src/main/java/graphql/schema/diffing/SchemaDiffing.java +++ b/src/main/java/graphql/schema/diffing/SchemaDiffing.java @@ -96,15 +96,17 @@ private DiffImpl.OptimalEdit diffImpl(SchemaGraph sourceGraph, SchemaGraph targe Multimaps.invertFrom(possibleMappings.possibleMappings, invertedPossibleOnes); possibleMappings.possibleMappings = invertedPossibleOnes; + sortVertices(nonMappedTarget, targetGraph, possibleMappings); + List sourceVertices = new ArrayList<>(); sourceVertices.addAll(possibleMappings.fixedOneToOneSources); sourceVertices.addAll(nonMappedSource); + List targetVertices = new ArrayList<>(); targetVertices.addAll(possibleMappings.fixedOneToOneTargets); targetVertices.addAll(nonMappedTarget); - sortVertices(nonMappedTarget, targetGraph, possibleMappings); DiffImpl diffImpl = new DiffImpl(possibleMappingsCalculator, targetGraph, sourceGraph, possibleMappings, runningCheck); DiffImpl.OptimalEdit optimalEdit = diffImpl.diffImpl(startMappingInverted, targetVertices, sourceVertices, algoIterationCount); diff --git a/src/main/java/graphql/schema/diffing/SchemaGraph.java b/src/main/java/graphql/schema/diffing/SchemaGraph.java index 02b07ca6b9..a89c35cdbe 100644 --- a/src/main/java/graphql/schema/diffing/SchemaGraph.java +++ b/src/main/java/graphql/schema/diffing/SchemaGraph.java @@ -7,7 +7,7 @@ import com.google.common.collect.Multimap; import com.google.common.collect.Table; import graphql.ExperimentalApi; -import org.jetbrains.annotations.Nullable; +import org.jspecify.annotations.Nullable; import java.util.ArrayList; import java.util.Collection; @@ -18,7 +18,6 @@ import java.util.function.Predicate; import static graphql.Assert.assertTrue; -import static java.lang.String.format; @ExperimentalApi public class SchemaGraph { diff --git a/src/main/java/graphql/schema/fetching/LambdaFetchingSupport.java b/src/main/java/graphql/schema/fetching/LambdaFetchingSupport.java index 51ced4aba2..5ff38f5756 100644 --- a/src/main/java/graphql/schema/fetching/LambdaFetchingSupport.java +++ b/src/main/java/graphql/schema/fetching/LambdaFetchingSupport.java @@ -2,6 +2,7 @@ import graphql.Internal; import graphql.VisibleForTesting; +import graphql.util.FpKit; import java.lang.invoke.CallSite; import java.lang.invoke.LambdaMetafactory; @@ -17,8 +18,6 @@ import java.util.function.Function; import java.util.function.Predicate; -import static java.util.stream.Collectors.toList; - @Internal public class LambdaFetchingSupport { @@ -69,9 +68,12 @@ private static Method getCandidateMethod(Class sourceClass, String propertyNa Predicate getterPredicate = method -> isGetterNamed(method) && propertyName.equals(mkPropertyNameGetter(method)); List allGetterMethods = findMethodsForProperty(sourceClass, getterPredicate); - List pojoGetterMethods = allGetterMethods.stream() - .filter(LambdaFetchingSupport::isPossiblePojoMethod) - .collect(toList()); + List pojoGetterMethods = FpKit.arrayListSizedTo(allGetterMethods); + for (Method allGetterMethod : allGetterMethods) { + if (isPossiblePojoMethod(allGetterMethod)) { + pojoGetterMethods.add(allGetterMethod); + } + } if (!pojoGetterMethods.isEmpty()) { Method method = pojoGetterMethods.get(0); if (isBooleanGetter(method)) { @@ -97,7 +99,13 @@ private static Method checkForSingleParameterPeer(Method candidateMethod, List methods) { // we prefer isX() over getX() if both happen to be present - Optional isMethod = methods.stream().filter(method -> method.getName().startsWith("is")).findFirst(); + Optional isMethod = Optional.empty(); + for (Method method : methods) { + if (method.getName().startsWith("is")) { + isMethod = Optional.of(method); + break; + } + } return isMethod.orElse(methods.get(0)); } @@ -121,9 +129,9 @@ private static List findMethodsForProperty(Class sourceClass, Predica currentClass = currentClass.getSuperclass(); } - return methods.stream() - .sorted(Comparator.comparing(Method::getName)) - .collect(toList()); + List list = new ArrayList<>(methods); + list.sort(Comparator.comparing(Method::getName)); + return list; } private static boolean isPossiblePojoMethod(Method method) { diff --git a/src/main/java/graphql/schema/idl/ArgValueOfAllowedTypeChecker.java b/src/main/java/graphql/schema/idl/ArgValueOfAllowedTypeChecker.java index 9dcd16b768..e00a40812f 100644 --- a/src/main/java/graphql/schema/idl/ArgValueOfAllowedTypeChecker.java +++ b/src/main/java/graphql/schema/idl/ArgValueOfAllowedTypeChecker.java @@ -31,6 +31,7 @@ import graphql.schema.GraphQLScalarType; import graphql.schema.idl.errors.DirectiveIllegalArgumentTypeError; +import java.util.Collections; import java.util.List; import java.util.Locale; import java.util.Map; @@ -41,7 +42,6 @@ import static graphql.collect.ImmutableKit.emptyList; import static graphql.schema.idl.errors.DirectiveIllegalArgumentTypeError.DUPLICATED_KEYS_MESSAGE; import static graphql.schema.idl.errors.DirectiveIllegalArgumentTypeError.EXPECTED_ENUM_MESSAGE; -import static graphql.schema.idl.errors.DirectiveIllegalArgumentTypeError.EXPECTED_LIST_MESSAGE; import static graphql.schema.idl.errors.DirectiveIllegalArgumentTypeError.EXPECTED_NON_NULL_MESSAGE; import static graphql.schema.idl.errors.DirectiveIllegalArgumentTypeError.EXPECTED_OBJECT_MESSAGE; import static graphql.schema.idl.errors.DirectiveIllegalArgumentTypeError.MISSING_REQUIRED_FIELD_MESSAGE; @@ -259,25 +259,24 @@ private void checkArgValueMatchesAllowedNonNullType(List errors, V } private void checkArgValueMatchesAllowedListType(List errors, Value instanceValue, ListType allowedArgType) { - if (instanceValue instanceof NullValue) { - return; + // From the spec, on input coercion: + // If the value passed as an input to a list type is not a list and not the null value, + // then the result of input coercion is a list of size one where the single item value + // is the result of input coercion for the list’s item type on the provided value + // (note this may apply recursively for nested lists). + + Value coercedInstanceValue = instanceValue; + if (!(instanceValue instanceof ArrayValue) && !(instanceValue instanceof NullValue)) { + coercedInstanceValue = new ArrayValue(Collections.singletonList(instanceValue)); } - Type unwrappedAllowedType = allowedArgType.getType(); - if (!(instanceValue instanceof ArrayValue)) { - checkArgValueMatchesAllowedType(errors, instanceValue, unwrappedAllowedType); + if (coercedInstanceValue instanceof NullValue) { return; } - ArrayValue arrayValue = ((ArrayValue) instanceValue); - boolean isUnwrappedList = unwrappedAllowedType instanceof ListType; - - // validate each instance value in the list, all instances must match for the list to match + Type unwrappedAllowedType = allowedArgType.getType(); + ArrayValue arrayValue = ((ArrayValue) coercedInstanceValue); arrayValue.getValues().forEach(value -> { - // restrictive check for sub-arrays - if (isUnwrappedList && !(value instanceof ArrayValue)) { - addValidationError(errors, EXPECTED_LIST_MESSAGE, value.getClass().getSimpleName()); - } checkArgValueMatchesAllowedType(errors, value, unwrappedAllowedType); }); } diff --git a/src/main/java/graphql/schema/idl/DirectiveInfo.java b/src/main/java/graphql/schema/idl/DirectiveInfo.java index 428a97aceb..9b8317f97e 100644 --- a/src/main/java/graphql/schema/idl/DirectiveInfo.java +++ b/src/main/java/graphql/schema/idl/DirectiveInfo.java @@ -15,16 +15,6 @@ @PublicApi public class DirectiveInfo { - /** - * A set of directives which provided by graphql specification - */ - public static final Set GRAPHQL_SPECIFICATION_DIRECTIVES = ImmutableSet.of( - Directives.IncludeDirective, - Directives.SkipDirective, - Directives.DeprecatedDirective, - Directives.SpecifiedByDirective, - Directives.OneOfDirective - ); /** * A map from directive name to directive which provided by specification @@ -34,8 +24,16 @@ public class DirectiveInfo { Directives.SkipDirective.getName(), Directives.SkipDirective, Directives.DeprecatedDirective.getName(), Directives.DeprecatedDirective, Directives.SpecifiedByDirective.getName(), Directives.SpecifiedByDirective, - Directives.OneOfDirective.getName(), Directives.OneOfDirective + Directives.OneOfDirective.getName(), Directives.OneOfDirective, + // technically this is NOT yet in spec - but it is added by default by graphql-java so we include it + // we should also do @defer at some future time soon + Directives.DeferDirective.getName(), Directives.DeferDirective, + Directives.ExperimentalDisableErrorPropagationDirective.getName(), Directives.ExperimentalDisableErrorPropagationDirective ); + /** + * A set of directives which provided by graphql specification + */ + public static final Set GRAPHQL_SPECIFICATION_DIRECTIVES =ImmutableSet.copyOf(GRAPHQL_SPECIFICATION_DIRECTIVE_MAP.values()); /** * Returns true if a directive with provided directiveName has been defined in graphql specification diff --git a/src/main/java/graphql/schema/idl/MockedWiringFactory.java b/src/main/java/graphql/schema/idl/MockedWiringFactory.java index 3dc4b1ca2b..fcfca1f474 100644 --- a/src/main/java/graphql/schema/idl/MockedWiringFactory.java +++ b/src/main/java/graphql/schema/idl/MockedWiringFactory.java @@ -8,6 +8,7 @@ import graphql.schema.DataFetcher; import graphql.schema.GraphQLScalarType; import graphql.schema.PropertyDataFetcher; +import graphql.schema.SingletonPropertyDataFetcher; import graphql.schema.TypeResolver; @PublicApi @@ -44,7 +45,7 @@ public boolean providesDataFetcher(FieldWiringEnvironment environment) { @Override public DataFetcher getDataFetcher(FieldWiringEnvironment environment) { - return new PropertyDataFetcher(environment.getFieldDefinition().getName()); + return SingletonPropertyDataFetcher.singleton(); } @Override diff --git a/src/main/java/graphql/schema/idl/RuntimeWiring.java b/src/main/java/graphql/schema/idl/RuntimeWiring.java index 0a95adce08..a01343f225 100644 --- a/src/main/java/graphql/schema/idl/RuntimeWiring.java +++ b/src/main/java/graphql/schema/idl/RuntimeWiring.java @@ -116,10 +116,31 @@ public Map> getDataFetchers() { return dataFetchers; } + /** + * This is deprecated because the name has the wrong plural case. + * + * @param typeName the type for fetch a map of per field data fetchers for + * + * @return a map of field data fetchers for a type + * + * @deprecated See {@link #getDataFetchersForType(String)} + */ + @Deprecated(since = "2024-04-28") public Map getDataFetcherForType(String typeName) { return dataFetchers.computeIfAbsent(typeName, k -> new LinkedHashMap<>()); } + /** + * This returns a map of the data fetchers per field on that named type. + * + * @param typeName the type for fetch a map of per field data fetchers for + * + * @return a map of field data fetchers for a type + */ + public Map getDataFetchersForType(String typeName) { + return dataFetchers.computeIfAbsent(typeName, k -> new LinkedHashMap<>()); + } + public DataFetcher getDefaultDataFetcherForType(String typeName) { return defaultDataFetchers.get(typeName); } @@ -162,7 +183,7 @@ public static class Builder { private final Map registeredDirectiveWiring = new LinkedHashMap<>(); private final List directiveWiring = new ArrayList<>(); private WiringFactory wiringFactory = new NoopWiringFactory(); - private boolean strictMode = false; + private boolean strictMode = true; private GraphqlFieldVisibility fieldVisibility = DEFAULT_FIELD_VISIBILITY; private GraphQLCodeRegistry codeRegistry = GraphQLCodeRegistry.newCodeRegistry().build(); private GraphqlTypeComparatorRegistry comparatorRegistry = GraphqlTypeComparatorRegistry.AS_IS_REGISTRY; @@ -171,11 +192,24 @@ private Builder() { ScalarInfo.GRAPHQL_SPECIFICATION_SCALARS.forEach(this::scalar); } + /** + * This sets strict mode as true or false. If strictMode is true, if things get defined twice, for example, it will throw a {@link StrictModeWiringException}. + * + * @return this builder + */ + public Builder strictMode(boolean strictMode) { + this.strictMode = strictMode; + return this; + } + /** * This puts the builder into strict mode, so if things get defined twice, for example, it will throw a {@link StrictModeWiringException}. * * @return this builder + * + * @deprecated strictMode default value changed to true, use {@link #strictMode(boolean)} instead */ + @Deprecated(since = "2025-03-22", forRemoval = true) public Builder strictMode() { this.strictMode = true; return this; @@ -279,12 +313,25 @@ public Builder type(String typeName, UnaryOperator bu public Builder type(TypeRuntimeWiring typeRuntimeWiring) { String typeName = typeRuntimeWiring.getTypeName(); Map typeDataFetchers = dataFetchers.computeIfAbsent(typeName, k -> new LinkedHashMap<>()); + + Map additionalFieldDataFetchers = typeRuntimeWiring.getFieldDataFetchers(); if (strictMode && !typeDataFetchers.isEmpty()) { - throw new StrictModeWiringException(format("The type %s has already been defined", typeName)); + // Check if the existing type wiring contains overlapping DataFetcher definitions + for (String fieldName : additionalFieldDataFetchers.keySet()) { + if (typeDataFetchers.containsKey(fieldName)) { + throw new StrictModeWiringException(format("The field %s on type %s has already been defined", fieldName, typeName)); + } + } } - typeDataFetchers.putAll(typeRuntimeWiring.getFieldDataFetchers()); + typeDataFetchers.putAll(additionalFieldDataFetchers); - defaultDataFetchers.put(typeName, typeRuntimeWiring.getDefaultDataFetcher()); + DataFetcher defaultDataFetcher = typeRuntimeWiring.getDefaultDataFetcher(); + if (defaultDataFetcher != null) { + if (strictMode && defaultDataFetchers.containsKey(typeName)) { + throw new StrictModeWiringException(format("The type %s already has a default data fetcher defined", typeName)); + } + defaultDataFetchers.put(typeName, defaultDataFetcher); + } TypeResolver typeResolver = typeRuntimeWiring.getTypeResolver(); if (typeResolver != null) { diff --git a/src/main/java/graphql/schema/idl/SchemaDirectiveWiringEnvironment.java b/src/main/java/graphql/schema/idl/SchemaDirectiveWiringEnvironment.java index e888039308..538582ed32 100644 --- a/src/main/java/graphql/schema/idl/SchemaDirectiveWiringEnvironment.java +++ b/src/main/java/graphql/schema/idl/SchemaDirectiveWiringEnvironment.java @@ -126,7 +126,7 @@ public interface SchemaDirectiveWiringEnvironment getBuildContext(); diff --git a/src/main/java/graphql/schema/idl/SchemaGeneratorAppliedDirectiveHelper.java b/src/main/java/graphql/schema/idl/SchemaGeneratorAppliedDirectiveHelper.java index 7a98b46078..e7d94dffdf 100644 --- a/src/main/java/graphql/schema/idl/SchemaGeneratorAppliedDirectiveHelper.java +++ b/src/main/java/graphql/schema/idl/SchemaGeneratorAppliedDirectiveHelper.java @@ -35,7 +35,7 @@ import static java.util.stream.Collectors.toMap; /** - * This contains helper code to build out appliedm directives on schema element + * This contains helper code to build out applied directives on schema element */ @Internal class SchemaGeneratorAppliedDirectiveHelper { diff --git a/src/main/java/graphql/schema/idl/SchemaGeneratorHelper.java b/src/main/java/graphql/schema/idl/SchemaGeneratorHelper.java index aa4878efb4..e658c85d17 100644 --- a/src/main/java/graphql/schema/idl/SchemaGeneratorHelper.java +++ b/src/main/java/graphql/schema/idl/SchemaGeneratorHelper.java @@ -56,7 +56,7 @@ import graphql.schema.GraphQLTypeReference; import graphql.schema.GraphQLUnionType; import graphql.schema.GraphqlTypeComparatorRegistry; -import graphql.schema.PropertyDataFetcher; +import graphql.schema.SingletonPropertyDataFetcher; import graphql.schema.TypeResolver; import graphql.schema.TypeResolverProxy; import graphql.schema.idl.errors.NotAnInputTypeError; @@ -801,23 +801,27 @@ GraphQLFieldDefinition buildField(BuildContext buildCtx, TypeDefinition paren // if they have already wired in a fetcher - then leave it alone FieldCoordinates coordinates = FieldCoordinates.coordinates(parentType.getName(), fieldDefinition.getName()); if (!buildCtx.getCodeRegistry().hasDataFetcher(coordinates)) { - DataFetcherFactory dataFetcherFactory = buildDataFetcherFactory(buildCtx, + Optional> dataFetcherFactory = buildDataFetcherFactory(buildCtx, parentType, fieldDef, fieldType, appliedDirectives.first, appliedDirectives.second); - buildCtx.getCodeRegistry().dataFetcher(coordinates, dataFetcherFactory); + + // if the dataFetcherFactory is empty, then it must have been the code registry default one + // and hence we don't need to make a "map entry" in the code registry since it will be defaulted + // anyway + dataFetcherFactory.ifPresent(fetcherFactory -> buildCtx.getCodeRegistry().dataFetcher(coordinates, fetcherFactory)); } return directivesObserve(buildCtx, fieldDefinition); } - private DataFetcherFactory buildDataFetcherFactory(BuildContext buildCtx, - TypeDefinition parentType, - FieldDefinition fieldDef, - GraphQLOutputType fieldType, - List directives, - List appliedDirectives) { + private Optional> buildDataFetcherFactory(BuildContext buildCtx, + TypeDefinition parentType, + FieldDefinition fieldDef, + GraphQLOutputType fieldType, + List directives, + List appliedDirectives) { String fieldName = fieldDef.getName(); String parentTypeName = parentType.getName(); TypeDefinitionRegistry typeRegistry = buildCtx.getTypeRegistry(); @@ -839,7 +843,7 @@ private DataFetcherFactory buildDataFetcherFactory(BuildContext buildCtx, dataFetcher = wiringFactory.getDataFetcher(wiringEnvironment); assertNotNull(dataFetcher, () -> "The WiringFactory indicated it provides a data fetcher but then returned null"); } else { - dataFetcher = runtimeWiring.getDataFetcherForType(parentTypeName).get(fieldName); + dataFetcher = runtimeWiring.getDataFetchersForType(parentTypeName).get(fieldName); if (dataFetcher == null) { dataFetcher = runtimeWiring.getDefaultDataFetcherForType(parentTypeName); if (dataFetcher == null) { @@ -847,16 +851,18 @@ private DataFetcherFactory buildDataFetcherFactory(BuildContext buildCtx, if (dataFetcher == null) { DataFetcherFactory codeRegistryDFF = codeRegistry.getDefaultDataFetcherFactory(); if (codeRegistryDFF != null) { - return codeRegistryDFF; + // this will use the default of the code registry when its + // asked for at runtime + return Optional.empty(); } - dataFetcher = dataFetcherOfLastResort(wiringEnvironment); + dataFetcher = dataFetcherOfLastResort(); } } } } dataFetcherFactory = DataFetcherFactories.useDataFetcher(dataFetcher); } - return dataFetcherFactory; + return Optional.of(dataFetcherFactory); } GraphQLArgument buildArgument(BuildContext buildCtx, InputValueDefinition valueDefinition) { @@ -1087,9 +1093,8 @@ private Optional getOperationNamed(String name, Map dataFetcherOfLastResort(FieldWiringEnvironment environment) { - String fieldName = environment.getFieldDefinition().getName(); - return new PropertyDataFetcher(fieldName); + private DataFetcher dataFetcherOfLastResort() { + return SingletonPropertyDataFetcher.singleton(); } private List directivesOf(List> typeDefinitions) { diff --git a/src/main/java/graphql/schema/idl/SchemaPrinter.java b/src/main/java/graphql/schema/idl/SchemaPrinter.java index 9ac97f6a2e..cafa142e0c 100644 --- a/src/main/java/graphql/schema/idl/SchemaPrinter.java +++ b/src/main/java/graphql/schema/idl/SchemaPrinter.java @@ -19,6 +19,7 @@ import graphql.language.ObjectTypeDefinition; import graphql.language.ScalarTypeDefinition; import graphql.language.SchemaDefinition; +import graphql.language.SchemaExtensionDefinition; import graphql.language.TypeDefinition; import graphql.language.UnionTypeDefinition; import graphql.schema.DefaultGraphqlTypeComparatorRegistry; @@ -283,7 +284,7 @@ public Options includeDirectiveDefinitions(boolean flag) { /** * This is a Predicate that decides whether a directive definition is printed. * - * @param includeDirectiveDefinition the predicate to decide of a directive defintion is printed + * @param includeDirectiveDefinition the predicate to decide of a directive definition is printed * * @return new instance of options */ @@ -482,7 +483,7 @@ public SchemaPrinter(Options options) { /** * This can print an in memory GraphQL IDL document back to a logical schema definition. - * If you want to turn a Introspection query result into a Document (and then into a printed + * If you want to turn an Introspection query result into a Document (and then into a printed * schema) then use {@link graphql.introspection.IntrospectionResultToSchema#createSchemaDefinition(java.util.Map)} * first to get the {@link graphql.language.Document} and then print that. * @@ -773,6 +774,17 @@ private boolean shouldPrintAsAst(TypeDefinition definition) { return options.isUseAstDefinitions() && definition != null; } + /** + * This will return true if the options say to use the AST and we have an AST element + * + * @param definition the AST schema definition + * + * @return true if we should print using AST nodes + */ + private boolean shouldPrintAsAst(SchemaDefinition definition) { + return options.isUseAstDefinitions() && definition != null; + } + /** * This will print out a runtime graphql schema element using its contained AST type definition. This * must be guarded by a called to {@link #shouldPrintAsAst(TypeDefinition)} @@ -792,6 +804,25 @@ private void printAsAst(PrintWriter out, TypeDefinition definition, List extensions) { + out.printf("%s\n", AstPrinter.printAst(definition)); + if (extensions != null) { + for (SchemaExtensionDefinition extension : extensions) { + out.printf("\n%s\n", AstPrinter.printAst(extension)); + } + } + out.print('\n'); + } + + private static String printAst(InputValueWithState value, GraphQLInputType type) { return AstPrinter.printAst(ValuesResolver.valueToLiteral(value, type, GraphQLContext.getDefault(), Locale.getDefault())); } @@ -803,7 +834,7 @@ private SchemaElementPrinter schemaPrinter() { GraphQLObjectType subscriptionType = schema.getSubscriptionType(); // when serializing a GraphQL schema using the type system language, a - // schema definition should be omitted if only uses the default root type names. + // schema definition should be omitted only if it uses the default root type names. boolean needsSchemaPrinted = options.isIncludeSchemaDefinition(); if (!needsSchemaPrinted) { @@ -819,21 +850,25 @@ private SchemaElementPrinter schemaPrinter() { } if (needsSchemaPrinted) { - if (hasAstDefinitionComments(schema) || hasDescription(schema)) { - out.print(printComments(schema, "")); - } - List directives = DirectivesUtil.toAppliedDirectives(schema.getSchemaAppliedDirectives(), schema.getSchemaDirectives()); - out.format("schema %s{\n", directivesString(GraphQLSchemaElement.class, directives)); - if (queryType != null) { - out.format(" query: %s\n", queryType.getName()); - } - if (mutationType != null) { - out.format(" mutation: %s\n", mutationType.getName()); - } - if (subscriptionType != null) { - out.format(" subscription: %s\n", subscriptionType.getName()); + if (shouldPrintAsAst(schema.getDefinition())) { + printAsAst(out, schema.getDefinition(), schema.getExtensionDefinitions()); + } else { + if (hasAstDefinitionComments(schema) || hasDescription(schema)) { + out.print(printComments(schema, "")); + } + List directives = DirectivesUtil.toAppliedDirectives(schema.getSchemaAppliedDirectives(), schema.getSchemaDirectives()); + out.format("schema %s{\n", directivesString(GraphQLSchemaElement.class, directives)); + if (queryType != null) { + out.format(" query: %s\n", queryType.getName()); + } + if (mutationType != null) { + out.format(" mutation: %s\n", mutationType.getName()); + } + if (subscriptionType != null) { + out.format(" subscription: %s\n", subscriptionType.getName()); + } + out.format("}\n\n"); } - out.format("}\n\n"); } }; } @@ -910,7 +945,7 @@ public String directivesString(Class parentType, String directivesString(Class parentType, boolean isDeprecated, GraphQLDirectiveContainer directiveContainer) { List directives; if (isDeprecated) { - directives = addDeprecatedDirectiveIfNeeded(directiveContainer); + directives = addOrUpdateDeprecatedDirectiveIfNeeded(directiveContainer); } else { directives = DirectivesUtil.toAppliedDirectives(directiveContainer); } @@ -1006,25 +1041,50 @@ private boolean hasDeprecatedDirective(List directives) .count() == 1; } - private List addDeprecatedDirectiveIfNeeded(GraphQLDirectiveContainer directiveContainer) { + private List addOrUpdateDeprecatedDirectiveIfNeeded(GraphQLDirectiveContainer directiveContainer) { List directives = DirectivesUtil.toAppliedDirectives(directiveContainer); + String reason = getDeprecationReason(directiveContainer); + if (!hasDeprecatedDirective(directives) && isDeprecatedDirectiveAllowed()) { directives = new ArrayList<>(directives); - String reason = getDeprecationReason(directiveContainer); - GraphQLAppliedDirectiveArgument arg = GraphQLAppliedDirectiveArgument.newArgument() - .name("reason") - .valueProgrammatic(reason) - .type(GraphQLString) - .build(); - GraphQLAppliedDirective directive = GraphQLAppliedDirective.newDirective() - .name("deprecated") - .argument(arg) - .build(); - directives.add(directive); + directives.add(createDeprecatedDirective(reason)); + } else if (hasDeprecatedDirective(directives) && isDeprecatedDirectiveAllowed()) { + // Update deprecated reason in case modified by schema transform + directives = updateDeprecatedDirective(directives, reason); } return directives; } + private GraphQLAppliedDirective createDeprecatedDirective(String reason) { + GraphQLAppliedDirectiveArgument arg = GraphQLAppliedDirectiveArgument.newArgument() + .name("reason") + .valueProgrammatic(reason) + .type(GraphQLString) + .build(); + return GraphQLAppliedDirective.newDirective() + .name("deprecated") + .argument(arg) + .build(); + } + + private List updateDeprecatedDirective(List directives, String reason) { + GraphQLAppliedDirectiveArgument newArg = GraphQLAppliedDirectiveArgument.newArgument() + .name("reason") + .valueProgrammatic(reason) + .type(GraphQLString) + .build(); + + return directives.stream().map(d -> { + if (isDeprecatedDirective(d)) { + // Don't include reason is deliberately replaced with NOT_SET, for example in Anonymizer + if (d.getArgument("reason").getArgumentValue() != InputValueWithState.NOT_SET) { + return d.transform(builder -> builder.argument(newArg)); + } + } + return d; + }).collect(toList()); + } + private String getDeprecationReason(GraphQLDirectiveContainer directiveContainer) { if (directiveContainer instanceof GraphQLFieldDefinition) { GraphQLFieldDefinition type = (GraphQLFieldDefinition) directiveContainer; diff --git a/src/main/java/graphql/schema/idl/TypeRuntimeWiring.java b/src/main/java/graphql/schema/idl/TypeRuntimeWiring.java index 3480a5d6b0..d628737cfd 100644 --- a/src/main/java/graphql/schema/idl/TypeRuntimeWiring.java +++ b/src/main/java/graphql/schema/idl/TypeRuntimeWiring.java @@ -16,21 +16,20 @@ /** * A type runtime wiring is a specification of the data fetchers and possible type resolver for a given type name. - * + *
    * This is used by {@link RuntimeWiring} to wire together a functional {@link GraphQLSchema} */ @PublicApi public class TypeRuntimeWiring { - private final static AtomicBoolean DEFAULT_STRICT_MODE = new AtomicBoolean(false); + private final static AtomicBoolean DEFAULT_STRICT_MODE = new AtomicBoolean(true); /** - * By default {@link TypeRuntimeWiring} builders are not in strict mode, but you can set a JVM wide value - * so that any created will be. + * By default {@link TypeRuntimeWiring} builders are in strict mode, but you can set a JVM wide value too * * @param strictMode the desired strict mode state * - * @see Builder#strictMode() + * @see Builder#strictMode(boolean) */ public static void setStrictModeJvmWide(boolean strictMode) { DEFAULT_STRICT_MODE.set(strictMode); @@ -127,6 +126,20 @@ public Builder typeName(String typeName) { * * @return this builder */ + public Builder strictMode(boolean strictMode) { + this.strictMode = strictMode; + return this; + } + + /** + * This puts the builder into strict mode, so if things get defined twice, for example, it + * will throw a {@link StrictModeWiringException}. + * + * @return this builder + * + * @deprecated use {@link #strictMode(boolean)} instead + */ + @Deprecated(since = "2025-03-22", forRemoval = true) public Builder strictMode() { this.strictMode = true; return this; @@ -184,6 +197,9 @@ private void assertFieldStrictly(String fieldName) { */ public Builder defaultDataFetcher(DataFetcher dataFetcher) { assertNotNull(dataFetcher); + if (strictMode && defaultDataFetcher != null) { + throw new StrictModeWiringException(format("The type %s has already has a default data fetcher defined", typeName)); + } defaultDataFetcher = dataFetcher; return this; } diff --git a/src/main/java/graphql/schema/idl/errors/DirectiveIllegalArgumentTypeError.java b/src/main/java/graphql/schema/idl/errors/DirectiveIllegalArgumentTypeError.java index 3097df4ccb..70ef1930e2 100644 --- a/src/main/java/graphql/schema/idl/errors/DirectiveIllegalArgumentTypeError.java +++ b/src/main/java/graphql/schema/idl/errors/DirectiveIllegalArgumentTypeError.java @@ -16,7 +16,6 @@ public class DirectiveIllegalArgumentTypeError extends BaseError { public static final String NOT_A_VALID_SCALAR_LITERAL_MESSAGE = "Argument value is not a valid value of scalar '%s'."; public static final String MISSING_REQUIRED_FIELD_MESSAGE = "Missing required field '%s'."; public static final String EXPECTED_NON_NULL_MESSAGE = "Argument value is 'null', expected a non-null value."; - public static final String EXPECTED_LIST_MESSAGE = "Argument value is '%s', expected a list value."; public static final String EXPECTED_OBJECT_MESSAGE = "Argument value is of type '%s', expected an Object value."; public DirectiveIllegalArgumentTypeError(Node element, String elementName, String directiveName, String argumentName, String detailedMessaged) { diff --git a/src/main/java/graphql/schema/idl/errors/StrictModeWiringException.java b/src/main/java/graphql/schema/idl/errors/StrictModeWiringException.java index 6da6b637fc..4c92bffd6d 100644 --- a/src/main/java/graphql/schema/idl/errors/StrictModeWiringException.java +++ b/src/main/java/graphql/schema/idl/errors/StrictModeWiringException.java @@ -6,7 +6,7 @@ import graphql.schema.idl.TypeRuntimeWiring; /** - * An exception that is throw when {@link RuntimeWiring.Builder#strictMode()} or {@link TypeRuntimeWiring.Builder#strictMode()} is true and + * An exception that is throw when {@link RuntimeWiring.Builder#strictMode(boolean)} or {@link TypeRuntimeWiring.Builder#strictMode(boolean)} is true and * something gets redefined. */ @PublicApi diff --git a/src/main/java/graphql/schema/transform/FieldVisibilitySchemaTransformation.java b/src/main/java/graphql/schema/transform/FieldVisibilitySchemaTransformation.java index 303b81b9c8..325854129c 100644 --- a/src/main/java/graphql/schema/transform/FieldVisibilitySchemaTransformation.java +++ b/src/main/java/graphql/schema/transform/FieldVisibilitySchemaTransformation.java @@ -62,9 +62,10 @@ public final GraphQLSchema apply(GraphQLSchema schema) { Set markedForRemovalTypes = new HashSet<>(); // query, mutation, and subscription types should not be removed - final Set protectedTypeNames = getOperationTypes(schema).stream() - .map(GraphQLObjectType::getName) - .collect(Collectors.toSet()); + final Set protectedTypeNames = new HashSet<>(); + for (GraphQLObjectType graphQLObjectType : getOperationTypes(schema)) { + protectedTypeNames.add(graphQLObjectType.getName()); + } beforeTransformationHook.run(); diff --git a/src/main/java/graphql/schema/usage/SchemaUsageSupport.java b/src/main/java/graphql/schema/usage/SchemaUsageSupport.java index 2f86da5c76..f51bb0429d 100644 --- a/src/main/java/graphql/schema/usage/SchemaUsageSupport.java +++ b/src/main/java/graphql/schema/usage/SchemaUsageSupport.java @@ -22,7 +22,6 @@ import graphql.schema.SchemaTraverser; import graphql.util.TraversalControl; import graphql.util.TraverserContext; -import org.jetbrains.annotations.Nullable; import java.util.HashSet; import java.util.List; diff --git a/src/main/java/graphql/schema/validation/DeprecatedInputObjectAndArgumentsAreValid.java b/src/main/java/graphql/schema/validation/DeprecatedInputObjectAndArgumentsAreValid.java new file mode 100644 index 0000000000..ce619223cc --- /dev/null +++ b/src/main/java/graphql/schema/validation/DeprecatedInputObjectAndArgumentsAreValid.java @@ -0,0 +1,64 @@ +package graphql.schema.validation; + +import graphql.Directives; +import graphql.Internal; +import graphql.schema.GraphQLAppliedDirective; +import graphql.schema.GraphQLArgument; +import graphql.schema.GraphQLDirective; +import graphql.schema.GraphQLFieldDefinition; +import graphql.schema.GraphQLInputObjectField; +import graphql.schema.GraphQLInputObjectType; +import graphql.schema.GraphQLSchemaElement; +import graphql.schema.GraphQLTypeUtil; +import graphql.schema.GraphQLTypeVisitorStub; +import graphql.util.TraversalControl; +import graphql.util.TraverserContext; + +import static java.lang.String.format; + +/* + From the spec: + The @deprecated directive must not appear on required (non-null without a default) arguments + or input object field definitions. + */ +@Internal +public class DeprecatedInputObjectAndArgumentsAreValid extends GraphQLTypeVisitorStub { + + @Override + public TraversalControl visitGraphQLInputObjectField(GraphQLInputObjectField inputObjectField, TraverserContext context) { + // There can only be at most one @deprecated, because it is not a repeatable directive + GraphQLAppliedDirective deprecatedDirective = inputObjectField.getAppliedDirective(Directives.DEPRECATED_DIRECTIVE_DEFINITION.getName()); + + if (deprecatedDirective != null && GraphQLTypeUtil.isNonNull(inputObjectField.getType()) && !inputObjectField.hasSetDefaultValue()) { + GraphQLInputObjectType inputObjectType = (GraphQLInputObjectType) context.getParentNode(); + SchemaValidationErrorCollector errorCollector = context.getVarFromParents(SchemaValidationErrorCollector.class); + String message = format("Required input field '%s.%s' cannot be deprecated.", inputObjectType.getName(), inputObjectField.getName()); + errorCollector.addError(new SchemaValidationError(SchemaValidationErrorType.RequiredInputFieldCannotBeDeprecated, message)); + } + return TraversalControl.CONTINUE; + } + + // An argument can appear as either a field argument or a directive argument. This visitor will visit both field arguments and directive arguments. + // An applied directive's argument cannot be deprecated. + @Override + public TraversalControl visitGraphQLArgument(GraphQLArgument argument, TraverserContext context) { + // There can only be at most one @deprecated, because it is not a repeatable directive + GraphQLAppliedDirective deprecatedDirective = argument.getAppliedDirective(Directives.DEPRECATED_DIRECTIVE_DEFINITION.getName()); + + if (deprecatedDirective != null && GraphQLTypeUtil.isNonNull(argument.getType()) && !argument.hasSetDefaultValue()) { + if (context.getParentNode() instanceof GraphQLFieldDefinition) { + GraphQLFieldDefinition fieldDefinition = (GraphQLFieldDefinition) context.getParentNode(); + SchemaValidationErrorCollector errorCollector = context.getVarFromParents(SchemaValidationErrorCollector.class); + String message = format("Required argument '%s' on field '%s' cannot be deprecated.", argument.getName(), fieldDefinition.getName()); + errorCollector.addError(new SchemaValidationError(SchemaValidationErrorType.RequiredFieldArgumentCannotBeDeprecated, message)); + } else if (context.getParentNode() instanceof GraphQLDirective) { + GraphQLDirective directive = (GraphQLDirective) context.getParentNode(); + SchemaValidationErrorCollector errorCollector = context.getVarFromParents(SchemaValidationErrorCollector.class); + String message = format("Required argument '%s' on directive '%s' cannot be deprecated.", argument.getName(), directive.getName()); + errorCollector.addError(new SchemaValidationError(SchemaValidationErrorType.RequiredDirectiveArgumentCannotBeDeprecated, message)); + } + } + return TraversalControl.CONTINUE; + } + +} diff --git a/src/main/java/graphql/schema/validation/SchemaValidationErrorType.java b/src/main/java/graphql/schema/validation/SchemaValidationErrorType.java index 08209bb6b2..b8392b18d7 100644 --- a/src/main/java/graphql/schema/validation/SchemaValidationErrorType.java +++ b/src/main/java/graphql/schema/validation/SchemaValidationErrorType.java @@ -21,5 +21,8 @@ public enum SchemaValidationErrorType implements SchemaValidationErrorClassifica OutputTypeUsedInInputTypeContext, InputTypeUsedInOutputTypeContext, OneOfDefaultValueOnField, - OneOfNonNullableField + OneOfNonNullableField, + RequiredInputFieldCannotBeDeprecated, + RequiredFieldArgumentCannotBeDeprecated, + RequiredDirectiveArgumentCannotBeDeprecated } diff --git a/src/main/java/graphql/schema/validation/SchemaValidator.java b/src/main/java/graphql/schema/validation/SchemaValidator.java index 0d8d7f271b..1f676fb77e 100644 --- a/src/main/java/graphql/schema/validation/SchemaValidator.java +++ b/src/main/java/graphql/schema/validation/SchemaValidator.java @@ -26,6 +26,7 @@ public SchemaValidator() { rules.add(new AppliedDirectiveArgumentsAreValid()); rules.add(new InputAndOutputTypesUsedAppropriately()); rules.add(new OneOfInputObjectRules()); + rules.add(new DeprecatedInputObjectAndArgumentsAreValid()); } public List getRules() { diff --git a/src/main/java/graphql/schema/visibility/BlockedFields.java b/src/main/java/graphql/schema/visibility/BlockedFields.java index 57bd555bc5..937d029d83 100644 --- a/src/main/java/graphql/schema/visibility/BlockedFields.java +++ b/src/main/java/graphql/schema/visibility/BlockedFields.java @@ -1,8 +1,8 @@ package graphql.schema.visibility; -import com.google.common.collect.ImmutableList; import graphql.Internal; import graphql.PublicApi; +import graphql.collect.ImmutableKit; import graphql.schema.GraphQLFieldDefinition; import graphql.schema.GraphQLFieldsContainer; import graphql.schema.GraphQLInputFieldsContainer; @@ -35,9 +35,8 @@ private BlockedFields(List patterns) { @Override public List getFieldDefinitions(GraphQLFieldsContainer fieldsContainer) { - return fieldsContainer.getFieldDefinitions().stream() - .filter(fieldDefinition -> !block(mkFQN(fieldsContainer.getName(), fieldDefinition.getName()))) - .collect(ImmutableList.toImmutableList()); + return ImmutableKit.filter(fieldsContainer.getFieldDefinitions(), + fieldDefinition -> !block(mkFQN(fieldsContainer.getName(), fieldDefinition.getName()))); } @Override @@ -53,9 +52,8 @@ public GraphQLFieldDefinition getFieldDefinition(GraphQLFieldsContainer fieldsCo @Override public List getFieldDefinitions(GraphQLInputFieldsContainer fieldsContainer) { - return fieldsContainer.getFieldDefinitions().stream() - .filter(fieldDefinition -> !block(mkFQN(fieldsContainer.getName(), fieldDefinition.getName()))) - .collect(ImmutableList.toImmutableList()); + return ImmutableKit.filter(fieldsContainer.getFieldDefinitions(), + fieldDefinition -> !block(mkFQN(fieldsContainer.getName(), fieldDefinition.getName()))); } @Override diff --git a/src/main/java/graphql/schema/visitor/GraphQLSchemaVisitorEnvironmentImpl.java b/src/main/java/graphql/schema/visitor/GraphQLSchemaVisitorEnvironmentImpl.java index 08880c0d49..41bb7edffc 100644 --- a/src/main/java/graphql/schema/visitor/GraphQLSchemaVisitorEnvironmentImpl.java +++ b/src/main/java/graphql/schema/visitor/GraphQLSchemaVisitorEnvironmentImpl.java @@ -6,13 +6,16 @@ import graphql.schema.GraphQLSchema; import graphql.schema.GraphQLSchemaElement; import graphql.util.TraverserContext; -import org.jetbrains.annotations.NotNull; +import org.jspecify.annotations.NonNull; import java.util.ArrayList; import java.util.List; import java.util.function.Predicate; -import static graphql.schema.visitor.GraphQLSchemaTraversalControl.*; +import static graphql.schema.visitor.GraphQLSchemaTraversalControl.CONTINUE; +import static graphql.schema.visitor.GraphQLSchemaTraversalControl.Control; +import static graphql.schema.visitor.GraphQLSchemaTraversalControl.DELETE; +import static graphql.schema.visitor.GraphQLSchemaTraversalControl.QUIT; @Internal class GraphQLSchemaVisitorEnvironmentImpl implements GraphQLSchemaVisitorEnvironment { @@ -50,7 +53,7 @@ public List getUnwrappedLeadingElements() { return buildParentsImpl(schemaElement -> !(schemaElement instanceof GraphQLModifiedType)); } - @NotNull + @NonNull private List buildParentsImpl(Predicate predicate) { List list = new ArrayList<>(); TraverserContext parentContext = context.getParentContext(); diff --git a/src/main/java/graphql/util/Anonymizer.java b/src/main/java/graphql/util/Anonymizer.java index 2d0497eca6..11b3f30309 100644 --- a/src/main/java/graphql/util/Anonymizer.java +++ b/src/main/java/graphql/util/Anonymizer.java @@ -60,7 +60,6 @@ import graphql.schema.GraphQLNamedOutputType; import graphql.schema.GraphQLNamedSchemaElement; import graphql.schema.GraphQLNamedType; -import graphql.schema.GraphQLNonNull; import graphql.schema.GraphQLObjectType; import graphql.schema.GraphQLScalarType; import graphql.schema.GraphQLSchema; @@ -93,7 +92,7 @@ import static graphql.Assert.assertNotNull; import static graphql.parser.ParserEnvironment.newParserEnvironment; -import static graphql.schema.GraphQLArgument.newArgument; +import static graphql.schema.GraphQLNonNull.nonNull; import static graphql.schema.GraphQLTypeUtil.unwrapNonNull; import static graphql.schema.GraphQLTypeUtil.unwrapNonNullAs; import static graphql.schema.GraphQLTypeUtil.unwrapOneAs; @@ -260,16 +259,6 @@ public TraversalControl visitGraphQLFieldDefinition(GraphQLFieldDefinition graph @Override public TraversalControl visitGraphQLDirective(GraphQLDirective graphQLDirective, TraverserContext context) { - if (Directives.DEPRECATED_DIRECTIVE_DEFINITION.getName().equals(graphQLDirective.getName())) { - GraphQLArgument reason = newArgument().name("reason") - .type(Scalars.GraphQLString) - .clearValue().build(); - GraphQLDirective newElement = graphQLDirective.transform(builder -> { - builder.description(null).argument(reason); - }); - changeNode(context, newElement); - return TraversalControl.ABORT; - } if (DirectiveInfo.isGraphqlSpecifiedDirective(graphQLDirective.getName())) { return TraversalControl.ABORT; } @@ -285,7 +274,8 @@ public TraversalControl visitGraphQLAppliedDirective(GraphQLAppliedDirective gra if (Directives.DEPRECATED_DIRECTIVE_DEFINITION.getName().equals(graphQLDirective.getName())) { GraphQLAppliedDirectiveArgument reason = GraphQLAppliedDirectiveArgument.newArgument().name("reason") .type(Scalars.GraphQLString) - .clearValue().build(); + .clearValue() + .build(); GraphQLAppliedDirective newElement = graphQLDirective.transform(builder -> { builder.description(null).argument(reason); }); @@ -918,7 +908,7 @@ private static GraphQLType fromTypeToGraphQLType(Type type, GraphQLSchema schema graphql.Assert.assertNotNull(graphQLType, "Schema must contain type %s", typeName); return graphQLType; } else if (type instanceof NonNullType) { - return GraphQLNonNull.nonNull(fromTypeToGraphQLType(TypeUtil.unwrapOne(type), schema)); + return nonNull(fromTypeToGraphQLType(TypeUtil.unwrapOne(type), schema)); } else if (type instanceof ListType) { return GraphQLList.list(fromTypeToGraphQLType(TypeUtil.unwrapOne(type), schema)); } else { diff --git a/src/main/java/graphql/util/EscapeUtil.java b/src/main/java/graphql/util/EscapeUtil.java index d7a6cb5eeb..521ac35846 100644 --- a/src/main/java/graphql/util/EscapeUtil.java +++ b/src/main/java/graphql/util/EscapeUtil.java @@ -16,37 +16,41 @@ private EscapeUtil() { * @return the encoded string */ public static String escapeJsonString(String stringValue) { + StringBuilder sb = new StringBuilder(stringValue.length()); + escapeJsonStringTo(sb, stringValue); + return sb.toString(); + } + + public static void escapeJsonStringTo(StringBuilder output, String stringValue) { int len = stringValue.length(); - StringBuilder sb = new StringBuilder(len); for (int i = 0; i < len; i++) { char ch = stringValue.charAt(i); switch (ch) { case '"': - sb.append("\\\""); + output.append("\\\""); break; case '\\': - sb.append("\\\\"); + output.append("\\\\"); break; case '\b': - sb.append("\\b"); + output.append("\\b"); break; case '\f': - sb.append("\\f"); + output.append("\\f"); break; case '\n': - sb.append("\\n"); + output.append("\\n"); break; case '\r': - sb.append("\\r"); + output.append("\\r"); break; case '\t': - sb.append("\\t"); + output.append("\\t"); break; default: - sb.append(ch); + output.append(ch); } } - return sb.toString(); } } diff --git a/src/main/java/graphql/util/FpKit.java b/src/main/java/graphql/util/FpKit.java index a538450ad3..f7f8c00519 100644 --- a/src/main/java/graphql/util/FpKit.java +++ b/src/main/java/graphql/util/FpKit.java @@ -5,10 +5,12 @@ import com.google.common.collect.ImmutableSet; import com.google.common.collect.Sets; import graphql.Internal; +import org.jspecify.annotations.NonNull; import java.lang.reflect.Array; import java.util.ArrayList; import java.util.Collection; +import java.util.Collections; import java.util.Iterator; import java.util.LinkedHashMap; import java.util.List; @@ -18,17 +20,13 @@ import java.util.OptionalInt; import java.util.Set; import java.util.concurrent.CompletableFuture; -import java.util.function.BiFunction; import java.util.function.BinaryOperator; import java.util.function.Function; import java.util.function.Predicate; import java.util.function.Supplier; -import java.util.stream.Collectors; import java.util.stream.Stream; import static java.util.Collections.singletonList; -import static java.util.function.Function.identity; -import static java.util.stream.Collectors.mapping; @Internal public class FpKit { @@ -36,51 +34,76 @@ public class FpKit { // // From a list of named things, get a map of them by name, merging them according to the merge function public static Map getByName(List namedObjects, Function nameFn, BinaryOperator mergeFunc) { - return namedObjects.stream().collect(Collectors.toMap( - nameFn, - identity(), - mergeFunc, - LinkedHashMap::new) - ); + return toMap(namedObjects, nameFn, mergeFunc); + } + + // + // From a collection of keyed things, get a map of them by key, merging them according to the merge function + public static Map toMap(Collection collection, Function keyFunction, BinaryOperator mergeFunc) { + Map resultMap = new LinkedHashMap<>(); + for (T obj : collection) { + NewKey key = keyFunction.apply(obj); + if (resultMap.containsKey(key)) { + T existingValue = resultMap.get(key); + T mergedValue = mergeFunc.apply(existingValue, obj); + resultMap.put(key, mergedValue); + } else { + resultMap.put(key, obj); + } + } + return resultMap; } // normal groupingBy but with LinkedHashMap public static Map> groupingBy(Collection list, Function function) { - return list.stream().collect(Collectors.groupingBy(function, LinkedHashMap::new, mapping(Function.identity(), ImmutableList.toImmutableList()))); + return filterAndGroupingBy(list, ALWAYS_TRUE, function); } + @SuppressWarnings("unchecked") public static Map> filterAndGroupingBy(Collection list, Predicate predicate, Function function) { - return list.stream().filter(predicate).collect(Collectors.groupingBy(function, LinkedHashMap::new, mapping(Function.identity(), ImmutableList.toImmutableList()))); - } + // + // The cleanest version of this code would have two maps, one of immutable list builders and one + // of the built immutable lists. BUt we are trying to be performant and memory efficient so + // we treat it as a map of objects and cast like its Java 4x + // + Map resutMap = new LinkedHashMap<>(); + for (T item : list) { + if (predicate.test(item)) { + NewKey key = function.apply(item); + // we have to use an immutable list builder as we built it out + ((ImmutableList.Builder) resutMap.computeIfAbsent(key, k -> ImmutableList.builder())) + .add(item); + } + } + if (resutMap.isEmpty()) { + return Collections.emptyMap(); + } + // Convert builders to ImmutableLists in place to avoid an extra allocation + // yes the code is yuck - but its more performant yuck! + resutMap.replaceAll((key, builder) -> + ((ImmutableList.Builder) builder).build()); - public static Map> groupingBy(Stream stream, Function function) { - return stream.collect(Collectors.groupingBy(function, LinkedHashMap::new, mapping(Function.identity(), ImmutableList.toImmutableList()))); + // make it the right shape - like as if generics were never invented + return (Map>) (Map) resutMap; } - public static Map groupingByUniqueKey(Collection list, Function keyFunction) { - return list.stream().collect(Collectors.toMap( - keyFunction, - identity(), - throwingMerger(), - LinkedHashMap::new) - ); + public static Map toMapByUniqueKey(Collection list, Function keyFunction) { + return toMap(list, keyFunction, throwingMerger()); } - public static Map groupingByUniqueKey(Stream stream, Function keyFunction) { - return stream.collect(Collectors.toMap( - keyFunction, - identity(), - throwingMerger(), - LinkedHashMap::new) - ); - } + + private static final Predicate ALWAYS_TRUE = o -> true; + + private static final BinaryOperator THROWING_MERGER_SINGLETON = (u, v) -> { + throw new IllegalStateException(String.format("Duplicate key %s", u)); + }; + private static BinaryOperator throwingMerger() { - return (u, v) -> { - throw new IllegalStateException(String.format("Duplicate key %s", u)); - }; + //noinspection unchecked + return (BinaryOperator) THROWING_MERGER_SINGLETON; } @@ -119,6 +142,19 @@ public static Collection toCollection(Object iterableResult) { return list; } + /** + * Creates an {@link ArrayList} sized appropriately to the collection, typically for copying + * + * @param collection the collection of a certain size + * @param to two + * + * @return a new {@link ArrayList} initially sized to the same as the collection + */ + public static @NonNull List arrayListSizedTo(@NonNull Collection collection) { + return new ArrayList<>(collection.size()); + } + + /** * Converts a value into a list if it's really a collection or array of things * else it turns it into a singleton list containing that one value @@ -240,11 +276,6 @@ public static List valuesToList(Map map) { return new ArrayList<>(map.values()); } - public static List mapEntries(Map map, BiFunction function) { - return map.entrySet().stream().map(entry -> function.apply(entry.getKey(), entry.getValue())).collect(Collectors.toList()); - } - - public static List> transposeMatrix(List> matrix) { int rowCount = matrix.size(); int colCount = matrix.get(0).size(); @@ -261,21 +292,13 @@ public static List> transposeMatrix(List> matrix) return result; } - public static CompletableFuture> flatList(CompletableFuture>> cf) { - return cf.thenApply(FpKit::flatList); - } - - public static List flatList(Collection> listLists) { - return listLists.stream() - .flatMap(List::stream) - .collect(ImmutableList.toImmutableList()); - } - public static Optional findOne(Collection list, Predicate filter) { - return list - .stream() - .filter(filter) - .findFirst(); + for (T t : list) { + if (filter.test(t)) { + return Optional.of(t); + } + } + return Optional.empty(); } public static T findOneOrNull(List list, Predicate filter) { @@ -292,10 +315,13 @@ public static int findIndex(List list, Predicate filter) { } public static List filterList(Collection list, Predicate filter) { - return list - .stream() - .filter(filter) - .collect(Collectors.toList()); + List result = arrayListSizedTo(list); + for (T t : list) { + if (filter.test(t)) { + result.add(t); + } + } + return result; } public static Set filterSet(Collection input, Predicate filter) { @@ -352,9 +378,10 @@ public static Supplier interThreadMemoize(Supplier delegate) { /** * Faster set intersection. * - * @param for two + * @param for two * @param set1 first set * @param set2 second set + * * @return intersection set */ public static Set intersection(Set set1, Set set2) { diff --git a/src/main/java/graphql/util/Interning.java b/src/main/java/graphql/util/Interning.java index bc51b3ebff..acbb54fdaf 100644 --- a/src/main/java/graphql/util/Interning.java +++ b/src/main/java/graphql/util/Interning.java @@ -3,7 +3,7 @@ import com.google.common.collect.Interner; import com.google.common.collect.Interners; import graphql.Internal; -import org.jetbrains.annotations.NotNull; +import org.jspecify.annotations.NonNull; /** * Interner allowing object-identity comparison of key entities like field names. This is useful on hotspot @@ -18,7 +18,7 @@ private Interning() { private static final Interner INTERNER = Interners.newWeakInterner(); - public static @NotNull String intern(@NotNull String name) { + public static @NonNull String intern(@NonNull String name) { return INTERNER.intern(name); } diff --git a/src/main/java/graphql/util/NodeMultiZipper.java b/src/main/java/graphql/util/NodeMultiZipper.java index fb67fe43ea..60328c1a2c 100644 --- a/src/main/java/graphql/util/NodeMultiZipper.java +++ b/src/main/java/graphql/util/NodeMultiZipper.java @@ -62,7 +62,7 @@ public T toRootNode() { Map>> sameParent = zipperWithSameParent(deepestZippers); List> newZippers = new ArrayList<>(); - Map> zipperByNode = FpKit.groupingByUniqueKey(curZippers, NodeZipper::getCurNode); + Map> zipperByNode = FpKit.toMapByUniqueKey(curZippers, NodeZipper::getCurNode); for (Map.Entry>> entry : sameParent.entrySet()) { NodeZipper newZipper = moveUp(entry.getKey(), entry.getValue()); Optional> zipperToBeReplaced = Optional.ofNullable(zipperByNode.get(entry.getKey())); diff --git a/src/main/java/graphql/validation/ArgumentValidationUtil.java b/src/main/java/graphql/validation/ArgumentValidationUtil.java index 18261d4b0d..a378f40b63 100644 --- a/src/main/java/graphql/validation/ArgumentValidationUtil.java +++ b/src/main/java/graphql/validation/ArgumentValidationUtil.java @@ -91,6 +91,12 @@ protected void handleFieldNotValidError(Value value, GraphQLType type, int in argumentNames.add(0, String.format("[%s]", index)); } + @Override + protected void handleExtraOneOfFieldsError(GraphQLInputObjectType type, Value value) { + errMsgKey = "ArgumentValidationUtil.extraOneOfFieldsError"; + arguments.add(type.getName()); + } + public I18nMsg getMsgAndArgs() { StringBuilder argument = new StringBuilder(argumentName); for (String name : argumentNames) { diff --git a/src/main/java/graphql/validation/RulesVisitor.java b/src/main/java/graphql/validation/RulesVisitor.java index 83864aaee7..b8d5aa2b8f 100644 --- a/src/main/java/graphql/validation/RulesVisitor.java +++ b/src/main/java/graphql/validation/RulesVisitor.java @@ -44,11 +44,13 @@ public RulesVisitor(ValidationContext validationContext, List rule } private List filterRulesVisitingFragmentSpreads(List rules, boolean isVisitFragmentSpreads) { - Iterator itr = rules - .stream() - .filter(r -> r.isVisitFragmentSpreads() == isVisitFragmentSpreads) - .iterator(); - return ImmutableList.copyOf(itr); + ImmutableList.Builder builder = ImmutableList.builder(); + for (AbstractRule rule : rules) { + if (rule.isVisitFragmentSpreads() == isVisitFragmentSpreads) { + builder.add(rule); + } + } + return builder.build(); } @Override diff --git a/src/main/java/graphql/validation/ValidationErrorType.java b/src/main/java/graphql/validation/ValidationErrorType.java index 5710a1b0b9..e701a5d778 100644 --- a/src/main/java/graphql/validation/ValidationErrorType.java +++ b/src/main/java/graphql/validation/ValidationErrorType.java @@ -43,5 +43,6 @@ public enum ValidationErrorType implements ValidationErrorClassification { NullValueForNonNullArgument, SubscriptionMultipleRootFields, SubscriptionIntrospectionRootField, - UniqueObjectFieldName + UniqueObjectFieldName, + UnknownOperation } diff --git a/src/main/java/graphql/validation/ValidationUtil.java b/src/main/java/graphql/validation/ValidationUtil.java index 413b5887fc..1bff274d92 100644 --- a/src/main/java/graphql/validation/ValidationUtil.java +++ b/src/main/java/graphql/validation/ValidationUtil.java @@ -3,6 +3,7 @@ import com.google.common.collect.ImmutableSet; import graphql.Assert; +import graphql.Directives; import graphql.GraphQLContext; import graphql.GraphQLError; import graphql.Internal; @@ -77,6 +78,9 @@ protected void handleFieldNotValidError(ObjectField objectField, GraphQLInputObj protected void handleFieldNotValidError(Value value, GraphQLType type, int index) { } + protected void handleExtraOneOfFieldsError(GraphQLInputObjectType type, Value value) { + } + public boolean isValidLiteralValue(Value value, GraphQLType type, GraphQLSchema schema, GraphQLContext graphQLContext, Locale locale) { if (value == null || value instanceof NullValue) { boolean valid = !(isNonNull(type)); @@ -95,18 +99,18 @@ public boolean isValidLiteralValue(Value value, GraphQLType type, GraphQLSche if (type instanceof GraphQLScalarType) { Optional invalid = parseLiteral(value, ((GraphQLScalarType) type).getCoercing(), graphQLContext, locale); invalid.ifPresent(graphQLError -> handleScalarError(value, (GraphQLScalarType) type, graphQLError)); - return !invalid.isPresent(); + return invalid.isEmpty(); } if (type instanceof GraphQLEnumType) { Optional invalid = parseLiteralEnum(value, (GraphQLEnumType) type, graphQLContext, locale); invalid.ifPresent(graphQLError -> handleEnumError(value, (GraphQLEnumType) type, graphQLError)); - return !invalid.isPresent(); + return invalid.isEmpty(); } if (isList(type)) { return isValidLiteralValue(value, (GraphQLList) type, schema, graphQLContext, locale); } - return type instanceof GraphQLInputObjectType && isValidLiteralValue(value, (GraphQLInputObjectType) type, schema, graphQLContext, locale); + return type instanceof GraphQLInputObjectType && isValidLiteralValueForInputObjectType(value, (GraphQLInputObjectType) type, schema, graphQLContext, locale); } @@ -128,7 +132,7 @@ private Optional parseLiteral(Value value, Coercing coerc } } - boolean isValidLiteralValue(Value value, GraphQLInputObjectType type, GraphQLSchema schema, GraphQLContext graphQLContext, Locale locale) { + boolean isValidLiteralValueForInputObjectType(Value value, GraphQLInputObjectType type, GraphQLSchema schema, GraphQLContext graphQLContext, Locale locale) { if (!(value instanceof ObjectValue)) { handleNotObjectError(value, type); return false; @@ -156,9 +160,16 @@ boolean isValidLiteralValue(Value value, GraphQLInputObjectType type, GraphQL } } + if (type.hasAppliedDirective(Directives.OneOfDirective.getName())) { + if (objectFieldMap.keySet().size() != 1) { + handleExtraOneOfFieldsError(type,value); + return false; + } + } return true; } + private Set getMissingFields(GraphQLInputObjectType type, Map objectFieldMap, GraphqlFieldVisibility fieldVisibility) { return fieldVisibility.getFieldDefinitions(type).stream() .filter(field -> isNonNull(field.getType())) diff --git a/src/main/java/graphql/validation/Validator.java b/src/main/java/graphql/validation/Validator.java index d7c3db2fdc..52709109d6 100644 --- a/src/main/java/graphql/validation/Validator.java +++ b/src/main/java/graphql/validation/Validator.java @@ -1,7 +1,6 @@ package graphql.validation; -import graphql.ExperimentalApi; import graphql.Internal; import graphql.i18n.I18n; import graphql.language.Document; @@ -10,6 +9,7 @@ import graphql.validation.rules.DeferDirectiveLabel; import graphql.validation.rules.DeferDirectiveOnRootLevel; import graphql.validation.rules.DeferDirectiveOnValidOperation; +import graphql.validation.rules.KnownOperationTypes; import graphql.validation.rules.UniqueObjectFieldName; import graphql.validation.rules.ExecutableDefinitions; import graphql.validation.rules.FieldsOnCorrectType; @@ -52,7 +52,7 @@ public class Validator { * `graphql-java` will stop validation after a maximum number of validation messages has been reached. Attackers * can send pathologically invalid queries to induce a Denial of Service attack and fill memory with 10000s of errors * and burn CPU in process. - * + *

    * By default, this is set to 100 errors. You can set a new JVM wide value as the maximum allowed validation errors. * * @param maxValidationErrors the maximum validation errors allow JVM wide @@ -169,6 +169,10 @@ public List createRules(ValidationContext validationContext, Valid DeferDirectiveLabel deferDirectiveLabel = new DeferDirectiveLabel(validationContext, validationErrorCollector); rules.add(deferDirectiveLabel); + + KnownOperationTypes knownOperationTypes = new KnownOperationTypes(validationContext, validationErrorCollector); + rules.add(knownOperationTypes); + return rules; } } diff --git a/src/main/java/graphql/validation/rules/ArgumentsOfCorrectType.java b/src/main/java/graphql/validation/rules/ArgumentsOfCorrectType.java index 21e85a2129..2b76f685ab 100644 --- a/src/main/java/graphql/validation/rules/ArgumentsOfCorrectType.java +++ b/src/main/java/graphql/validation/rules/ArgumentsOfCorrectType.java @@ -28,7 +28,7 @@ public void checkArgument(Argument argument) { return; } ArgumentValidationUtil validationUtil = new ArgumentValidationUtil(argument); - if (!validationUtil.isValidLiteralValue(argument.getValue(), fieldArgument.getType(), getValidationContext().getSchema(), getValidationContext().getGraphQLContext(), Locale.getDefault())) { + if (!validationUtil.isValidLiteralValue(argument.getValue(), fieldArgument.getType(), getValidationContext().getSchema(), getValidationContext().getGraphQLContext(), getValidationContext().getI18n().getLocale())) { String message = i18n(WrongType, validationUtil.getMsgAndArgs()); addError(ValidationError.newValidationError() .validationErrorType(WrongType) diff --git a/src/main/java/graphql/validation/rules/KnownOperationTypes.java b/src/main/java/graphql/validation/rules/KnownOperationTypes.java new file mode 100644 index 0000000000..2ef9af48fe --- /dev/null +++ b/src/main/java/graphql/validation/rules/KnownOperationTypes.java @@ -0,0 +1,48 @@ +package graphql.validation.rules; + +import graphql.Internal; +import graphql.language.OperationDefinition; +import graphql.schema.GraphQLSchema; +import graphql.util.StringKit; +import graphql.validation.AbstractRule; +import graphql.validation.ValidationContext; +import graphql.validation.ValidationErrorCollector; + +import static graphql.validation.ValidationErrorType.UnknownOperation; + +/** + * Unique variable names + *

    + * A GraphQL operation is only valid if all its variables are uniquely named. + */ +@Internal +public class KnownOperationTypes extends AbstractRule { + + public KnownOperationTypes(ValidationContext validationContext, ValidationErrorCollector validationErrorCollector) { + super(validationContext, validationErrorCollector); + } + + @Override + public void checkOperationDefinition(OperationDefinition operationDefinition) { + OperationDefinition.Operation documentOperation = operationDefinition.getOperation(); + GraphQLSchema graphQLSchema = getValidationContext().getSchema(); + if (documentOperation == OperationDefinition.Operation.MUTATION + && graphQLSchema.getMutationType() == null) { + String message = i18n(UnknownOperation, "KnownOperationTypes.noOperation", formatOperation(documentOperation)); + addError(UnknownOperation, operationDefinition.getSourceLocation(), message); + } else if (documentOperation == OperationDefinition.Operation.SUBSCRIPTION + && graphQLSchema.getSubscriptionType() == null) { + String message = i18n(UnknownOperation, "KnownOperationTypes.noOperation", formatOperation(documentOperation)); + addError(UnknownOperation, operationDefinition.getSourceLocation(), message); + } else if (documentOperation == OperationDefinition.Operation.QUERY + && graphQLSchema.getQueryType() == null) { + // This is unlikely to happen, as a validated GraphQLSchema must have a Query type by definition + String message = i18n(UnknownOperation, "KnownOperationTypes.noOperation", formatOperation(documentOperation)); + addError(UnknownOperation, operationDefinition.getSourceLocation(), message); + } + } + + private String formatOperation(OperationDefinition.Operation operation) { + return StringKit.capitalize(operation.name().toLowerCase()); + } +} diff --git a/src/main/java/graphql/validation/rules/OverlappingFieldsCanBeMerged.java b/src/main/java/graphql/validation/rules/OverlappingFieldsCanBeMerged.java index a674e46929..aa877d8cfd 100644 --- a/src/main/java/graphql/validation/rules/OverlappingFieldsCanBeMerged.java +++ b/src/main/java/graphql/validation/rules/OverlappingFieldsCanBeMerged.java @@ -10,6 +10,7 @@ import graphql.language.FragmentDefinition; import graphql.language.FragmentSpread; import graphql.language.InlineFragment; +import graphql.language.OperationDefinition; import graphql.language.Selection; import graphql.language.SelectionSet; import graphql.schema.GraphQLFieldDefinition; @@ -47,7 +48,6 @@ import static graphql.util.FpKit.filterSet; import static graphql.util.FpKit.groupingBy; import static graphql.validation.ValidationErrorType.FieldsConflict; -import static java.lang.String.format; @Internal public class OverlappingFieldsCanBeMerged extends AbstractRule { @@ -62,10 +62,15 @@ public OverlappingFieldsCanBeMerged(ValidationContext validationContext, Validat } @Override - public void leaveSelectionSet(SelectionSet selectionSet) { + public void checkOperationDefinition(OperationDefinition operationDefinition) { + super.checkOperationDefinition(operationDefinition); + impl(operationDefinition.getSelectionSet(), getValidationContext().getOutputType()); + } + + public void impl(SelectionSet selectionSet, GraphQLOutputType graphQLOutputType) { Map> fieldMap = new LinkedHashMap<>(); Set visitedFragmentSpreads = new LinkedHashSet<>(); - collectFields(fieldMap, selectionSet, getValidationContext().getOutputType(), visitedFragmentSpreads); + collectFields(fieldMap, selectionSet, graphQLOutputType, visitedFragmentSpreads); List conflicts = findConflicts(fieldMap); for (Conflict conflict : conflicts) { if (conflictsReported.contains(conflict.fields)) { diff --git a/src/main/java/graphql/validation/rules/VariableDefaultValuesOfCorrectType.java b/src/main/java/graphql/validation/rules/VariableDefaultValuesOfCorrectType.java index c67026e8b6..f57a24f940 100644 --- a/src/main/java/graphql/validation/rules/VariableDefaultValuesOfCorrectType.java +++ b/src/main/java/graphql/validation/rules/VariableDefaultValuesOfCorrectType.java @@ -27,7 +27,7 @@ public void checkVariableDefinition(VariableDefinition variableDefinition) { return; } if (variableDefinition.getDefaultValue() != null - && !getValidationUtil().isValidLiteralValue(variableDefinition.getDefaultValue(), inputType, getValidationContext().getSchema(), getValidationContext().getGraphQLContext(), Locale.getDefault())) { + && !getValidationUtil().isValidLiteralValue(variableDefinition.getDefaultValue(), inputType, getValidationContext().getSchema(), getValidationContext().getGraphQLContext(), getValidationContext().getI18n().getLocale())) { String message = i18n(BadValueForDefaultArg, "VariableDefaultValuesOfCorrectType.badDefault", variableDefinition.getDefaultValue(), simplePrint(inputType)); addError(BadValueForDefaultArg, variableDefinition.getSourceLocation(), message); } diff --git a/src/main/resources/i18n/Parsing.properties b/src/main/resources/i18n/Parsing.properties index 91a7f276f4..474fba1545 100644 --- a/src/main/resources/i18n/Parsing.properties +++ b/src/main/resources/i18n/Parsing.properties @@ -16,6 +16,7 @@ InvalidSyntax.full=Invalid syntax with ANTLR error ''{0}'' at line {1} column {2 InvalidSyntaxBail.noToken=Invalid syntax at line {0} column {1} InvalidSyntaxBail.full=Invalid syntax with offending token ''{0}'' at line {1} column {2} # +InvalidSyntaxMoreTokens.noMessage=Invalid syntax encountered. There are extra tokens in the text that have not been consumed. Offending token at line {0} column {1} InvalidSyntaxMoreTokens.full=Invalid syntax encountered. There are extra tokens in the text that have not been consumed. Offending token ''{0}'' at line {1} column {2} # ParseCancelled.full=More than {0} ''{1}'' tokens have been presented. To prevent Denial Of Service attacks, parsing has been cancelled. diff --git a/src/main/resources/i18n/Parsing_de.properties b/src/main/resources/i18n/Parsing_de.properties index 2d3c43f777..55127ff689 100644 --- a/src/main/resources/i18n/Parsing_de.properties +++ b/src/main/resources/i18n/Parsing_de.properties @@ -16,6 +16,7 @@ InvalidSyntax.full=Ungültige Syntax, ANTLR-Fehler ''{0}'' in Zeile {1} Spalte { InvalidSyntaxBail.noToken=Ungültige Syntax in Zeile {0} Spalte {1} InvalidSyntaxBail.full=Ungültige Syntax wegen des ungültigen Tokens ''{0}'' in Zeile {1} Spalte {2} # +InvalidSyntaxMoreTokens.noMessage=Es wurde eine ungültige Syntax festgestellt. Es gibt zusätzliche Token im Text, die nicht konsumiert wurden. Ungültiges Token in Zeile {0} Spalte {1} InvalidSyntaxMoreTokens.full=Es wurde eine ungültige Syntax festgestellt. Es gibt zusätzliche Token im Text, die nicht konsumiert wurden. Ungültiges Token ''{0}'' in Zeile {1} Spalte {2} # ParseCancelled.full=Es wurden mehr als {0} ''{1}'' Token präsentiert. Um Denial-of-Service-Angriffe zu verhindern, wurde das Parsing abgebrochen. diff --git a/src/main/resources/i18n/Parsing_nl.properties b/src/main/resources/i18n/Parsing_nl.properties index dfa099a91a..cfd8457825 100644 --- a/src/main/resources/i18n/Parsing_nl.properties +++ b/src/main/resources/i18n/Parsing_nl.properties @@ -15,6 +15,7 @@ InvalidSyntax.full=Ongeldige syntaxis, ANTLR foutmelding ''{0}'' op lijn {1} kol InvalidSyntaxBail.noToken=Ongeldige syntaxis op lijn {0} kolom {1} InvalidSyntaxBail.full=Ongeldige syntaxis wegens ongeldige token ''{0}'' op lijn {1} kolom {2} # +InvalidSyntaxMoreTokens.noMessage=Ongeldige syntaxis tegengekomen. Er zijn tokens in de tekst die niet zijn verwerkt. Ongeldige token op lijn {0} kolom {1} InvalidSyntaxMoreTokens.full=Ongeldige syntaxis tegengekomen. Er zijn tokens in de tekst die niet zijn verwerkt. Ongeldige token ''{0}'' op lijn {1} kolom {2} # ParseCancelled.full=Meer dan {0} ''{1}'' tokens zijn gepresenteerd. Om een DDoS-aanval te voorkomen is het parsen gestopt. diff --git a/src/main/resources/i18n/Validation.properties b/src/main/resources/i18n/Validation.properties index c12920da07..a9403bea5b 100644 --- a/src/main/resources/i18n/Validation.properties +++ b/src/main/resources/i18n/Validation.properties @@ -38,6 +38,8 @@ KnownFragmentNames.undefinedFragment=Validation error ({0}) : Undefined fragment # KnownTypeNames.unknownType=Validation error ({0}) : Unknown type ''{1}'' # +KnownOperationTypes.noOperation=Validation error ({0}): The ''{1}'' operation is not supported by the schema +# LoneAnonymousOperation.withOthers=Validation error ({0}) : Anonymous operation with other operations LoneAnonymousOperation.namedOperation=Validation error ({0}) : Operation ''{1}'' is following anonymous operation # @@ -106,4 +108,6 @@ ArgumentValidationUtil.handleNotObjectError=Validation error ({0}) : argument '' ArgumentValidationUtil.handleMissingFieldsError=Validation error ({0}) : argument ''{1}'' with value ''{2}'' is missing required fields ''{3}'' # suppress inspection "UnusedProperty" ArgumentValidationUtil.handleExtraFieldError=Validation error ({0}) : argument ''{1}'' with value ''{2}'' contains a field not in ''{3}'': ''{4}'' - +# suppress inspection "UnusedProperty" +# suppress inspection "UnusedMessageFormatParameter" +ArgumentValidationUtil.extraOneOfFieldsError=Validation error ({0}) : Exactly one key must be specified for OneOf type ''{3}''. \ No newline at end of file diff --git a/src/main/resources/i18n/Validation_de.properties b/src/main/resources/i18n/Validation_de.properties index fec637643c..7823c9d511 100644 --- a/src/main/resources/i18n/Validation_de.properties +++ b/src/main/resources/i18n/Validation_de.properties @@ -30,6 +30,8 @@ KnownFragmentNames.undefinedFragment=Validierungsfehler ({0}) : Undefiniertes Fr # KnownTypeNames.unknownType=Validierungsfehler ({0}) : Unbekannter Typ ''{1}'' # +KnownOperationTypes.noOperation=Validierungsfehler ({0}): ''{1}'' Operation wird vom Schema nicht unterstützt +# LoneAnonymousOperation.withOthers=Validierungsfehler ({0}) : Anonyme Operation mit anderen Operationen LoneAnonymousOperation.namedOperation=Validierungsfehler ({0}) : Operation ''{1}'' folgt der anonymen Operation # diff --git a/src/test/groovy/graphql/DataFetcherTest.groovy b/src/test/groovy/graphql/DataFetcherTest.groovy index aa15db46dd..2f57c41efd 100644 --- a/src/test/groovy/graphql/DataFetcherTest.groovy +++ b/src/test/groovy/graphql/DataFetcherTest.groovy @@ -1,8 +1,10 @@ package graphql +import graphql.schema.GraphQLFieldDefinition import graphql.schema.GraphQLOutputType import graphql.schema.PropertyDataFetcher +import graphql.schema.SingletonPropertyDataFetcher import spock.lang.Specification import static graphql.Scalars.GraphQLBoolean @@ -55,43 +57,95 @@ class DataFetcherTest extends Specification { } - def env(GraphQLOutputType type) { - newDataFetchingEnvironment().source(dataHolder).fieldType(type).build() + def env(String propertyName, GraphQLOutputType type) { + GraphQLFieldDefinition fieldDefinition = mkField(propertyName, type) + newDataFetchingEnvironment().source(dataHolder).fieldType(type).fieldDefinition(fieldDefinition).build() + } + + def mkField(String propertyName, GraphQLOutputType type) { + GraphQLFieldDefinition.newFieldDefinition().name(propertyName).type(type).build() } def "get property value"() { given: - def environment = env(GraphQLString) + def environment = env("property", GraphQLString) + def field = mkField("property", GraphQLString) when: - def result = new PropertyDataFetcher("property").get(environment) + def result = fetcher.get(environment) then: result == "propertyValue" + + when: + result = fetcher.get(field, dataHolder, { environment }) + then: + result == "propertyValue" + + where: + fetcher | _ + new PropertyDataFetcher("property") | _ + SingletonPropertyDataFetcher.singleton() | _ } def "get Boolean property value"() { given: - def environment = env(GraphQLBoolean) + def environment = env("booleanField", GraphQLBoolean) + def field = mkField("booleanField", GraphQLBoolean) + + when: + def result = fetcher.get(environment) + then: + result == true + when: - def result = new PropertyDataFetcher("booleanField").get(environment) + result = fetcher.get(field, dataHolder, { environment }) then: result == true + + where: + fetcher | _ + new PropertyDataFetcher("booleanField") | _ + SingletonPropertyDataFetcher.singleton() | _ } def "get Boolean property value with get"() { given: - def environment = env(GraphQLBoolean) + def environment = env("booleanFieldWithGet", GraphQLBoolean) + def field = mkField("booleanFieldWithGet", GraphQLBoolean) + + when: + def result = fetcher.get(environment) + then: + result == false + when: - def result = new PropertyDataFetcher("booleanFieldWithGet").get(environment) + result = fetcher.get(field, dataHolder, { environment }) then: result == false + + where: + fetcher | _ + new PropertyDataFetcher("booleanFieldWithGet") | _ + SingletonPropertyDataFetcher.singleton() | _ } def "get public field value as property"() { given: - def environment = env(GraphQLString) + def environment = env("publicField", GraphQLString) + def field = mkField("publicField", GraphQLString) + + when: + def result = fetcher.get(environment) + then: + result == "publicValue" + when: - def result = new PropertyDataFetcher("publicField").get(environment) + result = fetcher.get(field, dataHolder, { environment }) then: result == "publicValue" + + where: + fetcher | _ + new PropertyDataFetcher("publicField") | _ + SingletonPropertyDataFetcher.singleton() | _ } } diff --git a/src/test/groovy/graphql/DefaultValuesTest.groovy b/src/test/groovy/graphql/DefaultValuesTest.groovy new file mode 100644 index 0000000000..ccb26fe979 --- /dev/null +++ b/src/test/groovy/graphql/DefaultValuesTest.groovy @@ -0,0 +1,116 @@ +package graphql + +import graphql.schema.DataFetcher +import spock.lang.Specification + +import static graphql.ExecutionInput.newExecutionInput + +class DefaultValuesTest extends Specification { + + def "provided values override defaults"() { + def sdl = """ + type Query { + myField(deleted: Boolean = true) : String + myField2(deleted: Boolean = true) : String + } + """ + + def df = { env -> + return "dataFetcherArg=" + env.getArgument("deleted") + } as DataFetcher + def graphQL = TestUtil.graphQL(sdl, [Query: [ + myField : df, + myField2: df]] + ).build() + + // + // The variable is present in the variables map and its explicitly null + // + // https://spec.graphql.org/draft/#sec-Coercing-Variable-Values + // + when: + def ei = newExecutionInput(''' + query myQuery($deleted: Boolean = false) { + myField(deleted : $deleted) + } + ''').variables(["deleted": null]).build() + def er = graphQL.execute(ei) + + then: + er.errors.isEmpty() + er.data == [myField: "dataFetcherArg=null"] + + // + // The variable is present in the variables map and its explicitly a value + // + // https://spec.graphql.org/draft/#sec-Coercing-Variable-Values + // + when: + ei = newExecutionInput(''' + query myQuery($deleted: Boolean = false) { + myField(deleted : $deleted) + } + ''').variables(["deleted": true]).build() + er = graphQL.execute(ei) + + then: + er.errors.isEmpty() + er.data == [myField: "dataFetcherArg=true"] + + // + // The variable is NOT present in the variables map it should use a default + // value from the variable declaration + // + // https://spec.graphql.org/draft/#sec-Coercing-Variable-Values + // + when: + ei = newExecutionInput(''' + query myQuery($deleted: Boolean = false) { + myField(deleted : $deleted) + } + ''').variables(["NotProvided": "valueNotProvided"]).build() + er = graphQL.execute(ei) + + then: + er.errors.isEmpty() + er.data == [myField: "dataFetcherArg=false"] + + // + // The variable is NOT present in the variables map and a variable is NOT used + // it should use a default value from the field declaration + // + // + when: + ei = newExecutionInput(''' + query myQuery($deleted: Boolean = false) { + myField + myField2(deleted : $deleted) + } + ''').variables(["NotProvided": "valueNotProvided"]).build() + er = graphQL.execute(ei) + + then: + er.errors.isEmpty() + er.data == [myField : "dataFetcherArg=true", + myField2: "dataFetcherArg=false"] + + // + // If there are no variables on the query operation + // it should use a default value from the field declaration + // or literals provided + // + when: + ei = newExecutionInput(''' + query myQuery { + myField(deleted :false) + myField2 + } + ''').variables(["NotProvided": "valueNotProvided"]).build() + er = graphQL.execute(ei) + + then: + er.errors.isEmpty() + er.data == [myField : "dataFetcherArg=false", + myField2: "dataFetcherArg=true"] + } +} diff --git a/src/test/groovy/graphql/EngineRunningTest.groovy b/src/test/groovy/graphql/EngineRunningTest.groovy new file mode 100644 index 0000000000..46104653d4 --- /dev/null +++ b/src/test/groovy/graphql/EngineRunningTest.groovy @@ -0,0 +1,500 @@ +package graphql + +import graphql.execution.DataFetcherExceptionHandler +import graphql.execution.DataFetcherExceptionHandlerResult +import graphql.execution.EngineRunningObserver +import graphql.execution.ExecutionId +import graphql.execution.instrumentation.Instrumentation +import graphql.execution.instrumentation.InstrumentationState +import graphql.execution.instrumentation.parameters.InstrumentationCreateStateParameters +import graphql.execution.instrumentation.parameters.InstrumentationExecutionParameters +import graphql.execution.preparsed.PreparsedDocumentEntry +import graphql.execution.preparsed.PreparsedDocumentProvider +import graphql.parser.Parser +import graphql.schema.DataFetcher +import spock.lang.Specification + +import java.util.concurrent.CompletableFuture +import java.util.concurrent.CopyOnWriteArrayList +import java.util.concurrent.locks.ReentrantLock +import java.util.function.Function + +import static graphql.ExecutionInput.newExecutionInput +import static graphql.execution.EngineRunningObserver.ENGINE_RUNNING_OBSERVER_KEY +import static graphql.execution.EngineRunningObserver.RunningState +import static graphql.execution.EngineRunningObserver.RunningState.NOT_RUNNING +import static graphql.execution.EngineRunningObserver.RunningState.RUNNING + +class EngineRunningTest extends Specification { + + + private static List trackStates(ExecutionInput ei) { + List states = new CopyOnWriteArrayList<>(); + ei.getGraphQLContext().put(ENGINE_RUNNING_OBSERVER_KEY, { + ExecutionId executionId, GraphQLContext context, RunningState running -> + states.add(running) + } as EngineRunningObserver); + states + } + + def "preparsed async document provider"() { + given: + def sdl = ''' + + type Query { + hello: String + } + ''' + def df = { env -> + return "world" + } as DataFetcher + def fetchers = ["Query": ["hello": df]] + def schema = TestUtil.schema(sdl, fetchers) + + def query = "{ hello }" + def document = Parser.parse(query) + + CompletableFuture cf = new CompletableFuture() + PreparsedDocumentProvider preparsedDocumentProvider = new PreparsedDocumentProvider() { + @Override + CompletableFuture getDocumentAsync(ExecutionInput executionInput, Function parseAndValidateFunction) { + return cf + } + } + def graphQL = GraphQL.newGraphQL(schema).preparsedDocumentProvider(preparsedDocumentProvider).build() + + def ei = newExecutionInput(query).build() + + List states = trackStates(ei) + + when: + def er = graphQL.executeAsync(ei) + then: + states == [RUNNING, NOT_RUNNING] + + when: + states.clear() + cf.complete(new PreparsedDocumentEntry(document)) + then: + states == [RUNNING, NOT_RUNNING] + er.get().data == [hello: "world"] + + + } + + def "engine starts before instrumentation state and handles async state correctly"() { + given: + def sdl = ''' + + type Query { + hello: String + } + ''' + def df = { env -> + return "world" + } as DataFetcher + def fetchers = ["Query": ["hello": df]] + def schema = TestUtil.schema(sdl, fetchers) + + CompletableFuture cf = new CompletableFuture() + Instrumentation instrumentation = new Instrumentation() { + + @Override + CompletableFuture createStateAsync(InstrumentationCreateStateParameters parameters) { + return cf + } + } + def graphQL = GraphQL.newGraphQL(schema).instrumentation(instrumentation).build() + + def query = "{ hello }" + def ei = newExecutionInput(query).build() + + List states = trackStates(ei) + + when: + def er = graphQL.executeAsync(ei) + then: + states == [RUNNING, NOT_RUNNING] + + when: + states.clear() + cf.complete(new InstrumentationState() {}) + then: + states == [RUNNING, NOT_RUNNING] + er.get().data == [hello: "world"] + + + } + + def "async instrument execution result"() { + given: + def sdl = ''' + + type Query { + hello: String + } + ''' + def df = { env -> + return "world" + } as DataFetcher + def fetchers = ["Query": ["hello": df]] + def schema = TestUtil.schema(sdl, fetchers) + + CompletableFuture cf = new CompletableFuture() + Instrumentation instrumentation = new Instrumentation() { + + @Override + CompletableFuture instrumentExecutionResult(ExecutionResult executionResult, InstrumentationExecutionParameters parameters, InstrumentationState state) { + return cf + } + } + def graphQL = GraphQL.newGraphQL(schema).instrumentation(instrumentation).build() + + def query = "{ hello }" + def ei = newExecutionInput(query).build() + + List states = trackStates(ei) + + when: + def er = graphQL.executeAsync(ei) + then: + states == [RUNNING, NOT_RUNNING] + + when: + states.clear() + cf.complete(ExecutionResultImpl.newExecutionResult().data([hello: "world-modified"]).build()) + then: + er.get().data == [hello: "world-modified"] + states == [RUNNING, NOT_RUNNING] + + + } + + + def "engine running state is observed"() { + given: + def sdl = ''' + + type Query { + hello: String + } + ''' + def df = { env -> + return "world" + } as DataFetcher + def fetchers = ["Query": ["hello": df]] + def schema = TestUtil.schema(sdl, fetchers) + def graphQL = GraphQL.newGraphQL(schema).build() + + def query = "{ hello }" + def ei = newExecutionInput(query).build() + + List states = trackStates(ei) + + when: + def er = graphQL.execute(ei) + then: + er.data == [hello: "world"] + states == [RUNNING, NOT_RUNNING] + } + + def "multiple async DF"() { + given: + def sdl = ''' + + type Query { + hello: String + hello2: String + foo: Foo + someStaticValue: Bar + } + type Foo { + name: String + } + type Bar { + staticValue: String + } + ''' + CompletableFuture cf1 = new CompletableFuture(); + CompletableFuture cf2 = new CompletableFuture(); + CompletableFuture cfFooName = new CompletableFuture(); + def df1 = { env -> + return cf1; + } as DataFetcher + + def df2 = { env -> + return cf2; + } as DataFetcher + + def dfFoo = { env -> + return "Foo"; + } as DataFetcher + + def dfFooName = { env -> + return cfFooName; + } as DataFetcher + + def dfStaticValue = { env -> + return [staticValue: "staticValue"] + } as DataFetcher + + + def fetchers = [Query: ["hello": df1, "hello2": df2, foo: dfFoo, someStaticValue: dfStaticValue], Foo: [name: dfFooName]] + def schema = TestUtil.schema(sdl, fetchers) + def graphQL = GraphQL.newGraphQL(schema).build() + + def query = "{ hello hello2 foo { name } someStaticValue {staticValue} }" + def ei = newExecutionInput(query).build() + + List states = trackStates(ei) + + when: + def er = graphQL.executeAsync(ei) + then: + states == [RUNNING, NOT_RUNNING] + + when: + states.clear(); + cf1.complete("world") + then: + states == [RUNNING, NOT_RUNNING] + + when: + states.clear(); + cfFooName.complete("FooName") + then: + states == [RUNNING, NOT_RUNNING] + + + when: + states.clear() + cf2.complete("world2") + then: + states == [RUNNING, NOT_RUNNING] + er.get().data == [hello: "world", hello2: "world2", foo: [name: "FooName"], someStaticValue: [staticValue: "staticValue"]] + } + + + def "engine running state is observed with one async datafetcher"() { + given: + def sdl = ''' + + type Query { + hello: String + } + ''' + CompletableFuture cf = new CompletableFuture(); + def df = { env -> + return cf; + } as DataFetcher + def fetchers = ["Query": ["hello": df]] + def schema = TestUtil.schema(sdl, fetchers) + def graphQL = GraphQL.newGraphQL(schema).build() + + def query = "{ hello }" + def ei = newExecutionInput(query).build() + + List states = trackStates(ei) + + when: + def er = graphQL.executeAsync(ei) + then: + states == [RUNNING, NOT_RUNNING] + + when: + states.clear(); + cf.complete("world") + + then: + states == [RUNNING, NOT_RUNNING] + er.get().data == [hello: "world"] + } + + def "engine running state is observed with one dependent async datafetcher"() { + given: + def sdl = ''' + + type Query { + hello: String + } + ''' + CompletableFuture cf = new CompletableFuture(); + def df = { env -> + return cf.thenApply { it -> it } + } as DataFetcher + def fetchers = ["Query": ["hello": df]] + def schema = TestUtil.schema(sdl, fetchers) + def graphQL = GraphQL.newGraphQL(schema).build() + + def query = "{ hello }" + def ei = newExecutionInput(query).build() + + List states = trackStates(ei) + + when: + def er = graphQL.executeAsync(ei) + then: + states == [RUNNING, NOT_RUNNING] + + when: + states.clear(); + cf.complete("world") + + then: + er.get().data == [hello: "world"] + states == [RUNNING, NOT_RUNNING] + } + + + def "datafetcher failing with async exception handler"() { + given: + def sdl = ''' + + type Query { + hello: String + } + ''' + def df = { env -> + throw new RuntimeException("boom") + } as DataFetcher + + ReentrantLock reentrantLock = new ReentrantLock() + reentrantLock.lock(); + + def exceptionHandler = { param -> + def async = CompletableFuture.supplyAsync { + reentrantLock.lock(); + return DataFetcherExceptionHandlerResult.newResult(GraphqlErrorBuilder + .newError(param.dataFetchingEnvironment).message("recovered").build()).build() + } + return async + } as DataFetcherExceptionHandler + + def fetchers = ["Query": ["hello": df]] + def schema = TestUtil.schema(sdl, fetchers) + def graphQL = GraphQL.newGraphQL(schema).defaultDataFetcherExceptionHandler(exceptionHandler).build() + + def query = "{ hello }" + def ei = newExecutionInput(query).build() + + List states = trackStates(ei) + + when: + def er = graphQL.executeAsync(ei) + states.clear() + reentrantLock.unlock() + def result = er.get() + + then: + result.errors.collect { it.message } == ["recovered"] + // we expect simply going from running to finshed + states == [RUNNING, NOT_RUNNING] + } + + def "async datafetcher failing with async exception handler"() { + given: + def sdl = ''' + + type Query { + hello: String + } + ''' + def cf = new CompletableFuture(); + def df = { env -> + return cf.thenApply { it -> throw new RuntimeException("boom") } + } as DataFetcher + + ReentrantLock reentrantLock = new ReentrantLock() + reentrantLock.lock(); + + def exceptionHandler = { param -> + def async = CompletableFuture.supplyAsync { + reentrantLock.lock(); + return DataFetcherExceptionHandlerResult.newResult(GraphqlErrorBuilder + .newError(param.dataFetchingEnvironment).message("recovered").build()).build() + } + return async + } as DataFetcherExceptionHandler + + def fetchers = ["Query": ["hello": df]] + def schema = TestUtil.schema(sdl, fetchers) + def graphQL = GraphQL.newGraphQL(schema).defaultDataFetcherExceptionHandler(exceptionHandler).build() + + def query = "{ hello }" + def ei = newExecutionInput(query).build() + + List states = trackStates(ei) + + when: + def er = graphQL.executeAsync(ei) + + then: + states == [RUNNING, NOT_RUNNING] + + when: + states.clear() + cf.complete("foo") + + then: + states == [RUNNING, NOT_RUNNING] + + when: + states.clear() + reentrantLock.unlock() + def result = er.get() + + then: + result.errors.collect { it.message } == ["recovered"] + // we expect simply going from running to finshed + new ArrayList<>(states) == [RUNNING, NOT_RUNNING] + } + + + def "engine running state is observed with two async datafetcher"() { + given: + def sdl = ''' + + type Query { + hello: String + hello2: String + } + ''' + CompletableFuture cf1 = new CompletableFuture(); + CompletableFuture cf2 = new CompletableFuture(); + def df = { env -> + return cf1; + } as DataFetcher + def df2 = { env -> + return cf2 + } as DataFetcher + + def fetchers = ["Query": ["hello": df, "hello2": df2]] + def schema = TestUtil.schema(sdl, fetchers) + def graphQL = GraphQL.newGraphQL(schema).build() + + def query = "{ hello hello2 }" + def ei = newExecutionInput(query).build() + + List states = trackStates(ei) + + when: + def er = graphQL.executeAsync(ei) + then: + states == [RUNNING, NOT_RUNNING] + + when: + states.clear(); + cf1.complete("world") + + then: + states == [RUNNING, NOT_RUNNING] + + when: + states.clear(); + cf2.complete("world2") + + then: + states == [RUNNING, NOT_RUNNING] + er.get().data == [hello: "world", hello2: "world2"] + } +} diff --git a/src/test/groovy/graphql/ExecutionInputTest.groovy b/src/test/groovy/graphql/ExecutionInputTest.groovy index b3243e0d26..d2cb3bc930 100644 --- a/src/test/groovy/graphql/ExecutionInputTest.groovy +++ b/src/test/groovy/graphql/ExecutionInputTest.groovy @@ -3,10 +3,13 @@ package graphql import graphql.execution.ExecutionId import graphql.schema.DataFetcher import graphql.schema.DataFetchingEnvironment +import org.awaitility.Awaitility import org.dataloader.DataLoaderRegistry import spock.lang.Specification -import java.util.function.UnaryOperator +import java.time.Duration +import java.util.concurrent.CompletableFuture +import java.util.concurrent.CountDownLatch class ExecutionInputTest extends Specification { @@ -104,9 +107,11 @@ class ExecutionInputTest extends Specification { .locale(Locale.GERMAN) .build() def graphQLContext = executionInputOld.getGraphQLContext() - def executionInput = executionInputOld.transform({ bldg -> bldg - .query("new query") - .variables(variables) }) + def executionInput = executionInputOld.transform({ bldg -> + bldg + .query("new query") + .variables(variables) + }) then: executionInput.graphQLContext == graphQLContext diff --git a/src/test/groovy/graphql/ExecutionResultImplTest.groovy b/src/test/groovy/graphql/ExecutionResultImplTest.groovy index a1bb59e2a5..8b8894cca3 100644 --- a/src/test/groovy/graphql/ExecutionResultImplTest.groovy +++ b/src/test/groovy/graphql/ExecutionResultImplTest.groovy @@ -176,29 +176,58 @@ class ExecutionResultImplTest extends Specification { def "test setting extensions"() { given: - def startEr = new ExecutionResultImpl("Some Data", KNOWN_ERRORS,null) + def startEr = new ExecutionResultImpl("Some Data", KNOWN_ERRORS, null) - def er = ExecutionResultImpl.newExecutionResult().from(startEr).extensions([ext1:"here"]).build() + def er = ExecutionResultImpl.newExecutionResult().from(startEr).extensions([ext1: "here"]).build() when: def extensions = er.getExtensions() then: - extensions == [ext1:"here"] + extensions == [ext1: "here"] } def "test adding extension"() { given: - def startEr = new ExecutionResultImpl("Some Data", KNOWN_ERRORS,[ext1:"here"]) + def startEr = new ExecutionResultImpl("Some Data", KNOWN_ERRORS, [ext1: "here"]) - def er = ExecutionResultImpl.newExecutionResult().from(startEr).addExtension("ext2","aswell").build() + def er = ExecutionResultImpl.newExecutionResult().from(startEr).addExtension("ext2", "aswell").build() when: def extensions = er.getExtensions() then: - extensions == [ext1:"here", ext2 : "aswell"] + extensions == [ext1: "here", ext2: "aswell"] } + def "can parse out a map of to an ER"() { + when: + def map = [data: [f: "v"]] + def er = ExecutionResult.fromSpecification(map) + then: + er.data == [f: "v"] + er.extensions == null + er.errors.isEmpty() + + when: + // GraphqlErrorHelperTest is more extensive tests for error parsing which we will not repeat here + map = [errors: [[message: "m0"], [message: "m1"]]] + er = ExecutionResult.fromSpecification(map) + then: + er.data == null + er.extensions == null + !er.errors.isEmpty() + er.errors[0].message == "m0" + er.errors[1].message == "m1" + + when: + map = [data: [f: "v"], extensions: [ext1: "here", ext2: "and here"]] + er = ExecutionResult.fromSpecification(map) + then: + er.data == [f: "v"] + er.extensions == [ext1: "here", ext2: "and here"] + er.errors.isEmpty() + + } } diff --git a/src/test/groovy/graphql/GraphQLContextTest.groovy b/src/test/groovy/graphql/GraphQLContextTest.groovy index 8eebb17653..d411143db6 100644 --- a/src/test/groovy/graphql/GraphQLContextTest.groovy +++ b/src/test/groovy/graphql/GraphQLContextTest.groovy @@ -276,4 +276,20 @@ class GraphQLContextTest extends Specification { executionResult.errors.isEmpty() executionResult.data == [field: "ctx1value"] } + + def "boolean getters work"() { + when: + def context = GraphQLContext.newContext().of( + "f", false, + "t", true, + "notABool", "true" + ).build() + + then: + !context.getBoolean("f") + context.getBoolean("t") + !context.getBoolean("notABool") + !context.getBoolean("missing") + context.getBoolean("missing", true) + } } diff --git a/src/test/groovy/graphql/GraphQLErrorTest.groovy b/src/test/groovy/graphql/GraphQLErrorTest.groovy index ca9fc1e8d7..cf80eb845f 100644 --- a/src/test/groovy/graphql/GraphQLErrorTest.groovy +++ b/src/test/groovy/graphql/GraphQLErrorTest.groovy @@ -31,7 +31,7 @@ class GraphQLErrorTest extends Specification { .description("Test ValidationError") .build() | [ - locations: [[line: 666, column: 999], [line: 333, column: 0]], + locations: [[line: 666, column: 999], [line: 333, column: 1]], message : "Test ValidationError", extensions:[classification:"ValidationError"], ] @@ -44,7 +44,7 @@ class GraphQLErrorTest extends Specification { new InvalidSyntaxError(mkLocations(), "Not good syntax m'kay") | [ - locations: [[line: 666, column: 999], [line: 333, column: 0]], + locations: [[line: 666, column: 999], [line: 333, column: 1]], message : "Not good syntax m'kay", extensions:[classification:"InvalidSyntax"], ] @@ -72,6 +72,48 @@ class GraphQLErrorTest extends Specification { } + def "toSpecification filters out error locations with line and column not starting at 1, as required in spec"() { + // See specification wording: https://spec.graphql.org/draft/#sec-Errors.Error-Result-Format + + given: + def error = ValidationError.newValidationError() + .validationErrorType(ValidationErrorType.UnknownType) + .sourceLocations([mkLocation(-1, -1), mkLocation(333, 1)]) + .description("Test ValidationError") + .build() + + def expectedMap = [ + locations: [ + [line: 333, column: 1] + ], + message: "Test ValidationError", + extensions: [classification:"ValidationError"] + ] + + expect: + error.toSpecification() == expectedMap + } + + def "toSpecification filters out null error locations"() { + given: + def error = ValidationError.newValidationError() + .validationErrorType(ValidationErrorType.UnknownType) + .sourceLocations([null, mkLocation(333, 1)]) + .description("Test ValidationError") + .build() + + def expectedMap = [ + locations: [ + [line: 333, column: 1] + ], + message: "Test ValidationError", + extensions: [classification:"ValidationError"] + ] + + expect: + error.toSpecification() == expectedMap + } + class CustomException extends RuntimeException implements GraphQLError { private LinkedHashMap map @@ -110,7 +152,7 @@ class GraphQLErrorTest extends Specification { } List mkLocations() { - return [mkLocation(666, 999), mkLocation(333, 0)] + return [mkLocation(666, 999), mkLocation(333, 1)] } SourceLocation mkLocation(int line, int column) { diff --git a/src/test/groovy/graphql/GraphQLTest.groovy b/src/test/groovy/graphql/GraphQLTest.groovy index 8235ac5235..7b9c48ad7d 100644 --- a/src/test/groovy/graphql/GraphQLTest.groovy +++ b/src/test/groovy/graphql/GraphQLTest.groovy @@ -12,7 +12,6 @@ import graphql.execution.ExecutionContext import graphql.execution.ExecutionId import graphql.execution.ExecutionIdProvider import graphql.execution.ExecutionStrategyParameters -import graphql.execution.MissingRootTypeException import graphql.execution.ResultNodesInfo import graphql.execution.SubscriptionExecutionStrategy import graphql.execution.ValueUnboxer @@ -328,7 +327,7 @@ class GraphQLTest extends Specification { result.errors.size() == 0 } - def "document with two operations but no specified operation throws"() { + def "document with two operations but no specified operation does not throw"() { given: GraphQLSchema schema = newSchema().query( @@ -344,13 +343,15 @@ class GraphQLTest extends Specification { """ when: - GraphQL.newGraphQL(schema).build().execute(query) + def er = GraphQL.newGraphQL(schema).build().execute(query) then: - thrown(GraphQLException) + noExceptionThrown() + !er.errors.isEmpty() + er.errors[0].message.contains("Must provide operation name if query contains multiple operations") } - def "null mutation type does not throw an npe re: #345 but returns and error"() { + def "null mutation type does not throw an npe but returns and error"() { given: GraphQLSchema schema = newSchema().query( @@ -370,7 +371,7 @@ class GraphQLTest extends Specification { then: result.errors.size() == 1 - result.errors[0].class == MissingRootTypeException + ((ValidationError) result.errors[0]).validationErrorType == ValidationErrorType.UnknownOperation } def "#875 a subscription query against a schema that doesn't support subscriptions should result in a GraphQL error"() { @@ -393,7 +394,7 @@ class GraphQLTest extends Specification { then: result.errors.size() == 1 - result.errors[0].class == MissingRootTypeException + ((ValidationError) result.errors[0]).validationErrorType == ValidationErrorType.UnknownOperation } def "query with int literal too large"() { @@ -1569,4 +1570,39 @@ many lines'''] er.data == [hello: [[name: "w1"], [name: "w2"], [name: "w3"]]] } + def "exceptions thrown are turned into graphql errors"() { + def sdl = """ + type Query { + f(arg : Boolean) : String + } + """ + + def graphQL = TestUtil.graphQL(sdl).build() + + when: + def ei = newExecutionInput("query badSyntax {").build() + def er = graphQL.execute(ei) + then: + !er.errors.isEmpty() + er.errors[0].message.contains("Invalid syntax with offending token") + + + when: + + ei = newExecutionInput('query badInput($varX : Boolean) { f(arg : $varX) }') + .variables([varX: "bad"]).build() + er = graphQL.execute(ei) + then: + !er.errors.isEmpty() + er.errors[0].message.contains("Variable 'varX' has an invalid value") + + when: + + ei = newExecutionInput("query ok1 { f } query ok2 { f } ") + .operationName("X").build() + er = graphQL.execute(ei) + then: + !er.errors.isEmpty() + er.errors[0].message.contains("Unknown operation named 'X'") + } } diff --git a/src/test/groovy/graphql/GraphqlErrorBuilderTest.groovy b/src/test/groovy/graphql/GraphqlErrorBuilderTest.groovy index 944e1fef35..8713100d02 100644 --- a/src/test/groovy/graphql/GraphqlErrorBuilderTest.groovy +++ b/src/test/groovy/graphql/GraphqlErrorBuilderTest.groovy @@ -152,4 +152,66 @@ class GraphqlErrorBuilderTest extends Specification { error.path == null } -} \ No newline at end of file + + def "implements equals/hashCode correctly for matching errors"() { + when: + def firstError = toGraphQLError(first) + def secondError = toGraphQLError(second) + + then: + firstError == secondError + firstError.hashCode() == secondError.hashCode() + + where: + first | second + [message: "msg"] | [message: "msg"] + [message: "msg", locations: [new SourceLocation(1, 2)]] | [message: "msg", locations: [new SourceLocation(1, 2)]] + [message: "msg", errorType: ErrorType.InvalidSyntax] | [message: "msg", errorType: ErrorType.InvalidSyntax] + [message: "msg", path: ["items", 1, "item"]] | [message: "msg", path: ["items", 1, "item"]] + [message: "msg", extensions: [aBoolean: true, aString: "foo"]] | [message: "msg", extensions: [aBoolean: true, aString: "foo"]] + } + + def "implements equals/hashCode correctly for different errors"() { + when: + def firstError = toGraphQLError(first) + def secondError = toGraphQLError(second) + + then: + firstError != secondError + firstError.hashCode() != secondError.hashCode() + + where: + first | second + [message: "msg"] | [message: "different msg"] + [message: "msg", locations: [new SourceLocation(1, 2)]] | [message: "msg", locations: [new SourceLocation(3, 4)]] + [message: "msg", errorType: ErrorType.InvalidSyntax] | [message: "msg", errorType: ErrorType.DataFetchingException] + [message: "msg", path: ["items", "1", "item"]] | [message: "msg", path: ["items"]] + [message: "msg", extensions: [aBoolean: false]] | [message: "msg", extensions: [aString: "foo"]] + } + + private static GraphQLError toGraphQLError(Map errorFields) { + def errorBuilder = GraphQLError.newError(); + errorFields.forEach { key, value -> + if (value != null) { + switch (key) { + case "message": + errorBuilder.message(value as String); + break; + case "locations": + errorBuilder.locations(value as List); + break; + case "errorType": + errorBuilder.errorType(value as ErrorClassification); + break; + case "path": + errorBuilder.path(value as List); + break; + case "extensions": + errorBuilder.extensions(value as Map); + break; + } + } + } + return errorBuilder.build(); + } +} diff --git a/src/test/groovy/graphql/GraphqlErrorHelperTest.groovy b/src/test/groovy/graphql/GraphqlErrorHelperTest.groovy index 88bfecb444..0736b1671a 100644 --- a/src/test/groovy/graphql/GraphqlErrorHelperTest.groovy +++ b/src/test/groovy/graphql/GraphqlErrorHelperTest.groovy @@ -3,6 +3,7 @@ package graphql import graphql.language.SourceLocation import graphql.validation.ValidationError import graphql.validation.ValidationErrorType +import spock.lang.RepeatUntilFailure import spock.lang.Specification class GraphqlErrorHelperTest extends Specification { @@ -106,4 +107,63 @@ class GraphqlErrorHelperTest extends Specification { message : "has extensions" ] } + + def "can parse out a map and make an error"() { + when: + def rawError = [message: "m"] + def graphQLError = GraphqlErrorHelper.fromSpecification(rawError) + then: + graphQLError.getMessage() == "m" + graphQLError.getErrorType() == ErrorType.DataFetchingException // default from error builder + graphQLError.getLocations() == [] + graphQLError.getPath() == null + graphQLError.getExtensions() == null + + when: + rawError = [message: "m"] + graphQLError = GraphQLError.fromSpecification(rawError) // just so we reference the public method + then: + graphQLError.getMessage() == "m" + graphQLError.getErrorType() == ErrorType.DataFetchingException // default from error builder + graphQLError.getLocations() == [] + graphQLError.getPath() == null + graphQLError.getExtensions() == null + + when: + def extensionsMap = [attr1: "a1", attr2: "a2", classification: "CLASSIFICATION-X"] + rawError = [message: "m", path: ["a", "b"], locations: [[line: 2, column: 3]], extensions: extensionsMap] + graphQLError = GraphqlErrorHelper.fromSpecification(rawError) + + then: + graphQLError.getMessage() == "m" + graphQLError.getErrorType().toString() == "CLASSIFICATION-X" + graphQLError.getLocations() == [new SourceLocation(2, 3)] + graphQLError.getPath() == ["a", "b"] + graphQLError.getExtensions() == extensionsMap + + + when: "can do a list of errors" + def rawErrors = [[message: "m0"], [message: "m1"]] + def errors = GraphqlErrorHelper.fromSpecification(rawErrors) + then: + errors.size() == 2 + errors.eachWithIndex { GraphQLError gErr, int i -> + assert gErr.getMessage() == "m" + i + assert gErr.getErrorType() == ErrorType.DataFetchingException // default from error builder + assert gErr.getLocations() == [] + assert gErr.getPath() == null + assert gErr.getExtensions() == null + } + } + + @RepeatUntilFailure(maxAttempts = 1_000) + def "can deterministically serialize SourceLocation"() { + when: + def specMap = GraphqlErrorHelper.toSpecification(new TestError()) + + then: + def location = specMap["locations"][0] as Map + def keys = location.keySet().toList() + keys == ["line", "column"] + } } diff --git a/src/test/groovy/graphql/GuavaLimitCheck.groovy b/src/test/groovy/graphql/GuavaLimitCheck.groovy new file mode 100644 index 0000000000..cc4fc7ff58 --- /dev/null +++ b/src/test/groovy/graphql/GuavaLimitCheck.groovy @@ -0,0 +1,89 @@ +package graphql + +import com.tngtech.archunit.core.domain.JavaClasses +import com.tngtech.archunit.core.importer.ClassFileImporter +import com.tngtech.archunit.core.importer.ImportOption +import spock.lang.Specification + +/* + * We selectively shade in a few classes of Guava, however we want to minimise dependencies so we want to keep this list small. + * This check ensures no new Guava classes are added + */ +class GuavaLimitCheck extends Specification { + + static final String GUAVA_PACKAGE_PREFIX = "com.google.common" + + static final Set ALLOWED_GUAVA_CLASSES = [ + "com.google.common.base.Strings", + "com.google.common.collect.BiMap", + "com.google.common.collect.HashBasedTable", + "com.google.common.collect.HashBiMap", + "com.google.common.collect.HashMultimap", + "com.google.common.collect.HashMultiset", + "com.google.common.collect.ImmutableBiMap", + "com.google.common.collect.ImmutableCollection", + "com.google.common.collect.ImmutableList", + "com.google.common.collect.ImmutableList\$Builder", + "com.google.common.collect.ImmutableListMultimap", + "com.google.common.collect.ImmutableListMultimap\$Builder", + "com.google.common.collect.ImmutableMap", + "com.google.common.collect.ImmutableMap\$Builder", + "com.google.common.collect.ImmutableSet", + "com.google.common.collect.ImmutableSet\$Builder", + "com.google.common.collect.Interner", + "com.google.common.collect.Interners", + "com.google.common.collect.Iterables", + "com.google.common.collect.LinkedHashMultimap", + "com.google.common.collect.Maps", + "com.google.common.collect.Multimap", + "com.google.common.collect.Multimaps", + "com.google.common.collect.Multiset", + "com.google.common.collect.Multisets", + "com.google.common.collect.Sets", + "com.google.common.collect.Sets\$SetView", + "com.google.common.collect.Table" + ] + + def "should identify which classes use prohibited Guava dependencies"() { + given: + JavaClasses importedClasses = new ClassFileImporter() + .withImportOption(ImportOption.Predefined.DO_NOT_INCLUDE_TESTS) + .importPackages("graphql") + + when: + Map> violationsByClass = [:] + + importedClasses.each { javaClass -> + def className = javaClass.name + def guavaUsages = javaClass.getAccessesFromSelf() + .collect { it.targetOwner } + .findAll { it.packageName.startsWith(GUAVA_PACKAGE_PREFIX) && !ALLOWED_GUAVA_CLASSES.contains(it.fullName) } + .toSet() + + if (!guavaUsages.isEmpty()) { + violationsByClass[className] = guavaUsages + } + } + + then: + violationsByClass.isEmpty() + + cleanup: "if the test fails, provide detailed information about which classes have violations" + if (!violationsByClass.isEmpty()) { + def errorMessage = new StringBuilder("Prohibited Guava class usage found:\n") + + violationsByClass.each { className, guavaClasses -> + errorMessage.append("\nClass: ${className} uses these prohibited Guava classes:\n") + guavaClasses.each { guavaClass -> + errorMessage.append(" - ${guavaClass}\n") + } + } + + errorMessage.append("\nEither:\n") + errorMessage.append("1. Preferred option: Replace them with alternatives that don't depend on Guava\n") + errorMessage.append("2. If absolutely necessary: Add these Guava classes to the shade configuration in the build.gradle file\n") + + println errorMessage.toString() + } + } +} diff --git a/src/test/groovy/graphql/Issue2141.groovy b/src/test/groovy/graphql/Issue2141.groovy index 100058c710..c3b00df8d6 100644 --- a/src/test/groovy/graphql/Issue2141.groovy +++ b/src/test/groovy/graphql/Issue2141.groovy @@ -24,12 +24,23 @@ class Issue2141 extends Specification { then: schemaStr == '''directive @auth(roles: [String!]) on FIELD_DEFINITION +"This directive allows results to be deferred during execution" +directive @defer( + "Deferred behaviour is controlled by this argument" + if: Boolean! = true, + "A unique label that represents the fragment being deferred" + label: String + ) on FRAGMENT_SPREAD | INLINE_FRAGMENT + "Marks the field, argument, input field or enum value as deprecated" directive @deprecated( "The reason for the deprecation" - reason: String = "No longer supported" + reason: String! = "No longer supported" ) on FIELD_DEFINITION | ARGUMENT_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION +"This directive disables error propagation when a non nullable field returns null for the given operation." +directive @experimental_disableErrorPropagation on QUERY | MUTATION | SUBSCRIPTION + "Directs the executor to include this field or fragment only when the `if` argument is true" directive @include( "Included when true." diff --git a/src/test/groovy/graphql/LargeSchemaDataFetcherTest.groovy b/src/test/groovy/graphql/LargeSchemaDataFetcherTest.groovy new file mode 100644 index 0000000000..1aa971c6e7 --- /dev/null +++ b/src/test/groovy/graphql/LargeSchemaDataFetcherTest.groovy @@ -0,0 +1,43 @@ +package graphql + + +import graphql.schema.FieldCoordinates +import graphql.schema.GraphQLFieldDefinition +import graphql.schema.PropertyDataFetcher +import graphql.schema.SingletonPropertyDataFetcher +import spock.lang.Specification + +class LargeSchemaDataFetcherTest extends Specification { + + def howManyFields = 100_000 + + def "large schema with lots of fields has the same property data fetcher by default"() { + def sdl = """ + type Query { + ${mkFields()} + } + """ + + when: + def schema = TestUtil.schema(sdl) + def codeRegistry = schema.getCodeRegistry() + def singletonDF = SingletonPropertyDataFetcher.singleton() + + then: + + for (int i = 0; i < howManyFields; i++) { + def fieldName = "f$i" + def fieldDef = GraphQLFieldDefinition.newFieldDefinition().name(fieldName).type(Scalars.GraphQLString).build() + def df = codeRegistry.getDataFetcher(FieldCoordinates.coordinates("Query", fieldName), fieldDef) + assert df == singletonDF + } + } + + def mkFields() { + StringBuilder sb = new StringBuilder() + for (int i = 0; i < howManyFields; i++) { + sb.append("f$i : String\n") + } + return sb.toString() + } +} diff --git a/src/test/groovy/graphql/MutationTest.groovy b/src/test/groovy/graphql/MutationTest.groovy index d99506880d..9ad61f6dd4 100644 --- a/src/test/groovy/graphql/MutationTest.groovy +++ b/src/test/groovy/graphql/MutationTest.groovy @@ -1,7 +1,14 @@ package graphql +import graphql.schema.DataFetcher +import org.awaitility.Awaitility +import org.dataloader.BatchLoader +import org.dataloader.BatchLoaderWithContext +import org.dataloader.DataLoaderFactory +import org.dataloader.DataLoaderRegistry import spock.lang.Specification +import java.util.concurrent.CompletableFuture class MutationTest extends Specification { @@ -102,4 +109,367 @@ class MutationTest extends Specification { executionResult.errors.every({ it instanceof ExceptionWhileDataFetching }) } + + def "simple async mutation"() { + def sdl = """ + type Query { + q : String + } + + type Mutation { + plus1(arg: Int) : Int + plus2(arg: Int) : Int + plus3(arg: Int) : Int + } + """ + + def mutationDF = { env -> + CompletableFuture.supplyAsync { + + def fieldName = env.getField().name + def factor = Integer.parseInt(fieldName.substring(fieldName.length() - 1)) + def value = env.getArgument("arg") + + return value + factor + } + } as DataFetcher + + def schema = TestUtil.schema(sdl, [Mutation: [ + plus1: mutationDF, + plus2: mutationDF, + plus3: mutationDF, + ]]) + + def graphQL = GraphQL.newGraphQL(schema).build() + def ei = ExecutionInput.newExecutionInput(""" + mutation m { + plus1(arg:10) + plus2(arg:10) + plus3(arg:10) + } + """).build() + ei.getGraphQLContext().put(ExperimentalApi.ENABLE_INCREMENTAL_SUPPORT, defeEnabled) + + when: + def er = graphQL.execute(ei) + then: + er.errors.isEmpty() + er.data == [ + plus1: 11, + plus2: 12, + plus3: 13, + ] + where: + defeEnabled << [true, false] + } + + def "simple async mutation with DataLoader"() { + def sdl = """ + type Query { + q : String + } + + type Mutation { + plus1(arg: Int) : Int + plus2(arg: Int) : Int + plus3(arg: Int) : Int + } + + """ + + BatchLoader batchLoader = { keys -> + CompletableFuture.supplyAsync { + return keys + } + + } as BatchLoader + + + DataLoaderRegistry dlReg = DataLoaderRegistry.newRegistry() + .register("dl", DataLoaderFactory.newDataLoader(batchLoader)) + .build() + + def mutationDF = { env -> + def fieldName = env.getField().name + def factor = Integer.parseInt(fieldName.substring(fieldName.length() - 1)) + def value = env.getArgument("arg") + + def key = value + factor + return env.getDataLoader("dl").load(key) + } as DataFetcher + + def schema = TestUtil.schema(sdl, [Mutation: [ + plus1: mutationDF, + plus2: mutationDF, + plus3: mutationDF, + ]]) + + + def graphQL = GraphQL.newGraphQL(schema) + .build() + + + def ei = ExecutionInput.newExecutionInput(""" + mutation m { + plus1(arg:10) + plus2(arg:10) + plus3(arg:10) + } + """).dataLoaderRegistry(dlReg).build() + ei.getGraphQLContext().put(ExperimentalApi.ENABLE_INCREMENTAL_SUPPORT, defeEnabled) + when: + def er = graphQL.execute(ei) + + then: + er.errors.isEmpty() + er.data == [ + plus1: 11, + plus2: 12, + plus3: 13, + ] + + where: + defeEnabled << [true, false] + } + + /* + This test shows a dataloader being called at the mutation field level, in serial via AsyncSerialExecutionStrategy, and then + again at the sub field level, in parallel, via AsyncExecutionStrategy. + */ + + def "more complex async mutation with DataLoader"() { + def sdl = """ + type Query { + q : String + } + + type Mutation { + topLevelF1(arg: Int) : ComplexType + topLevelF2(arg: Int) : ComplexType + topLevelF3(arg: Int) : ComplexType + topLevelF4(arg: Int) : ComplexType + } + + type ComplexType { + f1 : ComplexType + f2 : ComplexType + f3 : ComplexType + f4 : ComplexType + end : String + } + """ + + def emptyComplexMap = [ + f1: null, + f2: null, + f3: null, + f4: null, + ] + + BatchLoaderWithContext fieldBatchLoader = { keys, context -> + assert keys.size() == 2, "since only f1 and f2 are DL based, we will only get 2 key values" + + def batchValue = [ + emptyComplexMap, + emptyComplexMap, + ] + CompletableFuture.supplyAsync { + return batchValue + } + + } as BatchLoaderWithContext + + BatchLoader mutationBatchLoader = { keys -> + CompletableFuture.supplyAsync { + return keys + } + + } as BatchLoader + + + DataLoaderRegistry dlReg = DataLoaderRegistry.newRegistry() + .register("topLevelDL", DataLoaderFactory.newDataLoader(mutationBatchLoader)) + .register("fieldDL", DataLoaderFactory.newDataLoader(fieldBatchLoader)) + .build() + + def mutationDF = { env -> + def fieldName = env.getField().name + def factor = Integer.parseInt(fieldName.substring(fieldName.length() - 1)) + def value = env.getArgument("arg") + + def key = value + factor + return env.getDataLoader("topLevelDL").load(key) + } as DataFetcher + + def fieldDataLoaderDF = { env -> + def fieldName = env.getField().name + def level = env.getExecutionStepInfo().getPath().getLevel() + return env.getDataLoader("fieldDL").load(fieldName, level) + } as DataFetcher + + def fieldDataLoaderNonDF = { env -> + return emptyComplexMap + } as DataFetcher + + def schema = TestUtil.schema(sdl, + [Mutation : [ + topLevelF1: mutationDF, + topLevelF2: mutationDF, + topLevelF3: mutationDF, + topLevelF4: mutationDF, + ], + // only f1 and f3 are using data loaders - f2 and f4 are plain old property based + // so some fields with batch loader and some without + ComplexType: [ + f1: fieldDataLoaderDF, + f2: fieldDataLoaderNonDF, + f3: fieldDataLoaderDF, + f4: fieldDataLoaderNonDF, + ] + ]) + + + def graphQL = GraphQL.newGraphQL(schema) + .build() + + + def ei = ExecutionInput.newExecutionInput(""" + mutation m { + topLevelF1(arg:10) { + f1 { + f1 { end } + f2 { end } + f3 { end } + f4 { end } + } + f2 { + f1 { end } + f2 { end } + f3 { end } + f4 { end } + } + f3 { + f1 { end } + f2 { end } + f3 { end } + f4 { end } + } + f4 { + f1 { end } + f2 { end } + f3 { end } + f4 { end } + } + } + + topLevelF2(arg:10) { + f1 { + f1 { end } + f2 { end } + f3 { end } + f4 { end } + } + f2 { + f1 { end } + f2 { end } + f3 { end } + f4 { end } + } + f3 { + f1 { end } + f2 { end } + f3 { end } + f4 { end } + } + f4 { + f1 { end } + f2 { end } + f3 { end } + f4 { end } + } + } + + topLevelF3(arg:10) { + f1 { + f1 { end } + f2 { end } + f3 { end } + f4 { end } + } + f2 { + f1 { end } + f2 { end } + f3 { end } + f4 { end } + } + f3 { + f1 { end } + f2 { end } + f3 { end } + f4 { end } + } + f4 { + f1 { end } + f2 { end } + f3 { end } + f4 { end } + } + } + + topLevelF4(arg:10) { + f1 { + f1 { end } + f2 { end } + f3 { end } + f4 { end } + } + f2 { + f1 { end } + f2 { end } + f3 { end } + f4 { end } + } + f3 { + f1 { end } + f2 { end } + f3 { end } + f4 { end } + } + f4 { + f1 { end } + f2 { end } + f3 { end } + f4 { end } + } + } + } + """).dataLoaderRegistry(dlReg).build() + ei.getGraphQLContext().put(ExperimentalApi.ENABLE_INCREMENTAL_SUPPORT, defeEnabled) + when: + def cf = graphQL.executeAsync(ei) + + Awaitility.await().until { cf.isDone() } + def er = cf.join() + + then: + + er.errors.isEmpty() + + def expectedMap = [ + f1: [f1: [end: null], f2: [end: null], f3: [end: null], f4: [end: null]], + f2: [f1: [end: null], f2: [end: null], f3: [end: null], f4: [end: null]], + f3: [f1: [end: null], f2: [end: null], f3: [end: null], f4: [end: null]], + f4: [f1: [end: null], f2: [end: null], f3: [end: null], f4: [end: null]], + ] + + er.data == [ + topLevelF1: expectedMap, + topLevelF2: expectedMap, + topLevelF3: expectedMap, + topLevelF4: expectedMap, + ] + + where: + defeEnabled << [true, false] + } } diff --git a/src/test/groovy/graphql/ParseAndValidateTest.groovy b/src/test/groovy/graphql/ParseAndValidateTest.groovy index 949b4aeb5e..fa66c3cbed 100644 --- a/src/test/groovy/graphql/ParseAndValidateTest.groovy +++ b/src/test/groovy/graphql/ParseAndValidateTest.groovy @@ -1,6 +1,11 @@ package graphql +import graphql.language.Document +import graphql.language.SourceLocation import graphql.parser.InvalidSyntaxException +import graphql.parser.Parser +import graphql.schema.idl.SchemaParser +import graphql.schema.idl.UnExecutableSchemaGenerator import graphql.validation.ValidationError import graphql.validation.ValidationErrorType import graphql.validation.rules.NoUnusedFragments @@ -155,4 +160,79 @@ class ParseAndValidateTest extends Specification { then: !rs.errors.isEmpty() // all rules apply - we have errors } + + def "validation error raised if mutation operation does not exist in schema"() { + def sdl = ''' + type Query { + myQuery : String! + } + ''' + + def registry = new SchemaParser().parse(sdl) + def schema = UnExecutableSchemaGenerator.makeUnExecutableSchema(registry) + String request = "mutation MyMutation { myMutation }" + + when: + Document inputDocument = new Parser().parseDocument(request) + List errors = ParseAndValidate.validate(schema, inputDocument) + + then: + errors.size() == 1 + def error = errors.first() + error.validationErrorType == ValidationErrorType.UnknownOperation + error.message == "Validation error (UnknownOperation): The 'Mutation' operation is not supported by the schema" + error.locations == [new SourceLocation(1, 1)] + } + + def "validation error raised if subscription operation does not exist in schema"() { + def sdl = ''' + type Query { + myQuery : String! + } + ''' + + def registry = new SchemaParser().parse(sdl) + def schema = UnExecutableSchemaGenerator.makeUnExecutableSchema(registry) + + String request = "subscription MySubscription { mySubscription }" + + when: + Document inputDocument = new Parser().parseDocument(request) + List errors = ParseAndValidate.validate(schema, inputDocument) + + then: + errors.size() == 1 + def error = errors.first() + error.validationErrorType == ValidationErrorType.UnknownOperation + error.message == "Validation error (UnknownOperation): The 'Subscription' operation is not supported by the schema" + error.locations == [new SourceLocation(1, 1)] + } + + def "known operation validation rule checks all operations in document"() { + def sdl = ''' + type Query { + myQuery : String! + } + ''' + + def registry = new SchemaParser().parse(sdl) + def schema = UnExecutableSchemaGenerator.makeUnExecutableSchema(registry) + String request = "mutation MyMutation { myMutation } subscription MySubscription { mySubscription }" + + when: + Document inputDocument = new Parser().parseDocument(request) + List errors = ParseAndValidate.validate(schema, inputDocument) + + then: + errors.size() == 2 + def error1 = errors.get(0) + error1.validationErrorType == ValidationErrorType.UnknownOperation + error1.message == "Validation error (UnknownOperation): The 'Mutation' operation is not supported by the schema" + error1.locations == [new SourceLocation(1, 1)] + + def error2 = errors.get(1) + error2.validationErrorType == ValidationErrorType.UnknownOperation + error2.message == "Validation error (UnknownOperation): The 'Subscription' operation is not supported by the schema" + error2.locations == [new SourceLocation(1, 36)] + } } diff --git a/src/test/groovy/graphql/StarWarsIntrospectionTests.groovy b/src/test/groovy/graphql/StarWarsIntrospectionTests.groovy index 9b374bfbd3..75411f6af0 100644 --- a/src/test/groovy/graphql/StarWarsIntrospectionTests.groovy +++ b/src/test/groovy/graphql/StarWarsIntrospectionTests.groovy @@ -430,6 +430,6 @@ class StarWarsIntrospectionTests extends Specification { schemaParts.get('mutationType').size() == 1 schemaParts.get('subscriptionType') == null schemaParts.get('types').size() == 17 - schemaParts.get('directives').size() == 5 + schemaParts.get('directives').size() == 7 } } diff --git a/src/test/groovy/graphql/TestUtil.groovy b/src/test/groovy/graphql/TestUtil.groovy index 490e7cee93..dea2c2c7ce 100644 --- a/src/test/groovy/graphql/TestUtil.groovy +++ b/src/test/groovy/graphql/TestUtil.groovy @@ -316,4 +316,11 @@ class TestUtil { return JsonOutput.prettyPrint(JsonOutput.toJson(obj)) } + + static Random rn = new Random() + + static int rand(int min, int max) { + return rn.nextInt(max - min + 1) + min + } + } diff --git a/src/test/groovy/graphql/analysis/QueryTransformerTest.groovy b/src/test/groovy/graphql/analysis/QueryTransformerTest.groovy index 9425a32162..2ce312c7ce 100644 --- a/src/test/groovy/graphql/analysis/QueryTransformerTest.groovy +++ b/src/test/groovy/graphql/analysis/QueryTransformerTest.groovy @@ -1,6 +1,7 @@ package graphql.analysis import graphql.TestUtil +import graphql.execution.CoercedVariables import graphql.language.Document import graphql.language.Field import graphql.language.NodeUtil @@ -448,4 +449,60 @@ class QueryTransformerTest extends Specification { printAstCompact(newNode) == "{__typename ...on A{aX}...on B{b}}" } + + def "can coerce field arguments or not"() { + def sdl = """ + input Test{ x: String!} + type Query{ testInput(input: Test!): String} + type Mutation{ testInput(input: Test!): String} + """ + + def schema = TestUtil.schema(sdl) + + def query = createQuery(''' + mutation a($test: Test!) { + testInput(input: $test) + }''') + + + def fieldArgMap = [:] + def queryVisitorStub = new QueryVisitorStub() { + @Override + void visitField(QueryVisitorFieldEnvironment queryVisitorFieldEnvironment) { + super.visitField(queryVisitorFieldEnvironment) + fieldArgMap = queryVisitorFieldEnvironment.getArguments() + } + } + + when: + QueryTraverser.newQueryTraverser() + .schema(schema) + .document(query) + .coercedVariables(CoercedVariables.of([test: [x: "X"]])) + .build() + .visitPreOrder(queryVisitorStub) + + then: + + fieldArgMap == [input: [x:"X"]] + + when: + fieldArgMap = null + + + def options = QueryTraversalOptions.defaultOptions() + .coerceFieldArguments(false) + QueryTraverser.newQueryTraverser() + .schema(schema) + .document(query) + .coercedVariables(CoercedVariables.of([test: [x: "X"]])) + .options(options) + .build() + .visitPreOrder(queryVisitorStub) + + + then: + fieldArgMap == [:] // empty map + } + } diff --git a/src/test/groovy/graphql/analysis/QueryTraversalOptionsTest.groovy b/src/test/groovy/graphql/analysis/QueryTraversalOptionsTest.groovy new file mode 100644 index 0000000000..379c58e820 --- /dev/null +++ b/src/test/groovy/graphql/analysis/QueryTraversalOptionsTest.groovy @@ -0,0 +1,20 @@ +package graphql.analysis + +import spock.lang.Specification + +class QueryTraversalOptionsTest extends Specification { + + def "defaulting works as expected"() { + when: + def options = QueryTraversalOptions.defaultOptions() + + then: + options.isCoerceFieldArguments() + + when: + options = QueryTraversalOptions.defaultOptions().coerceFieldArguments(false) + + then: + !options.isCoerceFieldArguments() + } +} diff --git a/src/test/groovy/graphql/analysis/QueryTraverserTest.groovy b/src/test/groovy/graphql/analysis/QueryTraverserTest.groovy index 03a40919ca..dbe0b33384 100644 --- a/src/test/groovy/graphql/analysis/QueryTraverserTest.groovy +++ b/src/test/groovy/graphql/analysis/QueryTraverserTest.groovy @@ -1907,4 +1907,59 @@ class QueryTraverserTest extends Specification { then: "it should not be visited" 0 * visitor.visitField(_) } + + def "can coerce field arguments or not"() { + def sdl = """ + input Test{ x: String!} + type Query{ testInput(input: Test!): String} + type Mutation{ testInput(input: Test!): String} + """ + + def schema = TestUtil.schema(sdl) + + def query = createQuery(''' + mutation a($test: Test!) { + testInput(input: $test) + }''') + + + def fieldArgMap = [:] + def queryVisitorStub = new QueryVisitorStub() { + @Override + void visitField(QueryVisitorFieldEnvironment queryVisitorFieldEnvironment) { + super.visitField(queryVisitorFieldEnvironment) + fieldArgMap = queryVisitorFieldEnvironment.getArguments() + } + } + + when: + QueryTraverser.newQueryTraverser() + .schema(schema) + .document(query) + .coercedVariables(CoercedVariables.of([test: [x: "X"]])) + .build() + .visitPreOrder(queryVisitorStub) + + then: + + fieldArgMap == [input: [x:"X"]] + + when: + fieldArgMap = null + + + def options = QueryTraversalOptions.defaultOptions() + .coerceFieldArguments(false) + QueryTraverser.newQueryTraverser() + .schema(schema) + .document(query) + .coercedVariables(CoercedVariables.of([test: [x: "X"]])) + .options(options) + .build() + .visitPreOrder(queryVisitorStub) + + + then: + fieldArgMap == [:] // empty map + } } diff --git a/src/test/groovy/graphql/analysis/values/ValueTraverserTest.groovy b/src/test/groovy/graphql/analysis/values/ValueTraverserTest.groovy index 8d524f8bcc..1a60b35851 100644 --- a/src/test/groovy/graphql/analysis/values/ValueTraverserTest.groovy +++ b/src/test/groovy/graphql/analysis/values/ValueTraverserTest.groovy @@ -21,7 +21,6 @@ import graphql.schema.GraphQLObjectType import graphql.schema.GraphQLScalarType import graphql.schema.idl.SchemaDirectiveWiring import graphql.schema.idl.SchemaDirectiveWiringEnvironment -import org.jetbrains.annotations.Nullable import spock.lang.Specification import static graphql.schema.idl.RuntimeWiring.newRuntimeWiring @@ -323,7 +322,7 @@ class ValueTraverserTest extends Specification { ] def visitor = new ValueVisitor() { @Override - Object visitArgumentValue(@Nullable Object coercedValue, GraphQLArgument graphQLArgument, ValueVisitor.InputElements inputElements) { + Object visitArgumentValue(Object coercedValue, GraphQLArgument graphQLArgument, ValueVisitor.InputElements inputElements) { if (graphQLArgument.name == "arg2") { return [name: "Harry Potter", age: 54] } @@ -402,7 +401,7 @@ class ValueTraverserTest extends Specification { def visitor = new ValueVisitor() { @Override - Object visitScalarValue(@Nullable Object coercedValue, GraphQLScalarType inputType, ValueVisitor.InputElements inputElements) { + Object visitScalarValue(Object coercedValue, GraphQLScalarType inputType, ValueVisitor.InputElements inputElements) { if (coercedValue == "Tom Riddle") { return "Happy Potter" } @@ -410,7 +409,7 @@ class ValueTraverserTest extends Specification { } @Override - Object visitAppliedDirectiveArgumentValue(@Nullable Object coercedValue, GraphQLAppliedDirectiveArgument graphQLAppliedDirectiveArgument, ValueVisitor.InputElements inputElements) { + Object visitAppliedDirectiveArgumentValue(Object coercedValue, GraphQLAppliedDirectiveArgument graphQLAppliedDirectiveArgument, ValueVisitor.InputElements inputElements) { if (graphQLAppliedDirectiveArgument.name == "arg2") { return [name: "Harry Potter", age: 54] } diff --git a/src/test/groovy/graphql/collect/ImmutableKitTest.groovy b/src/test/groovy/graphql/collect/ImmutableKitTest.groovy index 82d76bae1e..f546147d7b 100644 --- a/src/test/groovy/graphql/collect/ImmutableKitTest.groovy +++ b/src/test/groovy/graphql/collect/ImmutableKitTest.groovy @@ -1,7 +1,6 @@ package graphql.collect import com.google.common.collect.ImmutableList -import com.google.common.collect.ImmutableMap import spock.lang.Specification class ImmutableKitTest extends Specification { @@ -63,4 +62,16 @@ class ImmutableKitTest extends Specification { then: set == ["a", "b", "c", "d", "e", "f"] as Set } + + def "flatMapList works"() { + def listOfLists = [ + ["A", "B"], + ["C"], + ["D", "E"], + ] + when: + def flatList = ImmutableKit.flatMapList(listOfLists) + then: + flatList == ["A", "B", "C", "D", "E",] + } } diff --git a/src/test/groovy/graphql/execution/AsyncExecutionStrategyTest.groovy b/src/test/groovy/graphql/execution/AsyncExecutionStrategyTest.groovy index 8769bb79a4..9d99fbbfba 100644 --- a/src/test/groovy/graphql/execution/AsyncExecutionStrategyTest.groovy +++ b/src/test/groovy/graphql/execution/AsyncExecutionStrategyTest.groovy @@ -1,8 +1,9 @@ package graphql.execution +import graphql.EngineRunningState import graphql.ErrorType +import graphql.ExecutionInput import graphql.ExecutionResult -import graphql.ExperimentalApi import graphql.GraphQLContext import graphql.execution.instrumentation.ExecutionStrategyInstrumentationContext import graphql.execution.instrumentation.InstrumentationState @@ -108,12 +109,15 @@ abstract class AsyncExecutionStrategyTest extends Specification { .instrumentation(SimplePerformantInstrumentation.INSTANCE) .valueUnboxer(ValueUnboxer.DEFAULT) .graphQLContext(graphqlContextMock) + .executionInput(ExecutionInput.newExecutionInput("{}").build()) .locale(Locale.getDefault()) + .engineRunningState(new EngineRunningState()) .build() ExecutionStrategyParameters executionStrategyParameters = ExecutionStrategyParameters .newParameters() .executionStepInfo(typeInfo) .fields(mergedSelectionSet(['hello': mergedField([Field.newField('hello').build()]), 'hello2': mergedField([Field.newField('hello2').build()])])) + .nonNullFieldValidator(new NonNullableFieldValidator(executionContext)) .build() AsyncExecutionStrategy asyncExecutionStrategy = new AsyncExecutionStrategy() @@ -150,11 +154,14 @@ abstract class AsyncExecutionStrategyTest extends Specification { .instrumentation(SimplePerformantInstrumentation.INSTANCE) .locale(Locale.getDefault()) .graphQLContext(graphqlContextMock) + .executionInput(ExecutionInput.newExecutionInput("{}").build()) + .engineRunningState(new EngineRunningState()) .build() ExecutionStrategyParameters executionStrategyParameters = ExecutionStrategyParameters .newParameters() .executionStepInfo(typeInfo) .fields(mergedSelectionSet(['hello': mergedField([Field.newField('hello').build()]), 'hello2': mergedField([Field.newField('hello2').build()])])) + .nonNullFieldValidator(new NonNullableFieldValidator(executionContext)) .build() AsyncExecutionStrategy asyncExecutionStrategy = new AsyncExecutionStrategy() @@ -192,12 +199,15 @@ abstract class AsyncExecutionStrategyTest extends Specification { .valueUnboxer(ValueUnboxer.DEFAULT) .instrumentation(SimplePerformantInstrumentation.INSTANCE) .graphQLContext(graphqlContextMock) + .executionInput(ExecutionInput.newExecutionInput("{}").build()) + .engineRunningState(new EngineRunningState()) .locale(Locale.getDefault()) .build() ExecutionStrategyParameters executionStrategyParameters = ExecutionStrategyParameters .newParameters() .executionStepInfo(typeInfo) .fields(mergedSelectionSet(['hello': mergedField([Field.newField('hello').build()]), 'hello2': mergedField([Field.newField('hello2').build()])])) + .nonNullFieldValidator(new NonNullableFieldValidator(executionContext)) .build() AsyncExecutionStrategy asyncExecutionStrategy = new AsyncExecutionStrategy() @@ -235,11 +245,14 @@ abstract class AsyncExecutionStrategyTest extends Specification { .valueUnboxer(ValueUnboxer.DEFAULT) .locale(Locale.getDefault()) .graphQLContext(graphqlContextMock) + .executionInput(ExecutionInput.newExecutionInput("{}").build()) + .engineRunningState(new EngineRunningState()) .build() ExecutionStrategyParameters executionStrategyParameters = ExecutionStrategyParameters .newParameters() .executionStepInfo(typeInfo) .fields(mergedSelectionSet(['hello': mergedField([Field.newField('hello').build()]), 'hello2': mergedField([Field.newField('hello2').build()])])) + .nonNullFieldValidator(new NonNullableFieldValidator(executionContext)) .build() AsyncExecutionStrategy asyncExecutionStrategy = new AsyncExecutionStrategy() @@ -274,7 +287,9 @@ abstract class AsyncExecutionStrategyTest extends Specification { .operationDefinition(operation) .valueUnboxer(ValueUnboxer.DEFAULT) .graphQLContext(graphqlContextMock) + .executionInput(ExecutionInput.newExecutionInput("{}").build()) .locale(Locale.getDefault()) + .engineRunningState(new EngineRunningState()) .instrumentation(new SimplePerformantInstrumentation() { @Override @@ -301,6 +316,7 @@ abstract class AsyncExecutionStrategyTest extends Specification { .newParameters() .executionStepInfo(typeInfo) .fields(mergedSelectionSet(['hello': mergedField([new Field('hello')]), 'hello2': mergedField([new Field('hello2')])])) + .nonNullFieldValidator(new NonNullableFieldValidator(executionContext)) .build() AsyncExecutionStrategy asyncExecutionStrategy = new AsyncExecutionStrategy() diff --git a/src/test/groovy/graphql/execution/AsyncSerialExecutionStrategyTest.groovy b/src/test/groovy/graphql/execution/AsyncSerialExecutionStrategyTest.groovy index 1d811bd3bd..937c99c705 100644 --- a/src/test/groovy/graphql/execution/AsyncSerialExecutionStrategyTest.groovy +++ b/src/test/groovy/graphql/execution/AsyncSerialExecutionStrategyTest.groovy @@ -1,5 +1,7 @@ package graphql.execution +import graphql.EngineRunningState +import graphql.ExecutionInput import graphql.GraphQLContext import graphql.execution.instrumentation.SimplePerformantInstrumentation import graphql.language.Field @@ -106,11 +108,14 @@ class AsyncSerialExecutionStrategyTest extends Specification { .valueUnboxer(ValueUnboxer.DEFAULT) .locale(Locale.getDefault()) .graphQLContext(GraphQLContext.getDefault()) + .executionInput(ExecutionInput.newExecutionInput("{}").build()) + .engineRunningState(new EngineRunningState()) .build() ExecutionStrategyParameters executionStrategyParameters = ExecutionStrategyParameters .newParameters() .executionStepInfo(typeInfo) .fields(mergedSelectionSet(['hello': mergedField(new Field('hello')), 'hello2': mergedField(new Field('hello2')), 'hello3': mergedField(new Field('hello3'))])) + .nonNullFieldValidator(new NonNullableFieldValidator(executionContext)) .build() AsyncSerialExecutionStrategy strategy = new AsyncSerialExecutionStrategy() @@ -152,11 +157,14 @@ class AsyncSerialExecutionStrategyTest extends Specification { .valueUnboxer(ValueUnboxer.DEFAULT) .locale(Locale.getDefault()) .graphQLContext(GraphQLContext.getDefault()) + .executionInput(ExecutionInput.newExecutionInput("{}").build()) + .engineRunningState(new EngineRunningState()) .build() ExecutionStrategyParameters executionStrategyParameters = ExecutionStrategyParameters .newParameters() .executionStepInfo(typeInfo) .fields(mergedSelectionSet(['hello': mergedField(new Field('hello')), 'hello2': mergedField(new Field('hello2')), 'hello3': mergedField(new Field('hello3'))])) + .nonNullFieldValidator(new NonNullableFieldValidator(executionContext)) .build() AsyncSerialExecutionStrategy strategy = new AsyncSerialExecutionStrategy() @@ -166,35 +174,35 @@ class AsyncSerialExecutionStrategyTest extends Specification { then: !result.isDone() - 1 * df1.get(_,_,_) >> cf1 - 0 * df2.get(_,_,_) >> cf2 - 0 * df3.get(_,_,_) >> cf3 + 1 * df1.get(_, _, _) >> cf1 + 0 * df2.get(_, _, _) >> cf2 + 0 * df3.get(_, _, _) >> cf3 when: cf1.complete("world1") then: !result.isDone() - 0 * df1.get(_,_,_) >> cf1 - 1 * df2.get(_,_,_) >> cf2 - 0 * df3.get(_,_,_) >> cf3 + 0 * df1.get(_, _, _) >> cf1 + 1 * df2.get(_, _, _) >> cf2 + 0 * df3.get(_, _, _) >> cf3 when: cf2.complete("world2") then: !result.isDone() - 0 * df1.get(_,_,_) >> cf1 - 0 * df2.get(_,_,_) >> cf2 - 1 * df3.get(_,_,_) >> cf3 + 0 * df1.get(_, _, _) >> cf1 + 0 * df2.get(_, _, _) >> cf2 + 1 * df3.get(_, _, _) >> cf3 when: cf3.complete("world3") then: - 0 * df1.get(_,_,_) >> cf1 - 0 * df2.get(_,_,_) >> cf2 - 0 * df3.get(_,_,_) >> cf3 + 0 * df1.get(_, _, _) >> cf1 + 0 * df2.get(_, _, _) >> cf2 + 0 * df3.get(_, _, _) >> cf3 result.isDone() result.get().data == ['hello': 'world1', 'hello2': 'world2', 'hello3': 'world3'] } diff --git a/src/test/groovy/graphql/execution/DataFetcherResultTest.groovy b/src/test/groovy/graphql/execution/DataFetcherResultTest.groovy index 35fbfe2f1d..07318afa75 100644 --- a/src/test/groovy/graphql/execution/DataFetcherResultTest.groovy +++ b/src/test/groovy/graphql/execution/DataFetcherResultTest.groovy @@ -1,5 +1,6 @@ package graphql.execution +import graphql.GraphQLError import graphql.InvalidSyntaxError import graphql.validation.ValidationError import graphql.validation.ValidationErrorType @@ -107,4 +108,77 @@ class DataFetcherResultTest extends Specification { result.getExtensions() == [a : "b"] result.getErrors() == [error1, error2] } + + def "implements equals/hashCode for matching results"() { + when: + def firstResult = toDataFetcherResult(first) + def secondResult = toDataFetcherResult(second) + + then: + firstResult == secondResult + firstResult.hashCode() == secondResult.hashCode() + + where: + first | second + [data: "A string"] | [data: "A string"] + [data: 5] | [data: 5] + [data: ["a", "b"]] | [data: ["a", "b"]] + [errors: [error("An error")]] | [errors: [error("An error")]] + [data: "A value", errors: [error("An error")]] | [data: "A value", errors: [error("An error")]] + [data: "A value", localContext: 5] | [data: "A value", localContext: 5] + [data: "A value", errors: [error("An error")], localContext: 5] | [data: "A value", errors: [error("An error")], localContext: 5] + [data: "A value", extensions: ["key": "value"]] | [data: "A value", extensions: ["key": "value"]] + [data: "A value", errors: [error("An error")], localContext: 5, extensions: ["key": "value"]] | [data: "A value", errors: [error("An error")], localContext: 5, extensions: ["key": "value"]] + } + + def "implements equals/hashCode for different results"() { + when: + def firstResult = toDataFetcherResult(first) + def secondResult = toDataFetcherResult(second) + + then: + firstResult != secondResult + firstResult.hashCode() != secondResult.hashCode() + + where: + first | second + [data: "A string"] | [data: "A different string"] + [data: 5] | [data: "not 5"] + [data: ["a", "b"]] | [data: ["a", "c"]] + [errors: [error("An error")]] | [errors: [error("A different error")]] + [data: "A value", errors: [error("An error")]] | [data: "A different value", errors: [error("An error")]] + [data: "A value", localContext: 5] | [data: "A value", localContext: 1] + [data: "A value", errors: [error("An error")], localContext: 5] | [data: "A value", errors: [error("A different error")], localContext: 5] + [data: "A value", extensions: ["key": "value"]] | [data: "A value", extensions: ["key", "different value"]] + [data: "A value", errors: [error("An error")], localContext: 5, extensions: ["key": "value"]] | [data: "A value", errors: [error("An error")], localContext: 5, extensions: ["key": "different value"]] + } + + private static DataFetcherResult toDataFetcherResult(Map resultFields) { + def resultBuilder = DataFetcherResult.newResult(); + resultFields.forEach { key, value -> + if (value != null) { + switch (key) { + case "data": + resultBuilder.data(value) + break; + case "errors": + resultBuilder.errors(value as List); + break; + case "localContext": + resultBuilder.localContext(value); + break; + case "extensions": + resultBuilder.extensions(value as Map); + break; + } + } + } + return resultBuilder.build(); + } + + private static GraphQLError error(String message) { + return GraphQLError.newError() + .message(message) + .build(); + } } diff --git a/src/test/groovy/graphql/execution/ExecutionContextBuilderTest.groovy b/src/test/groovy/graphql/execution/ExecutionContextBuilderTest.groovy index 210c442989..2512cac1b8 100644 --- a/src/test/groovy/graphql/execution/ExecutionContextBuilderTest.groovy +++ b/src/test/groovy/graphql/execution/ExecutionContextBuilderTest.groovy @@ -1,5 +1,6 @@ package graphql.execution + import graphql.GraphQLContext import graphql.execution.instrumentation.Instrumentation import graphql.language.Document @@ -25,24 +26,26 @@ class ExecutionContextBuilderTest extends Specification { def operation = document.definitions[0] as OperationDefinition def fragment = document.definitions[1] as FragmentDefinition def dataLoaderRegistry = new DataLoaderRegistry() + def mockDataLoaderDispatcherStrategy = Mock(DataLoaderDispatchStrategy) def "builds the correct ExecutionContext"() { when: def executionContext = new ExecutionContextBuilder() - .instrumentation(instrumentation) - .queryStrategy(queryStrategy) - .mutationStrategy(mutationStrategy) - .subscriptionStrategy(subscriptionStrategy) - .graphQLSchema(schema) - .executionId(executionId) - .context(context) // Retain deprecated builder for test coverage - .graphQLContext(graphQLContext) - .root(root) - .operationDefinition(operation) - .fragmentsByName([MyFragment: fragment]) - .variables([var: 'value']) // Retain deprecated builder for test coverage - .dataLoaderRegistry(dataLoaderRegistry) - .build() + .instrumentation(instrumentation) + .queryStrategy(queryStrategy) + .mutationStrategy(mutationStrategy) + .subscriptionStrategy(subscriptionStrategy) + .graphQLSchema(schema) + .executionId(executionId) + .context(context) // Retain deprecated builder for test coverage + .graphQLContext(graphQLContext) + .root(root) + .operationDefinition(operation) + .fragmentsByName([MyFragment: fragment]) + .variables([var: 'value']) // Retain deprecated builder for test coverage + .dataLoaderRegistry(dataLoaderRegistry) + .dataLoaderDispatcherStrategy(mockDataLoaderDispatcherStrategy) + .build() then: executionContext.executionId == executionId @@ -58,6 +61,7 @@ class ExecutionContextBuilderTest extends Specification { executionContext.getFragmentsByName() == [MyFragment: fragment] executionContext.operationDefinition == operation executionContext.dataLoaderRegistry == dataLoaderRegistry + executionContext.dataLoaderDispatcherStrategy == mockDataLoaderDispatcherStrategy } def "builds the correct ExecutionContext with coerced variables"() { @@ -66,19 +70,19 @@ class ExecutionContextBuilderTest extends Specification { when: def executionContext = new ExecutionContextBuilder() - .instrumentation(instrumentation) - .queryStrategy(queryStrategy) - .mutationStrategy(mutationStrategy) - .subscriptionStrategy(subscriptionStrategy) - .graphQLSchema(schema) - .executionId(executionId) - .graphQLContext(graphQLContext) - .root(root) - .operationDefinition(operation) - .fragmentsByName([MyFragment: fragment]) - .coercedVariables(coercedVariables) - .dataLoaderRegistry(dataLoaderRegistry) - .build() + .instrumentation(instrumentation) + .queryStrategy(queryStrategy) + .mutationStrategy(mutationStrategy) + .subscriptionStrategy(subscriptionStrategy) + .graphQLSchema(schema) + .executionId(executionId) + .graphQLContext(graphQLContext) + .root(root) + .operationDefinition(operation) + .fragmentsByName([MyFragment: fragment]) + .coercedVariables(coercedVariables) + .dataLoaderRegistry(dataLoaderRegistry) + .build() then: executionContext.executionId == executionId @@ -134,24 +138,24 @@ class ExecutionContextBuilderTest extends Specification { given: def oldCoercedVariables = CoercedVariables.emptyVariables() def executionContextOld = new ExecutionContextBuilder() - .instrumentation(instrumentation) - .queryStrategy(queryStrategy) - .mutationStrategy(mutationStrategy) - .subscriptionStrategy(subscriptionStrategy) - .graphQLSchema(schema) - .executionId(executionId) - .graphQLContext(graphQLContext) - .root(root) - .operationDefinition(operation) - .coercedVariables(oldCoercedVariables) - .fragmentsByName([MyFragment: fragment]) - .dataLoaderRegistry(dataLoaderRegistry) - .build() + .instrumentation(instrumentation) + .queryStrategy(queryStrategy) + .mutationStrategy(mutationStrategy) + .subscriptionStrategy(subscriptionStrategy) + .graphQLSchema(schema) + .executionId(executionId) + .graphQLContext(graphQLContext) + .root(root) + .operationDefinition(operation) + .coercedVariables(oldCoercedVariables) + .fragmentsByName([MyFragment: fragment]) + .dataLoaderRegistry(dataLoaderRegistry) + .build() when: def coercedVariables = CoercedVariables.of([var: 'value']) def executionContext = executionContextOld.transform(builder -> builder - .coercedVariables(coercedVariables)) + .coercedVariables(coercedVariables)) then: executionContext.executionId == executionId @@ -205,4 +209,62 @@ class ExecutionContextBuilderTest extends Specification { executionContext.operationDefinition == operation executionContext.dataLoaderRegistry == dataLoaderRegistry } + + def "transform copies dispatcher"() { + given: + def oldCoercedVariables = CoercedVariables.emptyVariables() + def executionContextOld = new ExecutionContextBuilder() + .instrumentation(instrumentation) + .queryStrategy(queryStrategy) + .mutationStrategy(mutationStrategy) + .subscriptionStrategy(subscriptionStrategy) + .graphQLSchema(schema) + .executionId(executionId) + .graphQLContext(graphQLContext) + .root(root) + .operationDefinition(operation) + .coercedVariables(oldCoercedVariables) + .fragmentsByName([MyFragment: fragment]) + .dataLoaderRegistry(dataLoaderRegistry) + .dataLoaderDispatcherStrategy(DataLoaderDispatchStrategy.NO_OP) + .build() + + when: + def executionContext = executionContextOld + .transform(builder -> builder + .dataLoaderDispatcherStrategy(mockDataLoaderDispatcherStrategy)) + + then: + executionContext.getDataLoaderDispatcherStrategy() == mockDataLoaderDispatcherStrategy + } + + def "can detect operation type"() { + when: + def executionContext = new ExecutionContextBuilder() + .instrumentation(instrumentation) + .queryStrategy(queryStrategy) + .mutationStrategy(mutationStrategy) + .subscriptionStrategy(subscriptionStrategy) + .graphQLSchema(schema) + .executionId(executionId) + .graphQLContext(graphQLContext) + .root(root) + .operationDefinition(operation) + .fragmentsByName([MyFragment: fragment]) + .dataLoaderRegistry(dataLoaderRegistry) + .operationDefinition(OperationDefinition.newOperationDefinition().operation(opType).build()) + .build() + + then: + executionContext.isQueryOperation() == isQuery + executionContext.isMutationOperation() == isMutation + executionContext.isSubscriptionOperation() == isSubscription + + where: + opType | isQuery | isMutation | isSubscription + OperationDefinition.Operation.QUERY | true | false | false + OperationDefinition.Operation.MUTATION | false | true | false + OperationDefinition.Operation.SUBSCRIPTION | false | false | true + } + } diff --git a/src/test/groovy/graphql/execution/ExecutionStrategyParametersTest.groovy b/src/test/groovy/graphql/execution/ExecutionStrategyParametersTest.groovy index e45ff7c546..df09445497 100644 --- a/src/test/groovy/graphql/execution/ExecutionStrategyParametersTest.groovy +++ b/src/test/groovy/graphql/execution/ExecutionStrategyParametersTest.groovy @@ -12,10 +12,12 @@ class ExecutionStrategyParametersTest extends Specification { def "ExecutionParameters can be transformed"() { given: + def executionContext = Mock(ExecutionContext) def parameters = newParameters() .executionStepInfo(newExecutionStepInfo().type(GraphQLString)) .source(new Object()) .localContext("localContext") + .nonNullFieldValidator(new NonNullableFieldValidator(executionContext)) .fields(mergedSelectionSet("a": [])) .build() diff --git a/src/test/groovy/graphql/execution/ExecutionStrategyTest.groovy b/src/test/groovy/graphql/execution/ExecutionStrategyTest.groovy index 6a3d72ec07..a8de454c06 100644 --- a/src/test/groovy/graphql/execution/ExecutionStrategyTest.groovy +++ b/src/test/groovy/graphql/execution/ExecutionStrategyTest.groovy @@ -1,7 +1,9 @@ package graphql.execution import graphql.Assert +import graphql.EngineRunningState import graphql.ExceptionWhileDataFetching +import graphql.ExecutionInput import graphql.ExecutionResult import graphql.GraphQLContext import graphql.GraphqlErrorBuilder @@ -78,10 +80,12 @@ class ExecutionStrategyTest extends Specification { .subscriptionStrategy(executionStrategy) .coercedVariables(CoercedVariables.of(variables)) .graphQLContext(GraphQLContext.newContext().of("key", "context").build()) + .executionInput(ExecutionInput.newExecutionInput("{}").build()) .root("root") .dataLoaderRegistry(new DataLoaderRegistry()) .locale(Locale.getDefault()) .valueUnboxer(ValueUnboxer.DEFAULT) + .engineRunningState(new EngineRunningState()) new ExecutionContext(builder) } @@ -125,6 +129,7 @@ class ExecutionStrategyTest extends Specification { builder.operationDefinition(operation) builder.executionId(ExecutionId.generate()) + builder.executionInput(ExecutionInput.newExecutionInput("{}").build()) def executionContext = builder.build() def result = new Object() @@ -132,6 +137,7 @@ class ExecutionStrategyTest extends Specification { .executionStepInfo(ExecutionStepInfo.newExecutionStepInfo().type(objectType)) .source(result) .fields(mergedSelectionSet(["fld": [Field.newField().build()]])) + .nonNullFieldValidator(new NonNullableFieldValidator(executionContext)) .field(mergedField(Field.newField().build())) .build() @@ -152,7 +158,7 @@ class ExecutionStrategyTest extends Specification { Field field = new Field("someField") def fldDef = newFieldDefinition().name("test").type(fieldType).build() def executionStepInfo = ExecutionStepInfo.newExecutionStepInfo().type(fieldType).path(ResultPath.rootPath()).fieldDefinition(fldDef).build() - NonNullableFieldValidator nullableFieldValidator = new NonNullableFieldValidator(executionContext, executionStepInfo) + NonNullableFieldValidator nullableFieldValidator = new NonNullableFieldValidator(executionContext) def result = ["test", "1", "2", "3"] @@ -177,7 +183,7 @@ class ExecutionStrategyTest extends Specification { def fieldType = GraphQLString def fldDef = newFieldDefinition().name("test").type(fieldType).build() def executionStepInfo = ExecutionStepInfo.newExecutionStepInfo().type(fieldType).fieldDefinition(fldDef).build() - NonNullableFieldValidator nullableFieldValidator = new NonNullableFieldValidator(executionContext, executionStepInfo) + NonNullableFieldValidator nullableFieldValidator = new NonNullableFieldValidator(executionContext) def parameters = newParameters() .executionStepInfo(executionStepInfo) .nonNullFieldValidator(nullableFieldValidator) @@ -203,7 +209,7 @@ class ExecutionStrategyTest extends Specification { def fieldType = nonNull(GraphQLString) def fldDef = newFieldDefinition().name("test").type(fieldType).build() def executionStepInfo = ExecutionStepInfo.newExecutionStepInfo().type(fieldType).fieldDefinition(fldDef).build() - NonNullableFieldValidator nullableFieldValidator = new NonNullableFieldValidator(executionContext, executionStepInfo) + NonNullableFieldValidator nullableFieldValidator = new NonNullableFieldValidator(executionContext) def parameters = newParameters() .executionStepInfo(executionStepInfo) .nonNullFieldValidator(nullableFieldValidator) @@ -225,7 +231,7 @@ class ExecutionStrategyTest extends Specification { def fieldType = GraphQLString def fldDef = newFieldDefinition().name("test").type(fieldType).build() def executionStepInfo = ExecutionStepInfo.newExecutionStepInfo().type(fieldType).fieldDefinition(fldDef).build() - NonNullableFieldValidator nullableFieldValidator = new NonNullableFieldValidator(executionContext, executionStepInfo) + NonNullableFieldValidator nullableFieldValidator = new NonNullableFieldValidator(executionContext) def parameters = newParameters() .executionStepInfo(executionStepInfo) .nonNullFieldValidator(nullableFieldValidator) @@ -251,7 +257,7 @@ class ExecutionStrategyTest extends Specification { def fieldType = nonNull(GraphQLString) def fldDef = newFieldDefinition().name("test").type(fieldType).build() def executionStepInfo = ExecutionStepInfo.newExecutionStepInfo().type(fieldType).fieldDefinition(fldDef).build() - NonNullableFieldValidator nullableFieldValidator = new NonNullableFieldValidator(executionContext, executionStepInfo) + NonNullableFieldValidator nullableFieldValidator = new NonNullableFieldValidator(executionContext) def parameters = newParameters() .executionStepInfo(executionStepInfo) .nonNullFieldValidator(nullableFieldValidator) @@ -273,7 +279,7 @@ class ExecutionStrategyTest extends Specification { def fieldType = GraphQLString def fldDef = newFieldDefinition().name("test").type(fieldType).build() def executionStepInfo = ExecutionStepInfo.newExecutionStepInfo().type(fieldType).fieldDefinition(fldDef).build() - NonNullableFieldValidator nullableFieldValidator = new NonNullableFieldValidator(executionContext, executionStepInfo) + NonNullableFieldValidator nullableFieldValidator = new NonNullableFieldValidator(executionContext) def parameters = newParameters() .executionStepInfo(executionStepInfo) .nonNullFieldValidator(nullableFieldValidator) @@ -299,7 +305,7 @@ class ExecutionStrategyTest extends Specification { def fieldType = nonNull(GraphQLString) def fldDef = newFieldDefinition().name("test").type(fieldType).build() def typeInfo = ExecutionStepInfo.newExecutionStepInfo().type(fieldType).fieldDefinition(fldDef).build() - NonNullableFieldValidator nullableFieldValidator = new NonNullableFieldValidator(executionContext, typeInfo) + NonNullableFieldValidator nullableFieldValidator = new NonNullableFieldValidator(executionContext) def parameters = newParameters() .executionStepInfo(typeInfo) .nonNullFieldValidator(nullableFieldValidator) @@ -321,7 +327,7 @@ class ExecutionStrategyTest extends Specification { def fieldType = GraphQLString def fldDef = newFieldDefinition().name("test").type(fieldType).build() def typeInfo = ExecutionStepInfo.newExecutionStepInfo().type(fieldType).fieldDefinition(fldDef).build() - NonNullableFieldValidator nullableFieldValidator = new NonNullableFieldValidator(executionContext, typeInfo) + NonNullableFieldValidator nullableFieldValidator = new NonNullableFieldValidator(executionContext) def parameters = newParameters() .executionStepInfo(typeInfo) .nonNullFieldValidator(nullableFieldValidator) @@ -347,7 +353,7 @@ class ExecutionStrategyTest extends Specification { def fieldType = nonNull(GraphQLString) def fldDef = newFieldDefinition().name("test").type(fieldType).build() def typeInfo = ExecutionStepInfo.newExecutionStepInfo().type(fieldType).fieldDefinition(fldDef).build() - NonNullableFieldValidator nullableFieldValidator = new NonNullableFieldValidator(executionContext, typeInfo) + NonNullableFieldValidator nullableFieldValidator = new NonNullableFieldValidator(executionContext) def parameters = newParameters() .executionStepInfo(typeInfo) .nonNullFieldValidator(nullableFieldValidator) @@ -369,7 +375,7 @@ class ExecutionStrategyTest extends Specification { def fieldType = list(GraphQLString) def fldDef = newFieldDefinition().name("test").type(fieldType).build() def executionStepInfo = ExecutionStepInfo.newExecutionStepInfo().type(fieldType).path(ResultPath.rootPath()).fieldDefinition(fldDef).build() - NonNullableFieldValidator nullableFieldValidator = new NonNullableFieldValidator(executionContext, executionStepInfo) + NonNullableFieldValidator nullableFieldValidator = new NonNullableFieldValidator(executionContext) def result = ["test", "1", "2", "3"] def parameters = newParameters() .executionStepInfo(executionStepInfo) @@ -391,7 +397,7 @@ class ExecutionStrategyTest extends Specification { ExecutionContext executionContext = buildContext() def fieldType = Scalars.GraphQLInt def typeInfo = ExecutionStepInfo.newExecutionStepInfo().type(fieldType).build() - NonNullableFieldValidator nullableFieldValidator = new NonNullableFieldValidator(executionContext, typeInfo) + NonNullableFieldValidator nullableFieldValidator = new NonNullableFieldValidator(executionContext) String result = "not a number" def parameters = newParameters() @@ -416,7 +422,7 @@ class ExecutionStrategyTest extends Specification { ExecutionContext executionContext = buildContext() GraphQLEnumType enumType = newEnum().name("Enum").value("value").build() def typeInfo = ExecutionStepInfo.newExecutionStepInfo().type(enumType).build() - NonNullableFieldValidator nullableFieldValidator = new NonNullableFieldValidator(executionContext, typeInfo) + NonNullableFieldValidator nullableFieldValidator = new NonNullableFieldValidator(executionContext) String result = "not a enum number" def parameters = newParameters() @@ -463,7 +469,7 @@ class ExecutionStrategyTest extends Specification { ExecutionContext executionContext = buildContext() def fieldType = NullProducingScalar def typeInfo = ExecutionStepInfo.newExecutionStepInfo().type(nonNull(fieldType)).build() - NonNullableFieldValidator nullableFieldValidator = new NonNullableFieldValidator(executionContext, typeInfo) + NonNullableFieldValidator nullableFieldValidator = new NonNullableFieldValidator(executionContext) when: def parameters = newParameters() @@ -524,7 +530,7 @@ class ExecutionStrategyTest extends Specification { .build() ExecutionContext executionContext = buildContext(schema) ExecutionStepInfo typeInfo = ExecutionStepInfo.newExecutionStepInfo().type(objectType).build() - NonNullableFieldValidator nullableFieldValidator = new NonNullableFieldValidator(executionContext, typeInfo) + NonNullableFieldValidator nullableFieldValidator = new NonNullableFieldValidator(executionContext) Argument argument = new Argument("arg1", new StringValue("argVal")) Field field = new Field(someFieldName, [argument]) MergedField mergedField = mergedField(field) @@ -541,10 +547,10 @@ class ExecutionStrategyTest extends Specification { DataFetchingEnvironment environment when: - executionStrategy.resolveField(executionContext, parameters) + executionStrategy.resolveFieldWithInfo(executionContext, parameters) then: - 1 * dataFetcher.get(_,_,_) >> { environment = (it[2] as Supplier).get() } + 1 * dataFetcher.get(_, _, _) >> { environment = (it[2] as Supplier).get() } environment.fieldDefinition == fieldDefinition environment.graphQLSchema == schema environment.graphQlContext.get("key") == "context" @@ -589,7 +595,7 @@ class ExecutionStrategyTest extends Specification { .build() ExecutionContext executionContext = buildContext(schema) def typeInfo = ExecutionStepInfo.newExecutionStepInfo().type(objectType).build() - NonNullableFieldValidator nullableFieldValidator = new NonNullableFieldValidator(executionContext, typeInfo) + NonNullableFieldValidator nullableFieldValidator = new NonNullableFieldValidator(executionContext) ResultPath expectedPath = ResultPath.rootPath().segment(someFieldName) SourceLocation sourceLocation = new SourceLocation(666, 999) @@ -636,7 +642,7 @@ class ExecutionStrategyTest extends Specification { } when: - overridingStrategy.resolveField(executionContext, parameters) + overridingStrategy.resolveFieldWithInfo(executionContext, parameters) then: handlerCalled == true @@ -646,29 +652,6 @@ class ExecutionStrategyTest extends Specification { exceptionWhileDataFetching.getMessage().contains('This is the exception you are looking for') } - def "test that the old legacy method is still useful for those who derive new execution strategies"() { - - def expectedException = new UnsupportedOperationException("This is the exception you are looking for") - - //noinspection GroovyAssignabilityCheck,GroovyUnusedAssignment - def (ExecutionContext executionContext, GraphQLFieldDefinition fieldDefinition, ResultPath expectedPath, ExecutionStrategyParameters parameters, Field field, SourceLocation sourceLocation) = exceptionSetupFixture(expectedException) - - - ExecutionStrategy overridingStrategy = new ExecutionStrategy() { - @Override - CompletableFuture execute(ExecutionContext ec, ExecutionStrategyParameters p) throws NonNullableFieldWasNullException { - null - } - } - - when: - overridingStrategy.resolveField(executionContext, parameters) - - then: - executionContext.errors.size() == 1 - def exceptionWhileDataFetching = executionContext.errors[0] as ExceptionWhileDataFetching - exceptionWhileDataFetching.getMessage().contains('This is the exception you are looking for') - } def "#2519 data fetcher errors for a given field appear in FetchedResult within instrumentation"() { def expectedException = new UnsupportedOperationException("This is the exception you are looking for") @@ -700,7 +683,7 @@ class ExecutionStrategyTest extends Specification { } when: - overridingStrategy.resolveField(instrumentedExecutionContext, params) + overridingStrategy.resolveFieldWithInfo(instrumentedExecutionContext, params) then: FetchedValue fetchedValue = instrumentation.fetchedValues.get("someField") @@ -748,7 +731,7 @@ class ExecutionStrategyTest extends Specification { ExecutionContext executionContext = buildContext(schema) def typeInfo = ExecutionStepInfo.newExecutionStepInfo().type(objectType).build() - NonNullableFieldValidator nullableFieldValidator = new NonNullableFieldValidator(executionContext, typeInfo) + NonNullableFieldValidator nullableFieldValidator = new NonNullableFieldValidator(executionContext) Field field = new Field(someFieldName) def parameters = newParameters() @@ -761,7 +744,8 @@ class ExecutionStrategyTest extends Specification { .build() when: - executionStrategy.resolveField(executionContext, parameters).join() + FieldValueInfo fieldValueInfo = (executionStrategy.resolveFieldWithInfo(executionContext, parameters) as CompletableFuture).join() + (fieldValueInfo.fieldValueObject as CompletableFuture).join() then: thrown(CompletionException) @@ -776,7 +760,7 @@ class ExecutionStrategyTest extends Specification { def fieldType = list(Scalars.GraphQLInt) def fldDef = newFieldDefinition().name("test").type(fieldType).build() def executionStepInfo = ExecutionStepInfo.newExecutionStepInfo().type(fieldType).path(ResultPath.rootPath()).fieldDefinition(fldDef).build() - NonNullableFieldValidator nullableFieldValidator = new NonNullableFieldValidator(executionContext, executionStepInfo) + NonNullableFieldValidator nullableFieldValidator = new NonNullableFieldValidator(executionContext) def parameters = newParameters() .executionStepInfo(executionStepInfo) @@ -800,7 +784,7 @@ class ExecutionStrategyTest extends Specification { def fieldType = list(Scalars.GraphQLInt) def fldDef = newFieldDefinition().name("test").type(fieldType).build() def executionStepInfo = ExecutionStepInfo.newExecutionStepInfo().type(fieldType).path(ResultPath.rootPath()).fieldDefinition(fldDef).build() - NonNullableFieldValidator nullableFieldValidator = new NonNullableFieldValidator(executionContext, executionStepInfo) + NonNullableFieldValidator nullableFieldValidator = new NonNullableFieldValidator(executionContext) def parameters = newParameters() .executionStepInfo(executionStepInfo) @@ -824,7 +808,7 @@ class ExecutionStrategyTest extends Specification { def fieldType = list(Scalars.GraphQLInt) def fldDef = newFieldDefinition().name("test").type(fieldType).build() def executionStepInfo = ExecutionStepInfo.newExecutionStepInfo().type(fieldType).path(ResultPath.rootPath()).fieldDefinition(fldDef).build() - NonNullableFieldValidator nullableFieldValidator = new NonNullableFieldValidator(executionContext, executionStepInfo) + NonNullableFieldValidator nullableFieldValidator = new NonNullableFieldValidator(executionContext) def parameters = newParameters() .executionStepInfo(executionStepInfo) @@ -854,6 +838,7 @@ class ExecutionStrategyTest extends Specification { .path(ResultPath.fromList(["parent"])) .field(mergedField(field)) .fields(mergedSelectionSet(["parent": [mergedField(field)]])) + .nonNullFieldValidator(new NonNullableFieldValidator(executionContext)) .executionStepInfo(executionStepInfo) .build() @@ -886,6 +871,7 @@ class ExecutionStrategyTest extends Specification { .field(mergedField(field)) .fields(mergedSelectionSet(["parent": [mergedField(field)]])) .executionStepInfo(executionStepInfo) + .nonNullFieldValidator(new NonNullableFieldValidator(executionContext)) .build() when: @@ -907,6 +893,7 @@ class ExecutionStrategyTest extends Specification { .path(ResultPath.fromList(["parent"])) .field(mergedField(field)) .fields(mergedSelectionSet(["parent": [mergedField(field)]])) + .nonNullFieldValidator(new NonNullableFieldValidator(executionContext)) .executionStepInfo(executionStepInfo) .build() @@ -930,7 +917,7 @@ class ExecutionStrategyTest extends Specification { def fieldType = list(Scalars.GraphQLInt) def fldDef = newFieldDefinition().name("test").type(fieldType).build() def executionStepInfo = ExecutionStepInfo.newExecutionStepInfo().type(fieldType).path(ResultPath.rootPath()).fieldDefinition(fldDef).build() - NonNullableFieldValidator nullableFieldValidator = new NonNullableFieldValidator(executionContext, executionStepInfo) + NonNullableFieldValidator nullableFieldValidator = new NonNullableFieldValidator(executionContext) def parameters = newParameters() .executionStepInfo(executionStepInfo) @@ -954,7 +941,7 @@ class ExecutionStrategyTest extends Specification { def fieldType = list(Scalars.GraphQLInt) def fldDef = newFieldDefinition().name("test").type(fieldType).build() def typeInfo = ExecutionStepInfo.newExecutionStepInfo().type(fieldType).fieldDefinition(fldDef).build() - NonNullableFieldValidator nullableFieldValidator = new NonNullableFieldValidator(executionContext, typeInfo) + NonNullableFieldValidator nullableFieldValidator = new NonNullableFieldValidator(executionContext) def parameters = newParameters() .executionStepInfo(typeInfo) diff --git a/src/test/groovy/graphql/execution/ExecutionTest.groovy b/src/test/groovy/graphql/execution/ExecutionTest.groovy index 7130beca0f..6d207ae1a1 100644 --- a/src/test/groovy/graphql/execution/ExecutionTest.groovy +++ b/src/test/groovy/graphql/execution/ExecutionTest.groovy @@ -1,5 +1,6 @@ package graphql.execution +import graphql.EngineRunningState import graphql.ExecutionInput import graphql.ExecutionResult import graphql.ExecutionResultImpl @@ -51,7 +52,7 @@ class ExecutionTest extends Specification { def document = parser.parseDocument(query) when: - execution.execute(document, MutationSchema.schema, ExecutionId.generate(), emptyExecutionInput, instrumentationState) + execution.execute(document, MutationSchema.schema, ExecutionId.generate(), emptyExecutionInput, instrumentationState, new EngineRunningState(emptyExecutionInput)) then: queryStrategy.execute == 1 @@ -71,7 +72,7 @@ class ExecutionTest extends Specification { def document = parser.parseDocument(query) when: - execution.execute(document, MutationSchema.schema, ExecutionId.generate(), emptyExecutionInput, instrumentationState) + execution.execute(document, MutationSchema.schema, ExecutionId.generate(), emptyExecutionInput, instrumentationState, new EngineRunningState(emptyExecutionInput)) then: queryStrategy.execute == 0 @@ -91,7 +92,7 @@ class ExecutionTest extends Specification { def document = parser.parseDocument(query) when: - execution.execute(document, MutationSchema.schema, ExecutionId.generate(), emptyExecutionInput, instrumentationState) + execution.execute(document, MutationSchema.schema, ExecutionId.generate(), emptyExecutionInput, instrumentationState, new EngineRunningState(emptyExecutionInput)) then: queryStrategy.execute == 0 @@ -128,7 +129,7 @@ class ExecutionTest extends Specification { when: - execution.execute(document, MutationSchema.schema, ExecutionId.generate(), emptyExecutionInput, instrumentationState) + execution.execute(document, MutationSchema.schema, ExecutionId.generate(), emptyExecutionInput, instrumentationState, new EngineRunningState(emptyExecutionInput)) then: queryStrategy.execute == 0 diff --git a/src/test/groovy/graphql/execution/ExperimentalDisableErrorPropagationTest.groovy b/src/test/groovy/graphql/execution/ExperimentalDisableErrorPropagationTest.groovy new file mode 100644 index 0000000000..366c95426e --- /dev/null +++ b/src/test/groovy/graphql/execution/ExperimentalDisableErrorPropagationTest.groovy @@ -0,0 +1,114 @@ +package graphql.execution + +import graphql.Directives +import graphql.ExecutionInput +import graphql.TestUtil +import spock.lang.Specification + +class ExperimentalDisableErrorPropagationTest extends Specification { + + void setup() { + Directives.setExperimentalDisableErrorPropagationEnabled(true) + } + + def "with experimental_disableErrorPropagation, null is returned"() { + + def sdl = ''' + type Query { + foo : Int! + } + directive @experimental_disableErrorPropagation on QUERY | MUTATION | SUBSCRIPTION + ''' + + def graphql = TestUtil.graphQL(sdl).build() + + def query = ''' + query GetFoo @experimental_disableErrorPropagation { foo } + ''' + when: + + ExecutionInput ei = ExecutionInput.newExecutionInput(query).root( + [foo: null] + ).build() + + def er = graphql.execute(ei) + + then: + er.data != null + er.data.foo == null + er.errors[0].path.toList() == ["foo"] + } + + def "without experimental_disableErrorPropagation, error is propagated"() { + + def sdl = ''' + type Query { + foo : Int! + } + directive @experimental_disableErrorPropagation on QUERY | MUTATION | SUBSCRIPTION + ''' + + def graphql = TestUtil.graphQL(sdl).build() + + def query = ''' + query GetFoo { foo } + ''' + when: + + ExecutionInput ei = ExecutionInput.newExecutionInput(query).root( + [foo: null] + ).build() + + def er = graphql.execute(ei) + + then: + er.data == null + er.errors[0].message == "The field at path '/foo' was declared as a non null type, but the code involved in retrieving data has wrongly returned a null value. The graphql specification requires that the parent field be set to null, or if that is non nullable that it bubble up null to its parent and so on. The non-nullable type is 'Int' within parent type 'Query'" + er.errors[0].path.toList() == ["foo"] + } + + def "With experimental_disableErrorPropagation JVM disabled, error is propagated"() { + def sdl = ''' + type Query { + foo : Int! + } + directive @experimental_disableErrorPropagation on QUERY | MUTATION | SUBSCRIPTION + ''' + + def graphql = TestUtil.graphQL(sdl).build() + + def query = ''' + query GetFoo @experimental_disableErrorPropagation { foo } + ''' + when: + + Directives.setExperimentalDisableErrorPropagationEnabled(false) // JVM wide + + ExecutionInput ei = ExecutionInput.newExecutionInput(query).root( + [foo: null] + ).build() + + def er = graphql.execute(ei) + + then: + er.data == null + er.errors[0].message == "The field at path '/foo' was declared as a non null type, but the code involved in retrieving data has wrongly returned a null value. The graphql specification requires that the parent field be set to null, or if that is non nullable that it bubble up null to its parent and so on. The non-nullable type is 'Int' within parent type 'Query'" + er.errors[0].path.toList() == ["foo"] + } + + def "when @experimental_disableErrorPropagation is not added to the schema operation is gets added by schema code"() { + + def sdl = ''' + type Query { + foo : Int! + } + ''' + + when: + def graphql = TestUtil.graphQL(sdl).build() + + then: + graphql.getGraphQLSchema().getDirective(Directives.ExperimentalDisableErrorPropagationDirective.getName()) === Directives.ExperimentalDisableErrorPropagationDirective + } + +} diff --git a/src/test/groovy/graphql/execution/NonNullableFieldValidatorTest.groovy b/src/test/groovy/graphql/execution/NonNullableFieldValidatorTest.groovy index 0a39bddd36..33977d515c 100644 --- a/src/test/groovy/graphql/execution/NonNullableFieldValidatorTest.groovy +++ b/src/test/groovy/graphql/execution/NonNullableFieldValidatorTest.groovy @@ -7,15 +7,22 @@ import static graphql.schema.GraphQLNonNull.nonNull class NonNullableFieldValidatorTest extends Specification { - ExecutionContext context = Mock(ExecutionContext) - def "non nullable field throws exception"() { + ExecutionContext context = Mock(ExecutionContext) { + propagateErrorsOnNonNullContractFailure() >> true + } + ExecutionStepInfo typeInfo = ExecutionStepInfo.newExecutionStepInfo().type(nonNull(GraphQLString)).build() - NonNullableFieldValidator validator = new NonNullableFieldValidator(context, typeInfo) + def parameters = Mock(ExecutionStrategyParameters) { + getPath() >> ResultPath.rootPath() + getExecutionStepInfo() >> typeInfo + } + + NonNullableFieldValidator validator = new NonNullableFieldValidator(context) when: - validator.validate(ResultPath.rootPath(), null) + validator.validate(parameters, null) then: thrown(NonNullableFieldWasNullException) @@ -23,12 +30,42 @@ class NonNullableFieldValidatorTest extends Specification { } def "nullable field does not throw exception"() { + ExecutionContext context = Mock(ExecutionContext) { + propagateErrorsOnNonNullContractFailure() >> true + } + ExecutionStepInfo typeInfo = ExecutionStepInfo.newExecutionStepInfo().type(GraphQLString).build() - NonNullableFieldValidator validator = new NonNullableFieldValidator(context, typeInfo) + def parameters = Mock(ExecutionStrategyParameters) { + getPath() >> ResultPath.rootPath() + getExecutionStepInfo() >> typeInfo + } + + NonNullableFieldValidator validator = new NonNullableFieldValidator(context) + + when: + def result = validator.validate(parameters, null) + + then: + result == null + } + + def "non nullable field returns null if errors are not propagated"() { + ExecutionContext context = Mock(ExecutionContext) { + propagateErrorsOnNonNullContractFailure() >> false + } + + ExecutionStepInfo typeInfo = ExecutionStepInfo.newExecutionStepInfo().type(nonNull(GraphQLString)).build() + + def parameters = Mock(ExecutionStrategyParameters) { + getPath() >> ResultPath.rootPath() + getExecutionStepInfo() >> typeInfo + } + + NonNullableFieldValidator validator = new NonNullableFieldValidator(context) when: - def result = validator.validate(ResultPath.rootPath(), null) + def result = validator.validate(parameters, null) then: result == null diff --git a/src/test/groovy/graphql/execution/ResultPathTest.groovy b/src/test/groovy/graphql/execution/ResultPathTest.groovy index 8242a740b6..a7fe960f19 100644 --- a/src/test/groovy/graphql/execution/ResultPathTest.groovy +++ b/src/test/groovy/graphql/execution/ResultPathTest.groovy @@ -212,6 +212,13 @@ class ResultPathTest extends Specification { path.toList() == ["a", "b"] } + def "pass any other object than string or int"(){ + when: + ResultPath.fromList(["a", "b", true]) + + then: + notThrown(ClassCastException) + } def "can append paths"() { when: diff --git a/src/test/groovy/graphql/execution/SubscriptionExecutionStrategyTest.groovy b/src/test/groovy/graphql/execution/SubscriptionExecutionStrategyTest.groovy index c6e0f5a52b..3d7bb28086 100644 --- a/src/test/groovy/graphql/execution/SubscriptionExecutionStrategyTest.groovy +++ b/src/test/groovy/graphql/execution/SubscriptionExecutionStrategyTest.groovy @@ -628,4 +628,97 @@ class SubscriptionExecutionStrategyTest extends Specification { instrumentResultCalls.size() == 11 // one for the initial execution and then one for each stream event } + def "emits results in the order they complete"() { + List promises = [] + Publisher publisher = new RxJavaMessagePublisher(10) + + DataFetcher newMessageDF = { env -> return publisher } + DataFetcher senderDF = dfThatDoesNotComplete("sender", promises) + DataFetcher textDF = PropertyDataFetcher.fetching("text") + + GraphQL graphQL = buildSubscriptionQL(newMessageDF, senderDF, textDF) + + def executionInput = ExecutionInput.newExecutionInput().query(""" + subscription NewMessages { + newMessage(roomId: 123) { + sender + text + } + } + """).build() + + def executionResult = graphQL.execute(executionInput) + + when: + Publisher msgStream = executionResult.getData() + def capturingSubscriber = new CapturingSubscriber(100) + msgStream.subscribe(capturingSubscriber) + + // make them all complete but in reverse order + promises.reverse().forEach { it.run() } + + then: + Awaitility.await().untilTrue(capturingSubscriber.isDone()) + + // in order they completed - which was reversed + def messages = capturingSubscriber.events + messages.size() == 10 + for (int i = 0, j = messages.size() - 1; i < messages.size(); i++, j--) { + def message = messages[i].data + assert message == ["newMessage": [sender: "sender" + j, text: "text" + j]] + } + } + + def "emits results in the order they where emitted by source"() { + List promises = [] + Publisher publisher = new RxJavaMessagePublisher(10) + + DataFetcher newMessageDF = { env -> return publisher } + DataFetcher senderDF = dfThatDoesNotComplete("sender", promises) + DataFetcher textDF = PropertyDataFetcher.fetching("text") + + GraphQL graphQL = buildSubscriptionQL(newMessageDF, senderDF, textDF) + + def executionInput = ExecutionInput.newExecutionInput().query(""" + subscription NewMessages { + newMessage(roomId: 123) { + sender + text + } + } + """).graphQLContext([(SubscriptionExecutionStrategy.KEEP_SUBSCRIPTION_EVENTS_ORDERED): true]).build() + + def executionResult = graphQL.execute(executionInput) + + when: + Publisher msgStream = executionResult.getData() + def capturingSubscriber = new CapturingSubscriber(100) + msgStream.subscribe(capturingSubscriber) + + // make them all complete but in reverse order + promises.reverse().forEach { it.run() } + + then: + Awaitility.await().untilTrue(capturingSubscriber.isDone()) + + // in order they were emitted originally - they have been buffered + def messages = capturingSubscriber.events + messages.size() == 10 + for (int i = 0; i < messages.size(); i++) { + def message = messages[i].data + assert message == ["newMessage": [sender: "sender" + i, text: "text" + i]] + } + } + + private static DataFetcher dfThatDoesNotComplete(String propertyName, List promises) { + { env -> + def df = PropertyDataFetcher.fetching(propertyName) + def value = df.get(env) + + def cf = new CompletableFuture() + promises.add({ cf.complete(value) }) + return cf + } + } + } diff --git a/src/test/groovy/graphql/execution/ValuesResolverTest.groovy b/src/test/groovy/graphql/execution/ValuesResolverTest.groovy index 1a7aa22b3e..b9256f1304 100644 --- a/src/test/groovy/graphql/execution/ValuesResolverTest.groovy +++ b/src/test/groovy/graphql/execution/ValuesResolverTest.groovy @@ -2,7 +2,6 @@ package graphql.execution import graphql.Directives import graphql.ErrorType -import graphql.ExecutionInput import graphql.GraphQLContext import graphql.GraphQLException import graphql.TestUtil @@ -23,9 +22,11 @@ import graphql.language.Value import graphql.language.VariableDefinition import graphql.language.VariableReference import graphql.schema.CoercingParseValueException +import graphql.schema.DataFetcher import spock.lang.Specification import spock.lang.Unroll +import static graphql.ExecutionInput.newExecutionInput import static graphql.Scalars.GraphQLBoolean import static graphql.Scalars.GraphQLFloat import static graphql.Scalars.GraphQLInt @@ -88,6 +89,72 @@ class ValuesResolverTest extends Specification { [name: 'x'] || [name: 'x'] } + def "getVariableValues: @oneOf map object as variable input"() { + given: + def aField = newInputObjectField() + .name("a") + .type(GraphQLString) + def bField = newInputObjectField() + .name("b") + .type(GraphQLString) + def inputType = newInputObject() + .name("Person") + .withAppliedDirective(Directives.OneOfDirective.toAppliedDirective()) + .field(aField) + .field(bField) + .build() + def schema = TestUtil.schemaWithInputType(inputType) + VariableDefinition variableDefinition = new VariableDefinition("variable", new TypeName("Person")) + + when: + def resolvedValues = ValuesResolver.coerceVariableValues(schema, [variableDefinition], RawVariables.of([variable: [a: 'x']]), graphQLContext, locale) + then: + resolvedValues.get('variable') == [a: 'x'] + + when: + resolvedValues = ValuesResolver.coerceVariableValues(schema, [variableDefinition], RawVariables.of([variable: [b: 'y']]), graphQLContext, locale) + then: + resolvedValues.get('variable') == [b: 'y'] + + when: + ValuesResolver.coerceVariableValues(schema, [variableDefinition], RawVariables.of([variable: [a: 'x', b: 'y']]), graphQLContext, locale) + then: + thrown(OneOfTooManyKeysException.class) + } + + def "can validate inner input oneOf fields"() { + // + // a test from https://github.com/graphql-java/graphql-java/issues/3572 + // + def sdl = ''' + input OneOf @oneOf { a: Int, b: Int } + type Outer { inner(oneof: OneOf!): Boolean } + type Query { outer: Outer } + ''' + + DataFetcher outer = { env -> return null } + def graphQL = TestUtil.graphQL(sdl, [Query: [outer: outer]]).build() + + def query = ''' + query ($oneof: OneOf!) { + outer { + # these variables are never accessed by a data fetcher because + # Query.outer always returns null + inner(oneof: $oneof) + } + } + ''' + + when: + def er = graphQL.execute( + newExecutionInput(query).variables([oneof: [a: 2, b: 1]]) + ) + + then: + er.errors.size() == 1 + er.errors[0].message == "Exactly one key must be specified for OneOf type 'OneOf'." + } + class Person { def name = "" @@ -460,59 +527,59 @@ class ValuesResolverTest extends Specification { e.message == "Exactly one key must be specified for OneOf type 'OneOfInputObject'." where: - testCase | inputValue | variables + testCase | inputValue | variables '{oneOfField: {a: "abc", b: 123} } {}' | buildObjectLiteral([ oneOfField: [ a: StringValue.of("abc"), b: IntValue.of(123) ] - ]) | CoercedVariables.emptyVariables() + ]) | CoercedVariables.emptyVariables() '{oneOfField: {a: null, b: 123 }} {}' | buildObjectLiteral([ oneOfField: [ a: NullValue.of(), b: IntValue.of(123) ] - ]) | CoercedVariables.emptyVariables() + ]) | CoercedVariables.emptyVariables() '{oneOfField: {a: $var, b: 123 }} { var: null }' | buildObjectLiteral([ oneOfField: [ a: VariableReference.of("var"), b: IntValue.of(123) ] - ]) | CoercedVariables.of(["var": null]) + ]) | CoercedVariables.of(["var": null]) '{oneOfField: {a: $var, b: 123 }} {}' | buildObjectLiteral([ oneOfField: [ a: VariableReference.of("var"), b: IntValue.of(123) ] - ]) | CoercedVariables.emptyVariables() + ]) | CoercedVariables.emptyVariables() '{oneOfField: {a : "abc", b : null}} {}' | buildObjectLiteral([ oneOfField: [ a: StringValue.of("abc"), b: NullValue.of() ] - ]) | CoercedVariables.emptyVariables() + ]) | CoercedVariables.emptyVariables() '{oneOfField: {a : null, b : null}} {}' | buildObjectLiteral([ oneOfField: [ a: NullValue.of(), b: NullValue.of() ] - ]) | CoercedVariables.emptyVariables() + ]) | CoercedVariables.emptyVariables() '{oneOfField: {a : $a, b : $b}} {a : "abc"}' | buildObjectLiteral([ oneOfField: [ a: VariableReference.of("a"), b: VariableReference.of("v") ] - ]) | CoercedVariables.of(["a": "abc"]) + ]) | CoercedVariables.of(["a": "abc"]) '$var {var : {oneOfField: { a : "abc", b : 123}}}' | VariableReference.of("var") - | CoercedVariables.of(["var": ["oneOfField": ["a": "abc", "b": 123]]]) + | CoercedVariables.of(["var": ["oneOfField": ["a": "abc", "b": 123]]]) - '$var {var : {oneOfField: {} }}' | VariableReference.of("var") - | CoercedVariables.of(["var": ["oneOfField": [:]]]) + '$var {var : {oneOfField: {} }}' | VariableReference.of("var") + | CoercedVariables.of(["var": ["oneOfField": [:]]]) } @@ -600,7 +667,7 @@ class ValuesResolverTest extends Specification { a: VariableReference.of("var") ]) | CoercedVariables.of(["var": null]) - '`{ a: $var }` { }' | buildObjectLiteral([ + '`{ a: $var }` { }' | buildObjectLiteral([ a: VariableReference.of("var") ]) | CoercedVariables.emptyVariables() } @@ -631,38 +698,38 @@ class ValuesResolverTest extends Specification { where: - testCase | inputArray | variables + testCase | inputArray | variables '[{ a: "abc", b: 123 }]' - | ArrayValue.newArrayValue() - .value(buildObjectLiteral([ - a: StringValue.of("abc"), - b: IntValue.of(123) - ])).build() - | CoercedVariables.emptyVariables() + | ArrayValue.newArrayValue() + .value(buildObjectLiteral([ + a: StringValue.of("abc"), + b: IntValue.of(123) + ])).build() + | CoercedVariables.emptyVariables() '[{ a: "abc" }, { a: "xyz", b: 789 }]' - | ArrayValue.newArrayValue() - .values([ - buildObjectLiteral([ + | ArrayValue.newArrayValue() + .values([ + buildObjectLiteral([ a: StringValue.of("abc") - ]), - buildObjectLiteral([ + ]), + buildObjectLiteral([ a: StringValue.of("xyz"), b: IntValue.of(789) - ]), - ]).build() - | CoercedVariables.emptyVariables() + ]), + ]).build() + | CoercedVariables.emptyVariables() '[{ a: "abc" }, $var ] [{ a: "abc" }, { a: "xyz", b: 789 }]' - | ArrayValue.newArrayValue() - .values([ - buildObjectLiteral([ + | ArrayValue.newArrayValue() + .values([ + buildObjectLiteral([ a: StringValue.of("abc") - ]), - VariableReference.of("var") - ]).build() - | CoercedVariables.of("var": [a: "xyz", b: 789]) + ]), + VariableReference.of("var") + ]).build() + | CoercedVariables.of("var": [a: "xyz", b: 789]) } @@ -692,31 +759,31 @@ class ValuesResolverTest extends Specification { where: - testCase | inputArray | variables + testCase | inputArray | variables '[{ a: "abc" }, { a: null }]' - | ArrayValue.newArrayValue() - .values([ - buildObjectLiteral([ + | ArrayValue.newArrayValue() + .values([ + buildObjectLiteral([ a: StringValue.of("abc") - ]), - buildObjectLiteral([ + ]), + buildObjectLiteral([ a: NullValue.of() - ]), - ]).build() - | CoercedVariables.emptyVariables() + ]), + ]).build() + | CoercedVariables.emptyVariables() '[{ a: "abc" }, { a: $var }] [{ a: "abc" }, { a: null }]' - | ArrayValue.newArrayValue() - .values([ - buildObjectLiteral([ + | ArrayValue.newArrayValue() + .values([ + buildObjectLiteral([ a: StringValue.of("abc") - ]), - buildObjectLiteral([ + ]), + buildObjectLiteral([ a: VariableReference.of("var") - ]), - ]).build() - | CoercedVariables.of("var": null) + ]), + ]).build() + | CoercedVariables.of("var": null) } @@ -746,38 +813,38 @@ class ValuesResolverTest extends Specification { where: - testCase | inputArray | variables + testCase | inputArray | variables '[{ a: "abc", b: 123 }]' - | ArrayValue.newArrayValue() - .value(buildObjectLiteral([ - a: StringValue.of("abc"), - b: IntValue.of(123) - ])).build() - | CoercedVariables.emptyVariables() + | ArrayValue.newArrayValue() + .value(buildObjectLiteral([ + a: StringValue.of("abc"), + b: IntValue.of(123) + ])).build() + | CoercedVariables.emptyVariables() '[{ a: "abc" }, { a: "xyz", b: 789 }]' - | ArrayValue.newArrayValue() - .values([ - buildObjectLiteral([ + | ArrayValue.newArrayValue() + .values([ + buildObjectLiteral([ a: StringValue.of("abc") - ]), - buildObjectLiteral([ + ]), + buildObjectLiteral([ a: StringValue.of("xyz"), b: IntValue.of(789) - ]), - ]).build() - | CoercedVariables.emptyVariables() + ]), + ]).build() + | CoercedVariables.emptyVariables() '[{ a: "abc" }, $var ] [{ a: "abc" }, { a: "xyz", b: 789 }]' - | ArrayValue.newArrayValue() - .values([ - buildObjectLiteral([ + | ArrayValue.newArrayValue() + .values([ + buildObjectLiteral([ a: StringValue.of("abc") - ]), - VariableReference.of("var") - ]).build() - | CoercedVariables.of("var": [a: "xyz", b: 789]) + ]), + VariableReference.of("var") + ]).build() + | CoercedVariables.of("var": [a: "xyz", b: 789]) } @@ -807,38 +874,38 @@ class ValuesResolverTest extends Specification { where: - testCase | inputArray | variables + testCase | inputArray | variables '[{ a: "abc", b: 123 }]' - | ArrayValue.newArrayValue() - .value(buildObjectLiteral([ - a: StringValue.of("abc"), - b: IntValue.of(123) - ])).build() - | CoercedVariables.emptyVariables() + | ArrayValue.newArrayValue() + .value(buildObjectLiteral([ + a: StringValue.of("abc"), + b: IntValue.of(123) + ])).build() + | CoercedVariables.emptyVariables() '[{ a: "abc" }, { a: "xyz", b: 789 }]' - | ArrayValue.newArrayValue() - .values([ - buildObjectLiteral([ + | ArrayValue.newArrayValue() + .values([ + buildObjectLiteral([ a: StringValue.of("abc") - ]), - buildObjectLiteral([ + ]), + buildObjectLiteral([ a: StringValue.of("xyz"), b: IntValue.of(789) - ]), - ]).build() - | CoercedVariables.emptyVariables() + ]), + ]).build() + | CoercedVariables.emptyVariables() '[{ a: "abc" }, $var ] [{ a: "abc" }, { a: "xyz", b: 789 }]' - | ArrayValue.newArrayValue() - .values([ - buildObjectLiteral([ + | ArrayValue.newArrayValue() + .values([ + buildObjectLiteral([ a: StringValue.of("abc") - ]), - VariableReference.of("var") - ]).build() - | CoercedVariables.of("var": [a: "xyz", b: 789]) + ]), + VariableReference.of("var") + ]).build() + | CoercedVariables.of("var": [a: "xyz", b: 789]) } @@ -915,26 +982,26 @@ class ValuesResolverTest extends Specification { where: - testCase | inputArray | variables | expectedValues + testCase | inputArray | variables | expectedValues '[{ a: "abc"}]' - | ArrayValue.newArrayValue() - .value(buildObjectLiteral([ - a: StringValue.of("abc"), - ])).build() - | CoercedVariables.emptyVariables() - | [arg: [[a: "abc"]]] + | ArrayValue.newArrayValue() + .value(buildObjectLiteral([ + a: StringValue.of("abc"), + ])).build() + | CoercedVariables.emptyVariables() + | [arg: [[a: "abc"]]] '[{ a: "abc" }, $var ] [{ a: "abc" }, { b: 789 }]' - | ArrayValue.newArrayValue() - .values([ - buildObjectLiteral([ + | ArrayValue.newArrayValue() + .values([ + buildObjectLiteral([ a: StringValue.of("abc") - ]), - VariableReference.of("var") - ]).build() - | CoercedVariables.of("var": [b: 789]) - | [arg: [[a: "abc"], [b: 789]]] + ]), + VariableReference.of("var") + ]).build() + | CoercedVariables.of("var": [b: 789]) + | [arg: [[a: "abc"], [b: 789]]] } @@ -1223,7 +1290,7 @@ class ValuesResolverTest extends Specification { } ''' - def executionInput = ExecutionInput.newExecutionInput() + def executionInput = newExecutionInput() .query(mutation) .variables([input: [name: 'Name', position: 'UNKNOWN_POSITION']]) .build() @@ -1261,7 +1328,7 @@ class ValuesResolverTest extends Specification { } ''' - def executionInput = ExecutionInput.newExecutionInput() + def executionInput = newExecutionInput() .query(mutation) .variables([input: [name: 'Name', hilarious: 'sometimes']]) .build() @@ -1299,7 +1366,7 @@ class ValuesResolverTest extends Specification { } ''' - def executionInput = ExecutionInput.newExecutionInput() + def executionInput = newExecutionInput() .query(mutation) .variables([input: [name: 'Name', laughsPerMinute: 'none']]) .build() diff --git a/src/test/groovy/graphql/execution/directives/QueryDirectivesImplTest.groovy b/src/test/groovy/graphql/execution/directives/QueryDirectivesImplTest.groovy index 227681b555..80b1bbbd5c 100644 --- a/src/test/groovy/graphql/execution/directives/QueryDirectivesImplTest.groovy +++ b/src/test/groovy/graphql/execution/directives/QueryDirectivesImplTest.groovy @@ -4,6 +4,9 @@ import graphql.GraphQLContext import graphql.TestUtil import graphql.execution.CoercedVariables import graphql.execution.MergedField +import graphql.execution.NormalizedVariables +import graphql.language.IntValue +import graphql.normalized.NormalizedInputValue import spock.lang.Specification import static graphql.language.AstPrinter.printAst @@ -32,7 +35,10 @@ class QueryDirectivesImplTest extends Specification { def mergedField = MergedField.newMergedField([f1, f2]).build() - def impl = new QueryDirectivesImpl(mergedField, schema, [var: 10], GraphQLContext.getDefault(), Locale.getDefault()) + def impl = new QueryDirectivesImpl(mergedField, schema, + CoercedVariables.of([var: 10]), + { -> NormalizedVariables.of([var: new NormalizedInputValue("type", IntValue.of(10))]) }, + GraphQLContext.getDefault(), Locale.getDefault()) when: def directives = impl.getImmediateDirectivesByName() @@ -77,6 +83,7 @@ class QueryDirectivesImplTest extends Specification { .mergedField(mergedField) .schema(schema) .coercedVariables(CoercedVariables.of([var: 10])) + .normalizedVariables({ NormalizedVariables.of([var: new NormalizedInputValue("type", IntValue.of(10))]) }) .graphQLContext(GraphQLContext.getDefault()) .locale(Locale.getDefault()) .build() diff --git a/src/test/groovy/graphql/execution/directives/QueryDirectivesIntegrationTest.groovy b/src/test/groovy/graphql/execution/directives/QueryDirectivesIntegrationTest.groovy index 89a5d85a07..8c907862a7 100644 --- a/src/test/groovy/graphql/execution/directives/QueryDirectivesIntegrationTest.groovy +++ b/src/test/groovy/graphql/execution/directives/QueryDirectivesIntegrationTest.groovy @@ -1,8 +1,14 @@ package graphql.execution.directives + import graphql.GraphQL import graphql.TestUtil +import graphql.execution.RawVariables +import graphql.language.IntValue +import graphql.normalized.ExecutableNormalizedOperationFactory +import graphql.normalized.NormalizedInputValue import graphql.schema.DataFetcher +import graphql.schema.FieldCoordinates import spock.lang.Specification /** @@ -88,7 +94,7 @@ class QueryDirectivesIntegrationTest extends Specification { capturedDirectives = [:] } - def "can collector directives as expected"() { + def "can collect directives as expected"() { when: def er = execute(pathologicalQuery) then: @@ -106,6 +112,36 @@ class QueryDirectivesIntegrationTest extends Specification { joinArgs(immediate) == "cached(forMillis:5),cached(forMillis:10)" } + def "can collect merged field directives as expected"() { + when: + def query = """ + query Books { + books(searchString: "monkey") { + review @timeout(afterMillis: 10) @cached(forMillis : 10) + review @timeout(afterMillis: 100) @cached(forMillis : 100) + } + } + + """ + def er = execute(query) + then: + er.errors.isEmpty() + + def immediateMap = capturedDirectives["review"].getImmediateAppliedDirectivesByName() + def entries = immediateMap.entrySet().collectEntries({ + [(it.getKey()): joinArgs(it.getValue())] + }) + entries == [cached : "cached(forMillis:10),cached(forMillis:100)", + timeout: "timeout(afterMillis:10),timeout(afterMillis:100)" + ] + + def immediate = capturedDirectives["review"].getImmediateAppliedDirective("cached") + joinArgs(immediate) == "cached(forMillis:10),cached(forMillis:100)" + + def immediate2 = capturedDirectives["review"].getImmediateAppliedDirective("timeout") + joinArgs(immediate2) == "timeout(afterMillis:10),timeout(afterMillis:100)" + } + def "wont create directives for peer fields accidentally"() { def query = '''query Books { books(searchString: "monkey") { @@ -134,4 +170,68 @@ class QueryDirectivesIntegrationTest extends Specification { joinArgs(immediate) == "cached(forMillis:10)" } + def "can capture directive argument values inside ENO path"() { + def query = TestUtil.parseQuery(pathologicalQuery) + when: + def eno = ExecutableNormalizedOperationFactory.createExecutableNormalizedOperationWithRawVariables( + schema, query, "Books", RawVariables.emptyVariables()) + + + then: + def booksENF = eno.getTopLevelFields()[0] + booksENF != null + def bookQueryDirectives = eno.getQueryDirectives(booksENF) + bookQueryDirectives.immediateAppliedDirectivesByName.isEmpty() + + def reviewField = eno.getCoordinatesToNormalizedFields().get(FieldCoordinates.coordinates("Book", "review")) + def reviewQueryDirectives = eno.getQueryDirectives(reviewField[0]) + def reviewImmediateDirectivesMap = reviewQueryDirectives.immediateAppliedDirectivesByName + def argInputValues = simplifiedInputValuesWithState(reviewImmediateDirectivesMap) + argInputValues == [ + timeout: [ + [timeout: [[afterMillis: 5]]], [timeout: [[afterMillis: 28]]], [timeout: [[afterMillis: 10]]] + ], + cached : [ + [cached: [[forMillis: 5]]], [cached: [[forMillis: 10]]] + ] + ] + + // normalised values are AST values + def normalizedValues = simplifiedNormalizedValues(reviewQueryDirectives.getNormalizedInputValueByImmediateAppliedDirectives()) + normalizedValues == [ + timeout: [ + [afterMillis: 5], [afterMillis: 28], [afterMillis: 10]], + cached : [ + [forMillis: 5], [forMillis: 10]] + ] + + } + + def simplifiedInputValuesWithState(Map> mapOfDirectives) { + def simpleMap = [:] + mapOfDirectives.forEach { k, listOfDirectives -> + + def dirVals = listOfDirectives.collect { qd -> + def argVals = qd.getArguments().collect { arg -> + def argValue = arg.getArgumentValue() + return [(arg.name): argValue?.value] + } + return [(qd.name): argVals] + } + simpleMap[k] = dirVals + } + return simpleMap + } + + def simplifiedNormalizedValues(Map> mapOfDirectives) { + Map>> simpleMap = new LinkedHashMap<>() + mapOfDirectives.forEach { qd, argMap -> + def argVals = argMap.collect { entry -> + def argValueAst = entry.value?.value as IntValue // just assume INtValue for these tests + return [(entry.key): argValueAst?.value?.toInteger()] + } + simpleMap.computeIfAbsent(qd.name, { _ -> [] }).addAll(argVals) + } + return simpleMap + } } diff --git a/src/test/groovy/graphql/execution/incremental/DeferExecutionSupportIntegrationTest.groovy b/src/test/groovy/graphql/execution/incremental/DeferExecutionSupportIntegrationTest.groovy index e7844cc750..3f149a8ad5 100644 --- a/src/test/groovy/graphql/execution/incremental/DeferExecutionSupportIntegrationTest.groovy +++ b/src/test/groovy/graphql/execution/incremental/DeferExecutionSupportIntegrationTest.groovy @@ -6,7 +6,9 @@ import graphql.ExecutionInput import graphql.ExecutionResult import graphql.ExperimentalApi import graphql.GraphQL +import graphql.GraphqlErrorBuilder import graphql.TestUtil +import graphql.execution.DataFetcherResult import graphql.execution.pubsub.CapturingSubscriber import graphql.incremental.DelayedIncrementalPartialResult import graphql.incremental.IncrementalExecutionResult @@ -55,6 +57,7 @@ class DeferExecutionSupportIntegrationTest extends Specification { comments: [Comment] resolvesToNull: String dataFetcherError: String + dataAndError: String coercionError: Int typeMismatchError: [String] nonNullableError: String! @@ -90,9 +93,10 @@ class DeferExecutionSupportIntegrationTest extends Specification { private static DataFetcher resolve(Object value, Integer sleepMs, boolean allowMultipleCalls) { return new DataFetcher() { boolean executed = false + @Override Object get(DataFetchingEnvironment environment) throws Exception { - if(executed && !allowMultipleCalls) { + if (executed && !allowMultipleCalls) { throw new IllegalStateException("This data fetcher can run only once") } executed = true @@ -127,6 +131,22 @@ class DeferExecutionSupportIntegrationTest extends Specification { } } + private static DataFetcher resolveWithDataAndError(Object data) { + return new DataFetcher() { + @Override + Object get(DataFetchingEnvironment environment) throws Exception { + return DataFetcherResult.newResult() + .data(data) + .error( + GraphqlErrorBuilder.newError() + .message("Bang!") + .build() + ) + .build() + } + } + } + void setup() { def runtimeWiring = RuntimeWiring.newRuntimeWiring() .type(newTypeWiring("Query") @@ -147,6 +167,7 @@ class DeferExecutionSupportIntegrationTest extends Specification { .type(newTypeWiring("Post").dataFetcher("wordCount", resolve(45999, 10, true))) .type(newTypeWiring("Post").dataFetcher("latestComment", resolve([title: "Comment title"], 10))) .type(newTypeWiring("Post").dataFetcher("dataFetcherError", resolveWithException())) + .type(newTypeWiring("Post").dataFetcher("dataAndError", resolveWithDataAndError("data"))) .type(newTypeWiring("Post").dataFetcher("coercionError", resolve("Not a number", 10))) .type(newTypeWiring("Post").dataFetcher("typeMismatchError", resolve([a: "A Map instead of a List"], 10))) .type(newTypeWiring("Post").dataFetcher("nonNullableError", resolve(null))) @@ -298,7 +319,7 @@ class DeferExecutionSupportIntegrationTest extends Specification { }) def indexOfId3 = Iterables.indexOf(incrementalResults, { - it.incremental[0] == [path: ["post3"], label:"defer-id3", data: [id3: "3"]] + it.incremental[0] == [path: ["post3"], label: "defer-id3", data: [id3: "3"]] }) // Assert that both post3 and id3 are present @@ -349,7 +370,7 @@ class DeferExecutionSupportIntegrationTest extends Specification { def incrementalResults = getIncrementalResults(initialResult) then: - if(type == "Post") { + if (type == "Post") { assert incrementalResults == [ [ hasNext : false, @@ -481,8 +502,8 @@ class DeferExecutionSupportIntegrationTest extends Specification { hasNext : false, incremental: [ [ - path : ["post"], - data : [summary: "A summary"] + path: ["post"], + data: [summary: "A summary"] ] ] ] @@ -519,8 +540,8 @@ class DeferExecutionSupportIntegrationTest extends Specification { hasNext : false, incremental: [ [ - path : ["post"], - data : [resolvesToNull: null] + path: ["post"], + data: [resolvesToNull: null] ] ] ] @@ -560,8 +581,8 @@ class DeferExecutionSupportIntegrationTest extends Specification { hasNext : false, incremental: [ [ - path : ["post"], - data : [summary: "A summary", text: "The full text"] + path: ["post"], + data: [summary: "A summary", text: "The full text"] ] ] ] @@ -739,8 +760,8 @@ class DeferExecutionSupportIntegrationTest extends Specification { incremental: [ [ label: "summary-defer", - path: ["post"], - data: [summary: "A summary"] + path : ["post"], + data : [summary: "A summary"] ] ] ], @@ -749,8 +770,8 @@ class DeferExecutionSupportIntegrationTest extends Specification { incremental: [ [ label: "text-defer", - path: ["post"], - data: [text: "The full text"] + path : ["post"], + data : [text: "The full text"] ] ] ] @@ -1157,6 +1178,104 @@ class DeferExecutionSupportIntegrationTest extends Specification { ] } + def "can handle data fetcher that returns both data and error on nested field"() { + def query = ''' + query { + hello + ... @defer { + post { + dataAndError + } + } + } + ''' + + when: + def initialResult = executeQuery(query) + + then: + initialResult.toSpecification() == [ + data : [hello: "world"], + hasNext: true + ] + + when: + def incrementalResults = getIncrementalResults(initialResult) + + then: + incrementalResults == [ + [ + hasNext : false, + incremental: [ + [ + path : [], + data : [post: [dataAndError: "data"]], + errors: [[ + message : "Bang!", + locations : [], + extensions: [classification: "DataFetchingException"] + ]], + ], + ] + ], + ] + } + + def "can handle data fetcher that returns both data and error"() { + def query = ''' + query { + post { + id + ... @defer { + dataAndError + } + ... @defer { + text + } + } + } + ''' + + when: + def initialResult = executeQuery(query) + + then: + initialResult.toSpecification() == [ + data : [post: [id: "1001"]], + hasNext: true + ] + + when: + def incrementalResults = getIncrementalResults(initialResult) + + then: + incrementalResults == [ + [ + hasNext : true, + incremental: [ + [ + path : ["post"], + data : [dataAndError: "data"], + errors: [[ + message : "Bang!", + locations : [], + extensions: [classification: "DataFetchingException"] + ]], + ], + ] + ], + [ + hasNext : false, + incremental: [ + [ + path: ["post"], + data: [text: "The full text"], + ] + ] + ] + ] + } + def "can handle UnresolvedTypeException"() { def query = """ query { @@ -1211,8 +1330,8 @@ class DeferExecutionSupportIntegrationTest extends Specification { hasNext : false, incremental: [ [ - path : ["post"], - data : [text: "The full text"], + path: ["post"], + data: [text: "The full text"], ] ] ] @@ -1270,8 +1389,8 @@ class DeferExecutionSupportIntegrationTest extends Specification { hasNext : false, incremental: [ [ - path : ["post"], - data : [text: "The full text"], + path: ["post"], + data: [text: "The full text"], ] ] ] @@ -1329,8 +1448,8 @@ class DeferExecutionSupportIntegrationTest extends Specification { hasNext : false, incremental: [ [ - path : ["post"], - data : [text: "The full text"], + path: ["post"], + data: [text: "The full text"], ] ] ] @@ -1371,6 +1490,7 @@ class DeferExecutionSupportIntegrationTest extends Specification { hasNext : true, incremental: [ [ + data : null, path : ["post"], errors: [ [ @@ -1388,8 +1508,8 @@ class DeferExecutionSupportIntegrationTest extends Specification { hasNext : false, incremental: [ [ - path : ["post"], - data : [text: "The full text"], + path: ["post"], + data: [text: "The full text"], ] ] ] @@ -1510,7 +1630,9 @@ class DeferExecutionSupportIntegrationTest extends Specification { deferredResultStream.subscribe(subscriber) Awaitility.await().untilTrue(subscriber.isDone()) - + if (subscriber.throwable != null) { + throw new RuntimeException(subscriber.throwable) + } return subscriber.getEvents() .collect { it.toSpecification() } } diff --git a/src/test/groovy/graphql/execution/incremental/DeferredCallTest.groovy b/src/test/groovy/graphql/execution/incremental/DeferredCallTest.groovy index 252d6ca449..77da81298a 100644 --- a/src/test/groovy/graphql/execution/incremental/DeferredCallTest.groovy +++ b/src/test/groovy/graphql/execution/incremental/DeferredCallTest.groovy @@ -69,6 +69,7 @@ class DeferredCallTest extends Specification { then: deferPayload.toSpecification() == [ + data : null, path : ["path"], label : "my-label", errors: [ diff --git a/src/test/groovy/graphql/execution/incremental/IncrementalCallStateDeferTest.groovy b/src/test/groovy/graphql/execution/incremental/IncrementalCallStateDeferTest.groovy index 8634458122..d99b49fae4 100644 --- a/src/test/groovy/graphql/execution/incremental/IncrementalCallStateDeferTest.groovy +++ b/src/test/groovy/graphql/execution/incremental/IncrementalCallStateDeferTest.groovy @@ -3,11 +3,16 @@ package graphql.execution.incremental import graphql.ExecutionResultImpl import graphql.execution.ResultPath +import graphql.execution.pubsub.CapturingSubscriber import graphql.incremental.DelayedIncrementalPartialResult import org.awaitility.Awaitility +import org.reactivestreams.Publisher import spock.lang.Specification +import java.util.concurrent.Callable import java.util.concurrent.CompletableFuture +import java.util.concurrent.Executors +import java.util.concurrent.ThreadFactory import java.util.function.Supplier class IncrementalCallStateDeferTest extends Specification { @@ -57,7 +62,7 @@ class IncrementalCallStateDeferTest extends Specification { incrementalCallState.enqueue(offThread("C", 10, "/field/path")) when: - def subscriber = new graphql.execution.pubsub.CapturingSubscriber() { + def subscriber = new CapturingSubscriber() { @Override void onComplete() { assert false, "This should not be called!" @@ -83,7 +88,7 @@ class IncrementalCallStateDeferTest extends Specification { incrementalCallState.enqueue(offThread("C", 10, "/field/path")) // <-- will finish first when: - def subscriber = new graphql.execution.pubsub.CapturingSubscriber() { + def subscriber = new CapturingSubscriber() { @Override void onNext(DelayedIncrementalPartialResult executionResult) { this.getEvents().add(executionResult) @@ -112,8 +117,8 @@ class IncrementalCallStateDeferTest extends Specification { incrementalCallState.enqueue(offThread("C", 10, "/field/path")) // <-- will finish first when: - def subscriber1 = new graphql.execution.pubsub.CapturingSubscriber() - def subscriber2 = new graphql.execution.pubsub.CapturingSubscriber() + def subscriber1 = new CapturingSubscriber() + def subscriber2 = new CapturingSubscriber() incrementalCallState.startDeferredCalls().subscribe(subscriber1) incrementalCallState.startDeferredCalls().subscribe(subscriber2) @@ -195,12 +200,89 @@ class IncrementalCallStateDeferTest extends Specification { results.any { it.incremental[0].data["c"] == "C" } } + def "nothing happens until the publisher is subscribed to"() { + + def startingValue = "*" + given: + def incrementalCallState = new IncrementalCallState() + incrementalCallState.enqueue(offThread({ -> startingValue + "A" }, 100, "/field/path")) // <-- will finish last + incrementalCallState.enqueue(offThread({ -> startingValue + "B" }, 50, "/field/path")) // <-- will finish second + incrementalCallState.enqueue(offThread({ -> startingValue + "C" }, 10, "/field/path")) // <-- will finish first + + when: + + // get the publisher but not work has been done here + def publisher = incrementalCallState.startDeferredCalls() + // we are changing a side effect after the publisher is created + startingValue = "_" + + // subscription wll case the queue publisher to start draining the queue + List results = subscribeAndWaitCalls(publisher) + + then: + assertResultsSizeAndHasNextRule(3, results) + results[0].incremental[0].data["_c"] == "_C" + results[1].incremental[0].data["_b"] == "_B" + results[2].incremental[0].data["_a"] == "_A" + } + + def "can swap threads on subscribe"() { + + given: + def incrementalCallState = new IncrementalCallState() + incrementalCallState.enqueue(offThread({ -> "A" }, 100, "/field/path")) // <-- will finish last + incrementalCallState.enqueue(offThread({ -> "B" }, 50, "/field/path")) // <-- will finish second + incrementalCallState.enqueue(offThread({ -> "C" }, 10, "/field/path")) // <-- will finish first + + when: + + // get the publisher but not work has been done here + def publisher = incrementalCallState.startDeferredCalls() + + def threadFactory = new ThreadFactory() { + @Override + Thread newThread(Runnable r) { + return new Thread(r, "SubscriberThread") + } + } + def executor = Executors.newSingleThreadExecutor(threadFactory) + + def subscribeThreadName = "" + Callable callable = new Callable() { + @Override + Object call() throws Exception { + subscribeThreadName = Thread.currentThread().getName() + def listOfResults = subscribeAndWaitCalls(publisher) + return listOfResults + } + } + def future = executor.submit(callable) + + Awaitility.await().until { future.isDone() } + + then: + def results = future.get() + + // we subscribed on our other thread + subscribeThreadName == "SubscriberThread" + + assertResultsSizeAndHasNextRule(3, results) + results[0].incremental[0].data["c"] == "C" + results[1].incremental[0].data["b"] == "B" + results[2].incremental[0].data["a"] == "A" + } + private static DeferredFragmentCall offThread(String data, int sleepTime, String path) { + offThread(() -> data, sleepTime, path) + } + + private static DeferredFragmentCall offThread(Supplier dataSupplier, int sleepTime, String path) { def callSupplier = new Supplier>() { @Override CompletableFuture get() { return CompletableFuture.supplyAsync({ Thread.sleep(sleepTime) + String data = dataSupplier.get() if (data == "Bang") { throw new RuntimeException(data) } @@ -239,11 +321,17 @@ class IncrementalCallStateDeferTest extends Specification { } private static List startAndWaitCalls(IncrementalCallState incrementalCallState) { - def subscriber = new graphql.execution.pubsub.CapturingSubscriber() - - incrementalCallState.startDeferredCalls().subscribe(subscriber) + def publisher = incrementalCallState.startDeferredCalls() + return subscribeAndWaitCalls(publisher) + } + private static List subscribeAndWaitCalls(Publisher publisher) { + def subscriber = new CapturingSubscriber() + publisher.subscribe(subscriber) Awaitility.await().untilTrue(subscriber.isDone()) + if (subscriber.throwable != null) { + throw new RuntimeException(subscriber.throwable) + } return subscriber.getEvents() } } diff --git a/src/test/groovy/graphql/execution/instrumentation/DataLoaderCacheCanBeAsyncTest.groovy b/src/test/groovy/graphql/execution/instrumentation/DataLoaderCacheCanBeAsyncTest.groovy index 3b57bf9780..9aebce3640 100644 --- a/src/test/groovy/graphql/execution/instrumentation/DataLoaderCacheCanBeAsyncTest.groovy +++ b/src/test/groovy/graphql/execution/instrumentation/DataLoaderCacheCanBeAsyncTest.groovy @@ -87,7 +87,7 @@ class DataLoaderCacheCanBeAsyncTest extends Specification { def valueCache = new CustomValueCache() valueCache.store.put("a", [id: "cachedA", name: "cachedAName"]) - DataLoaderOptions options = DataLoaderOptions.newOptions().setValueCache(valueCache).setCachingEnabled(true) + DataLoaderOptions options = DataLoaderOptions.newOptions().setValueCache(valueCache).setCachingEnabled(true).build() DataLoader userDataLoader = DataLoaderFactory.newDataLoader(userBatchLoader, options) registry = DataLoaderRegistry.newRegistry() diff --git a/src/test/groovy/graphql/execution/instrumentation/InstrumentationTest.groovy b/src/test/groovy/graphql/execution/instrumentation/InstrumentationTest.groovy index a92cf94518..6580d59904 100644 --- a/src/test/groovy/graphql/execution/instrumentation/InstrumentationTest.groovy +++ b/src/test/groovy/graphql/execution/instrumentation/InstrumentationTest.groovy @@ -13,10 +13,9 @@ import graphql.language.AstPrinter import graphql.parser.Parser import graphql.schema.DataFetcher import graphql.schema.DataFetchingEnvironment -import graphql.schema.PropertyDataFetcher +import graphql.schema.SingletonPropertyDataFetcher import graphql.schema.StaticDataFetcher import org.awaitility.Awaitility -import org.jetbrains.annotations.NotNull import spock.lang.Specification import java.util.concurrent.CompletableFuture @@ -99,7 +98,7 @@ class InstrumentationTest extends Specification { instrumentation.dfClasses.size() == 2 instrumentation.dfClasses[0] == StaticDataFetcher.class - instrumentation.dfClasses[1] == PropertyDataFetcher.class + instrumentation.dfClasses[1] == SingletonPropertyDataFetcher.class instrumentation.dfInvocations.size() == 2 @@ -183,7 +182,6 @@ class InstrumentationTest extends Specification { } } - @NotNull @Override DataFetcher instrumentDataFetcher(DataFetcher dataFetcher, InstrumentationFieldFetchParameters parameters, InstrumentationState state) { System.out.println(String.format("t%s instrument DF for %s", Thread.currentThread().getId(), parameters.environment.getExecutionStepInfo().getPath())) diff --git a/src/test/groovy/graphql/execution/instrumentation/ModernTestingInstrumentation.groovy b/src/test/groovy/graphql/execution/instrumentation/ModernTestingInstrumentation.groovy index 5d6fbb1d8e..822d08f5a6 100644 --- a/src/test/groovy/graphql/execution/instrumentation/ModernTestingInstrumentation.groovy +++ b/src/test/groovy/graphql/execution/instrumentation/ModernTestingInstrumentation.groovy @@ -86,9 +86,9 @@ class ModernTestingInstrumentation implements Instrumentation { } @Override - InstrumentationContext beginFieldFetch(InstrumentationFieldFetchParameters parameters, InstrumentationState state) { + FieldFetchingInstrumentationContext beginFieldFetching(InstrumentationFieldFetchParameters parameters, InstrumentationState state) { assert state == instrumentationState - return new TestingInstrumentContext("fetch-$parameters.field.name", executionList, throwableList, useOnDispatch) + return new TestingFieldFetchingInstrumentationContext("fetch-$parameters.field.name", executionList, throwableList, useOnDispatch) } @Override diff --git a/src/test/groovy/graphql/execution/instrumentation/TestingFieldFetchingInstrumentationContext.groovy b/src/test/groovy/graphql/execution/instrumentation/TestingFieldFetchingInstrumentationContext.groovy new file mode 100644 index 0000000000..50fcaccd2e --- /dev/null +++ b/src/test/groovy/graphql/execution/instrumentation/TestingFieldFetchingInstrumentationContext.groovy @@ -0,0 +1,9 @@ +package graphql.execution.instrumentation + +class TestingFieldFetchingInstrumentationContext extends TestingInstrumentContext implements FieldFetchingInstrumentationContext { + + TestingFieldFetchingInstrumentationContext(Object op, Object executionList, Object throwableList, Boolean useOnDispatch) { + super(op, executionList, throwableList, useOnDispatch) + } +} + diff --git a/src/test/groovy/graphql/execution/instrumentation/dataloader/BatchCompareDataFetchers.java b/src/test/groovy/graphql/execution/instrumentation/dataloader/BatchCompareDataFetchers.java index 7f20938b3b..3c43b94b5b 100644 --- a/src/test/groovy/graphql/execution/instrumentation/dataloader/BatchCompareDataFetchers.java +++ b/src/test/groovy/graphql/execution/instrumentation/dataloader/BatchCompareDataFetchers.java @@ -10,6 +10,7 @@ import java.util.ArrayList; import java.util.Arrays; +import java.util.Collection; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; @@ -36,7 +37,7 @@ public void useAsyncBatchLoading(boolean flag) { useAsyncBatchLoading.set(flag); } - // Shops + private static final Map shops = new LinkedHashMap<>(); private static final Map expensiveShops = new LinkedHashMap<>(); @@ -99,9 +100,9 @@ private static List> getDepartmentsForShops(List shops) { public DataLoader> departmentsForShopDataLoader = DataLoaderFactory.newDataLoader(departmentsForShopsBatchLoader); - public DataFetcher>> departmentsForShopDataLoaderDataFetcher = environment -> { + public DataFetcher departmentsForShopDataLoaderDataFetcher = environment -> { Shop shop = environment.getSource(); - return departmentsForShopDataLoader.load(shop.getId()); + return environment.getDataLoader("departments").load(shop.getId()); }; // Products @@ -135,9 +136,9 @@ private static List> getProductsForDepartments(List de public DataLoader> productsForDepartmentDataLoader = DataLoaderFactory.newDataLoader(productsForDepartmentsBatchLoader); - public DataFetcher>> productsForDepartmentDataLoaderDataFetcher = environment -> { + public DataFetcher productsForDepartmentDataLoaderDataFetcher = environment -> { Department department = environment.getSource(); - return productsForDepartmentDataLoader.load(department.getId()); + return environment.getDataLoader("products").load(department.getId()); }; private CompletableFuture maybeAsyncWithSleep(Supplier> supplier) { diff --git a/src/test/groovy/graphql/execution/instrumentation/dataloader/DataLoaderCompanyProductBackend.java b/src/test/groovy/graphql/execution/instrumentation/dataloader/DataLoaderCompanyProductBackend.java index 51d2353bf7..14d2f425c8 100644 --- a/src/test/groovy/graphql/execution/instrumentation/dataloader/DataLoaderCompanyProductBackend.java +++ b/src/test/groovy/graphql/execution/instrumentation/dataloader/DataLoaderCompanyProductBackend.java @@ -2,6 +2,7 @@ import com.google.common.collect.ImmutableList; +import org.dataloader.BatchLoader; import org.dataloader.DataLoader; import org.dataloader.DataLoaderFactory; @@ -26,12 +27,13 @@ public DataLoaderCompanyProductBackend(int companyCount, int projectCount) { mkCompany(projectCount); } - projectsLoader = DataLoaderFactory.newDataLoader(keys -> getProjectsForCompanies(keys).thenApply(projects -> keys + BatchLoader> uuidListBatchLoader = keys -> getProjectsForCompanies(keys).thenApply(projects -> keys .stream() .map(companyId -> projects.stream() .filter(project -> project.getCompanyId().equals(companyId)) .collect(Collectors.toList())) - .collect(Collectors.toList()))); + .collect(Collectors.toList())); + projectsLoader = DataLoaderFactory.newDataLoader(uuidListBatchLoader); } diff --git a/src/test/groovy/graphql/execution/instrumentation/dataloader/DataLoaderCompanyProductMutationTest.groovy b/src/test/groovy/graphql/execution/instrumentation/dataloader/DataLoaderCompanyProductMutationTest.groovy index 649da5e0d4..33cbb86d1f 100644 --- a/src/test/groovy/graphql/execution/instrumentation/dataloader/DataLoaderCompanyProductMutationTest.groovy +++ b/src/test/groovy/graphql/execution/instrumentation/dataloader/DataLoaderCompanyProductMutationTest.groovy @@ -48,7 +48,7 @@ class DataLoaderCompanyProductMutationTest extends Specification { newTypeWiring("Company").dataFetcher("projects", { environment -> DataLoaderCompanyProductBackend.Company source = environment.getSource() - return backend.getProjectsLoader().load(source.getId()) + return environment.getDataLoader("projects-dl").load(source.getId()) })) .type( newTypeWiring("Query").dataFetcher("companies", { diff --git a/src/test/groovy/graphql/execution/instrumentation/dataloader/DataLoaderDispatcherTest.groovy b/src/test/groovy/graphql/execution/instrumentation/dataloader/DataLoaderDispatcherTest.groovy index 7eaa9cec10..2996305f52 100644 --- a/src/test/groovy/graphql/execution/instrumentation/dataloader/DataLoaderDispatcherTest.groovy +++ b/src/test/groovy/graphql/execution/instrumentation/dataloader/DataLoaderDispatcherTest.groovy @@ -1,6 +1,7 @@ package graphql.execution.instrumentation.dataloader import graphql.ExecutionInput +import graphql.ExecutionResult import graphql.GraphQL import graphql.TestUtil import graphql.execution.AsyncSerialExecutionStrategy @@ -8,14 +9,18 @@ import graphql.execution.instrumentation.ChainedInstrumentation import graphql.execution.instrumentation.InstrumentationState import graphql.execution.instrumentation.SimplePerformantInstrumentation import graphql.execution.instrumentation.parameters.InstrumentationExecutionParameters +import graphql.execution.pubsub.CapturingSubscriber import graphql.schema.DataFetcher +import graphql.schema.DataFetchingEnvironment +import org.awaitility.Awaitility import org.dataloader.BatchLoader import org.dataloader.DataLoaderFactory import org.dataloader.DataLoaderRegistry -import org.jetbrains.annotations.NotNull +import org.reactivestreams.Publisher +import reactor.core.publisher.Mono import spock.lang.Specification -import spock.lang.Unroll +import java.time.Duration import java.util.concurrent.CompletableFuture import java.util.concurrent.CompletionStage @@ -90,7 +95,6 @@ class DataLoaderDispatcherTest extends Specification { def enhancingInstrumentation = new SimplePerformantInstrumentation() { - @NotNull @Override ExecutionInput instrumentExecutionInput(ExecutionInput executionInput, InstrumentationExecutionParameters parameters, InstrumentationState state) { assert executionInput.getDataLoaderRegistry() == startingDataLoaderRegistry @@ -114,10 +118,10 @@ class DataLoaderDispatcherTest extends Specification { } - @Unroll - def "ensure DataLoaderDispatcher works for #executionStrategyName"() { + def "ensure DataLoaderDispatcher works for async serial execution strategy"() { given: + def executionStrategy = new AsyncSerialExecutionStrategy() def starWarsWiring = new StarWarsDataLoaderWiring() def dlRegistry = starWarsWiring.newDataLoaderRegistry() @@ -130,15 +134,12 @@ class DataLoaderDispatcherTest extends Specification { def asyncResult = graphql.executeAsync(newExecutionInput().query(query).dataLoaderRegistry(dlRegistry)) + Awaitility.await().atMost(Duration.ofMillis(200)).until { -> asyncResult.isDone() } def er = asyncResult.join() then: er.data == expectedQueryData - where: - executionStrategyName | executionStrategy || _ - "AsyncExecutionStrategy" | new AsyncSerialExecutionStrategy() || _ - "AsyncSerialExecutionStrategy" | new AsyncSerialExecutionStrategy() || _ } def "basic batch loading is possible"() { @@ -275,4 +276,81 @@ class DataLoaderDispatcherTest extends Specification { er.errors.isEmpty() er.data == support.buildResponse(depth) } + + def "issue 3662 - dataloader dispatching can work with subscriptions"() { + + def sdl = ''' + type Query { + field : String + } + + type Subscription { + onSub : OnSub + } + + type OnSub { + x : String + y : String + } + ''' + + // the dispatching is ALWAYS so not really batching but it completes + BatchLoader batchLoader = { keys -> + CompletableFuture.supplyAsync { + Thread.sleep(50) // some delay + keys + } + } + + DataFetcher dlDF = { DataFetchingEnvironment env -> + def dataLoader = env.getDataLoaderRegistry().getDataLoader("dl") + return dataLoader.load("working as expected") + } + DataFetcher dlSub = { DataFetchingEnvironment env -> + return Mono.just([x: "X", y: "Y"]) + } + def runtimeWiring = newRuntimeWiring() + .type(newTypeWiring("OnSub") + .dataFetcher("x", dlDF) + .dataFetcher("y", dlDF) + .build() + ) + .type(newTypeWiring("Subscription") + .dataFetcher("onSub", dlSub) + .build() + ) + .build() + + def graphql = TestUtil.graphQL(sdl, runtimeWiring).build() + + DataLoaderRegistry dataLoaderRegistry = new DataLoaderRegistry() + dataLoaderRegistry.register("dl", DataLoaderFactory.newDataLoader(batchLoader)) + + when: + def query = """ + subscription s { + onSub { + x, y + } + } + """ + def executionInput = newExecutionInput() + .dataLoaderRegistry(dataLoaderRegistry) + .query(query) + .build() + def er = graphql.execute(executionInput) + + then: + er.errors.isEmpty() + def subscriber = new CapturingSubscriber() + Publisher pub = er.data + pub.subscribe(subscriber) + + Awaitility.await().untilTrue(subscriber.isDone()) + + subscriber.getEvents().size() == 1 + + def msgER = subscriber.getEvents()[0] as ExecutionResult + msgER.data == [onSub: [x: "working as expected", y: "working as expected"]] + } } diff --git a/src/test/groovy/graphql/execution/instrumentation/dataloader/DataLoaderHangingTest.groovy b/src/test/groovy/graphql/execution/instrumentation/dataloader/DataLoaderHangingTest.groovy index 2d98da377f..00dd49a098 100644 --- a/src/test/groovy/graphql/execution/instrumentation/dataloader/DataLoaderHangingTest.groovy +++ b/src/test/groovy/graphql/execution/instrumentation/dataloader/DataLoaderHangingTest.groovy @@ -192,7 +192,7 @@ class DataLoaderHangingTest extends Specification { }) }, executor) } - }, DataLoaderOptions.newOptions().setMaxBatchSize(5)) + }, DataLoaderOptions.newOptions().setMaxBatchSize(5).build()) def dataLoaderSongs = DataLoaderFactory.newDataLoader(new BatchLoader>() { @Override @@ -209,7 +209,7 @@ class DataLoaderHangingTest extends Specification { }) }, executor) } - }, DataLoaderOptions.newOptions().setMaxBatchSize(5)) + }, DataLoaderOptions.newOptions().setMaxBatchSize(5).build()) def dataLoaderRegistry = new DataLoaderRegistry() dataLoaderRegistry.register("artist.albums", dataLoaderAlbums) diff --git a/src/test/groovy/graphql/execution/instrumentation/dataloader/DataLoaderNodeTest.groovy b/src/test/groovy/graphql/execution/instrumentation/dataloader/DataLoaderNodeTest.groovy index dd4be355f7..16d00be727 100644 --- a/src/test/groovy/graphql/execution/instrumentation/dataloader/DataLoaderNodeTest.groovy +++ b/src/test/groovy/graphql/execution/instrumentation/dataloader/DataLoaderNodeTest.groovy @@ -11,6 +11,7 @@ import graphql.schema.GraphQLObjectType import graphql.schema.GraphQLSchema import graphql.schema.StaticDataFetcher import org.dataloader.DataLoader +import org.dataloader.DataLoaderFactory import org.dataloader.DataLoaderRegistry import spock.lang.Specification @@ -69,15 +70,15 @@ class DataLoaderNodeTest extends Specification { } class NodeDataFetcher implements DataFetcher { - DataLoader loader + String name - NodeDataFetcher(DataLoader loader) { - this.loader = loader + NodeDataFetcher(String name) { + this.name = name } @Override Object get(DataFetchingEnvironment environment) throws Exception { - return loader.load(environment.getSource()) + return environment.getDataLoader(name).load(environment.getSource()) } } @@ -85,7 +86,8 @@ class DataLoaderNodeTest extends Specification { List> nodeLoads = [] - DataLoader> loader = new DataLoader<>({ keys -> + + def batchLoadFunction = { keys -> nodeLoads.add(keys) List> childNodes = new ArrayList<>() for (Node key : keys) { @@ -93,15 +95,17 @@ class DataLoaderNodeTest extends Specification { } System.out.println("BatchLoader called for " + keys + " -> got " + childNodes) return CompletableFuture.completedFuture(childNodes) - }) - - DataFetcher nodeDataFetcher = new NodeDataFetcher(loader) + } + DataLoader> loader = DataLoaderFactory.newDataLoader(batchLoadFunction) def nodeTypeName = "Node" def childNodesFieldName = "childNodes" def queryTypeName = "Query" def rootFieldName = "root" + DataFetcher nodeDataFetcher = new NodeDataFetcher(childNodesFieldName) + DataLoaderRegistry registry = new DataLoaderRegistry().register(childNodesFieldName, loader) + GraphQLObjectType nodeType = GraphQLObjectType .newObject() .name(nodeTypeName) @@ -132,8 +136,6 @@ class DataLoaderNodeTest extends Specification { .build()) .build() - DataLoaderRegistry registry = new DataLoaderRegistry().register(childNodesFieldName, loader) - ExecutionResult result = GraphQL.newGraphQL(schema) // .instrumentation(new DataLoaderDispatcherInstrumentation()) .build() diff --git a/src/test/groovy/graphql/execution/instrumentation/dataloader/DataLoaderPerformanceData.groovy b/src/test/groovy/graphql/execution/instrumentation/dataloader/DataLoaderPerformanceData.groovy index 6246f883d8..7366ded562 100644 --- a/src/test/groovy/graphql/execution/instrumentation/dataloader/DataLoaderPerformanceData.groovy +++ b/src/test/groovy/graphql/execution/instrumentation/dataloader/DataLoaderPerformanceData.groovy @@ -1,5 +1,6 @@ package graphql.execution.instrumentation.dataloader +import com.fasterxml.jackson.databind.ObjectMapper import graphql.Directives import graphql.GraphQL import graphql.execution.instrumentation.Instrumentation @@ -60,20 +61,29 @@ class DataLoaderPerformanceData { [id: "department-9", name: "Department 9", products: [[id: "product-9", name: "Product 9"]]]] ]] ] + static String getQuery() { + return getQuery(false, false) + } - static def query = """ + static String getQuery(boolean deferDepartments, boolean deferProducts) { + return """ query { shops { id name - departments { - id name - products { + ... @defer(if: $deferDepartments) { + departments { id name + ... @defer(if: $deferProducts) { + products { + id name + } + } } - } + } } } """ + } static def expectedExpensiveData = [ shops : [[name : "Shop 1", @@ -162,7 +172,8 @@ class DataLoaderPerformanceData { assert incrementalResultsItems.any { it == [path: [], data: [expensiveShops: [[id: "exshop-1", name: "ExShop 1"], [id: "exshop-2", name: "ExShop 2"], [id: "exshop-3", name: "ExShop 3"]]]] } } - static def expensiveQuery = """ + static String getExpensiveQuery(boolean deferredEnabled) { + return """ query { shops { name @@ -171,19 +182,25 @@ class DataLoaderPerformanceData { products { name } - expensiveProducts { - name - } + ... @defer(if: $deferredEnabled) { + expensiveProducts { + name + } + } } - expensiveDepartments { - name - products { - name - } - expensiveProducts { + ... @defer(if: $deferredEnabled) { + expensiveDepartments { name + products { + name + } + ... @defer(if: $deferredEnabled) { + expensiveProducts { + name + } + } } - } + } } expensiveShops { name @@ -192,159 +209,30 @@ class DataLoaderPerformanceData { products { name } - expensiveProducts { - name - } + ... @defer(if: $deferredEnabled) { + expensiveProducts { + name + } + } } - expensiveDepartments { - name - products { - name - } - expensiveProducts { + ... @defer(if: $deferredEnabled) { + expensiveDepartments { name - } - } - } - } - """ - - static def expectedInitialDeferredData = [ - data : [ - shops: [ - [id: "shop-1", name: "Shop 1"], - [id: "shop-2", name: "Shop 2"], - [id: "shop-3", name: "Shop 3"], - ] - ], - hasNext: true - ] - - static def expectedListOfDeferredData = [ - [ - hasNext : true, - incremental: [[ - path: ["shops", 0], - data: [ - departments: [ - [id: "department-1", name: "Department 1", products: [[id: "product-1", name: "Product 1"]]], - [id: "department-2", name: "Department 2", products: [[id: "product-2", name: "Product 2"]]], - [id: "department-3", name: "Department 3", products: [[id: "product-3", name: "Product 3"]]] - ] - ] - ]], - ], - [ - hasNext : true, - incremental: [[ - path: ["shops", 1], - data: [ - departments: [ - [id: "department-4", name: "Department 4", products: [[id: "product-4", name: "Product 4"]]], - [id: "department-5", name: "Department 5", products: [[id: "product-5", name: "Product 5"]]], - [id: "department-6", name: "Department 6", products: [[id: "product-6", name: "Product 6"]]] - ] - ], - ]], - ], - [ - hasNext : false, - incremental: [[ - path: ["shops", 2], - data: [ - departments: [ - [id: "department-7", name: "Department 7", products: [[id: "product-7", name: "Product 7"]]], - [id: "department-8", name: "Department 8", products: [[id: "product-8", name: "Product 8"]]], - [id: "department-9", name: "Department 9", products: [[id: "product-9", name: "Product 9"]]] - ] - ] - ]], - ] - ] - - - static def deferredQuery = """ - query { - shops { - id name - ... @defer { - departments { - id name products { - id name + name } - } - } - } - } - """ - - static def expensiveDeferredQuery = """ - query { - shops { - id name - ... @defer { - departments { - name - ... @defer { - products { - name - } - } - ... @defer { + ... @defer(if: $deferredEnabled) { expensiveProducts { name } } } } - ... @defer { - expensiveDepartments { - name - products { - name - } - expensiveProducts { - name - } - } - } } - ... @defer { - expensiveShops { - id name - } - } } - """ +""" - static def expectedExpensiveDeferredData = [ - [[id: "exshop-1", name: "ExShop 1"], [id: "exshop-2", name: "ExShop 2"], [id: "exshop-3", name: "ExShop 3"]], - [[name: "Department 1",products:null, expensiveProducts:null], [name: "Department 2",products:null, expensiveProducts:null], [name: "Department 3",products:null, expensiveProducts:null]], - [[name: "Department 1", products: [[name: "Product 1"]], expensiveProducts: [[name: "Product 1"]]], [name: "Department 2", products: [[name: "Product 2"]], expensiveProducts: [[name: "Product 2"]]], [name: "Department 3", products: [[name: "Product 3"]], expensiveProducts: [[name: "Product 3"]]]], - [[name: "Department 4",products:null, expensiveProducts:null], [name: "Department 5",products:null, expensiveProducts:null], [name: "Department 6",products:null, expensiveProducts:null]], - [[name: "Department 4", products: [[name: "Product 4"]], expensiveProducts: [[name: "Product 4"]]], [name: "Department 5", products: [[name: "Product 5"]], expensiveProducts: [[name: "Product 5"]]], [name: "Department 6", products: [[name: "Product 6"]], expensiveProducts: [[name: "Product 6"]]]], - [[name: "Department 7",products:null, expensiveProducts:null], [name: "Department 8",products:null, expensiveProducts:null], [name: "Department 9",products:null, expensiveProducts:null]], - [[name: "Department 7", products: [[name: "Product 7"]], expensiveProducts: [[name: "Product 7"]]], [name: "Department 8", products: [[name: "Product 8"]], expensiveProducts: [[name: "Product 8"]]], [name: "Department 9", products: [[name: "Product 9"]], expensiveProducts: [[name: "Product 9"]]]], - [[name: "Product 1"]], - [[name: "Product 1"]], - [[name: "Product 2"]], - [[name: "Product 2"]], - [[name: "Product 3"]], - [[name: "Product 3"]], - [[name: "Product 4"]], - [[name: "Product 4"]], - [[name: "Product 5"]], - [[name: "Product 5"]], - [[name: "Product 6"]], - [[name: "Product 6"]], - [[name: "Product 7"]], - [[name: "Product 7"]], - [[name: "Product 8"]], - [[name: "Product 8"]], - [[name: "Product 9"]], - [[name: "Product 9"]], - ] + } static List> getIncrementalResults(IncrementalExecutionResult initialResult) { Publisher deferredResultStream = initialResult.incrementalItemPublisher @@ -353,7 +241,63 @@ class DataLoaderPerformanceData { deferredResultStream.subscribe(subscriber) Awaitility.await().untilTrue(subscriber.isDone()) + if(subscriber.getThrowable() != null) { + throw subscriber.getThrowable() + } + return subscriber.getEvents() .collect { it.toSpecification() } } + + /** + * Combines the initial result with the incremental results into a single result that has the same shape as a + * "normal" execution result. + * + * @param initialResult the data from the initial execution + * @param incrementalResults the data from the incremental executions + * @return a single result that combines the initial and incremental results + */ + static Map combineExecutionResults(Map initialResult, List> incrementalResults) { + Map combinedResult = deepClone(initialResult, Map.class) + + incrementalResults + // groovy's flatMap + .collectMany { (List) it.incremental } + .each { result -> + def parent = findByPath((Map) combinedResult.data, (List) result.path) + if (parent instanceof Map) { + parent.putAll((Map) result.data) + } else if (parent instanceof List) { + parent.addAll(result.data) + } else { + throw new RuntimeException("Unexpected parent type: ${parent.getClass()}") + } + + if(combinedResult.errors != null && !result.errors.isEmpty()) { + if(combinedResult.errors == null) { + combinedResult.errors = [] + } + + combinedResult.errors.addAll(result.errors) + } + } + + // Remove the "hasNext" to make the result look like a normal execution result + combinedResult.remove("hasNext") + + combinedResult + } + + private static ObjectMapper objectMapper = new ObjectMapper() + private static T deepClone(Object obj, Class clazz) { + return objectMapper.readValue(objectMapper.writeValueAsString(obj), clazz) + } + + private static Object findByPath(Map data, List path) { + def current = data + path.each { key -> + current = current[key] + } + current + } } diff --git a/src/test/groovy/graphql/execution/instrumentation/dataloader/DataLoaderPerformanceTest.groovy b/src/test/groovy/graphql/execution/instrumentation/dataloader/DataLoaderPerformanceTest.groovy index 61fba228bf..c4239243ca 100644 --- a/src/test/groovy/graphql/execution/instrumentation/dataloader/DataLoaderPerformanceTest.groovy +++ b/src/test/groovy/graphql/execution/instrumentation/dataloader/DataLoaderPerformanceTest.groovy @@ -2,21 +2,13 @@ package graphql.execution.instrumentation.dataloader import graphql.ExecutionInput import graphql.GraphQL -import graphql.incremental.IncrementalExecutionResult import org.dataloader.DataLoaderRegistry -import spock.lang.Ignore import spock.lang.Specification import static graphql.ExperimentalApi.ENABLE_INCREMENTAL_SUPPORT -import static graphql.execution.instrumentation.dataloader.DataLoaderPerformanceData.assertIncrementalExpensiveData import static graphql.execution.instrumentation.dataloader.DataLoaderPerformanceData.expectedExpensiveData -import static graphql.execution.instrumentation.dataloader.DataLoaderPerformanceData.expectedInitialDeferredData -import static graphql.execution.instrumentation.dataloader.DataLoaderPerformanceData.getDeferredQuery import static graphql.execution.instrumentation.dataloader.DataLoaderPerformanceData.getExpectedData -import static graphql.execution.instrumentation.dataloader.DataLoaderPerformanceData.getExpectedListOfDeferredData -import static graphql.execution.instrumentation.dataloader.DataLoaderPerformanceData.getExpensiveDeferredQuery import static graphql.execution.instrumentation.dataloader.DataLoaderPerformanceData.getExpensiveQuery -import static graphql.execution.instrumentation.dataloader.DataLoaderPerformanceData.getIncrementalResults import static graphql.execution.instrumentation.dataloader.DataLoaderPerformanceData.getQuery class DataLoaderPerformanceTest extends Specification { @@ -35,7 +27,7 @@ class DataLoaderPerformanceTest extends Specification { def "760 ensure data loader is performant for lists"() { when: ExecutionInput executionInput = ExecutionInput.newExecutionInput() - .query(query) + .query(getQuery()) .dataLoaderRegistry(dataLoaderRegistry) .graphQLContext([(ENABLE_INCREMENTAL_SUPPORT): incrementalSupport]) .build() @@ -57,7 +49,7 @@ class DataLoaderPerformanceTest extends Specification { when: ExecutionInput executionInput = ExecutionInput.newExecutionInput() - .query(expensiveQuery) + .query(getExpensiveQuery(false)) .dataLoaderRegistry(dataLoaderRegistry) .graphQLContext([(ENABLE_INCREMENTAL_SUPPORT): incrementalSupport]) .build() @@ -80,7 +72,7 @@ class DataLoaderPerformanceTest extends Specification { batchCompareDataFetchers.useAsyncBatchLoading(true) ExecutionInput executionInput = ExecutionInput.newExecutionInput() - .query(query) + .query(getQuery()) .dataLoaderRegistry(dataLoaderRegistry) .graphQLContext([(ENABLE_INCREMENTAL_SUPPORT): incrementalSupport]) .build() @@ -105,7 +97,7 @@ class DataLoaderPerformanceTest extends Specification { batchCompareDataFetchers.useAsyncBatchLoading(true) ExecutionInput executionInput = ExecutionInput.newExecutionInput() - .query(expensiveQuery) + .query(getExpensiveQuery(false)) .dataLoaderRegistry(dataLoaderRegistry) .graphQLContext([(ENABLE_INCREMENTAL_SUPPORT): incrementalSupport]) .build() @@ -121,75 +113,4 @@ class DataLoaderPerformanceTest extends Specification { where: incrementalSupport << [true, false] } - - def "data loader will not work with deferred queries"() { - when: - ExecutionInput executionInput = ExecutionInput.newExecutionInput() - .query(deferredQuery) - .dataLoaderRegistry(dataLoaderRegistry) - .graphQLContext([(ENABLE_INCREMENTAL_SUPPORT): true]) - .build() - - def result = graphQL.execute(executionInput) - println(result); - - then: - def exception = thrown(UnsupportedOperationException) - exception.message == "Data Loaders cannot be used to resolve deferred fields" - } - - @Ignore("Resolution of deferred fields via Data loaders is not yet supported") - def "data loader will work with deferred queries"() { - - when: - - ExecutionInput executionInput = ExecutionInput.newExecutionInput() - .query(deferredQuery) - .dataLoaderRegistry(dataLoaderRegistry) - .graphQLContext([(ENABLE_INCREMENTAL_SUPPORT): true]) - .build() - - IncrementalExecutionResult result = graphQL.execute(executionInput) - - then: - result.toSpecification() == expectedInitialDeferredData - - when: - def incrementalResults = getIncrementalResults(result) - - then: - incrementalResults == expectedListOfDeferredData - - // With deferred results, we don't achieve the same efficiency. - batchCompareDataFetchers.departmentsForShopsBatchLoaderCounter.get() == 3 - batchCompareDataFetchers.productsForDepartmentsBatchLoaderCounter.get() == 3 - } - - @Ignore("Resolution of deferred fields via Data loaders is not yet supported") - def "data loader will work with deferred queries on multiple levels deep"() { - - when: - - ExecutionInput executionInput = ExecutionInput.newExecutionInput() - .query(expensiveDeferredQuery) - .dataLoaderRegistry(dataLoaderRegistry) - .graphQLContext([(ENABLE_INCREMENTAL_SUPPORT): true]) - .build() - - IncrementalExecutionResult result = graphQL.execute(executionInput) - - then: - result.toSpecification() == expectedInitialDeferredData - - when: - def incrementalResults = getIncrementalResults(result) - - then: - assertIncrementalExpensiveData(incrementalResults) - - // With deferred results, we don't achieve the same efficiency. - // The final number of loader calls is non-deterministic, so we can't assert an exact number. - batchCompareDataFetchers.departmentsForShopsBatchLoaderCounter.get() >= 3 - batchCompareDataFetchers.productsForDepartmentsBatchLoaderCounter.get() >= 3 - } } diff --git a/src/test/groovy/graphql/execution/instrumentation/dataloader/DataLoaderPerformanceWithChainedInstrumentationTest.groovy b/src/test/groovy/graphql/execution/instrumentation/dataloader/DataLoaderPerformanceWithChainedInstrumentationTest.groovy index e5d1089bab..5467c87220 100644 --- a/src/test/groovy/graphql/execution/instrumentation/dataloader/DataLoaderPerformanceWithChainedInstrumentationTest.groovy +++ b/src/test/groovy/graphql/execution/instrumentation/dataloader/DataLoaderPerformanceWithChainedInstrumentationTest.groovy @@ -2,21 +2,14 @@ package graphql.execution.instrumentation.dataloader import graphql.ExecutionInput import graphql.GraphQL -import graphql.incremental.IncrementalExecutionResult import org.dataloader.DataLoaderRegistry import spock.lang.Ignore import spock.lang.Specification import static graphql.ExperimentalApi.ENABLE_INCREMENTAL_SUPPORT -import static graphql.execution.instrumentation.dataloader.DataLoaderPerformanceData.assertIncrementalExpensiveData import static graphql.execution.instrumentation.dataloader.DataLoaderPerformanceData.expectedExpensiveData -import static graphql.execution.instrumentation.dataloader.DataLoaderPerformanceData.expectedInitialDeferredData -import static graphql.execution.instrumentation.dataloader.DataLoaderPerformanceData.expectedListOfDeferredData -import static graphql.execution.instrumentation.dataloader.DataLoaderPerformanceData.getDeferredQuery import static graphql.execution.instrumentation.dataloader.DataLoaderPerformanceData.getExpectedData -import static graphql.execution.instrumentation.dataloader.DataLoaderPerformanceData.getExpensiveDeferredQuery import static graphql.execution.instrumentation.dataloader.DataLoaderPerformanceData.getExpensiveQuery -import static graphql.execution.instrumentation.dataloader.DataLoaderPerformanceData.getIncrementalResults import static graphql.execution.instrumentation.dataloader.DataLoaderPerformanceData.getQuery class DataLoaderPerformanceWithChainedInstrumentationTest extends Specification { @@ -38,7 +31,7 @@ class DataLoaderPerformanceWithChainedInstrumentationTest extends Specification when: ExecutionInput executionInput = ExecutionInput.newExecutionInput() - .query(query) + .query(getQuery()) .dataLoaderRegistry(dataLoaderRegistry) .graphQLContext([(ENABLE_INCREMENTAL_SUPPORT): incrementalSupport]) .build() @@ -62,7 +55,7 @@ class DataLoaderPerformanceWithChainedInstrumentationTest extends Specification when: ExecutionInput executionInput = ExecutionInput.newExecutionInput() - .query(expensiveQuery) + .query(getExpensiveQuery(false)) .dataLoaderRegistry(dataLoaderRegistry) .graphQLContext([(ENABLE_INCREMENTAL_SUPPORT): incrementalSupport]) .build() @@ -110,7 +103,7 @@ class DataLoaderPerformanceWithChainedInstrumentationTest extends Specification batchCompareDataFetchers.useAsyncBatchLoading(true) ExecutionInput executionInput = ExecutionInput.newExecutionInput() - .query(expensiveQuery) + .query(getExpensiveQuery(false)) .dataLoaderRegistry(dataLoaderRegistry) .graphQLContext([(ENABLE_INCREMENTAL_SUPPORT): incrementalSupport]) .build() @@ -126,73 +119,4 @@ class DataLoaderPerformanceWithChainedInstrumentationTest extends Specification incrementalSupport << [true, false] } - def "chainedInstrumentation: data loader will not work with deferred queries"() { - when: - ExecutionInput executionInput = ExecutionInput.newExecutionInput() - .query(deferredQuery) - .dataLoaderRegistry(dataLoaderRegistry) - .graphQLContext([(ENABLE_INCREMENTAL_SUPPORT): true]) - .build() - - graphQL.execute(executionInput) - - then: - def exception = thrown(UnsupportedOperationException) - exception.message == "Data Loaders cannot be used to resolve deferred fields" - } - - @Ignore("Resolution of deferred fields via Data loaders is not yet supported") - def "chainedInstrumentation: data loader will work with deferred queries"() { - - when: - - ExecutionInput executionInput = ExecutionInput.newExecutionInput() - .query(deferredQuery) - .dataLoaderRegistry(dataLoaderRegistry) - .graphQLContext([(ENABLE_INCREMENTAL_SUPPORT): true]) - .build() - - IncrementalExecutionResult result = graphQL.execute(executionInput) - - then: - result.toSpecification() == expectedInitialDeferredData - - when: - def incrementalResults = getIncrementalResults(result) - - then: - incrementalResults == expectedListOfDeferredData - - // With deferred results, we don't achieve the same efficiency. - batchCompareDataFetchers.departmentsForShopsBatchLoaderCounter.get() == 3 - batchCompareDataFetchers.productsForDepartmentsBatchLoaderCounter.get() == 3 - } - - - @Ignore("Resolution of deferred fields via Data loaders is not yet supported") - def "chainedInstrumentation: data loader will work with deferred queries on multiple levels deep"() { - when: - ExecutionInput executionInput = ExecutionInput.newExecutionInput() - .graphQLContext([(ENABLE_INCREMENTAL_SUPPORT): true]) - .query(expensiveDeferredQuery) - .dataLoaderRegistry(dataLoaderRegistry) - .build() - - IncrementalExecutionResult result = graphQL.execute(executionInput) - - then: - result.toSpecification() == expectedInitialDeferredData - - when: - def incrementalResults = getIncrementalResults(result) - - - then: - assertIncrementalExpensiveData(incrementalResults) - - // With deferred results, we don't achieve the same efficiency. - // The final number of loader calls is non-deterministic, so we can't assert an exact number. - batchCompareDataFetchers.departmentsForShopsBatchLoaderCounter.get() >= 3 - batchCompareDataFetchers.productsForDepartmentsBatchLoaderCounter.get() >= 3 - } } diff --git a/src/test/groovy/graphql/execution/instrumentation/dataloader/DataLoaderTypeMismatchTest.groovy b/src/test/groovy/graphql/execution/instrumentation/dataloader/DataLoaderTypeMismatchTest.groovy index 03b60e4e39..5b6f1cfb2f 100644 --- a/src/test/groovy/graphql/execution/instrumentation/dataloader/DataLoaderTypeMismatchTest.groovy +++ b/src/test/groovy/graphql/execution/instrumentation/dataloader/DataLoaderTypeMismatchTest.groovy @@ -9,6 +9,7 @@ import graphql.schema.idl.SchemaGenerator import graphql.schema.idl.SchemaParser import org.dataloader.BatchLoader import org.dataloader.DataLoader +import org.dataloader.DataLoaderFactory import org.dataloader.DataLoaderRegistry import spock.lang.Specification @@ -36,7 +37,7 @@ class DataLoaderTypeMismatchTest extends Specification { def typeDefinitionRegistry = new SchemaParser().parse(sdl) - def dataLoader = new DataLoader(new BatchLoader() { + def dataLoader = DataLoaderFactory.newDataLoader(new BatchLoader() { @Override CompletionStage> load(List keys) { return CompletableFuture.completedFuture([ @@ -50,7 +51,7 @@ class DataLoaderTypeMismatchTest extends Specification { def todosDef = new DataFetcher>() { @Override CompletableFuture get(DataFetchingEnvironment environment) { - return dataLoader.load(environment) + return environment.getDataLoader("getTodos").load(environment) } } diff --git a/src/test/groovy/graphql/execution/instrumentation/dataloader/DeferWithDataLoaderTest.groovy b/src/test/groovy/graphql/execution/instrumentation/dataloader/DeferWithDataLoaderTest.groovy new file mode 100644 index 0000000000..6da9489c76 --- /dev/null +++ b/src/test/groovy/graphql/execution/instrumentation/dataloader/DeferWithDataLoaderTest.groovy @@ -0,0 +1,340 @@ +package graphql.execution.instrumentation.dataloader + +import graphql.ExecutionInput +import graphql.ExecutionResult +import graphql.GraphQL +import graphql.incremental.IncrementalExecutionResult +import org.dataloader.DataLoaderRegistry +import spock.lang.Specification + +import java.util.stream.Collectors + +import static graphql.ExperimentalApi.ENABLE_INCREMENTAL_SUPPORT +import static graphql.execution.instrumentation.dataloader.DataLoaderPerformanceData.combineExecutionResults +import static graphql.execution.instrumentation.dataloader.DataLoaderPerformanceData.expectedData +import static graphql.execution.instrumentation.dataloader.DataLoaderPerformanceData.expectedExpensiveData +import static graphql.execution.instrumentation.dataloader.DataLoaderPerformanceData.getExpensiveQuery +import static graphql.execution.instrumentation.dataloader.DataLoaderPerformanceData.getIncrementalResults +import static graphql.execution.instrumentation.dataloader.DataLoaderPerformanceData.getQuery + +class DeferWithDataLoaderTest extends Specification { + + GraphQL graphQL + DataLoaderRegistry dataLoaderRegistry + BatchCompareDataFetchers batchCompareDataFetchers + + + void setup() { + batchCompareDataFetchers = new BatchCompareDataFetchers() + DataLoaderPerformanceData dataLoaderPerformanceData = new DataLoaderPerformanceData(batchCompareDataFetchers) + + dataLoaderRegistry = dataLoaderPerformanceData.setupDataLoaderRegistry() + graphQL = dataLoaderPerformanceData.setupGraphQL() + } + + /** + * @param results a list of the incremental results from the execution + * @param expectedPaths a list of the expected paths in the incremental results. The order of the elements in the list is not important. + */ + private static void assertIncrementalResults(List> results, List> expectedPaths) { + assert results.size() == expectedPaths.size(), "Expected ${expectedPaths.size()} results, got ${results.size()}" + + assert results.dropRight(1).every { it.hasNext == true }, "Expected all but the last result to have hasNext=true" + assert results.last().hasNext == false, "Expected last result to have hasNext=false" + + assert results.every { it.incremental.size() == 1 }, "Expected every result to have exactly one incremental item" + + expectedPaths.each { path -> + assert results.any { it.incremental[0].path == path }, "Expected path $path not found in $results" + } + } + + def "query with single deferred field"() { + given: + def query = getQuery(true, false) + + def expectedInitialData = [ + data : [ + shops: [ + [id: "shop-1", name: "Shop 1"], + [id: "shop-2", name: "Shop 2"], + [id: "shop-3", name: "Shop 3"], + ] + ], + hasNext: true + ] + + when: + ExecutionInput executionInput = ExecutionInput.newExecutionInput() + .query(query) + .dataLoaderRegistry(dataLoaderRegistry) + .graphQLContext([(ENABLE_INCREMENTAL_SUPPORT): true]) + .build() + + IncrementalExecutionResult result = graphQL.execute(executionInput) + + then: + result.toSpecification() == expectedInitialData + + when: + def incrementalResults = getIncrementalResults(result) + + then: + + assertIncrementalResults(incrementalResults, [["shops", 0], ["shops", 1], ["shops", 2]]) + + when: + def combined = combineExecutionResults(result.toSpecification(), incrementalResults) + then: + combined.errors == null + combined.data == expectedData + + batchCompareDataFetchers.departmentsForShopsBatchLoaderCounter.get() == 3 + batchCompareDataFetchers.productsForDepartmentsBatchLoaderCounter.get() == 9 + } + + def "multiple fields on same defer block"() { + given: + def query = """ + query { + shops { + id + ... @defer { + name + departments { + name + } + } + } + } + + """ + + def expectedInitialData = [ + data : [ + shops: [ + [id: "shop-1"], + [id: "shop-2"], + [id: "shop-3"], + ] + ], + hasNext: true + ] + + when: + ExecutionInput executionInput = ExecutionInput.newExecutionInput() + .query(query) + .dataLoaderRegistry(dataLoaderRegistry) + .graphQLContext([(ENABLE_INCREMENTAL_SUPPORT): true]) + .build() + + IncrementalExecutionResult result = graphQL.execute(executionInput) + + then: + result.toSpecification() == expectedInitialData + + when: + def incrementalResults = getIncrementalResults(result) + + then: + + assertIncrementalResults(incrementalResults, [["shops", 0], ["shops", 1], ["shops", 2]]) + + when: + def combined = combineExecutionResults(result.toSpecification(), incrementalResults) + then: + combined.errors == null + combined.data == [ + shops: [ + [id : "shop-1", name: "Shop 1", + departments: [[name: "Department 1"], + [name: "Department 2"], + [name: "Department 3"] + ]], + [id : "shop-2", name: "Shop 2", + departments: [[name: "Department 4"], + [name: "Department 5"], + [name: "Department 6"] + ]], + [id : "shop-3", name: "Shop 3", + departments: [[name: "Department 7"], + [name: "Department 8"], + [name: "Department 9"]] + ]] + ] + batchCompareDataFetchers.departmentsForShopsBatchLoaderCounter.get() == 3 + batchCompareDataFetchers.productsForDepartmentsBatchLoaderCounter.get() == 0 + } + + def "query with nested deferred fields"() { + given: + def query = getQuery(true, true) + + def expectedInitialData = [ + data : [ + shops: [ + [id: "shop-1", name: "Shop 1"], + [id: "shop-2", name: "Shop 2"], + [id: "shop-3", name: "Shop 3"], + ] + ], + hasNext: true + ] + + when: + ExecutionInput executionInput = ExecutionInput.newExecutionInput() + .query(query) + .dataLoaderRegistry(dataLoaderRegistry) + .graphQLContext([(ENABLE_INCREMENTAL_SUPPORT): true]) + .build() + + ExecutionResult result = graphQL.execute(executionInput) + + then: + result.toSpecification() == expectedInitialData + + when: + def incrementalResults = getIncrementalResults(result) + + then: + + assertIncrementalResults(incrementalResults, + [ + ["shops", 0], ["shops", 1], ["shops", 2], + ["shops", 0, "departments", 0], ["shops", 1, "departments", 0], ["shops", 2, "departments", 0], + ["shops", 0, "departments", 1], ["shops", 1, "departments", 1], ["shops", 2, "departments", 1], + ["shops", 0, "departments", 2], ["shops", 1, "departments", 2], ["shops", 2, "departments", 2], + ] + ) + + when: + def combined = combineExecutionResults(result.toSpecification(), incrementalResults) + then: + combined.errors == null + combined.data == expectedData + + batchCompareDataFetchers.departmentsForShopsBatchLoaderCounter.get() == 3 + batchCompareDataFetchers.productsForDepartmentsBatchLoaderCounter.get() == 9 + } + + def "query with top-level deferred field"() { + given: + def query = """ + query { + shops { + departments { + name + } + } + ... @defer { + expensiveShops { + name + } + } + } +""" + + def expectedInitialData = [ + data : [ + shops: [[departments: [[name: "Department 1"], [name: "Department 2"], [name: "Department 3"]]], + [departments: [[name: "Department 4"], [name: "Department 5"], [name: "Department 6"]]], + [departments: [[name: "Department 7"], [name: "Department 8"], [name: "Department 9"]]], + ] + ], + hasNext: true + ] + + when: + ExecutionInput executionInput = ExecutionInput.newExecutionInput() + .query(query) + .dataLoaderRegistry(dataLoaderRegistry) + .graphQLContext([(ENABLE_INCREMENTAL_SUPPORT): true]) + .build() + + IncrementalExecutionResult result = graphQL.execute(executionInput) + + then: + result.toSpecification() == expectedInitialData + + when: + def incrementalResults = getIncrementalResults(result) + + then: + + assertIncrementalResults(incrementalResults, + [ + [] + ] + ) + + when: + def combined = combineExecutionResults(result.toSpecification(), incrementalResults) + then: + combined.errors == null + combined.data == [shops : [[departments: [[name: "Department 1"], [name: "Department 2"], [name: "Department 3"]]], + [departments: [[name: "Department 4"], [name: "Department 5"], [name: "Department 6"]]], + [departments: [[name: "Department 7"], [name: "Department 8"], [name: "Department 9"]]]], + expensiveShops: [[name: "ExShop 1"], [name: "ExShop 2"], [name: "ExShop 3"]]] + + batchCompareDataFetchers.departmentsForShopsBatchLoaderCounter.get() == 1 + batchCompareDataFetchers.productsForDepartmentsBatchLoaderCounter.get() == 0 + } + + def "query with multiple deferred fields"() { + given: + def query = getExpensiveQuery(true) + + def expectedInitialData = + [data : [shops : [[name : "Shop 1", + departments: [[name: "Department 1", products: [[name: "Product 1"]]], [name: "Department 2", products: [[name: "Product 2"]]], [name: "Department 3", products: [[name: "Product 3"]]]]], + [name : "Shop 2", + departments: [[name: "Department 4", products: [[name: "Product 4"]]], [name: "Department 5", products: [[name: "Product 5"]]], [name: "Department 6", products: [[name: "Product 6"]]]]], + [name : "Shop 3", + departments: [[name: "Department 7", products: [[name: "Product 7"]]], [name: "Department 8", products: [[name: "Product 8"]]], [name: "Department 9", products: [[name: "Product 9"]]]]]], + expensiveShops: [[name : "ExShop 1", + departments: [[name: "Department 1", products: [[name: "Product 1"]]], [name: "Department 2", products: [[name: "Product 2"]]], [name: "Department 3", products: [[name: "Product 3"]]]]], + [name : "ExShop 2", + departments: [[name: "Department 4", products: [[name: "Product 4"]]], [name: "Department 5", products: [[name: "Product 5"]]], [name: "Department 6", products: [[name: "Product 6"]]]]], + [name : "ExShop 3", + departments: [[name: "Department 7", products: [[name: "Product 7"]]], [name: "Department 8", products: [[name: "Product 8"]]], [name: "Department 9", products: [[name: "Product 9"]]]]]]], + hasNext: true] + + when: + ExecutionInput executionInput = ExecutionInput.newExecutionInput() + .query(query) + .dataLoaderRegistry(dataLoaderRegistry) + .graphQLContext([(ENABLE_INCREMENTAL_SUPPORT): true]) + .build() + + IncrementalExecutionResult result = graphQL.execute(executionInput) + + then: + result.toSpecification() == expectedInitialData + + when: + def incrementalResults = getIncrementalResults(result) + + then: + + assertIncrementalResults(incrementalResults, + [ + ["expensiveShops", 0], ["expensiveShops", 1], ["expensiveShops", 2], + ["shops", 0], ["shops", 1], ["shops", 2], + ["shops", 0, "departments", 0], ["shops", 0, "departments", 1],["shops", 0, "departments", 2], ["shops", 1, "departments", 0],["shops", 1, "departments", 1], ["shops", 1, "departments", 2], ["shops", 2, "departments", 0],["shops", 2, "departments", 1],["shops", 2, "departments", 2], + ["shops", 0, "expensiveDepartments", 0], ["shops", 0, "expensiveDepartments", 1], ["shops", 0, "expensiveDepartments", 2], ["shops", 1, "expensiveDepartments", 0], ["shops", 1, "expensiveDepartments", 1], ["shops", 1, "expensiveDepartments", 2], ["shops", 2, "expensiveDepartments", 0], ["shops", 2, "expensiveDepartments", 1],["shops", 2, "expensiveDepartments", 2], + ["expensiveShops", 0, "expensiveDepartments", 0], ["expensiveShops", 0, "expensiveDepartments", 1], ["expensiveShops", 0, "expensiveDepartments", 2], ["expensiveShops", 1, "expensiveDepartments", 0], ["expensiveShops", 1, "expensiveDepartments", 1], ["expensiveShops", 1, "expensiveDepartments", 2], ["expensiveShops", 2, "expensiveDepartments", 0], ["expensiveShops", 2, "expensiveDepartments", 1],["expensiveShops", 2, "expensiveDepartments", 2], + ["expensiveShops", 0, "departments", 0], ["expensiveShops", 0, "departments", 1], ["expensiveShops", 0, "departments", 2], ["expensiveShops", 1, "departments", 0], ["expensiveShops", 1, "departments", 1], ["expensiveShops", 1, "departments", 2], ["expensiveShops", 2, "departments", 0], ["expensiveShops", 2, "departments", 1],["expensiveShops", 2, "departments", 2]] + ) + + when: + def combined = combineExecutionResults(result.toSpecification(), incrementalResults) + then: + combined.errors == null + combined.data == expectedExpensiveData + + // TODO: Why the load counters are only 1? + batchCompareDataFetchers.departmentsForShopsBatchLoaderCounter.get() == 1 + batchCompareDataFetchers.productsForDepartmentsBatchLoaderCounter.get() == 1 + } + +} diff --git a/src/test/groovy/graphql/execution/instrumentation/dataloader/Issue1178DataLoaderDispatchTest.groovy b/src/test/groovy/graphql/execution/instrumentation/dataloader/Issue1178DataLoaderDispatchTest.groovy index b816602cde..135b52ba8d 100644 --- a/src/test/groovy/graphql/execution/instrumentation/dataloader/Issue1178DataLoaderDispatchTest.groovy +++ b/src/test/groovy/graphql/execution/instrumentation/dataloader/Issue1178DataLoaderDispatchTest.groovy @@ -8,6 +8,7 @@ import graphql.schema.StaticDataFetcher import graphql.schema.idl.RuntimeWiring import org.dataloader.BatchLoader import org.dataloader.DataLoader +import org.dataloader.DataLoaderFactory import org.dataloader.DataLoaderRegistry import spock.lang.Specification @@ -40,7 +41,7 @@ class Issue1178DataLoaderDispatchTest extends Specification { def executor = Executors.newFixedThreadPool(5) - def dataLoader = new DataLoader(new BatchLoader() { + def dataLoader = DataLoaderFactory.newDataLoader(new BatchLoader() { @Override CompletionStage> load(List keys) { return CompletableFuture.supplyAsync({ @@ -48,7 +49,7 @@ class Issue1178DataLoaderDispatchTest extends Specification { }, executor) } }) - def dataLoader2 = new DataLoader(new BatchLoader() { + def dataLoader2 = DataLoaderFactory.newDataLoader(new BatchLoader() { @Override CompletionStage> load(List keys) { return CompletableFuture.supplyAsync({ @@ -61,8 +62,8 @@ class Issue1178DataLoaderDispatchTest extends Specification { dataLoaderRegistry.register("todo.related", dataLoader) dataLoaderRegistry.register("todo.related2", dataLoader2) - def relatedDf = new MyDataFetcher(dataLoader) - def relatedDf2 = new MyDataFetcher(dataLoader2) + def relatedDf = new MyDataFetcher("todo.related") + def relatedDf2 = new MyDataFetcher("todo.related2") def wiring = RuntimeWiring.newRuntimeWiring() .type(newTypeWiring("Query") @@ -119,16 +120,16 @@ class Issue1178DataLoaderDispatchTest extends Specification { static class MyDataFetcher implements DataFetcher> { - private final DataLoader dataLoader + private final String name - MyDataFetcher(DataLoader dataLoader) { - this.dataLoader = dataLoader + MyDataFetcher(String name) { + this.name = name } @Override CompletableFuture get(DataFetchingEnvironment environment) { def todo = environment.source as Map - return dataLoader.load(todo['id']) + return environment.getDataLoader(name).load(todo['id']) } } } diff --git a/src/test/groovy/graphql/execution/instrumentation/dataloader/PeopleCompaniesAndProductsDataLoaderTest.groovy b/src/test/groovy/graphql/execution/instrumentation/dataloader/PeopleCompaniesAndProductsDataLoaderTest.groovy index 70bad946b0..0cc9a73c40 100644 --- a/src/test/groovy/graphql/execution/instrumentation/dataloader/PeopleCompaniesAndProductsDataLoaderTest.groovy +++ b/src/test/groovy/graphql/execution/instrumentation/dataloader/PeopleCompaniesAndProductsDataLoaderTest.groovy @@ -12,6 +12,7 @@ import graphql.schema.DataFetchingEnvironment import graphql.schema.idl.RuntimeWiring import org.dataloader.BatchLoader import org.dataloader.DataLoader +import org.dataloader.DataLoaderFactory import org.dataloader.DataLoaderRegistry import spock.lang.Specification @@ -168,8 +169,8 @@ class PeopleCompaniesAndProductsDataLoaderTest extends Specification { private DataLoaderRegistry buildRegistry() { - DataLoader personDataLoader = new DataLoader<>(personBatchLoader) - DataLoader companyDataLoader = new DataLoader<>(companyBatchLoader) + DataLoader personDataLoader = DataLoaderFactory.newDataLoader(personBatchLoader) + DataLoader companyDataLoader = DataLoaderFactory.newDataLoader(companyBatchLoader) DataLoaderRegistry registry = new DataLoaderRegistry() registry.register("person", personDataLoader) diff --git a/src/test/groovy/graphql/execution/instrumentation/dataloader/StarWarsDataLoaderWiring.groovy b/src/test/groovy/graphql/execution/instrumentation/dataloader/StarWarsDataLoaderWiring.groovy index 3bc4848e98..757d5564a0 100644 --- a/src/test/groovy/graphql/execution/instrumentation/dataloader/StarWarsDataLoaderWiring.groovy +++ b/src/test/groovy/graphql/execution/instrumentation/dataloader/StarWarsDataLoaderWiring.groovy @@ -10,6 +10,7 @@ import graphql.schema.idl.MapEnumValuesProvider import graphql.schema.idl.RuntimeWiring import org.dataloader.BatchLoader import org.dataloader.DataLoader +import org.dataloader.DataLoaderFactory import org.dataloader.DataLoaderRegistry import java.util.concurrent.CompletableFuture @@ -60,7 +61,7 @@ class StarWarsDataLoaderWiring { def newDataLoaderRegistry() { // a data loader for characters that points to the character batch loader - def characterDataLoader = new DataLoader(characterBatchLoader) + def characterDataLoader = DataLoaderFactory.newDataLoader(characterBatchLoader) new DataLoaderRegistry().register("character", characterDataLoader) } diff --git a/src/test/groovy/graphql/execution/instrumentation/fieldvalidation/FieldValidationTest.groovy b/src/test/groovy/graphql/execution/instrumentation/fieldvalidation/FieldValidationTest.groovy index 376c5168fa..c3b3f40994 100644 --- a/src/test/groovy/graphql/execution/instrumentation/fieldvalidation/FieldValidationTest.groovy +++ b/src/test/groovy/graphql/execution/instrumentation/fieldvalidation/FieldValidationTest.groovy @@ -1,5 +1,6 @@ package graphql.execution.instrumentation.fieldvalidation +import graphql.EngineRunningState import graphql.ExecutionInput import graphql.ExecutionResult import graphql.GraphQL @@ -12,8 +13,6 @@ import graphql.execution.ExecutionId import graphql.execution.ResultPath import graphql.execution.ValueUnboxer import graphql.execution.instrumentation.ChainedInstrumentation -import graphql.execution.instrumentation.SimplePerformantInstrumentation -import graphql.execution.instrumentation.parameters.InstrumentationCreateStateParameters import spock.lang.Specification import java.util.concurrent.CompletableFuture @@ -310,7 +309,7 @@ class FieldValidationTest extends Specification { def execution = new Execution(strategy, strategy, strategy, instrumentation, ValueUnboxer.DEFAULT, false) def executionInput = ExecutionInput.newExecutionInput().query(query).variables(variables).build() - execution.execute(document, schema, ExecutionId.generate(), executionInput, null) + execution.execute(document, schema, ExecutionId.generate(), executionInput, null, new EngineRunningState()) } def "test graphql from end to end with chained instrumentation"() { diff --git a/src/test/groovy/graphql/execution/instrumentation/threadpools/ExecutorInstrumentationTest.groovy b/src/test/groovy/graphql/execution/instrumentation/threadpools/ExecutorInstrumentationTest.groovy deleted file mode 100644 index 4a4a453ce6..0000000000 --- a/src/test/groovy/graphql/execution/instrumentation/threadpools/ExecutorInstrumentationTest.groovy +++ /dev/null @@ -1,211 +0,0 @@ -package graphql.execution.instrumentation.threadpools - - -import graphql.TestUtil -import graphql.schema.DataFetcher -import graphql.schema.DataFetchingEnvironment -import graphql.schema.DataFetchingEnvironmentImpl -import graphql.schema.PropertyDataFetcher -import spock.lang.Specification - -import java.util.concurrent.CompletableFuture -import java.util.concurrent.Executor -import java.util.concurrent.Executors -import java.util.concurrent.ThreadFactory -import java.util.function.Consumer - -import static ExecutorInstrumentation.Action -import static java.lang.Thread.currentThread - -class ExecutorInstrumentationTest extends Specification { - - private static ThreadFactory threadFactory(String name) { - new ThreadFactory() { - @Override - Thread newThread(Runnable r) { - return new Thread(r, name) - } - } - } - - static class TestingObserver implements Consumer { - def actions = [] - - @Override - void accept(Action action) { - actions.add(action.toString() + " on " + currentThread().getName()) - } - } - - def FetchExecutor = Executors.newSingleThreadExecutor(threadFactory("FetchThread")) - def ProcessingExecutor = Executors.newSingleThreadExecutor(threadFactory("ProcessingThread")) - - ExecutorInstrumentation instrumentation - def observer = new TestingObserver() - - - ExecutorInstrumentation build(Executor fetchExecutor, Executor processingExecutor, Consumer observer) { - def builder = ExecutorInstrumentation.newThreadPoolExecutionInstrumentation() - if (fetchExecutor != null) { - builder.fetchExecutor(fetchExecutor) - } - if (processingExecutor != null) { - builder.processingExecutor(processingExecutor) - } - builder.actionObserver(observer).build() - } - - DataFetchingEnvironment dfEnv(Object s) { - DataFetchingEnvironmentImpl.newDataFetchingEnvironment().source(s).build() - } - - CompletableFuture asCF(returnedValue) { - (CompletableFuture) returnedValue - } - - void setup() { - observer = new TestingObserver() - instrumentation = build(FetchExecutor, ProcessingExecutor, observer) - } - - def "basic building works"() { - expect: - instrumentation.getFetchExecutor() == FetchExecutor - instrumentation.getProcessingExecutor() == ProcessingExecutor - } - - def "can handle a data fetcher that throws exceptions"() { - when: - DataFetcher df = { env -> throw new RuntimeException("BANG") } - def modifiedDataFetcher = instrumentation.instrumentDataFetcher(df, null,null) - def returnedValue = modifiedDataFetcher.get(null) - - then: - returnedValue instanceof CompletableFuture - - when: - asCF(returnedValue).join() - - then: - def e = thrown(RuntimeException) - e.getMessage().contains("BANG") - } - - - def "will leave trivial data fetchers as is"() { - - when: - DataFetcher df = PropertyDataFetcher.fetching({ o -> "trivial" }) - def modifiedDataFetcher = instrumentation.instrumentDataFetcher(df, null,null) - def returnedValue = modifiedDataFetcher.get(dfEnv("source")) - - then: - modifiedDataFetcher == df - returnedValue == "trivial" - } - - - def "will execute on another thread and transfer execution back to the processing thread"() { - - when: - instrumentation = build(FetchExecutor, ProcessingExecutor, observer) - - DataFetcher df = { env -> currentThread().getName() } - def modifiedDataFetcher = instrumentation.instrumentDataFetcher(df, null, null) - def returnedValue = modifiedDataFetcher.get(null) - - then: - returnedValue instanceof CompletableFuture - - when: - def value = asCF(returnedValue).join() - - then: - value == "FetchThread" - observer.actions == ["FETCHING on FetchThread", "PROCESSING on ProcessingThread"] - } - - def "will execute on another thread and stay there without a processing executor"() { - - when: - instrumentation = build(FetchExecutor, null, observer) - - DataFetcher df = { env -> currentThread().getName() } - def modifiedDataFetcher = instrumentation.instrumentDataFetcher(df, null, null) - def returnedValue = modifiedDataFetcher.get(null) - - then: - returnedValue instanceof CompletableFuture - - when: - def value = asCF(returnedValue).join() - - then: - value == "FetchThread" - observer.actions == ["FETCHING on FetchThread", "PROCESSING on FetchThread"] - } - - def "will fetch on current thread if the executor is null but transfer control back"() { - - when: - def currentThreadName = currentThread().getName() - instrumentation = build(null, ProcessingExecutor, observer) - - DataFetcher df = { env -> currentThread().getName() } - def modifiedDataFetcher = instrumentation.instrumentDataFetcher(df, null, null) - def returnedValue = modifiedDataFetcher.get(null) - - then: - returnedValue instanceof CompletableFuture - - when: - def value = asCF(returnedValue).join() - - then: - value == "${currentThreadName}" - observer.actions == ["FETCHING on ${currentThreadName}", "PROCESSING on ProcessingThread"] - } - - def "a data fetcher can return a CF and that is handled"() { - when: - instrumentation = build(FetchExecutor, ProcessingExecutor, observer) - - DataFetcher df = { env -> CompletableFuture.completedFuture(currentThread().getName()) } - def modifiedDataFetcher = instrumentation.instrumentDataFetcher(df, null, null) - def returnedValue = modifiedDataFetcher.get(null) - - then: - returnedValue instanceof CompletableFuture - - when: - def value = asCF(returnedValue).join() - - then: - value == "FetchThread" - observer.actions == ["FETCHING on FetchThread", "PROCESSING on ProcessingThread"] - } - - def "can work in a full schema"() { - def sdl = """ - type Query { - field1 : String - field2 : String - } - """ - DataFetcher df1 = { env -> CompletableFuture.completedFuture("f1" + currentThread().getName()) } - DataFetcher df2 = { env -> "f2" + currentThread().getName() } - - def graphQL = TestUtil.graphQL(sdl, [Query: [field1: df1, field2: df2]]).instrumentation(instrumentation).build() - - when: - def er = graphQL.execute("{field1, field2}") - then: - er.errors.isEmpty() - er.data["field1"] == "f1FetchThread" - er.data["field2"] == "f2FetchThread" - observer.actions.sort() == [ - "FETCHING on FetchThread", "FETCHING on FetchThread", - "PROCESSING on ProcessingThread", "PROCESSING on ProcessingThread" - ] - } -} diff --git a/src/test/groovy/graphql/execution/pubsub/CapturingSubscriber.java b/src/test/groovy/graphql/execution/pubsub/CapturingSubscriber.java index f736807941..790bac22be 100644 --- a/src/test/groovy/graphql/execution/pubsub/CapturingSubscriber.java +++ b/src/test/groovy/graphql/execution/pubsub/CapturingSubscriber.java @@ -3,9 +3,11 @@ import org.reactivestreams.Subscriber; import org.reactivestreams.Subscription; +import java.time.Duration; import java.util.ArrayList; import java.util.List; import java.util.concurrent.atomic.AtomicBoolean; +import java.util.concurrent.atomic.AtomicLong; /** * A subscriber that captures each object for testing @@ -13,37 +15,53 @@ public class CapturingSubscriber implements Subscriber { private final List events = new ArrayList<>(); private final AtomicBoolean done = new AtomicBoolean(); + private final AtomicLong creationTime = new AtomicLong(System.nanoTime()); + private final int requestN; private Subscription subscription; private Throwable throwable; + public CapturingSubscriber() { + this(1); + } + + public CapturingSubscriber(int requestN) { + this.requestN = requestN; + } @Override public void onSubscribe(Subscription subscription) { - System.out.println("onSubscribe called at " + System.nanoTime()); + System.out.println("onSubscribe called at " + delta()); this.subscription = subscription; - subscription.request(1); + subscription.request(requestN); } @Override public void onNext(T t) { - System.out.println("onNext called at " + System.nanoTime()); - events.add(t); - subscription.request(1); + System.out.println("\tonNext " + t + " called at " + delta()); + synchronized (this) { + events.add(t); + subscription.request(requestN); + } } @Override public void onError(Throwable t) { - System.out.println("onError called at " + System.nanoTime()); + System.out.println("onError called at " + delta()); this.throwable = t; done.set(true); } @Override public void onComplete() { - System.out.println("onComplete called at " + System.nanoTime()); + System.out.println("onComplete called at " + delta()); done.set(true); } + private String delta() { + Duration nanos = Duration.ofNanos(System.nanoTime() - creationTime.get()); + return "+" + nanos.toMillis() + "ms"; + } + public List getEvents() { return events; } @@ -56,6 +74,13 @@ public AtomicBoolean isDone() { return done; } + public boolean isCompleted() { + return done.get() && throwable == null; + } + public boolean isCompletedExceptionally() { + return done.get() && throwable != null; + } + public Subscription getSubscription() { return subscription; } diff --git a/src/test/groovy/graphql/execution/pubsub/CapturingSubscription.java b/src/test/groovy/graphql/execution/pubsub/CapturingSubscription.java new file mode 100644 index 0000000000..551a34a119 --- /dev/null +++ b/src/test/groovy/graphql/execution/pubsub/CapturingSubscription.java @@ -0,0 +1,26 @@ +package graphql.execution.pubsub; + +import org.reactivestreams.Subscription; + +public class CapturingSubscription implements Subscription { + private long count = 0; + private boolean cancelled = false; + + public long getCount() { + return count; + } + + public boolean isCancelled() { + return cancelled; + } + + @Override + public void request(long l) { + count += l; + } + + @Override + public void cancel() { + cancelled = true; + } +} diff --git a/src/test/groovy/graphql/execution/pubsub/CountingFlux.groovy b/src/test/groovy/graphql/execution/pubsub/CountingFlux.groovy new file mode 100644 index 0000000000..64cf0eab5f --- /dev/null +++ b/src/test/groovy/graphql/execution/pubsub/CountingFlux.groovy @@ -0,0 +1,23 @@ +package graphql.execution.pubsub + +import reactor.core.publisher.Flux + +/** + * A flux that counts how many values it has given out + */ +class CountingFlux { + Flux flux + Integer count = 0 + + CountingFlux(List values) { + flux = Flux.generate({ -> 0 }, { Integer counter, sink -> + if (counter >= values.size()) { + sink.complete() + } else { + sink.next(values[counter]) + count++ + } + return counter + 1; + }) + } +} diff --git a/src/test/groovy/graphql/execution/pubsub/RxJavaMessagePublisher.java b/src/test/groovy/graphql/execution/pubsub/RxJavaMessagePublisher.java index 7d0be05cb4..0c19e90fa2 100644 --- a/src/test/groovy/graphql/execution/pubsub/RxJavaMessagePublisher.java +++ b/src/test/groovy/graphql/execution/pubsub/RxJavaMessagePublisher.java @@ -4,6 +4,8 @@ import org.reactivestreams.Publisher; import org.reactivestreams.Subscriber; +import java.util.concurrent.atomic.AtomicInteger; + /** * This example publisher will create count "messages" and then terminate. Its * uses tRxJava Flowable as a backing publisher @@ -11,10 +13,18 @@ public class RxJavaMessagePublisher implements Publisher { private final Flowable flowable; + private final AtomicInteger counter = new AtomicInteger(); public RxJavaMessagePublisher(final int count) { flowable = Flowable.range(0, count) - .map(at -> examineMessage(new Message("sender" + at, "text" + at), at)); + .map(at -> { + counter.incrementAndGet(); + return examineMessage(new Message("sender" + at, "text" + at), at); + }); + } + + public int getCounter() { + return counter.get(); } @Override diff --git a/src/test/groovy/graphql/execution/reactive/CompletionStageMappingPublisherTest.groovy b/src/test/groovy/graphql/execution/reactive/CompletionStageMappingPublisherTest.groovy index c2117f9a8d..bc069bcf1e 100644 --- a/src/test/groovy/graphql/execution/reactive/CompletionStageMappingPublisherTest.groovy +++ b/src/test/groovy/graphql/execution/reactive/CompletionStageMappingPublisherTest.groovy @@ -10,9 +10,13 @@ import java.util.concurrent.CompletableFuture import java.util.concurrent.CompletionStage import java.util.function.Function +/** + * This contains tests for both CompletionStageMappingPublisher and CompletionStageMappingOrderedPublisher because + * they have so much common code + */ class CompletionStageMappingPublisherTest extends Specification { - def "basic mapping"() { + def "basic mapping of #why"() { when: Publisher rxIntegers = Flowable.range(0, 10) @@ -23,7 +27,7 @@ class CompletionStageMappingPublisherTest extends Specification { return CompletableFuture.completedFuture(String.valueOf(integer)) } } - Publisher rxStrings = new CompletionStageMappingPublisher(rxIntegers, mapper) + Publisher rxStrings = creator.call(rxIntegers,mapper) def capturingSubscriber = new CapturingSubscriber<>() rxStrings.subscribe(capturingSubscriber) @@ -31,11 +35,15 @@ class CompletionStageMappingPublisherTest extends Specification { then: capturingSubscriber.events.size() == 10 - capturingSubscriber.events[0] instanceof String - capturingSubscriber.events[0] == "0" + capturingSubscriber.events == ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9",] + + where: + why | creator + "CompletionStageMappingPublisher" | { Publisher p, Function> m -> new CompletionStageMappingPublisher(p,m) } + "CompletionStageMappingOrderedPublisher" | { Publisher p, Function> m -> new CompletionStageMappingOrderedPublisher(p,m) } } - def "multiple subscribers get there messages"() { + def "multiple subscribers get there messages for #why"() { when: Publisher rxIntegers = Flowable.range(0, 10) @@ -46,7 +54,7 @@ class CompletionStageMappingPublisherTest extends Specification { return CompletableFuture.completedFuture(String.valueOf(integer)) } } - Publisher rxStrings = new CompletionStageMappingPublisher(rxIntegers, mapper) + Publisher rxStrings = creator.call(rxIntegers,mapper) def capturingSubscriber1 = new CapturingSubscriber<>() def capturingSubscriber2 = new CapturingSubscriber<>() @@ -56,10 +64,20 @@ class CompletionStageMappingPublisherTest extends Specification { then: capturingSubscriber1.events.size() == 10 + // order is kept + capturingSubscriber1.events == ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9",] + capturingSubscriber2.events.size() == 10 + // order is kept + capturingSubscriber2.events == ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9",] + + where: + why | creator + "CompletionStageMappingPublisher" | { Publisher p, Function> m -> new CompletionStageMappingPublisher(p,m) } + "CompletionStageMappingOrderedPublisher" | { Publisher p, Function> m -> new CompletionStageMappingOrderedPublisher(p,m) } } - def "error handling"() { + def "error handling for #why"() { when: Publisher rxIntegers = Flowable.range(0, 10) @@ -76,7 +94,7 @@ class CompletionStageMappingPublisherTest extends Specification { } } } - Publisher rxStrings = new CompletionStageMappingPublisher(rxIntegers, mapper) + Publisher rxStrings = creator.call(rxIntegers,mapper) def capturingSubscriber = new CapturingSubscriber<>() rxStrings.subscribe(capturingSubscriber) @@ -87,11 +105,16 @@ class CompletionStageMappingPublisherTest extends Specification { // // got this far and cancelled capturingSubscriber.events.size() == 5 + capturingSubscriber.events == ["0", "1", "2", "3", "4",] + where: + why | creator + "CompletionStageMappingPublisher" | { Publisher p, Function> m -> new CompletionStageMappingPublisher(p,m) } + "CompletionStageMappingOrderedPublisher" | { Publisher p, Function> m -> new CompletionStageMappingOrderedPublisher(p,m) } } - def "mapper exception causes onError"() { + def "mapper exception causes onError for #why"() { when: Publisher rxIntegers = Flowable.range(0, 10) @@ -106,7 +129,7 @@ class CompletionStageMappingPublisherTest extends Specification { } } } - Publisher rxStrings = new CompletionStageMappingPublisher(rxIntegers, mapper) + Publisher rxStrings = creator.call(rxIntegers, mapper) def capturingSubscriber = new CapturingSubscriber<>() rxStrings.subscribe(capturingSubscriber) @@ -117,6 +140,12 @@ class CompletionStageMappingPublisherTest extends Specification { // // got this far and cancelled capturingSubscriber.events.size() == 5 + capturingSubscriber.events == ["0", "1", "2", "3", "4",] + + where: + why | creator + "CompletionStageMappingPublisher" | { Publisher p, Function> m -> new CompletionStageMappingPublisher(p,m) } + "CompletionStageMappingOrderedPublisher" | { Publisher p, Function> m -> new CompletionStageMappingOrderedPublisher(p,m) } } @@ -126,8 +155,8 @@ class CompletionStageMappingPublisherTest extends Specification { when: Publisher rxIntegers = Flowable.range(0, 10) - Function> mapper = mapperThatDelaysFor(100) - Publisher rxStrings = new CompletionStageMappingPublisher(rxIntegers, mapper) + Function> mapper = mapperThatDelaysFor(10) + Publisher rxStrings = creator.call(rxIntegers,mapper) def capturingSubscriber = new CapturingSubscriber<>() rxStrings.subscribe(capturingSubscriber) @@ -137,8 +166,12 @@ class CompletionStageMappingPublisherTest extends Specification { Awaitility.await().untilTrue(capturingSubscriber.isDone()) capturingSubscriber.events.size() == 10 - capturingSubscriber.events[0] instanceof String - capturingSubscriber.events[0] == "0" + capturingSubscriber.events == ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9",] + + where: + why | creator + "CompletionStageMappingPublisher" | { Publisher p, Function> m -> new CompletionStageMappingPublisher(p,m) } + "CompletionStageMappingOrderedPublisher" | { Publisher p, Function> m -> new CompletionStageMappingOrderedPublisher(p,m) } } Function> mapperThatDelaysFor(int delay) { diff --git a/src/test/groovy/graphql/execution/reactive/CompletionStageOrderedSubscriberTest.groovy b/src/test/groovy/graphql/execution/reactive/CompletionStageOrderedSubscriberTest.groovy new file mode 100644 index 0000000000..3438a87d06 --- /dev/null +++ b/src/test/groovy/graphql/execution/reactive/CompletionStageOrderedSubscriberTest.groovy @@ -0,0 +1,22 @@ +package graphql.execution.reactive + +import graphql.execution.pubsub.CapturingSubscriber +import graphql.execution.pubsub.CapturingSubscription +import org.reactivestreams.Subscriber + +import java.util.concurrent.CompletableFuture +import java.util.concurrent.CompletionStage +import java.util.function.Function + +class CompletionStageOrderedSubscriberTest extends CompletionStageSubscriberTest { + + @Override + protected Subscriber createSubscriber(Function> mapper, CapturingSubscriber capturingSubscriber) { + return new CompletionStageOrderedSubscriber(mapper, capturingSubscriber) + } + + @Override + protected ArrayList expectedOrderingOfAsyncCompletion() { + return ["0", "1", "2", "3"] + } +} diff --git a/src/test/groovy/graphql/execution/reactive/CompletionStageSubscriberTest.groovy b/src/test/groovy/graphql/execution/reactive/CompletionStageSubscriberTest.groovy new file mode 100644 index 0000000000..45d3d87830 --- /dev/null +++ b/src/test/groovy/graphql/execution/reactive/CompletionStageSubscriberTest.groovy @@ -0,0 +1,226 @@ +package graphql.execution.reactive + +import graphql.execution.pubsub.CapturingSubscriber +import graphql.execution.pubsub.CapturingSubscription +import org.reactivestreams.Subscriber +import spock.lang.Specification + +import java.util.concurrent.CompletableFuture +import java.util.concurrent.CompletionStage +import java.util.function.Function + +/** + * This can be used to test the CompletionStageSubscriber and CompletionStageOrderedSubscriber + * since they share so much common code. There are protected helpers to create the subscribers + * and set expectations + */ +class CompletionStageSubscriberTest extends Specification { + + protected Subscriber createSubscriber(Function> mapper, CapturingSubscriber capturingSubscriber) { + def completionStageSubscriber = new CompletionStageSubscriber(mapper, capturingSubscriber) + completionStageSubscriber + } + + protected ArrayList expectedOrderingOfAsyncCompletion() { + ["3", "2", "1", "0"] + } + + def "basic test of mapping"() { + def capturingSubscriber = new CapturingSubscriber<>() + def subscription = new CapturingSubscription() + def mapper = new Function>() { + @Override + CompletionStage apply(Integer integer) { + return CompletableFuture.completedFuture(String.valueOf(integer)) + } + } + Subscriber completionStageSubscriber = createSubscriber(mapper, capturingSubscriber) + + when: + completionStageSubscriber.onSubscribe(subscription) + completionStageSubscriber.onNext(0) + + then: + !subscription.isCancelled() + !capturingSubscriber.isCompleted() + capturingSubscriber.events == ["0"] + + when: + completionStageSubscriber.onNext(1) + + then: + !subscription.isCancelled() + !capturingSubscriber.isCompleted() + capturingSubscriber.events == ["0", "1"] + + when: + completionStageSubscriber.onComplete() + + then: + !subscription.isCancelled() + capturingSubscriber.isCompleted() + capturingSubscriber.events == ["0", "1"] + } + + def "can hold CFs that have not completed and does not emit them even when onComplete is called"() { + def capturingSubscriber = new CapturingSubscriber<>() + def subscription = new CapturingSubscription() + List promises = [] + Function> mapper = mapperThatDoesNotComplete(promises) + Subscriber completionStageSubscriber = createSubscriber(mapper, capturingSubscriber) + + when: + completionStageSubscriber.onSubscribe(subscription) + completionStageSubscriber.onNext(0) + + then: + !subscription.isCancelled() + !capturingSubscriber.isCompleted() + capturingSubscriber.events == [] + + when: + completionStageSubscriber.onNext(1) + + then: + !subscription.isCancelled() + !capturingSubscriber.isCompleted() + capturingSubscriber.events == [] + + when: + completionStageSubscriber.onComplete() + + then: + !subscription.isCancelled() + !capturingSubscriber.isCompleted() + capturingSubscriber.events == [] + + when: + promises.forEach { it.run() } + + then: + !subscription.isCancelled() + capturingSubscriber.isCompleted() + capturingSubscriber.events == ["0", "1"] + } + + def "can hold CFs that have not completed but finishes quickly when onError is called"() { + def capturingSubscriber = new CapturingSubscriber<>() + def subscription = new CapturingSubscription() + List promises = [] + Function> mapper = mapperThatDoesNotComplete(promises) + + Subscriber completionStageSubscriber = createSubscriber(mapper, capturingSubscriber) + + when: + completionStageSubscriber.onSubscribe(subscription) + completionStageSubscriber.onNext(0) + + then: + !subscription.isCancelled() + !capturingSubscriber.isCompleted() + capturingSubscriber.events == [] + + when: + completionStageSubscriber.onNext(1) + + then: + !subscription.isCancelled() + !capturingSubscriber.isCompleted() + capturingSubscriber.events == [] + + when: + completionStageSubscriber.onError(new RuntimeException("Bang")) + + then: + !subscription.isCancelled() + !capturingSubscriber.isCompleted() + capturingSubscriber.isCompletedExceptionally() + // it immediately errored out + capturingSubscriber.getThrowable().getMessage() == "Bang" + capturingSubscriber.events == [] + + when: + // even if the promises later complete we are done + promises.forEach { it.run() } + + then: + !subscription.isCancelled() + !capturingSubscriber.isCompleted() + capturingSubscriber.isCompletedExceptionally() + capturingSubscriber.getThrowable().getMessage() == "Bang" + capturingSubscriber.events == [] + } + + def "if onError is called, then futures are cancelled"() { + def capturingSubscriber = new CapturingSubscriber<>() + def subscription = new CapturingSubscription() + List promises = [] + Function> mapper = mapperThatDoesNotComplete([], promises) + + Subscriber completionStageSubscriber = createSubscriber(mapper, capturingSubscriber) + + when: + completionStageSubscriber.onSubscribe(subscription) + completionStageSubscriber.onNext(0) + completionStageSubscriber.onNext(1) + completionStageSubscriber.onNext(2) + completionStageSubscriber.onNext(3) + completionStageSubscriber.onError(new RuntimeException("Bang")) + + then: + !capturingSubscriber.isCompleted() + capturingSubscriber.isCompletedExceptionally() + capturingSubscriber.events == [] + + promises.size() == 4 + for (CompletableFuture cf : promises) { + assert cf.isCancelled(), "The CF was not cancelled?" + } + } + + + def "ordering test - depends on implementation"() { + def capturingSubscriber = new CapturingSubscriber<>() + def subscription = new CapturingSubscription() + List promises = [] + Function> mapper = mapperThatDoesNotComplete(promises) + + Subscriber completionStageSubscriber = createSubscriber(mapper, capturingSubscriber) + + when: + completionStageSubscriber.onSubscribe(subscription) + completionStageSubscriber.onNext(0) + completionStageSubscriber.onNext(1) + completionStageSubscriber.onNext(2) + completionStageSubscriber.onNext(3) + + then: + !subscription.isCancelled() + !capturingSubscriber.isCompleted() + capturingSubscriber.events == [] + + when: + completionStageSubscriber.onComplete() + promises.reverse().forEach { it.run() } + + then: + !subscription.isCancelled() + capturingSubscriber.isCompleted() + capturingSubscriber.events == expectedOrderingOfAsyncCompletion() + } + + + static Function> mapperThatDoesNotComplete(List runToComplete, List promises = []) { + def mapper = new Function>() { + @Override + CompletionStage apply(Integer integer) { + def cf = new CompletableFuture() + runToComplete.add({ cf.complete(String.valueOf(integer)) }) + promises.add(cf) + return cf + } + } + mapper + } + +} diff --git a/src/test/groovy/graphql/execution/reactive/ReactiveSupportTest.groovy b/src/test/groovy/graphql/execution/reactive/ReactiveSupportTest.groovy new file mode 100644 index 0000000000..a5197af4ed --- /dev/null +++ b/src/test/groovy/graphql/execution/reactive/ReactiveSupportTest.groovy @@ -0,0 +1,222 @@ +package graphql.execution.reactive + +import graphql.GraphQL +import graphql.TestUtil +import graphql.execution.pubsub.CapturingSubscriber +import graphql.execution.pubsub.CountingFlux +import graphql.schema.DataFetcher +import reactor.adapter.JdkFlowAdapter +import reactor.core.publisher.Mono +import spock.lang.Specification + +import java.time.Duration +import java.util.concurrent.CancellationException +import java.util.concurrent.CompletableFuture +import java.util.concurrent.CompletionException +import java.util.concurrent.Flow + +class ReactiveSupportTest extends Specification { + + private static Flow.Publisher toFlow(Mono stringMono) { + return JdkFlowAdapter.publisherToFlowPublisher(stringMono) + } + + private static Mono delayedMono(String X, Integer millis) { + Mono.just(X).delayElement(Duration.ofMillis(millis)) + } + + def "will pass through non reactive things and leave them as is"() { + + when: + def val = ReactiveSupport.fetchedObject("X") + then: + val === "X" + + when: + def cf = CompletableFuture.completedFuture("X") + val = ReactiveSupport.fetchedObject(cf) + then: + val === cf + } + + def "can get a reactive or flow publisher and make a CF from it"() { + + when: + CompletableFuture cf = ReactiveSupport.fetchedObject(reactiveObject) as CompletableFuture + + then: + !cf.isCancelled() + !cf.isCompletedExceptionally() + cf.isDone() + + cf.join() == "X" + + where: + reactiveObject || _ + Mono.just("X") || _ + toFlow(Mono.just("X")) || _ + } + + def "can get a reactive or flow publisher that takes some time and make a CF from it"() { + + when: + CompletableFuture cf = ReactiveSupport.fetchedObject(reactiveObject) as CompletableFuture + + then: + !cf.isCancelled() + !cf.isCompletedExceptionally() + !cf.isDone() + + cf.join() == "X" + + where: + reactiveObject || _ + delayedMono("X", 100) || _ + toFlow(delayedMono("X", 100)) || _ + } + + def "can get a reactive or flow publisher with an error and make a CF from it"() { + + when: + CompletableFuture cf = ReactiveSupport.fetchedObject(reactiveObject) as CompletableFuture + + then: + !cf.isCancelled() + cf.isCompletedExceptionally() + cf.isDone() + + when: + cf.join() + + then: + def e = thrown(CompletionException.class) + e.cause.message == "Bang!" + + where: + reactiveObject || _ + Mono.error(new RuntimeException("Bang!")) || _ + toFlow(Mono.error(new RuntimeException("Bang!"))) || _ + } + + def "can get a empty reactive or flow publisher and make a CF from it"() { + + when: + CompletableFuture cf = ReactiveSupport.fetchedObject(reactiveObject) as CompletableFuture + + then: + !cf.isCancelled() + !cf.isCompletedExceptionally() + cf.isDone() + + cf.join() == null + + where: + reactiveObject || _ + Mono.empty() || _ + toFlow(Mono.empty()) || _ + } + + + def "can get a reactive or flow publisher but cancel it before a value turns up"() { + + when: + CompletableFuture cf = ReactiveSupport.fetchedObject(reactiveObject) as CompletableFuture + + then: + !cf.isCancelled() + !cf.isCompletedExceptionally() + !cf.isDone() + + when: + def cfCancelled = cf.cancel(true) + + then: + cfCancelled + cf.isCancelled() + cf.isCompletedExceptionally() + cf.isDone() + + when: + cf.join() + + then: + thrown(CancellationException.class) + + where: + reactiveObject || _ + delayedMono("X", 1000) || _ + toFlow(delayedMono("X", 1000)) || _ + + } + + + def "can get a reactive Flux and only take one value and make a CF from it"() { + + def xyzStrings = ["X", "Y", "Z"] + when: + def countingFlux = new CountingFlux(xyzStrings) + CompletableFuture cf = ReactiveSupport.fetchedObject(countingFlux.flux) as CompletableFuture + + then: + !cf.isCancelled() + !cf.isCompletedExceptionally() + cf.isDone() + + cf.join() == "X" + countingFlux.count == 1 + + when: + def capturingSubscriber = new CapturingSubscriber<>() + countingFlux.flux.subscribe(capturingSubscriber) + + then: + // second subscriber + capturingSubscriber.events == ["X", "Y", "Z"] + countingFlux.count == 4 + } + + def "integration test showing reactive values in data fetchers as well as the ones we know and love"() { + def sdl = """ + type Query { + reactorField : String + flowField : String + cfField : String + materialisedField : String + } + """ + + // with some delay + def reactorDF = { env -> delayedMono("reactor", 100) } as DataFetcher + def flowDF = { env -> toFlow(delayedMono("flow", 50)) } as DataFetcher + + def cfDF = { env -> CompletableFuture.completedFuture("cf") } as DataFetcher + def materialisedDF = { env -> "materialised" } as DataFetcher + + def schema = TestUtil.schema(sdl, [Query: [ + reactorField : reactorDF, + flowField : flowDF, + cfField : cfDF, + materialisedField: materialisedDF, + ]]) + def graphQL = GraphQL.newGraphQL(schema).build() + + when: + def er = graphQL.execute(""" + query q { + reactorField + flowField + cfField + materialisedField + } + """) + + then: + er.errors.isEmpty() + er.data == [ + reactorField : "reactor", + flowField : "flow", + cfField : "cf", + materialisedField: "materialised" + ] + } +} diff --git a/src/test/groovy/graphql/execution/reactive/tck/CompletionStageMappingOrderedPublisherRandomCompleteTckVerificationTest.java b/src/test/groovy/graphql/execution/reactive/tck/CompletionStageMappingOrderedPublisherRandomCompleteTckVerificationTest.java new file mode 100644 index 0000000000..19ebffc466 --- /dev/null +++ b/src/test/groovy/graphql/execution/reactive/tck/CompletionStageMappingOrderedPublisherRandomCompleteTckVerificationTest.java @@ -0,0 +1,70 @@ +package graphql.execution.reactive.tck; + +import graphql.execution.reactive.CompletionStageMappingOrderedPublisher; +import io.reactivex.Flowable; +import org.jspecify.annotations.NonNull; +import org.reactivestreams.Publisher; +import org.reactivestreams.tck.PublisherVerification; +import org.reactivestreams.tck.TestEnvironment; +import org.testng.annotations.Test; + +import java.time.Duration; +import java.util.Random; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.CompletionStage; +import java.util.function.Function; + +/** + * This uses the reactive streams TCK to test that our CompletionStageMappingPublisher meets spec + * when it's got CFs that complete at different times + */ +@Test +public class CompletionStageMappingOrderedPublisherRandomCompleteTckVerificationTest extends PublisherVerification { + + public CompletionStageMappingOrderedPublisherRandomCompleteTckVerificationTest() { + super(new TestEnvironment(Duration.ofMillis(100).toMillis())); + } + + @Override + public long maxElementsFromPublisher() { + return 10000; + } + + @Override + public Publisher createPublisher(long elements) { + Publisher publisher = Flowable.range(0, (int) elements); + Function> mapper = mapperFunc(); + return new CompletionStageMappingOrderedPublisher<>(publisher, mapper); + } + @Override + public Publisher createFailedPublisher() { + Publisher publisher = Flowable.error(() -> new RuntimeException("Bang")); + Function> mapper = mapperFunc(); + return new CompletionStageMappingOrderedPublisher<>(publisher, mapper); + } + + public boolean skipStochasticTests() { + return true; + } + + @NonNull + private static Function> mapperFunc() { + return i -> CompletableFuture.supplyAsync(() -> { + int ms = rand(0, 5); + try { + Thread.sleep(ms); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + return i + "!"; + }); + } + + static Random rn = new Random(); + + private static int rand(int min, int max) { + return rn.nextInt(max - min + 1) + min; + } + +} + diff --git a/src/test/groovy/graphql/execution/reactive/tck/CompletionStageMappingOrderedPublisherTckVerificationTest.java b/src/test/groovy/graphql/execution/reactive/tck/CompletionStageMappingOrderedPublisherTckVerificationTest.java new file mode 100644 index 0000000000..03a9a7fe86 --- /dev/null +++ b/src/test/groovy/graphql/execution/reactive/tck/CompletionStageMappingOrderedPublisherTckVerificationTest.java @@ -0,0 +1,50 @@ +package graphql.execution.reactive.tck; + +import graphql.execution.reactive.CompletionStageMappingOrderedPublisher; +import io.reactivex.Flowable; +import org.reactivestreams.Publisher; +import org.reactivestreams.tck.PublisherVerification; +import org.reactivestreams.tck.TestEnvironment; +import org.testng.annotations.Test; + +import java.time.Duration; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.CompletionStage; +import java.util.function.Function; + +/** + * This uses the reactive streams TCK to test that our CompletionStageMappingPublisher meets spec + * when it's got CFs that complete off thread + */ +@Test +public class CompletionStageMappingOrderedPublisherTckVerificationTest extends PublisherVerification { + + public CompletionStageMappingOrderedPublisherTckVerificationTest() { + super(new TestEnvironment(Duration.ofMillis(1000).toMillis())); + } + + @Override + public long maxElementsFromPublisher() { + return 10000; + } + + @Override + public Publisher createPublisher(long elements) { + Publisher publisher = Flowable.range(0, (int) elements); + Function> mapper = i -> CompletableFuture.supplyAsync(() -> i + "!"); + return new CompletionStageMappingOrderedPublisher<>(publisher, mapper); + } + + @Override + public Publisher createFailedPublisher() { + Publisher publisher = Flowable.error(() -> new RuntimeException("Bang")); + Function> mapper = i -> CompletableFuture.supplyAsync(() -> i + "!"); + return new CompletionStageMappingOrderedPublisher<>(publisher, mapper); + } + + @Override + public boolean skipStochasticTests() { + return true; + } +} + diff --git a/src/test/groovy/graphql/execution/reactive/tck/CompletionStageMappingPublisherRandomCompleteTckVerificationTest.java b/src/test/groovy/graphql/execution/reactive/tck/CompletionStageMappingPublisherRandomCompleteTckVerificationTest.java new file mode 100644 index 0000000000..889b18eeeb --- /dev/null +++ b/src/test/groovy/graphql/execution/reactive/tck/CompletionStageMappingPublisherRandomCompleteTckVerificationTest.java @@ -0,0 +1,70 @@ +package graphql.execution.reactive.tck; + +import graphql.execution.reactive.CompletionStageMappingPublisher; +import io.reactivex.Flowable; +import org.jspecify.annotations.NonNull; +import org.reactivestreams.Publisher; +import org.reactivestreams.tck.PublisherVerification; +import org.reactivestreams.tck.TestEnvironment; +import org.testng.annotations.Test; + +import java.time.Duration; +import java.util.Random; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.CompletionStage; +import java.util.function.Function; + +/** + * This uses the reactive streams TCK to test that our CompletionStageMappingPublisher meets spec + * when it's got CFs that complete at different times + */ +@Test +public class CompletionStageMappingPublisherRandomCompleteTckVerificationTest extends PublisherVerification { + + public CompletionStageMappingPublisherRandomCompleteTckVerificationTest() { + super(new TestEnvironment(Duration.ofMillis(100).toMillis())); + } + + @Override + public long maxElementsFromPublisher() { + return 10000; + } + + @Override + public Publisher createPublisher(long elements) { + Publisher publisher = Flowable.range(0, (int) elements); + Function> mapper = mapperFunc(); + return new CompletionStageMappingPublisher<>(publisher, mapper); + } + @Override + public Publisher createFailedPublisher() { + Publisher publisher = Flowable.error(() -> new RuntimeException("Bang")); + Function> mapper = mapperFunc(); + return new CompletionStageMappingPublisher<>(publisher, mapper); + } + + public boolean skipStochasticTests() { + return true; + } + + @NonNull + private static Function> mapperFunc() { + return i -> CompletableFuture.supplyAsync(() -> { + int ms = rand(0, 5); + try { + Thread.sleep(ms); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + return i + "!"; + }); + } + + static Random rn = new Random(); + + private static int rand(int min, int max) { + return rn.nextInt(max - min + 1) + min; + } + +} + diff --git a/src/test/groovy/graphql/execution/reactive/tck/CompletionStageMappingPublisherTckVerificationTest.java b/src/test/groovy/graphql/execution/reactive/tck/CompletionStageMappingPublisherTckVerificationTest.java new file mode 100644 index 0000000000..9c58e3fd6e --- /dev/null +++ b/src/test/groovy/graphql/execution/reactive/tck/CompletionStageMappingPublisherTckVerificationTest.java @@ -0,0 +1,50 @@ +package graphql.execution.reactive.tck; + +import graphql.execution.reactive.CompletionStageMappingPublisher; +import io.reactivex.Flowable; +import org.reactivestreams.Publisher; +import org.reactivestreams.tck.PublisherVerification; +import org.reactivestreams.tck.TestEnvironment; +import org.testng.annotations.Test; + +import java.time.Duration; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.CompletionStage; +import java.util.function.Function; + +/** + * This uses the reactive streams TCK to test that our CompletionStageMappingPublisher meets spec + * when it's got CFs that complete off thread + */ +@Test +public class CompletionStageMappingPublisherTckVerificationTest extends PublisherVerification { + + public CompletionStageMappingPublisherTckVerificationTest() { + super(new TestEnvironment(Duration.ofMillis(1000).toMillis())); + } + + @Override + public long maxElementsFromPublisher() { + return 10000; + } + + @Override + public Publisher createPublisher(long elements) { + Publisher publisher = Flowable.range(0, (int) elements); + Function> mapper = i -> CompletableFuture.supplyAsync(() -> i + "!"); + return new CompletionStageMappingPublisher<>(publisher, mapper); + } + + @Override + public Publisher createFailedPublisher() { + Publisher publisher = Flowable.error(() -> new RuntimeException("Bang")); + Function> mapper = i -> CompletableFuture.supplyAsync(() -> i + "!"); + return new CompletionStageMappingPublisher<>(publisher, mapper); + } + + @Override + public boolean skipStochasticTests() { + return true; + } +} + diff --git a/src/test/groovy/graphql/execution/reactive/SingleSubscriberPublisherTckVerificationTest.java b/src/test/groovy/graphql/execution/reactive/tck/SingleSubscriberPublisherTckVerificationTest.java similarity index 92% rename from src/test/groovy/graphql/execution/reactive/SingleSubscriberPublisherTckVerificationTest.java rename to src/test/groovy/graphql/execution/reactive/tck/SingleSubscriberPublisherTckVerificationTest.java index 59d69e4162..472cbaa357 100644 --- a/src/test/groovy/graphql/execution/reactive/SingleSubscriberPublisherTckVerificationTest.java +++ b/src/test/groovy/graphql/execution/reactive/tck/SingleSubscriberPublisherTckVerificationTest.java @@ -1,5 +1,6 @@ -package graphql.execution.reactive; +package graphql.execution.reactive.tck; +import graphql.execution.reactive.SingleSubscriberPublisher; import org.reactivestreams.Publisher; import org.reactivestreams.tck.PublisherVerification; import org.reactivestreams.tck.TestEnvironment; diff --git a/src/test/groovy/graphql/execution/values/InputInterceptorTest.groovy b/src/test/groovy/graphql/execution/values/InputInterceptorTest.groovy index de6914a50d..f259714b82 100644 --- a/src/test/groovy/graphql/execution/values/InputInterceptorTest.groovy +++ b/src/test/groovy/graphql/execution/values/InputInterceptorTest.groovy @@ -10,8 +10,6 @@ import graphql.execution.ValuesResolver import graphql.schema.DataFetcher import graphql.schema.DataFetchingEnvironment import graphql.schema.GraphQLInputType -import org.jetbrains.annotations.NotNull -import org.jetbrains.annotations.Nullable import spock.lang.Specification import static graphql.language.TypeName.newTypeName @@ -35,7 +33,7 @@ class InputInterceptorTest extends Specification { InputInterceptor interceptor = new InputInterceptor() { @Override - Object intercept(@Nullable Object value, @NotNull GraphQLInputType graphQLType, @NotNull GraphQLContext graphqlContext, @NotNull Locale locale) { + Object intercept(Object value, GraphQLInputType graphQLType, GraphQLContext graphqlContext, Locale locale) { if (graphQLType == Scalars.GraphQLBoolean) { return "truthy" == value ? false : value } @@ -98,7 +96,7 @@ class InputInterceptorTest extends Specification { ''') .graphQLContext({ it.put(InputInterceptor.class, interceptor) }) .variables( - "booleanArg": "truthy", + "booleanArg": false, "stringArg": "sdrawkcab" ) diff --git a/src/test/groovy/graphql/extensions/ExtensionsBuilderTest.groovy b/src/test/groovy/graphql/extensions/ExtensionsBuilderTest.groovy index 12be824cf8..e08a09b777 100644 --- a/src/test/groovy/graphql/extensions/ExtensionsBuilderTest.groovy +++ b/src/test/groovy/graphql/extensions/ExtensionsBuilderTest.groovy @@ -6,7 +6,6 @@ import graphql.execution.DataFetcherResult import graphql.schema.DataFetcher import graphql.schema.DataFetchingEnvironment import graphql.schema.GraphQLTypeUtil -import org.jetbrains.annotations.NotNull import spock.lang.Specification import static graphql.ExecutionInput.newExecutionInput @@ -106,8 +105,7 @@ class ExtensionsBuilderTest extends Specification { def "can use a custom merger"() { ExtensionsMerger merger = new ExtensionsMerger() { @Override - @NotNull - Map merge(@NotNull Map leftMap, @NotNull Map rightMap) { + Map merge(Map leftMap, Map rightMap) { return rightMap } } diff --git a/src/test/groovy/graphql/incremental/DeferPayloadTest.groovy b/src/test/groovy/graphql/incremental/DeferPayloadTest.groovy new file mode 100644 index 0000000000..693d3911db --- /dev/null +++ b/src/test/groovy/graphql/incremental/DeferPayloadTest.groovy @@ -0,0 +1,145 @@ +package graphql.incremental + +import graphql.GraphqlErrorBuilder +import graphql.execution.ResultPath +import spock.lang.Specification + +import static graphql.GraphQLError.newError + +class DeferPayloadTest extends Specification { + def "null data is included"() { + def payload = DeferPayload.newDeferredItem() + .data(null) + .build() + + when: + def spec = payload.toSpecification() + + then: + spec == [ + data: null, + path: null, + ] + } + + def "can construct an instance using builder"() { + def payload = DeferPayload.newDeferredItem() + .data("twow is that a bee") + .path(["hello"]) + .errors([]) + .addError(GraphqlErrorBuilder.newError() + .message("wow") + .build()) + .addErrors([ + GraphqlErrorBuilder.newError() + .message("yep") + .build(), + ]) + .extensions([echo: "Hello world"]) + .build() + + when: + def serialized = payload.toSpecification() + + then: + serialized == [ + data : "twow is that a bee", + path : ["hello"], + errors : [ + [ + message : "wow", + locations : [], + extensions: [classification: "DataFetchingException"], + ], + [ + message : "yep", + locations : [], + extensions: [classification: "DataFetchingException"], + ], + ], + extensions: [ + echo: "Hello world", + ], + ] + } + + def "errors replaces existing errors"() { + def payload = DeferPayload.newDeferredItem() + .data("twow is that a bee") + .path(ResultPath.fromList(["test", "echo"])) + .addError(GraphqlErrorBuilder.newError() + .message("wow") + .build()) + .addErrors([]) + .errors([ + GraphqlErrorBuilder.newError() + .message("yep") + .build(), + ]) + .extensions([echo: "Hello world"]) + .build() + + when: + def serialized = payload.toSpecification() + + then: + serialized == [ + data : "twow is that a bee", + errors : [ + [ + message : "yep", + locations : [], + extensions: [classification: "DataFetchingException"], + ], + ], + extensions: [ + echo: "Hello world", + ], + path : ["test", "echo"], + ] + } + + def "equals and hashcode methods work correctly"() { + when: + def payload = DeferPayload.newDeferredItem() + .data("data1") + .path(["path1"]) + .label("label1") + .errors([newError().message("message1").build()]) + .extensions([key: "value1"]) + .build() + + def equivalentPayload = DeferPayload.newDeferredItem() + .data("data1") + .path(["path1"]) + .label("label1") + .errors([newError().message("message1").build()]) + .extensions([key: "value1"]) + .build() + + def totallyDifferentPayload = DeferPayload.newDeferredItem() + .data("data2") + .path(["path2"]) + .label("label2") + .errors([newError().message("message2").build()]) + .extensions([key: "value2"]) + .build() + + def slightlyDifferentPayload = DeferPayload.newDeferredItem() + .data("data1") + .path(["path1"]) + .label("label1") + .errors([newError().message("message1").build()]) + .extensions([key: "value2"]) + .build() + + then: + payload == equivalentPayload + payload != totallyDifferentPayload + payload != slightlyDifferentPayload + + payload.hashCode() == equivalentPayload.hashCode() + payload.hashCode() != totallyDifferentPayload.hashCode() + payload.hashCode() != slightlyDifferentPayload.hashCode() + } +} diff --git a/src/test/groovy/graphql/incremental/IncrementalExecutionResultTest.groovy b/src/test/groovy/graphql/incremental/IncrementalExecutionResultTest.groovy index 25eb197ec5..b40bfd8712 100644 --- a/src/test/groovy/graphql/incremental/IncrementalExecutionResultTest.groovy +++ b/src/test/groovy/graphql/incremental/IncrementalExecutionResultTest.groovy @@ -1,6 +1,7 @@ package graphql.incremental import graphql.execution.ResultPath +import io.reactivex.Flowable import spock.lang.Specification import static graphql.incremental.DeferPayload.newDeferredItem @@ -80,6 +81,55 @@ class IncrementalExecutionResultTest extends Specification { extensions: [some: "map"], hasNext : false, ] + } + + def "sanity test to check Builder.from works"() { + when: + def defer1 = newDeferredItem() + .label("homeWorldDefer") + .path(ResultPath.parse("/person")) + .data([homeWorld: "Tatooine"]) + .build() + + + def incrementalExecutionResult = new IncrementalExecutionResultImpl.Builder() + .data([ + person: [ + name : "Luke Skywalker", + films: [ + [title: "A New Hope"] + ] + ] + ]) + .incrementalItemPublisher { Flowable.range(1,10)} + .hasNext(true) + .incremental([defer1]) + .extensions([some: "map"]) + .build() + + def newIncrementalExecutionResult = new IncrementalExecutionResultImpl.Builder().from(incrementalExecutionResult).build() + + then: + newIncrementalExecutionResult.incremental == incrementalExecutionResult.incremental + newIncrementalExecutionResult.extensions == incrementalExecutionResult.extensions + newIncrementalExecutionResult.errors == incrementalExecutionResult.errors + newIncrementalExecutionResult.incrementalItemPublisher == incrementalExecutionResult.incrementalItemPublisher + newIncrementalExecutionResult.hasNext() == incrementalExecutionResult.hasNext() + newIncrementalExecutionResult.toSpecification() == incrementalExecutionResult.toSpecification() + } + + def "transform returns IncrementalExecutionResult"() { + when: + def initial = newIncrementalExecutionResult().hasNext(true).build() + + then: + def transformed = initial.transform { b -> + b.addExtension("ext-key", "ext-value") + b.hasNext(false) + } + transformed instanceof IncrementalExecutionResult + transformed.extensions == ["ext-key": "ext-value"] + transformed.hasNext == false } } diff --git a/src/test/groovy/graphql/incremental/StreamPayloadTest.groovy b/src/test/groovy/graphql/incremental/StreamPayloadTest.groovy new file mode 100644 index 0000000000..157dcc1f0d --- /dev/null +++ b/src/test/groovy/graphql/incremental/StreamPayloadTest.groovy @@ -0,0 +1,153 @@ +package graphql.incremental + +import graphql.execution.ResultPath +import spock.lang.Specification + +import static graphql.GraphqlErrorBuilder.newError + +class StreamPayloadTest extends Specification { + def "null data is included"() { + def payload = StreamPayload.newStreamedItem() + .items(null) + .build() + + when: + def spec = payload.toSpecification() + + then: + spec == [ + items: null, + path : null, + ] + } + + def "can construct an instance using builder"() { + def payload = StreamPayload.newStreamedItem() + .items(["twow is that a bee"]) + .path(["hello"]) + .errors([]) + .addError(newError() + .message("wow") + .build()) + .addErrors([ + newError() + .message("yep") + .build(), + ]) + .extensions([echo: "Hello world"]) + .build() + + when: + def serialized = payload.toSpecification() + + then: + serialized == [ + items : ["twow is that a bee"], + path : ["hello"], + errors : [ + [ + message : "wow", + locations : [], + extensions: [classification: "DataFetchingException"], + ], + [ + message : "yep", + locations : [], + extensions: [classification: "DataFetchingException"], + ], + ], + extensions: [ + echo: "Hello world", + ], + ] + } + + def "errors replaces existing errors"() { + def payload = StreamPayload.newStreamedItem() + .items(["twow is that a bee"]) + .path(ResultPath.fromList(["test", "echo"])) + .addError(newError() + .message("wow") + .build()) + .addErrors([]) + .errors([ + newError() + .message("yep") + .build(), + ]) + .extensions([echo: "Hello world"]) + .build() + + when: + def serialized = payload.toSpecification() + + then: + serialized == [ + items : ["twow is that a bee"], + errors : [ + [ + message : "yep", + locations : [], + extensions: [classification: "DataFetchingException"], + ], + ], + extensions: [ + echo: "Hello world", + ], + path : ["test", "echo"], + ] + } + + def "test equals and hashCode methods work"() { + given: + def items1 = ["test1"] + def items2 = ["test2", "test3"] + def path1 = ["test", "echo"] + def path2 = ["test", "echo", "foo"] + def errors1 = [newError().message("error1").build()] + def errors2 = [newError().message("error2").build()] + def extensions1 = [echo: "1"] + def extensions2 = [echo: "2"] + + def payload = new StreamPayload.Builder() + .items(items1) + .path(path1) + .label("label1") + .errors(errors1) + .extensions(extensions1) + .build() + + def equivalentPayload = new StreamPayload.Builder() + .items(items1) + .path(path1) + .label("label1") + .errors(errors1) + .extensions(extensions1) + .build() + + def totallyDifferentPayload = new StreamPayload.Builder() + .items(items2) + .path(path2) + .label("label2") + .errors(errors2) + .extensions(extensions2) + .build() + + def slightlyDifferentPayload = new StreamPayload.Builder() + .items(items2) + .path(path2) + .label("label1") + .errors(errors1) + .extensions(extensions2) + .build() + + expect: + payload == equivalentPayload + payload != totallyDifferentPayload + payload != slightlyDifferentPayload + + payload.hashCode() == equivalentPayload.hashCode() + payload.hashCode() != totallyDifferentPayload.hashCode() + payload.hashCode() != slightlyDifferentPayload.hashCode() + } +} diff --git a/src/test/groovy/graphql/introspection/IntrospectionResultToSchemaTest.groovy b/src/test/groovy/graphql/introspection/IntrospectionResultToSchemaTest.groovy index 9f2346df4f..f322d2700e 100644 --- a/src/test/groovy/graphql/introspection/IntrospectionResultToSchemaTest.groovy +++ b/src/test/groovy/graphql/introspection/IntrospectionResultToSchemaTest.groovy @@ -377,7 +377,7 @@ input CharacterInput { "subscriptionType": {"name":"SubscriptionType"}, "types": [ ] - }""" + }}""" def parsed = slurp(input) when: @@ -826,7 +826,7 @@ directiveArg: String = "default Value") on FIELD | FRAGMENT_SPREAD | INLINE_FRAG "isRepeatable":true } ] - }""" + }}""" def parsed = slurp(input) when: diff --git a/src/test/groovy/graphql/introspection/IntrospectionWithDirectivesSupportTest.groovy b/src/test/groovy/graphql/introspection/IntrospectionWithDirectivesSupportTest.groovy index 262770eb31..591a44146e 100644 --- a/src/test/groovy/graphql/introspection/IntrospectionWithDirectivesSupportTest.groovy +++ b/src/test/groovy/graphql/introspection/IntrospectionWithDirectivesSupportTest.groovy @@ -91,7 +91,8 @@ class IntrospectionWithDirectivesSupportTest extends Specification { schemaType["directives"] == [ [name: "include"], [name: "skip"], [name: "example"], [name: "secret"], - [name: "noDefault"], [name: "deprecated"], [name: "specifiedBy"], [name: "oneOf"] + [name: "noDefault"], [name: "deprecated"], [name: "specifiedBy"], [name: "oneOf"], + [name: "defer"], [name: "experimental_disableErrorPropagation"] ] schemaType["appliedDirectives"] == [[name: "example", args: [[name: "argName", value: '"onSchema"']]]] @@ -173,7 +174,9 @@ class IntrospectionWithDirectivesSupportTest extends Specification { def definedDirectives = er.data["__schema"]["directives"] // secret is filter out - definedDirectives == [[name: "include"], [name: "skip"], [name: "example"], [name: "deprecated"], [name: "specifiedBy"], [name: "oneOf"]] + definedDirectives == [[name: "include"], [name: "skip"], [name: "example"], [name: "deprecated"], [name: "specifiedBy"], [name: "oneOf"], + [name: "defer"], [name: "experimental_disableErrorPropagation"] + ] } def "can set prefixes onto the Applied types"() { diff --git a/src/test/groovy/graphql/language/AstPrinterTest.groovy b/src/test/groovy/graphql/language/AstPrinterTest.groovy index aed976ee02..84c2de667a 100644 --- a/src/test/groovy/graphql/language/AstPrinterTest.groovy +++ b/src/test/groovy/graphql/language/AstPrinterTest.groovy @@ -3,6 +3,8 @@ package graphql.language import graphql.parser.Parser import spock.lang.Specification +import java.nio.CharBuffer + class AstPrinterTest extends Specification { Document parse(String input) { @@ -696,7 +698,7 @@ extend input Input @directive { def result = AstPrinter.printAstCompact(interfaceType) then: - result == "interface Resource implements Node & Extra {}" + result == "interface Resource implements Node & Extra" } @@ -713,7 +715,7 @@ extend input Input @directive { def result = AstPrinter.printAstCompact(interfaceType) then: - result == "extend interface Resource implements Node & Extra {}" + result == "extend interface Resource implements Node & Extra" } @@ -747,4 +749,63 @@ extend input Input @directive { result == "directive @d2 on FIELD | ENUM" } + + def "empty type does not include braces"() { + def sdl = "type Query" + def document = parse(sdl) + + when: + String output = printAst(document) + then: + output == "type Query\n" + } + + def "empty selection set does not include braces"() { + // technically below is not valid graphql and will never be parsed as is + def field_with_empty_selection_set = Field.newField("foo") + .selectionSet(SelectionSet.newSelectionSet().build()) + .build() + + when: + String output = printAst(field_with_empty_selection_set) + then: + output == "foo" + } + + def "printAstTo writes to a StringBuilder instance"() { + def document = parse(starWarsSchema) + def output = new StringBuilder() + AstPrinter.printAstTo(document.getDefinitions().get(0), output) + + expect: + output.toString() == """schema { + query: QueryType + mutation: Mutation +}""" + } + + def "printAstTo writes to a Writer instance"() { + def document = parse(starWarsSchema) + def output = new StringWriter() + AstPrinter.printAstTo(document.getDefinitions().get(0), output) + + expect: + output.toString() == """schema { + query: QueryType + mutation: Mutation +}""" + } + + def "printAstTo writes to an Appendable instance"() { + def document = parse(starWarsSchema) + def output = CharBuffer.allocate(100) + AstPrinter.printAstTo(document.getDefinitions().get(0), output) + output.flip() + + expect: + output.toString() == """schema { + query: QueryType + mutation: Mutation +}""" + } } diff --git a/src/test/groovy/graphql/normalized/ExecutableNormalizedOperationFactoryTest.groovy b/src/test/groovy/graphql/normalized/ExecutableNormalizedOperationFactoryTest.groovy index 2b9f146721..88c7a01aa0 100644 --- a/src/test/groovy/graphql/normalized/ExecutableNormalizedOperationFactoryTest.groovy +++ b/src/test/groovy/graphql/normalized/ExecutableNormalizedOperationFactoryTest.groovy @@ -29,7 +29,7 @@ import static graphql.language.AstPrinter.printAst import static graphql.parser.Parser.parseValue import static graphql.schema.FieldCoordinates.coordinates -abstract class ExecutableNormalizedOperationFactoryTest extends Specification { +class ExecutableNormalizedOperationFactoryTest extends Specification { static boolean deferSupport diff --git a/src/test/groovy/graphql/normalized/ExecutableNormalizedOperationToAstCompilerDirectivesTest.groovy b/src/test/groovy/graphql/normalized/ExecutableNormalizedOperationToAstCompilerDirectivesTest.groovy new file mode 100644 index 0000000000..b7928b4aed --- /dev/null +++ b/src/test/groovy/graphql/normalized/ExecutableNormalizedOperationToAstCompilerDirectivesTest.groovy @@ -0,0 +1,194 @@ +package graphql.normalized + +import graphql.schema.GraphQLSchema + +import static graphql.language.OperationDefinition.Operation.QUERY + +/** + * Test related to ENO and directives + */ +class ExecutableNormalizedOperationToAstCompilerDirectivesTest extends ENOToAstCompilerTestBase { + def bookSDL = ''' + directive @timeout(afterMillis : Int) on FIELD | FRAGMENT_DEFINITION | FRAGMENT_SPREAD | INLINE_FRAGMENT | QUERY + + directive @cached(forMillis : Int) on FIELD | FRAGMENT_DEFINITION | FRAGMENT_SPREAD | INLINE_FRAGMENT | QUERY + + directive @importance(place : String) on FIELD | FRAGMENT_DEFINITION | FRAGMENT_SPREAD | INLINE_FRAGMENT | QUERY + + type Query { + books(searchString : String) : [Book] + } + + type Book { + id : ID + title : String + review : String + } + ''' + + def "can extract variables or inline values for directives on the query"() { + def sdl = ''' + type Query { + foo(fooArg : String) : Foo + } + + type Foo { + bar(barArg : String) : String + } + + directive @optIn(to : [String!]!) repeatable on FIELD + ''' + + def query = ''' + query named($fooArgVar : String, $barArgVar : String, $skipVar : Boolean!, $optVar : [String!]!) { + foo(fooArg : $fooArgVar) @skip(if : $skipVar) { + bar(barArg : $barArgVar) @optIn(to : ["optToX"]) @optIn(to : $optVar) + } + } + ''' + GraphQLSchema schema = mkSchema(sdl) + def eno = createNormalizedTree(schema, query, + [fooArgVar: "fooArgVar", barArgVar: "barArgVar", skipVar: false, optVar: ["optToY"]]) + + when: + def result = localCompileToDocument(schema, QUERY, "named", + eno.getTopLevelFields(), eno.getNormalizedFieldToQueryDirectives(), + allVariables) + def document = result.document + def vars = result.variables + def ast = printDoc(document) + + then: + vars == [v0: "barArgVar", v1: ["optToX"], v2: ["optToY"], v3: "fooArgVar", v4: false] + // + // the below is what ir currently produces but its WRONG + // fix up when the other tests starts to work + // + ast == '''query named($v0: String, $v1: [String!]!, $v2: [String!]!, $v3: String, $v4: Boolean!) { + foo(fooArg: $v3) @skip(if: $v4) { + bar(barArg: $v0) @optIn(to: $v1) @optIn(to: $v2) + } +} +''' + + + when: "it has no variables" + + + result = localCompileToDocument(schema, QUERY, "named", + eno.getTopLevelFields(), eno.getNormalizedFieldToQueryDirectives(), + noVariables) + document = result.document + vars = result.variables + ast = printDoc(document) + + then: + vars == [:] + ast == '''query named { + foo(fooArg: "fooArgVar") @skip(if: false) { + bar(barArg: "barArgVar") @optIn(to: ["optToX"]) @optIn(to: ["optToY"]) + } +} +''' + + } + + def "can handle quite a pathological fragment query as expected"() { + + def pathologicalQuery = ''' + fragment Details on Book @timeout(afterMillis: 25) @cached(forMillis : 25) @importance(place:"FragDef") { + title + review @timeout(afterMillis: 5) @cached(forMillis : 5) + ...InnerDetails @timeout(afterMillis: 26) + } + + fragment InnerDetails on Book @timeout(afterMillis: 27) { + review @timeout(afterMillis: 28) + } + + query Books @timeout(afterMillis: 30) @importance(place:"Operation") { + books(searchString: "monkey") { + id + ...Details @timeout(afterMillis: 20) + ...on Book @timeout(afterMillis: 15) { + review @timeout(afterMillis: 10) @cached(forMillis : 10) + } + } + } + ''' + + GraphQLSchema schema = mkSchema(bookSDL) + def eno = createNormalizedTree(schema, pathologicalQuery, [:]) + + when: + def result = localCompileToDocument(schema, QUERY, "Books", + eno.getTopLevelFields(), eno.getNormalizedFieldToQueryDirectives(), + allVariables) + def document = result.document + def vars = result.variables + def ast = printDoc(document) + + then: + vars == [v0:5, v1:5, v2:28, v3:10, v4:10, v5:"monkey"] + ast == '''query Books($v0: Int, $v1: Int, $v2: Int, $v3: Int, $v4: Int, $v5: String) { + books(searchString: $v5) { + id + review @cached(forMillis: $v1) @cached(forMillis: $v4) @timeout(afterMillis: $v0) @timeout(afterMillis: $v2) @timeout(afterMillis: $v3) + title + } +} +''' + + + when: "it has no variables" + + + result = localCompileToDocument(schema, QUERY, "Books", + eno.getTopLevelFields(), eno.getNormalizedFieldToQueryDirectives(), + noVariables) + document = result.document + vars = result.variables + ast = printDoc(document) + + then: + vars == [:] + ast == '''query Books { + books(searchString: "monkey") { + id + review @cached(forMillis: 5) @cached(forMillis: 10) @timeout(afterMillis: 5) @timeout(afterMillis: 28) @timeout(afterMillis: 10) + title + } +} +''' + + } + + def "merged fields with the same field will capture all directives"() { + def query = ''' + query Books { + books(searchString: "monkey") { + review @timeout(afterMillis: 10) @cached(forMillis : 10) + review @timeout(afterMillis: 100) @cached(forMillis : 100) + } + } + ''' + + GraphQLSchema schema = mkSchema(bookSDL) + def eno = createNormalizedTree(schema, query, [:]) + + when: + def result = localCompileToDocument(schema, QUERY, "Books", + eno.getTopLevelFields(), eno.getNormalizedFieldToQueryDirectives(), + noVariables) + def document = result.document + def ast = printDoc(document) + + then: + ast == '''query Books { + books(searchString: "monkey") { + review @cached(forMillis: 10) @cached(forMillis: 100) @timeout(afterMillis: 10) @timeout(afterMillis: 100) + } +} +''' + } +} diff --git a/src/test/groovy/graphql/normalized/ExecutableNormalizedOperationToAstCompilerTest.groovy b/src/test/groovy/graphql/normalized/ExecutableNormalizedOperationToAstCompilerTest.groovy index a135ac3f9b..8f4a0851ac 100644 --- a/src/test/groovy/graphql/normalized/ExecutableNormalizedOperationToAstCompilerTest.groovy +++ b/src/test/groovy/graphql/normalized/ExecutableNormalizedOperationToAstCompilerTest.groovy @@ -3,6 +3,7 @@ package graphql.normalized import graphql.GraphQL import graphql.TestUtil import graphql.execution.RawVariables +import graphql.execution.directives.QueryAppliedDirective import graphql.execution.directives.QueryDirectives import graphql.language.AstPrinter import graphql.language.AstSorter @@ -25,11 +26,16 @@ import static graphql.language.OperationDefinition.Operation.SUBSCRIPTION import static graphql.normalized.ExecutableNormalizedOperationToAstCompiler.compileToDocument import static graphql.normalized.ExecutableNormalizedOperationToAstCompiler.compileToDocumentWithDeferSupport -abstract class ExecutableNormalizedOperationToAstCompilerTest extends Specification { +abstract class ENOToAstCompilerTestBase extends Specification { static boolean deferSupport - VariablePredicate noVariables = new VariablePredicate() { + + @Override + boolean shouldMakeVariable(ExecutableNormalizedField executableNormalizedField, QueryAppliedDirective queryAppliedDirective, String argName, NormalizedInputValue normalizedInputValue) { + return false + } + @Override boolean shouldMakeVariable(ExecutableNormalizedField executableNormalizedField, String argName, NormalizedInputValue normalizedInputValue) { return false @@ -41,6 +47,11 @@ abstract class ExecutableNormalizedOperationToAstCompilerTest extends Specificat boolean shouldMakeVariable(ExecutableNormalizedField executableNormalizedField, String argName, NormalizedInputValue normalizedInputValue) { "JSON" == normalizedInputValue.unwrappedTypeName && normalizedInputValue.value != null } + + @Override + boolean shouldMakeVariable(ExecutableNormalizedField executableNormalizedField, QueryAppliedDirective queryAppliedDirective, String argName, NormalizedInputValue normalizedInputValue) { + "JSON" == normalizedInputValue.unwrappedTypeName && normalizedInputValue.value != null + } } VariablePredicate allVariables = new VariablePredicate() { @@ -48,7 +59,75 @@ abstract class ExecutableNormalizedOperationToAstCompilerTest extends Specificat boolean shouldMakeVariable(ExecutableNormalizedField executableNormalizedField, String argName, NormalizedInputValue normalizedInputValue) { return true } + + @Override + boolean shouldMakeVariable(ExecutableNormalizedField executableNormalizedField, QueryAppliedDirective queryAppliedDirective, String argName, NormalizedInputValue normalizedInputValue) { + return true + } + } + + + static ExecutableNormalizedOperation createNormalizedTree(GraphQLSchema schema, String query, Map variables = [:]) { + assertValidQuery(schema, query, variables) + Document originalDocument = TestUtil.parseQuery(query) + + def options = ExecutableNormalizedOperationFactory.Options.defaultOptions().deferSupport(deferSupport) + return ExecutableNormalizedOperationFactory.createExecutableNormalizedOperationWithRawVariables(schema, originalDocument, null, RawVariables.of(variables), options) + } + + static List createNormalizedFields(GraphQLSchema schema, String query, Map variables = [:]) { + return createNormalizedTree(schema, query, variables).getTopLevelFields() + } + + static void assertValidQuery(GraphQLSchema graphQLSchema, String query, Map variables = [:]) { + GraphQL graphQL = GraphQL.newGraphQL(graphQLSchema).build() + assert graphQL.execute(newExecutionInput().query(query).variables(variables)).errors.isEmpty() + } + + static GraphQLSchema mkSchema(String sdl) { + def wiringFactory = new TestLiveMockedWiringFactory([JsonScalar.JSON_SCALAR]) + def runtimeWiring = RuntimeWiring.newRuntimeWiring() + .wiringFactory(wiringFactory).build() + TestUtil.schema(sdl, runtimeWiring) + } + + static ExecutableNormalizedOperationToAstCompiler.CompilerResult localCompileToDocument( + GraphQLSchema schema, + OperationDefinition.Operation operationKind, + String operationName, + List topLevelFields, + VariablePredicate variablePredicate + ) { + return localCompileToDocument(schema, operationKind, operationName, topLevelFields, Map.of(), variablePredicate); + } + + static ExecutableNormalizedOperationToAstCompiler.CompilerResult localCompileToDocument( + GraphQLSchema schema, + OperationDefinition.Operation operationKind, + String operationName, + List topLevelFields, + Map normalizedFieldToQueryDirectives, + VariablePredicate variablePredicate + ) { + if (deferSupport) { + return compileToDocumentWithDeferSupport(schema, operationKind, operationName, topLevelFields, normalizedFieldToQueryDirectives, variablePredicate) + } + return compileToDocument(schema, operationKind, operationName, topLevelFields, normalizedFieldToQueryDirectives, variablePredicate) + } + + static Document sortDoc(Document doc) { + return new AstSorter().sort(doc) + } + + static printDoc(Document doc) { + return AstPrinter.printAst(sortDoc(doc)) } +} + +/** + * Test code in here - helps in the base class + */ +abstract class ExecutableNormalizedOperationToAstCompilerTest extends ENOToAstCompilerTestBase { def "test pet interfaces"() { String sdl = """ @@ -134,7 +213,7 @@ abstract class ExecutableNormalizedOperationToAstCompilerTest extends Specificat def fields = createNormalizedFields(schema, query) when: def result = localCompileToDocument(schema, QUERY, null, fields, noVariables) - def printed = AstPrinter.printAst(new AstSorter().sort(result.document)) + def printed = printDoc(result.document) then: printed == '''{ animal { @@ -204,7 +283,7 @@ abstract class ExecutableNormalizedOperationToAstCompilerTest extends Specificat when: def result = localCompileToDocument(schema, QUERY, null, tree.topLevelFields, noVariables) - def printed = AstPrinter.printAst(new AstSorter().sort(result.document)) + def printed = printDoc(result.document) then: printed == """{ @@ -255,7 +334,7 @@ abstract class ExecutableNormalizedOperationToAstCompilerTest extends Specificat when: def result = localCompileToDocument(schema, QUERY, null, tree.topLevelFields, noVariables) - def printed = AstPrinter.printAst(new AstSorter().sort(result.document)) + def printed = printDoc(result.document) then: printed == """{ @@ -336,7 +415,7 @@ abstract class ExecutableNormalizedOperationToAstCompilerTest extends Specificat when: def result = localCompileToDocument(schema, QUERY, null, tree.topLevelFields, noVariables) - def printed = AstPrinter.printAst(new AstSorter().sort(result.document)) + def printed = printDoc(result.document) then: printed == """{ @@ -428,7 +507,7 @@ abstract class ExecutableNormalizedOperationToAstCompilerTest extends Specificat when: def result = localCompileToDocument(schema, QUERY, null, tree.topLevelFields, noVariables) - def printed = AstPrinter.printAst(new AstSorter().sort(result.document)) + def printed = printDoc(result.document) then: printed == """{ @@ -523,7 +602,7 @@ abstract class ExecutableNormalizedOperationToAstCompilerTest extends Specificat when: def result = localCompileToDocument(schema, QUERY, null, tree.topLevelFields, noVariables) - def printed = AstPrinter.printAst(new AstSorter().sort(result.document)) + def printed = printDoc(result.document) then: printed == """{ @@ -590,7 +669,7 @@ abstract class ExecutableNormalizedOperationToAstCompilerTest extends Specificat when: def result = localCompileToDocument(schema, QUERY, null, tree.topLevelFields, noVariables) - def printed = AstPrinter.printAst(new AstSorter().sort(result.document)) + def printed = printDoc(result.document) then: printed == """{ @@ -647,7 +726,7 @@ abstract class ExecutableNormalizedOperationToAstCompilerTest extends Specificat when: def result = localCompileToDocument(schema, QUERY, null, tree.topLevelFields, noVariables) - def printed = AstPrinter.printAst(new AstSorter().sort(result.document)) + def printed = printDoc(result.document) then: printed == """{ @@ -705,7 +784,7 @@ abstract class ExecutableNormalizedOperationToAstCompilerTest extends Specificat when: def result = localCompileToDocument(schema, QUERY, null, tree.topLevelFields, noVariables) - def printed = AstPrinter.printAst(new AstSorter().sort(result.document)) + def printed = printDoc(result.document) then: // Perhaps the typename should be hoisted out of the fragments, but the impl currently generates @@ -772,7 +851,7 @@ abstract class ExecutableNormalizedOperationToAstCompilerTest extends Specificat when: def result = localCompileToDocument(schema, QUERY, null, tree.topLevelFields, noVariables) - def printed = AstPrinter.printAst(new AstSorter().sort(result.document)) + def printed = printDoc(result.document) then: // Note: the name field is spread across both fragments @@ -870,7 +949,7 @@ abstract class ExecutableNormalizedOperationToAstCompilerTest extends Specificat when: def result = localCompileToDocument(schema, QUERY, null, tree.topLevelFields, noVariables) - def printed = AstPrinter.printAst(new AstSorter().sort(result.document)) + def printed = printDoc(result.document) then: // Ensure that age location name etc are not surrounded by fragments unnecessarily @@ -968,7 +1047,7 @@ abstract class ExecutableNormalizedOperationToAstCompilerTest extends Specificat when: def result = localCompileToDocument(schema, QUERY, null, tree.topLevelFields, noVariables) - def printed = AstPrinter.printAst(new AstSorter().sort(result.document)) + def printed = printDoc(result.document) then: // Ensure that __typename id fieldId fieldName etc. are not surrounded by fragments unnecessarily @@ -1035,7 +1114,7 @@ abstract class ExecutableNormalizedOperationToAstCompilerTest extends Specificat def fields = createNormalizedFields(schema, query) when: def result = localCompileToDocument(schema, QUERY, null, fields, noVariables) - def documentPrinted = AstPrinter.printAst(new AstSorter().sort(result.document)) + def documentPrinted = printDoc(result.document) then: documentPrinted == '''{ @@ -1069,7 +1148,7 @@ abstract class ExecutableNormalizedOperationToAstCompilerTest extends Specificat def fields = createNormalizedFields(schema, query) when: def result = localCompileToDocument(schema, QUERY, null, fields, noVariables) - def documentPrinted = AstPrinter.printAst(new AstSorter().sort(result.document)) + def documentPrinted = printDoc(result.document) then: documentPrinted == '''{ @@ -1095,7 +1174,7 @@ abstract class ExecutableNormalizedOperationToAstCompilerTest extends Specificat def fields = createNormalizedFields(schema, query) when: def result = localCompileToDocument(schema, QUERY, "My_Op23", fields, noVariables) - def documentPrinted = AstPrinter.printAst(new AstSorter().sort(result.document)) + def documentPrinted = printDoc(result.document) then: documentPrinted == '''query My_Op23 { @@ -1140,7 +1219,7 @@ abstract class ExecutableNormalizedOperationToAstCompilerTest extends Specificat def fields = createNormalizedFields(schema, query) when: def result = localCompileToDocument(schema, QUERY, null, fields, noVariables) - def documentPrinted = AstPrinter.printAst(new AstSorter().sort(result.document)) + def documentPrinted = printDoc(result.document) then: documentPrinted == '''{ @@ -1174,7 +1253,7 @@ abstract class ExecutableNormalizedOperationToAstCompilerTest extends Specificat def fields = createNormalizedFields(schema, query, ["v": 123]) when: def result = localCompileToDocument(schema, QUERY, null, fields, allVariables) - def documentPrinted = AstPrinter.printAst(new AstSorter().sort(result.document)) + def documentPrinted = printDoc(result.document) then: fields[0].normalizedArguments["arg"].value["a"].value["b"].value["c"].value.isEqualTo(IntValue.of(123)) @@ -1206,7 +1285,7 @@ abstract class ExecutableNormalizedOperationToAstCompilerTest extends Specificat def fields = createNormalizedFields(schema, query) when: def result = localCompileToDocument(schema, MUTATION, null, fields, noVariables) - def documentPrinted = AstPrinter.printAst(new AstSorter().sort(result.document)) + def documentPrinted = printDoc(result.document) then: documentPrinted == '''mutation { @@ -1237,7 +1316,7 @@ abstract class ExecutableNormalizedOperationToAstCompilerTest extends Specificat def fields = createNormalizedFields(schema, query) when: def result = localCompileToDocument(schema, SUBSCRIPTION, null, fields, noVariables) - def documentPrinted = AstPrinter.printAst(new AstSorter().sort(result.document)) + def documentPrinted = printDoc(result.document) then: documentPrinted == '''subscription { @@ -1287,15 +1366,15 @@ abstract class ExecutableNormalizedOperationToAstCompilerTest extends Specificat OperationDefinition operationDefinition = result.document.getDefinitionsOfType(OperationDefinition.class)[0] def fooField = (Field) operationDefinition.selectionSet.children[0] def nameField = (Field) fooField.selectionSet.children[0] - def documentPrinted = AstPrinter.printAst(new AstSorter().sort(result.document)) + def documentPrinted = printDoc(result.document) then: fooField.directives.size() == 1 nameField.directives.size() == 1 documentPrinted == '''subscription { - foo1(arg: {arg1 : "Subscription"}) @optIn(to: "foo") { - name @optIn(to: "devOps") + foo1(arg: {arg1 : "Subscription"}) @optIn(to: ["foo"]) { + name @optIn(to: ["devOps"]) } } ''' @@ -1332,7 +1411,7 @@ abstract class ExecutableNormalizedOperationToAstCompilerTest extends Specificat def fields = createNormalizedFields(schema, query) when: def result = localCompileToDocument(schema, MUTATION, null, fields, noVariables) - def documentPrinted = AstPrinter.printAst(new AstSorter().sort(result.document)) + def documentPrinted = printDoc(result.document) then: documentPrinted == '''mutation { @@ -1377,7 +1456,7 @@ abstract class ExecutableNormalizedOperationToAstCompilerTest extends Specificat def fields = createNormalizedFields(schema, query) when: def result = localCompileToDocument(schema, QUERY, null, fields, noVariables) - def documentPrinted = AstPrinter.printAst(new AstSorter().sort(result.document)) + def documentPrinted = printDoc(result.document) then: documentPrinted == '''{ foo1(arg: {arg1 : "Query"}) { @@ -1409,7 +1488,7 @@ abstract class ExecutableNormalizedOperationToAstCompilerTest extends Specificat def fields = createNormalizedFields(schema, query) when: def result = localCompileToDocument(schema, QUERY, null, fields, noVariables) - def documentPrinted = AstPrinter.printAst(new AstSorter().sort(result.document)) + def documentPrinted = printDoc(result.document) then: documentPrinted == '''{ __schema { @@ -1444,7 +1523,7 @@ abstract class ExecutableNormalizedOperationToAstCompilerTest extends Specificat def fields = createNormalizedFields(schema, query) when: def result = localCompileToDocument(schema, QUERY, null, fields, noVariables) - def documentPrinted = AstPrinter.printAst(new AstSorter().sort(result.document)) + def documentPrinted = printDoc(result.document) then: documentPrinted == '''{ __type(name: "World") { @@ -1488,7 +1567,7 @@ abstract class ExecutableNormalizedOperationToAstCompilerTest extends Specificat def fields = createNormalizedFields(schema, query) when: def result = localCompileToDocument(schema, QUERY, null, fields, noVariables) - def documentPrinted = AstPrinter.printAst(new AstSorter().sort(result.document)) + def documentPrinted = printDoc(result.document) then: documentPrinted == '''{ foo1 { @@ -1527,7 +1606,7 @@ abstract class ExecutableNormalizedOperationToAstCompilerTest extends Specificat def fields = createNormalizedFields(schema, query) when: def result = localCompileToDocument(schema, QUERY, null, fields, noVariables) - def documentPrinted = AstPrinter.printAst(new AstSorter().sort(result.document)) + def documentPrinted = printDoc(result.document) then: documentPrinted == '''{ foo1 { @@ -1578,7 +1657,7 @@ abstract class ExecutableNormalizedOperationToAstCompilerTest extends Specificat def fields = createNormalizedFields(schema, query) when: def result = localCompileToDocument(schema, QUERY, null, fields, noVariables) - def documentPrinted = AstPrinter.printAst(new AstSorter().sort(result.document)) + def documentPrinted = printDoc(result.document) then: // Note: the typename field moves out of a fragment because AFoo is the only impl documentPrinted == '''{ @@ -1629,7 +1708,7 @@ abstract class ExecutableNormalizedOperationToAstCompilerTest extends Specificat def fields = createNormalizedFields(schema, query) when: def result = localCompileToDocument(schema, QUERY, null, fields, noVariables) - def documentPrinted = AstPrinter.printAst(new AstSorter().sort(result.document)) + def documentPrinted = printDoc(result.document) then: // Note: the typename field moves out of a fragment because AFoo is the only impl documentPrinted == '''{ @@ -1679,7 +1758,7 @@ abstract class ExecutableNormalizedOperationToAstCompilerTest extends Specificat def fields = createNormalizedFields(schema, query) when: def result = localCompileToDocument(schema, QUERY, null, fields, noVariables) - def documentPrinted = AstPrinter.printAst(new AstSorter().sort(result.document)) + def documentPrinted = printDoc(result.document) then: // Note: the typename field moves out of a fragment because AFoo is the only impl documentPrinted == '''{ @@ -1715,7 +1794,7 @@ abstract class ExecutableNormalizedOperationToAstCompilerTest extends Specificat when: def result = localCompileToDocument(schema, MUTATION, null, fields, jsonVariables) - def documentPrinted = AstPrinter.printAst(new AstSorter().sort(result.document)) + def documentPrinted = printDoc(result.document) then: result.variables == [v0: ["48x48": "hello"]] @@ -1747,7 +1826,7 @@ abstract class ExecutableNormalizedOperationToAstCompilerTest extends Specificat when: def result = localCompileToDocument(schema, MUTATION, null, fields, jsonVariables) - def documentPrinted = AstPrinter.printAst(new AstSorter().sort(result.document)) + def documentPrinted = printDoc(result.document) then: result.variables == [v0: "hello there"] @@ -1779,7 +1858,7 @@ abstract class ExecutableNormalizedOperationToAstCompilerTest extends Specificat when: def result = localCompileToDocument(schema, MUTATION, null, fields, jsonVariables) - def documentPrinted = AstPrinter.printAst(new AstSorter().sort(result.document)) + def documentPrinted = printDoc(result.document) then: result.variables == [v0: 1] @@ -1809,7 +1888,7 @@ abstract class ExecutableNormalizedOperationToAstCompilerTest extends Specificat when: def result = localCompileToDocument(schema, MUTATION, null, fields, noVariables) - def documentPrinted = AstPrinter.printAst(new AstSorter().sort(result.document)) + def documentPrinted = printDoc(result.document) then: result.variables == [:] @@ -1839,7 +1918,7 @@ abstract class ExecutableNormalizedOperationToAstCompilerTest extends Specificat when: def result = localCompileToDocument(schema, MUTATION, null, fields, noVariables) - def documentPrinted = AstPrinter.printAst(new AstSorter().sort(result.document)) + def documentPrinted = printDoc(result.document) then: result.variables == [:] @@ -1869,7 +1948,7 @@ abstract class ExecutableNormalizedOperationToAstCompilerTest extends Specificat when: def result = localCompileToDocument(schema, MUTATION, null, fields, jsonVariables) - def documentPrinted = AstPrinter.printAst(new AstSorter().sort(result.document)) + def documentPrinted = printDoc(result.document) then: result.variables == [v0: [one: "two", three: ["four", "five"]]] @@ -1899,7 +1978,7 @@ abstract class ExecutableNormalizedOperationToAstCompilerTest extends Specificat when: def result = localCompileToDocument(schema, MUTATION, null, fields, jsonVariables) - def documentPrinted = AstPrinter.printAst(new AstSorter().sort(result.document)) + def documentPrinted = printDoc(result.document) then: result.variables.size() == 2 @@ -1936,7 +2015,7 @@ abstract class ExecutableNormalizedOperationToAstCompilerTest extends Specificat when: def result = localCompileToDocument(schema, MUTATION, null, fields, jsonVariables) - def documentPrinted = AstPrinter.printAst(new AstSorter().sort(result.document)) + def documentPrinted = printDoc(result.document) def vars = result.variables then: @@ -1973,7 +2052,7 @@ abstract class ExecutableNormalizedOperationToAstCompilerTest extends Specificat when: def result = localCompileToDocument(schema, MUTATION, null, fields, noVariables) - def documentPrinted = AstPrinter.printAst(new AstSorter().sort(result.document)) + def documentPrinted = printDoc(result.document) then: result.variables == [:] @@ -2008,7 +2087,7 @@ abstract class ExecutableNormalizedOperationToAstCompilerTest extends Specificat when: def result = localCompileToDocument(schema, MUTATION, null, fields, noVariables) - def documentPrinted = AstPrinter.printAst(new AstSorter().sort(result.document)) + def documentPrinted = printDoc(result.document) then: result.variables == [:] @@ -2051,7 +2130,7 @@ abstract class ExecutableNormalizedOperationToAstCompilerTest extends Specificat when: def result = localCompileToDocument(schema, MUTATION, null, fields, jsonVariables) - def documentPrinted = AstPrinter.printAst(new AstSorter().sort(result.document)) + def documentPrinted = printDoc(result.document) then: result.variables.size() == 1 @@ -2068,7 +2147,7 @@ abstract class ExecutableNormalizedOperationToAstCompilerTest extends Specificat } - def "test a combination of plain objects and interfaces will be all variables"() { + def "test a combination of plain objects and interfaces with all variables and no variables"() { def sdl = ''' type Query { listField1(arg: [Int]): String @@ -2126,7 +2205,7 @@ abstract class ExecutableNormalizedOperationToAstCompilerTest extends Specificat def result = localCompileToDocument(schema, QUERY, "named", fields, allVariables) def document = result.document def vars = result.variables - def ast = AstPrinter.printAst(new AstSorter().sort(document)) + def ast = printDoc(document) then: @@ -2153,54 +2232,46 @@ abstract class ExecutableNormalizedOperationToAstCompilerTest extends Specificat v3: [arg1: "barFragArg"], v4: [arg1: "barArg"], v5: [arg1: "fooArg"]] - } - private ExecutableNormalizedOperation createNormalizedTree(GraphQLSchema schema, String query, Map variables = [:]) { - assertValidQuery(schema, query, variables) - Document originalDocument = TestUtil.parseQuery(query) + // + // Test the opposite - when we use no variables predicate everything should be inlined + // + when: "it has no variables" - def options = ExecutableNormalizedOperationFactory.Options.defaultOptions().deferSupport(deferSupport) - return ExecutableNormalizedOperationFactory.createExecutableNormalizedOperationWithRawVariables(schema, originalDocument, null, RawVariables.of(variables), options) - } + fields = createNormalizedFields(schema, query, [v0: [1, 2, 3], + v1: [[arg1: "v1", arg2: [[arg1: "v1.1"]]], [arg1: "v2"], [arg1: "v3"]], + v2: [[arg1: "fooNonNullArg1"], [arg1: "fooNonNullArg2"]], + v3: [arg1: "barFragArg"], + v4: [arg1: "barArg"], + v5: [arg1: "fooArg"]]) - private List createNormalizedFields(GraphQLSchema schema, String query, Map variables = [:]) { - return createNormalizedTree(schema, query, variables).getTopLevelFields() - } + result = localCompileToDocument(schema, QUERY, "named", fields, noVariables) + document = result.document + vars = result.variables + ast = printDoc(document) - private void assertValidQuery(GraphQLSchema graphQLSchema, String query, Map variables = [:]) { - GraphQL graphQL = GraphQL.newGraphQL(graphQLSchema).build() - assert graphQL.execute(newExecutionInput().query(query).variables(variables)).errors.isEmpty() - } + then: "they should be inlined as values" - GraphQLSchema mkSchema(String sdl) { - def wiringFactory = new TestLiveMockedWiringFactory([JsonScalar.JSON_SCALAR]) - def runtimeWiring = RuntimeWiring.newRuntimeWiring() - .wiringFactory(wiringFactory).build() - TestUtil.schema(sdl, runtimeWiring) - } + // no vars created + vars == [:] - private static ExecutableNormalizedOperationToAstCompiler.CompilerResult localCompileToDocument( - GraphQLSchema schema, - OperationDefinition.Operation operationKind, - String operationName, - List topLevelFields, - VariablePredicate variablePredicate - ) { - return localCompileToDocument(schema, operationKind, operationName, topLevelFields,Map.of(), variablePredicate); - } - - private static ExecutableNormalizedOperationToAstCompiler.CompilerResult localCompileToDocument( - GraphQLSchema schema, - OperationDefinition.Operation operationKind, - String operationName, - List topLevelFields, - Map normalizedFieldToQueryDirectives, - VariablePredicate variablePredicate - ) { - if (deferSupport) { - return compileToDocumentWithDeferSupport(schema, operationKind, operationName, topLevelFields, normalizedFieldToQueryDirectives, variablePredicate) + // everything inlined + ast == '''query named { + foo(arg: {arg1 : "fooArg"}) { + bar(arg: {arg1 : "barArg"}) { + baz { + ... on ABaz { + a + boo(arg: {arg1 : "barFragArg"}) } - return compileToDocument(schema, operationKind, operationName, topLevelFields, normalizedFieldToQueryDirectives, variablePredicate) + } + } + } + fooNonNull(arg: [{arg1 : "fooNonNullArg1"}, {arg1 : "fooNonNullArg2"}]) + listField1(arg: [1, 2, 3]) + listField2(arg: [{arg1 : "v1", arg2 : [{arg1 : "v1.1"}]}, {arg1 : "v2"}, {arg1 : "v3"}]) +} +''' } } diff --git a/src/test/groovy/graphql/normalized/nf/NormalizedDocumentFactoryTest.groovy b/src/test/groovy/graphql/normalized/nf/NormalizedDocumentFactoryTest.groovy new file mode 100644 index 0000000000..5ef79cd417 --- /dev/null +++ b/src/test/groovy/graphql/normalized/nf/NormalizedDocumentFactoryTest.groovy @@ -0,0 +1,251 @@ +package graphql.normalized.nf + +import graphql.ExecutionInput +import graphql.GraphQL +import graphql.TestUtil +import graphql.language.Document +import graphql.schema.GraphQLSchema +import graphql.schema.GraphQLTypeUtil +import graphql.util.TraversalControl +import graphql.util.Traverser +import graphql.util.TraverserContext +import graphql.util.TraverserVisitorStub +import spock.lang.Specification + +class NormalizedDocumentFactoryTest extends Specification { + + def "test"() { + String schema = """ +type Query{ + animal: Animal +} +interface Animal { + name: String + friends: [Friend] +} + +union Pet = Dog | Cat + +type Friend { + name: String + isBirdOwner: Boolean + isCatOwner: Boolean + pets: [Pet] +} + +type Bird implements Animal { + name: String + friends: [Friend] +} + +type Cat implements Animal{ + name: String + friends: [Friend] + breed: String +} + +type Dog implements Animal{ + name: String + breed: String + friends: [Friend] +} + + """ + GraphQLSchema graphQLSchema = TestUtil.schema(schema) + + String query = """ + { + animal{ + name + otherName: name + ... on Animal { + name + } + ... on Cat { + name + friends { + ... on Friend { + isCatOwner + pets { + ... on Dog { + name + } + } + } + } + } + ... on Bird { + friends { + isBirdOwner + } + friends { + name + pets { + ... on Cat { + breed + } + } + } + } + ... on Dog { + name + } + }} + + """ + + assertValidQuery(graphQLSchema, query) + + Document document = TestUtil.parseQuery(query) + def tree = NormalizedDocumentFactory.createNormalizedDocument(graphQLSchema, document) + def printedTree = printDocumentWithLevelInfo(tree, graphQLSchema) + + expect: + printedTree == ['-Query.animal: Animal', + '--[Bird, Cat, Dog].name: String', + '--otherName: [Bird, Cat, Dog].name: String', + '--Cat.friends: [Friend]', + '---Friend.isCatOwner: Boolean', + '---Friend.pets: [Pet]', + '----Dog.name: String', + '--Bird.friends: [Friend]', + '---Friend.isBirdOwner: Boolean', + '---Friend.name: String', + '---Friend.pets: [Pet]', + '----Cat.breed: String' + ] + } + + def "document with skip/include with variables"() { + String schema = """ + type Query{ + foo: Foo + } + type Foo { + bar: Bar + name: String + } + type Bar { + baz: String + } + """ + GraphQLSchema graphQLSchema = TestUtil.schema(schema) + + String query = ''' + query ($skip: Boolean!, $include: Boolean!) { + foo { + name + bar @skip(if: $skip) { + baz @include(if: $include) + } + } + } + ''' + + + assertValidQuery(graphQLSchema, query, [skip: false, include: true]) + + Document document = TestUtil.parseQuery(query) + def tree = NormalizedDocumentFactory.createNormalizedDocument(graphQLSchema, document) + def printedTree = printDocumentWithLevelInfo(tree, graphQLSchema) + + expect: + printedTree.join("\n") == '''variables: [skip:false, include:false] +-Query.foo: Foo +--Foo.name: String +--Foo.bar: Bar +variables: [skip:true, include:false] +-Query.foo: Foo +--Foo.name: String +variables: [skip:false, include:true] +-Query.foo: Foo +--Foo.name: String +--Foo.bar: Bar +---Bar.baz: String +variables: [skip:true, include:true] +-Query.foo: Foo +--Foo.name: String''' + } + + def "document with custom directives"() { + String schema = """ + directive @cache(time: Int!) on FIELD + type Query{ + foo: Foo + } + type Foo { + bar: Bar + name: String + } + type Bar { + baz: String + } + """ + GraphQLSchema graphQLSchema = TestUtil.schema(schema) + + String query = ''' + query { + foo { + name + bar @cache(time:100) { + baz + } + bar @cache(time:200) { + baz + } + + } + } + ''' + + + assertValidQuery(graphQLSchema, query, [skip: false, include: true]) + + Document document = TestUtil.parseQuery(query) + def normalizedDocument = NormalizedDocumentFactory.createNormalizedDocument(graphQLSchema, document) + def rootField = normalizedDocument.getSingleNormalizedOperation().getRootFields().get(0) + def bar = rootField.getChildren().get(1) + + expect: + bar.getAstDirectives().size() == 2 + } + + + private void assertValidQuery(GraphQLSchema graphQLSchema, String query, Map variables = [:]) { + GraphQL graphQL = GraphQL.newGraphQL(graphQLSchema).build() + def ei = ExecutionInput.newExecutionInput(query).variables(variables).build() + assert graphQL.execute(ei).errors.size() == 0 + } + + static List printDocumentWithLevelInfo(NormalizedDocument normalizedDocument, GraphQLSchema schema) { + def result = [] + for (NormalizedDocument.NormalizedOperationWithAssumedSkipIncludeVariables normalizedOperationWithAssumedSkipIncludeVariables : normalizedDocument.normalizedOperations) { + NormalizedOperation normalizedOperation = normalizedOperationWithAssumedSkipIncludeVariables.normalizedOperation; + if (normalizedOperationWithAssumedSkipIncludeVariables.assumedSkipIncludeVariables != null) { + result << "variables: " + normalizedOperationWithAssumedSkipIncludeVariables.assumedSkipIncludeVariables + } + Traverser traverser = Traverser.depthFirst({ it.getChildren() }) + traverser.traverse(normalizedOperation.getRootFields(), new TraverserVisitorStub() { + @Override + TraversalControl enter(TraverserContext context) { + NormalizedField normalizedField = context.thisNode() + String prefix = "" + for (int i = 1; i <= normalizedField.getLevel(); i++) { + prefix += "-" + } + + def possibleOutputTypes = new LinkedHashSet() + for (fieldDef in normalizedField.getFieldDefinitions(schema)) { + possibleOutputTypes.add(GraphQLTypeUtil.simplePrint(fieldDef.type)) + } + + result << (prefix + normalizedField.printDetails() + ": " + possibleOutputTypes.join(", ")) + return TraversalControl.CONTINUE + } + }) + } + result + } + + +} diff --git a/src/test/groovy/graphql/normalized/nf/NormalizedOperationToAstCompilerTest.groovy b/src/test/groovy/graphql/normalized/nf/NormalizedOperationToAstCompilerTest.groovy new file mode 100644 index 0000000000..c797392fe3 --- /dev/null +++ b/src/test/groovy/graphql/normalized/nf/NormalizedOperationToAstCompilerTest.groovy @@ -0,0 +1,257 @@ +package graphql.normalized.nf + +import graphql.GraphQL +import graphql.TestUtil +import graphql.language.AstPrinter +import graphql.language.AstSorter +import graphql.language.OperationDefinition +import graphql.parser.Parser +import graphql.schema.GraphQLSchema +import spock.lang.Specification + +import static graphql.ExecutionInput.newExecutionInput + +class NormalizedOperationToAstCompilerTest extends Specification { + + + def "test pet interfaces"() { + String sdl = """ + type Query { + animal: Animal + } + interface Animal { + name: String + friends: [Friend] + } + + union Pet = Dog | Cat + + type Friend { + name: String + isBirdOwner: Boolean + isCatOwner: Boolean + pets: [Pet] + } + + type Bird implements Animal { + name: String + friends: [Friend] + } + + type Cat implements Animal { + name: String + friends: [Friend] + breed: String + mood: String + } + + type Dog implements Animal { + name: String + breed: String + friends: [Friend] + } + """ + + String query = """ + { + animal { + name + otherName: name + ... on Animal { + name + } + ... on Cat { + name + mood + friends { + ... on Friend { + isCatOwner + pets { + ... on Dog { + name + } + } + } + } + } + ... on Bird { + friends { + isBirdOwner + } + friends { + name + pets { + ... on Cat { + breed + } + } + } + } + ... on Dog { + name + breed + } + } + } + """ + GraphQLSchema schema = TestUtil.schema(sdl) + assertValidQuery(schema, query) + def normalizedDocument = NormalizedDocumentFactory.createNormalizedDocument(schema, Parser.parse(query)) + def normalizedOperation = normalizedDocument.getSingleNormalizedOperation() + when: + def result = NormalizedOperationToAstCompiler.compileToDocument(schema, normalizedOperation) + def printed = AstPrinter.printAst(new AstSorter().sort(result.document)) + then: + printed == '''{ + animal { + name + otherName: name + ... on Bird { + friends { + isBirdOwner + name + pets { + ... on Cat { + breed + } + } + } + } + ... on Cat { + friends { + isCatOwner + pets { + ... on Dog { + name + } + } + } + mood + } + ... on Dog { + breed + } + } +} +''' + } + + def "print custom directives"() { + String sdl = """ + directive @cache(time: Int!) on FIELD + type Query{ + foo: Foo + } + type Foo { + bar: Bar + name: String + } + type Bar { + baz: String + } + """ + + String query = ''' + query { + foo { + name + bar @cache(time:100) { + baz + } + bar @cache(time:200) { + baz + } + + } + } + ''' + + GraphQLSchema schema = TestUtil.schema(sdl) + assertValidQuery(schema, query) + def normalizedDocument = NormalizedDocumentFactory.createNormalizedDocument(schema, Parser.parse(query)) + def normalizedOperation = normalizedDocument.getSingleNormalizedOperation() + when: + def result = NormalizedOperationToAstCompiler.compileToDocument(schema, normalizedOperation) + def printed = AstPrinter.printAst(new AstSorter().sort(result.document)) + then: + printed == '''{ + foo { + bar @cache(time: 100) @cache(time: 200) { + baz + } + name + } +} +''' + } + + + def "print one root field"() { + def sdl = """ + type Query { + foo: Foo + } + type Foo { + bar: String + } + """ + def query = ''' + { foo { bar } } + ''' + GraphQLSchema schema = TestUtil.schema(sdl) + assertValidQuery(schema, query) + def normalizedDocument = NormalizedDocumentFactory.createNormalizedDocument(schema, Parser.parse(query)) + def normalizedOperation = normalizedDocument.getSingleNormalizedOperation() + def rootField = normalizedOperation.getRootFields().get(0) + when: + def result = NormalizedOperationToAstCompiler.compileToDocument(schema, schema.getObjectType("Query"), rootField, "myOperation", OperationDefinition.Operation.QUERY) + def printed = AstPrinter.printAst(new AstSorter().sort(result.document)) + then: + printed == '''query myOperation { + foo { + bar + } +} +''' + } + + def "print list of root fields"() { + def sdl = """ + type Query { + foo: Foo + } + type Foo { + bar: String + } + """ + def query = ''' + { foo { bar } foo2: foo { bar } } + ''' + GraphQLSchema schema = TestUtil.schema(sdl) + assertValidQuery(schema, query) + def normalizedDocument = NormalizedDocumentFactory.createNormalizedDocument(schema, Parser.parse(query)) + def normalizedOperation = normalizedDocument.getSingleNormalizedOperation() + def rootFields = normalizedOperation.getRootFields() + when: + def result = NormalizedOperationToAstCompiler.compileToDocument(schema, schema.getObjectType("Query"), rootFields, "myOperation", OperationDefinition.Operation.QUERY) + def printed = AstPrinter.printAst(new AstSorter().sort(result.document)) + then: + printed == '''query myOperation { + foo { + bar + } + foo2: foo { + bar + } +} +''' + } + + + private void assertValidQuery(GraphQLSchema graphQLSchema, String query, Map variables = [:]) { + GraphQL graphQL = GraphQL.newGraphQL(graphQLSchema).build() + assert graphQL.execute(newExecutionInput().query(query).variables(variables)).errors.isEmpty() + } + + +} diff --git a/src/test/groovy/graphql/parser/ParserOptionsTest.groovy b/src/test/groovy/graphql/parser/ParserOptionsTest.groovy index 83ed13e9c6..9d43543f89 100644 --- a/src/test/groovy/graphql/parser/ParserOptionsTest.groovy +++ b/src/test/groovy/graphql/parser/ParserOptionsTest.groovy @@ -30,13 +30,15 @@ class ParserOptionsTest extends Specification { defaultOptions.isCaptureLineComments() !defaultOptions.isCaptureIgnoredChars() defaultOptions.isReaderTrackData() + !defaultOptions.isRedactTokenParserErrorMessages() defaultOperationOptions.getMaxTokens() == 15_000 defaultOperationOptions.getMaxWhitespaceTokens() == 200_000 defaultOperationOptions.isCaptureSourceLocation() !defaultOperationOptions.isCaptureLineComments() !defaultOperationOptions.isCaptureIgnoredChars() - defaultOptions.isReaderTrackData() + defaultOperationOptions.isReaderTrackData() + !defaultOperationOptions.isRedactTokenParserErrorMessages() defaultSdlOptions.getMaxCharacters() == Integer.MAX_VALUE defaultSdlOptions.getMaxTokens() == Integer.MAX_VALUE @@ -44,14 +46,16 @@ class ParserOptionsTest extends Specification { defaultSdlOptions.isCaptureSourceLocation() defaultSdlOptions.isCaptureLineComments() !defaultSdlOptions.isCaptureIgnoredChars() - defaultOptions.isReaderTrackData() + defaultSdlOptions.isReaderTrackData() + !defaultSdlOptions.isRedactTokenParserErrorMessages() } def "can set in new option JVM wide"() { def newDefaultOptions = defaultOptions.transform({ it.captureIgnoredChars(true) .readerTrackData(false) - } ) + .redactTokenParserErrorMessages(true) + }) def newDefaultOperationOptions = defaultOperationOptions.transform( { it.captureIgnoredChars(true) @@ -84,6 +88,7 @@ class ParserOptionsTest extends Specification { currentDefaultOptions.isCaptureLineComments() currentDefaultOptions.isCaptureIgnoredChars() !currentDefaultOptions.isReaderTrackData() + currentDefaultOptions.isRedactTokenParserErrorMessages() currentDefaultOperationOptions.getMaxCharacters() == 1_000_000 currentDefaultOperationOptions.getMaxTokens() == 15_000 @@ -92,6 +97,7 @@ class ParserOptionsTest extends Specification { currentDefaultOperationOptions.isCaptureLineComments() currentDefaultOperationOptions.isCaptureIgnoredChars() currentDefaultOperationOptions.isReaderTrackData() + !currentDefaultOperationOptions.isRedactTokenParserErrorMessages() currentDefaultSdlOptions.getMaxCharacters() == Integer.MAX_VALUE currentDefaultSdlOptions.getMaxTokens() == Integer.MAX_VALUE @@ -100,5 +106,6 @@ class ParserOptionsTest extends Specification { currentDefaultSdlOptions.isCaptureLineComments() currentDefaultSdlOptions.isCaptureIgnoredChars() currentDefaultSdlOptions.isReaderTrackData() + !currentDefaultSdlOptions.isRedactTokenParserErrorMessages() } } diff --git a/src/test/groovy/graphql/parser/ParserTest.groovy b/src/test/groovy/graphql/parser/ParserTest.groovy index 42e604e9a6..d593f037ca 100644 --- a/src/test/groovy/graphql/parser/ParserTest.groovy +++ b/src/test/groovy/graphql/parser/ParserTest.groovy @@ -1188,4 +1188,70 @@ triple3 : """edge cases \\""" "" " \\"" \\" edge cases""" "\"\t\" scalar A" | _ } + def "can redact tokens in InvalidSyntax parser error message"() { + given: + def input = '''""" scalar ComputerSaysNo''' + + when: // Default options do not redact error messages + Parser.parse(input) + + then: + InvalidSyntaxException e = thrown(InvalidSyntaxException) + e.message == '''Invalid syntax with ANTLR error 'token recognition error at: '""" scalar ComputerSaysNo'' at line 1 column 1''' + + when: // Enable redacted parser error messages + def redactParserErrorMessages = ParserOptions.newParserOptions().redactTokenParserErrorMessages(true).build() + def parserEnvironment = newParserEnvironment().document(input).parserOptions(redactParserErrorMessages).build() + new Parser().parseDocument(parserEnvironment) + + then: + InvalidSyntaxException redactedError = thrown(InvalidSyntaxException) + redactedError.message == "Invalid syntax at line 1 column 1" + } + + def "can redact tokens in InvalidSyntaxBail parser error message"() { + given: + def input = ''' + query { + computer says no!!!!!! + ''' + + when: // Default options do not redact error messages + Parser.parse(input) + + then: + InvalidSyntaxException e = thrown(InvalidSyntaxException) + e.message == "Invalid syntax with offending token '!' at line 3 column 31" + + when: // Enable redacted parser error messages + def redactParserErrorMessages = ParserOptions.newParserOptions().redactTokenParserErrorMessages(true).build() + def parserEnvironment = newParserEnvironment().document(input).parserOptions(redactParserErrorMessages).build() + new Parser().parseDocument(parserEnvironment) + + then: + InvalidSyntaxException redactedError = thrown(InvalidSyntaxException) + redactedError.message == "Invalid syntax at line 3 column 31" + } + + def "can redact tokens in InvalidSyntaxMoreTokens parser error message"() { + given: + def input = "{profile(id:117) {computer, says, no}}}" + + + when: // Default options do not redact error messages + Parser.parse(input) + + then: + InvalidSyntaxException e = thrown(InvalidSyntaxException) + e.message == "Invalid syntax encountered. There are extra tokens in the text that have not been consumed. Offending token '}' at line 1 column 39" + + when: // Enable redacted parser error messages + def redactParserErrorMessages = ParserOptions.newParserOptions().redactTokenParserErrorMessages(true).build() + def parserEnvironment = newParserEnvironment().document(input).parserOptions(redactParserErrorMessages).build() + new Parser().parseDocument(parserEnvironment) + + then: + InvalidSyntaxException redactedError = thrown(InvalidSyntaxException) + redactedError.message == "Invalid syntax encountered. There are extra tokens in the text that have not been consumed. Offending token at line 1 column 39" + } } diff --git a/src/test/groovy/graphql/schema/CoercingTest.groovy b/src/test/groovy/graphql/schema/CoercingTest.groovy index ad1d306603..9504243c4d 100644 --- a/src/test/groovy/graphql/schema/CoercingTest.groovy +++ b/src/test/groovy/graphql/schema/CoercingTest.groovy @@ -1,6 +1,7 @@ package graphql.schema import graphql.ExecutionInput +import graphql.GraphQLContext import graphql.TestUtil import graphql.analysis.MaxQueryDepthInstrumentation import graphql.language.ArrayValue @@ -244,6 +245,11 @@ class CoercingTest extends Specification { Object parseLiteral(Object input) throws CoercingParseLiteralException { return input } + + @Override + StringValue valueToLiteral(Object input, GraphQLContext graphQLContext, Locale locale) { + return new StringValue(input.toString()) + } }) .build() diff --git a/src/test/groovy/graphql/schema/DataFetcherFactoriesTest.groovy b/src/test/groovy/graphql/schema/DataFetcherFactoriesTest.groovy index 5050ba0ef1..3fb58ed1e7 100644 --- a/src/test/groovy/graphql/schema/DataFetcherFactoriesTest.groovy +++ b/src/test/groovy/graphql/schema/DataFetcherFactoriesTest.groovy @@ -32,7 +32,17 @@ class DataFetcherFactoriesTest extends Specification { def fetcherFactory = DataFetcherFactories.useDataFetcher(pojoDF) when: - def value = fetcherFactory.get(null).get(null) + def value = fetcherFactory.get((GraphQLFieldDefinition)null).get(null) + + then: + value == "goodbye" + } + + def "will use given df via field"() { + def fetcherFactory = DataFetcherFactories.useDataFetcher(pojoDF) + + when: + def value = fetcherFactory.get((GraphQLFieldDefinition) null).get(null) then: value == "goodbye" diff --git a/src/test/groovy/graphql/schema/DataFetchingEnvironmentImplTest.groovy b/src/test/groovy/graphql/schema/DataFetchingEnvironmentImplTest.groovy index 2830419999..36aa87eb54 100644 --- a/src/test/groovy/graphql/schema/DataFetchingEnvironmentImplTest.groovy +++ b/src/test/groovy/graphql/schema/DataFetchingEnvironmentImplTest.groovy @@ -73,7 +73,7 @@ class DataFetchingEnvironmentImplTest extends Specification { dfe.getVariables() == variables dfe.getOperationDefinition() == operationDefinition dfe.getExecutionId() == executionId - dfe.getDataLoader("dataLoader") == dataLoader + dfe.getDataLoader("dataLoader") != null } def "create environment from existing one will copy everything to new instance"() { @@ -118,7 +118,7 @@ class DataFetchingEnvironmentImplTest extends Specification { dfe.getDocument() == dfeCopy.getDocument() dfe.getOperationDefinition() == dfeCopy.getOperationDefinition() dfe.getVariables() == dfeCopy.getVariables() - dfe.getDataLoader("dataLoader") == dataLoader + dfe.getDataLoader("dataLoader") != null dfe.getLocale() == dfeCopy.getLocale() dfe.getLocalContext() == dfeCopy.getLocalContext() } diff --git a/src/test/groovy/graphql/schema/DataFetchingFieldSelectionSetImplTest.groovy b/src/test/groovy/graphql/schema/DataFetchingFieldSelectionSetImplTest.groovy index 531e40a860..ff80ad9b32 100644 --- a/src/test/groovy/graphql/schema/DataFetchingFieldSelectionSetImplTest.groovy +++ b/src/test/groovy/graphql/schema/DataFetchingFieldSelectionSetImplTest.groovy @@ -348,6 +348,54 @@ class DataFetchingFieldSelectionSetImplTest extends Specification { fields.collect({ field -> field.qualifiedName }) == expectedFieldName } + + def "immediate fields followed by fields are computed"() { + + when: + def ei = ExecutionInput.newExecutionInput(relayQuery).build() + def er = relayGraphql.execute(ei) + + then: + er.getErrors().isEmpty() + + then: + List immediateFields = selectionSet.getImmediateFields() + + then: + def expectedImmediateFieldName = [ + "nodes", + "edges", + "totalCount" + ] + + immediateFields.collect({ field -> field.qualifiedName }) == expectedImmediateFieldName + + then: + List fieldsGlob = selectionSet.getFields("**") + List fields = selectionSet.getFields() + + def expectedFieldName = [ + "nodes", + "nodes/key", + "nodes/summary", + "nodes/status", + "nodes/status/name", + "nodes/stuff", + "nodes/stuff/name", + "edges", + "edges/cursor", + "edges/node", + "edges/node/description", + "edges/node/status", + "edges/node/status/name", + "totalCount" + ] + + then: + fieldsGlob.collect({ field -> field.qualifiedName }) == expectedFieldName + fields.collect({ field -> field.qualifiedName }) == expectedFieldName + } + def petSDL = ''' type Query { petUnion : PetUnion diff --git a/src/test/groovy/graphql/schema/GraphQLCodeRegistryTest.groovy b/src/test/groovy/graphql/schema/GraphQLCodeRegistryTest.groovy index eef53c9794..e528f5619f 100644 --- a/src/test/groovy/graphql/schema/GraphQLCodeRegistryTest.groovy +++ b/src/test/groovy/graphql/schema/GraphQLCodeRegistryTest.groovy @@ -5,6 +5,7 @@ import graphql.GraphQL import graphql.Scalars import graphql.StarWarsSchema import graphql.TestUtil +import graphql.TrivialDataFetcher import graphql.TypeResolutionEnvironment import graphql.schema.visibility.GraphqlFieldVisibility import spock.lang.Specification @@ -98,7 +99,7 @@ class GraphQLCodeRegistryTest extends Specification { (codeRegistryBuilder.getDataFetcher(objectType("parentType3"), field("fieldD")) as NamedDF).name == "D" (codeRegistryBuilder.getDataFetcher(objectType("parentType3"), field("fieldE")) as NamedDF).name == "E" - codeRegistryBuilder.getDataFetcher(objectType("parentType2"), field("A")) instanceof PropertyDataFetcher // a default one + codeRegistryBuilder.getDataFetcher(objectType("parentType2"), field("A")) instanceof SingletonPropertyDataFetcher // a default one when: def codeRegistry = codeRegistryBuilder.build() @@ -108,7 +109,7 @@ class GraphQLCodeRegistryTest extends Specification { (codeRegistry.getDataFetcher(objectType("parentType3"), field("fieldD")) as NamedDF).name == "D" (codeRegistry.getDataFetcher(objectType("parentType3"), field("fieldE")) as NamedDF).name == "E" - codeRegistry.getDataFetcher(objectType("parentType2"), field("A")) instanceof PropertyDataFetcher // a default one + codeRegistry.getDataFetcher(objectType("parentType2"), field("A")) instanceof SingletonPropertyDataFetcher // a default one } def "data fetchers can be retrieved using field coordinates"() { @@ -125,7 +126,7 @@ class GraphQLCodeRegistryTest extends Specification { (codeRegistryBuilder.getDataFetcher(FieldCoordinates.coordinates("parentType3", "fieldD"), field("fieldD")) as NamedDF).name == "D" (codeRegistryBuilder.getDataFetcher(FieldCoordinates.coordinates("parentType3", "fieldE"), field("fieldE")) as NamedDF).name == "E" - codeRegistryBuilder.getDataFetcher(FieldCoordinates.coordinates("parentType2", "A"), field("A")) instanceof PropertyDataFetcher // a default one + codeRegistryBuilder.getDataFetcher(FieldCoordinates.coordinates("parentType2", "A"), field("A")) instanceof SingletonPropertyDataFetcher // a default one when: def codeRegistry = codeRegistryBuilder.build() @@ -135,7 +136,7 @@ class GraphQLCodeRegistryTest extends Specification { (codeRegistry.getDataFetcher(FieldCoordinates.coordinates("parentType3", "fieldD"), field("fieldD")) as NamedDF).name == "D" (codeRegistry.getDataFetcher(FieldCoordinates.coordinates("parentType3", "fieldE"), field("fieldE")) as NamedDF).name == "E" - codeRegistry.getDataFetcher(FieldCoordinates.coordinates("parentType2", "A"), field("A")) instanceof PropertyDataFetcher // a default one + codeRegistry.getDataFetcher(FieldCoordinates.coordinates("parentType2", "A"), field("A")) instanceof SingletonPropertyDataFetcher // a default one } def "records type resolvers against unions and interfaces"() { @@ -179,13 +180,13 @@ class GraphQLCodeRegistryTest extends Specification { (schema.getCodeRegistry().getFieldVisibility() as NamedFieldVisibility).name == "B" } - def "PropertyDataFetcher is the default data fetcher used when no data fetcher is available"() { + def "SingletonPropertyDataFetcher is the default data fetcher used when no data fetcher is available"() { when: def codeRegistry = GraphQLCodeRegistry.newCodeRegistry().build() def dataFetcher = codeRegistry.getDataFetcher(StarWarsSchema.humanType, StarWarsSchema.humanType.getFieldDefinition("name")) then: - dataFetcher instanceof PropertyDataFetcher + dataFetcher instanceof SingletonPropertyDataFetcher } def "custom DF can be the default data fetcher used when no data fetcher is available"() { @@ -251,8 +252,8 @@ class GraphQLCodeRegistryTest extends Specification { er.errors.isEmpty() er.data == [codeRegistryField: "codeRegistryFieldValue", nonCodeRegistryField: "nonCodeRegistryFieldValue", neitherSpecified: "neitherSpecifiedValue"] - // when nothing is specified then its a plain old PropertyDataFetcher - schema.getCodeRegistry().getDataFetcher(queryType, queryType.getFieldDefinition("neitherSpecified")) instanceof PropertyDataFetcher + // when nothing is specified then its a plain old SingletonPropertyDataFetcher + schema.getCodeRegistry().getDataFetcher(queryType, queryType.getFieldDefinition("neitherSpecified")) instanceof SingletonPropertyDataFetcher } @@ -287,7 +288,7 @@ class GraphQLCodeRegistryTest extends Specification { // when nothing is specified then its a plain old PropertyDataFetcher def queryType = schema.getObjectType("Query") - schema.getCodeRegistry().getDataFetcher(queryType, queryType.getFieldDefinition("neitherSpecified")) instanceof PropertyDataFetcher + schema.getCodeRegistry().getDataFetcher(queryType, queryType.getFieldDefinition("neitherSpecified")) instanceof SingletonPropertyDataFetcher } def "will detect system versus user data fetchers"() { diff --git a/src/test/groovy/graphql/schema/GraphQLInputObjectTypeTest.groovy b/src/test/groovy/graphql/schema/GraphQLInputObjectTypeTest.groovy index 09ed18b731..9ad43412bf 100644 --- a/src/test/groovy/graphql/schema/GraphQLInputObjectTypeTest.groovy +++ b/src/test/groovy/graphql/schema/GraphQLInputObjectTypeTest.groovy @@ -162,21 +162,22 @@ class GraphQLInputObjectTypeTest extends Specification { er = graphQL.execute('query q { f( arg : {a : "abc", b : 123}) { key value }}') then: !er.errors.isEmpty() - er.errors[0].message == "Exception while fetching data (/f) : Exactly one key must be specified for OneOf type 'OneOf'." + // caught during early validation + er.errors[0].message == "Validation error (WrongType@[f]) : Exactly one key must be specified for OneOf type 'OneOf'." when: def ei = ExecutionInput.newExecutionInput('query q($var : OneOf) { f( arg : $var) { key value }}').variables([var: [a: "abc", b: 123]]).build() er = graphQL.execute(ei) then: !er.errors.isEmpty() - er.errors[0].message == "Exception while fetching data (/f) : Exactly one key must be specified for OneOf type 'OneOf'." + er.errors[0].message == "Exactly one key must be specified for OneOf type 'OneOf'." when: ei = ExecutionInput.newExecutionInput('query q($var : OneOf) { f( arg : $var) { key value }}').variables([var: [a: null]]).build() er = graphQL.execute(ei) then: !er.errors.isEmpty() - er.errors[0].message == "Exception while fetching data (/f) : OneOf type field 'OneOf.a' must be non-null." + er.errors[0].message == "OneOf type field 'OneOf.a' must be non-null." // lots more covered in unit tests } diff --git a/src/test/groovy/graphql/schema/GraphQLSchemaTest.groovy b/src/test/groovy/graphql/schema/GraphQLSchemaTest.groovy index bf18e083c2..73a04346f2 100644 --- a/src/test/groovy/graphql/schema/GraphQLSchemaTest.groovy +++ b/src/test/groovy/graphql/schema/GraphQLSchemaTest.groovy @@ -155,22 +155,22 @@ class GraphQLSchemaTest extends Specification { when: "no additional directives have been specified" def schema = schemaBuilder.build() then: - schema.directives.size() == 5 + schema.directives.size() == 7 when: "clear directives is called" schema = schemaBuilder.clearDirectives().build() then: - schema.directives.size() == 3 // @deprecated and @specifiedBy and @oneOf is ALWAYS added if missing + schema.directives.size() == 5 // @deprecated and @specifiedBy and @oneOf et al is ALWAYS added if missing when: "clear directives is called with more directives" schema = schemaBuilder.clearDirectives().additionalDirective(Directives.SkipDirective).build() then: - schema.directives.size() == 4 + schema.directives.size() == 6 when: "the schema is transformed, things are copied" schema = schema.transform({ builder -> builder.additionalDirective(Directives.IncludeDirective) }) then: - schema.directives.size() == 5 + schema.directives.size() == 7 } def "clear additional types works as expected"() { @@ -508,7 +508,7 @@ class GraphQLSchemaTest extends Specification { def newDF = newRegistry.getDataFetcher(dogType, dogType.getField("name")) newDF !== nameDF - newDF instanceof PropertyDataFetcher // defaulted in + newDF instanceof LightDataFetcher // defaulted in } def "can get by field co-ordinate"() { diff --git a/src/test/groovy/graphql/schema/PropertyDataFetcherClassLoadingTest.groovy b/src/test/groovy/graphql/schema/PropertyDataFetcherClassLoadingTest.groovy index 6ee7623dd3..62b814db0d 100644 --- a/src/test/groovy/graphql/schema/PropertyDataFetcherClassLoadingTest.groovy +++ b/src/test/groovy/graphql/schema/PropertyDataFetcherClassLoadingTest.groovy @@ -25,7 +25,7 @@ class PropertyDataFetcherClassLoadingTest extends Specification { } BrokenClass getBrokenThings() { - return BrokenClass.cast(null) + return new BrokenClass() } } diff --git a/src/test/groovy/graphql/schema/PropertyDataFetcherTest.groovy b/src/test/groovy/graphql/schema/PropertyDataFetcherTest.groovy index b9fae5e3f0..7903f14229 100644 --- a/src/test/groovy/graphql/schema/PropertyDataFetcherTest.groovy +++ b/src/test/groovy/graphql/schema/PropertyDataFetcherTest.groovy @@ -1,6 +1,7 @@ package graphql.schema import graphql.ExecutionInput +import graphql.Scalars import graphql.TestUtil import graphql.schema.fetching.ConfusedPojo import graphql.schema.somepackage.ClassWithDFEMethods @@ -16,6 +17,14 @@ import java.util.function.Function import static graphql.schema.DataFetchingEnvironmentImpl.newDataFetchingEnvironment +/** + * Note : That `new PropertyDataFetcher("someProperty")` and `SingletonPropertyDataFetcher.singleton()` + * should really be the equivalent since they both go via `PropertyDataFetcherHelper.getPropertyValue` + * under the covers. + * + * But where we can we have tried to use `where` blocks to test both + * + */ @SuppressWarnings("GroovyUnusedDeclaration") class PropertyDataFetcherTest extends Specification { @@ -26,9 +35,11 @@ class PropertyDataFetcherTest extends Specification { PropertyDataFetcherHelper.setUseLambdaFactory(true) } - def env(obj) { + def env(String propertyName, Object obj) { + def fieldDefinition = GraphQLFieldDefinition.newFieldDefinition().name(propertyName).type(Scalars.GraphQLString).build() newDataFetchingEnvironment() .source(obj) + .fieldDefinition(fieldDefinition) .arguments([argument1: "value1", argument2: "value2"]) .build() } @@ -38,14 +49,20 @@ class PropertyDataFetcherTest extends Specification { } def "null source is always null"() { - def environment = env(null) - def fetcher = new PropertyDataFetcher("someProperty") + given: + def environment = env("someProperty", null) + expect: fetcher.get(environment) == null + + where: + fetcher | _ + new PropertyDataFetcher("someProperty") | _ + SingletonPropertyDataFetcher.singleton() | _ } def "function based fetcher works with non null source"() { - def environment = env(new SomeObject(value: "aValue")) + def environment = env("notused", new SomeObject(value: "aValue")) Function f = { obj -> obj['value'] } def fetcher = PropertyDataFetcher.fetching(f) expect: @@ -53,7 +70,7 @@ class PropertyDataFetcherTest extends Specification { } def "function based fetcher works with null source"() { - def environment = env(null) + def environment = env("notused", null) Function f = { obj -> obj['value'] } def fetcher = PropertyDataFetcher.fetching(f) expect: @@ -61,46 +78,87 @@ class PropertyDataFetcherTest extends Specification { } def "fetch via map lookup"() { - def environment = env(["mapProperty": "aValue"]) - def fetcher = PropertyDataFetcher.fetching("mapProperty") + given: + def environment = env("mapProperty", ["mapProperty": "aValue"]) + expect: fetcher.get(environment) == "aValue" + + where: + fetcher | _ + PropertyDataFetcher.fetching("mapProperty") | _ + SingletonPropertyDataFetcher.singleton() | _ } def "fetch via public getter with private subclass"() { - def environment = env(TestClass.createPackageProtectedImpl("aValue")) - def fetcher = new PropertyDataFetcher("packageProtectedProperty") + given: + def environment = env("packageProtectedProperty", TestClass.createPackageProtectedImpl("aValue")) + expect: fetcher.get(environment) == "aValue" + + where: + fetcher | _ + new PropertyDataFetcher("packageProtectedProperty") | _ + SingletonPropertyDataFetcher.singleton() | _ } def "fetch via method that isn't present"() { - def environment = env(new TestClass()) - def fetcher = new PropertyDataFetcher("valueNotPresent") + given: + def environment = env("valueNotPresent", new TestClass()) + + when: def result = fetcher.get(environment) - expect: + + then: result == null + + where: + fetcher | _ + new PropertyDataFetcher("valueNotPresent") | _ + SingletonPropertyDataFetcher.singleton() | _ + } def "fetch via method that is private"() { - def environment = env(new TestClass()) - def fetcher = new PropertyDataFetcher("privateProperty") + given: + def environment = env("privateProperty", new TestClass()) + + when: def result = fetcher.get(environment) - expect: + + then: result == "privateValue" + + where: + fetcher | _ + new PropertyDataFetcher("privateProperty") | _ + SingletonPropertyDataFetcher.singleton() | _ + } def "fetch via method that is private with setAccessible OFF"() { + given: PropertyDataFetcher.setUseSetAccessible(false) - def environment = env(new TestClass()) - def fetcher = new PropertyDataFetcher("privateProperty") + def environment = env("privateProperty", new TestClass()) + + when: def result = fetcher.get(environment) - expect: + + then: result == null + + where: + fetcher | _ + new PropertyDataFetcher("privateProperty") | _ + SingletonPropertyDataFetcher.singleton() | _ + } def "fetch via record method"() { - def environment = env(new RecordLikeClass()) + given: + def environment = env("recordProperty", new RecordLikeClass()) + when: def fetcher = new PropertyDataFetcher("recordProperty") def result = fetcher.get(environment) @@ -144,57 +202,95 @@ class PropertyDataFetcherTest extends Specification { result == "toString" } + def "fetch via record method with singleton fetcher"() { + given: + def environment = env("recordProperty", new RecordLikeClass()) + + when: + def fetcher = SingletonPropertyDataFetcher.singleton() + def result = fetcher.get(environment) + then: + result == "recordProperty" + } + def "can fetch record like methods that are public and on super classes"() { - def environment = env(new RecordLikeTwoClassesDown()) + given: + def environment = env("recordProperty", new RecordLikeTwoClassesDown()) + when: - def fetcher = new PropertyDataFetcher("recordProperty") def result = fetcher.get(environment) + then: result == "recordProperty" + + where: + fetcher | _ + new PropertyDataFetcher("recordProperty") | _ + SingletonPropertyDataFetcher.singleton() | _ } def "fetch via record method without lambda support"() { + given: PropertyDataFetcherHelper.setUseLambdaFactory(false) PropertyDataFetcherHelper.clearReflectionCache() when: - def environment = env(new RecordLikeClass()) + def environment = env("recordProperty", new RecordLikeClass()) def fetcher = new PropertyDataFetcher("recordProperty") def result = fetcher.get(environment) + then: result == "recordProperty" when: - environment = env(new RecordLikeTwoClassesDown()) + environment = env("recordProperty", new RecordLikeTwoClassesDown()) fetcher = new PropertyDataFetcher("recordProperty") result = fetcher.get(environment) + then: result == "recordProperty" } def "fetch via record method without lambda support in preference to getter methods"() { + given: PropertyDataFetcherHelper.setUseLambdaFactory(false) PropertyDataFetcherHelper.clearReflectionCache() when: - def environment = env(new ConfusedPojo()) - def fetcher = new PropertyDataFetcher("recordLike") + def environment = env("recordLike", new ConfusedPojo()) def result = fetcher.get(environment) + then: result == "recordLike" + + where: + fetcher | _ + new PropertyDataFetcher("recordLike") | _ + SingletonPropertyDataFetcher.singleton() | _ } def "fetch via public method"() { - def environment = env(new TestClass()) - def fetcher = new PropertyDataFetcher("publicProperty") + given: + def environment = env("publicProperty", new TestClass()) + + when: def result = fetcher.get(environment) - expect: + + then: result == "publicValue" + + where: + fetcher | _ + new PropertyDataFetcher("publicProperty") | _ + SingletonPropertyDataFetcher.singleton() | _ + } def "fetch via public method declared two classes up"() { - def environment = env(new TwoClassesDown("aValue")) + given: + def environment = env("publicProperty", new TwoClassesDown("aValue")) def fetcher = new PropertyDataFetcher("publicProperty") + when: def result = fetcher.get(environment) then: @@ -208,42 +304,69 @@ class PropertyDataFetcherTest extends Specification { } def "fetch via property only defined on package protected impl"() { - def environment = env(TestClass.createPackageProtectedImpl("aValue")) - def fetcher = new PropertyDataFetcher("propertyOnlyDefinedOnPackageProtectedImpl") + given: + def environment = env("propertyOnlyDefinedOnPackageProtectedImpl", TestClass.createPackageProtectedImpl("aValue")) + + when: def result = fetcher.get(environment) - expect: + + then: result == "valueOnlyDefinedOnPackageProtectedIpl" + + where: + fetcher | _ + new PropertyDataFetcher("propertyOnlyDefinedOnPackageProtectedImpl") | _ + SingletonPropertyDataFetcher.singleton() | _ } def "fetch via public field"() { - def environment = env(new TestClass()) - def fetcher = new PropertyDataFetcher("publicField") + given: + + def environment = env("publicField", new TestClass()) def result = fetcher.get(environment) + expect: result == "publicFieldValue" + + where: + fetcher | _ + new PropertyDataFetcher("publicField") | _ + SingletonPropertyDataFetcher.singleton() | _ } def "fetch via private field"() { - def environment = env(new TestClass()) - def fetcher = new PropertyDataFetcher("privateField") + given: + def environment = env("privateField", new TestClass()) def result = fetcher.get(environment) + expect: result == "privateFieldValue" + + where: + fetcher | _ + new PropertyDataFetcher("privateField") | _ + SingletonPropertyDataFetcher.singleton() | _ } def "fetch via private field when setAccessible OFF"() { + given: PropertyDataFetcher.setUseSetAccessible(false) - def environment = env(new TestClass()) - def fetcher = new PropertyDataFetcher("privateField") + def environment = env("privateField", new TestClass()) def result = fetcher.get(environment) + expect: result == null + + where: + fetcher | _ + new PropertyDataFetcher("privateField") | _ + SingletonPropertyDataFetcher.singleton() | _ } def "fetch when caching is in place has no bad effects"() { - def environment = env(new TestClass()) + def environment = env("publicProperty", new TestClass()) def fetcher = new PropertyDataFetcher("publicProperty") when: def result = fetcher.get(environment) @@ -317,8 +440,10 @@ class PropertyDataFetcherTest extends Specification { } def "support for DFE on methods"() { - def environment = env(new ClassWithDFEMethods()) + given: + def environment = env("methodWithDFE", new ClassWithDFEMethods()) def fetcher = new PropertyDataFetcher("methodWithDFE") + when: def result = fetcher.get(environment) then: @@ -370,7 +495,7 @@ class PropertyDataFetcherTest extends Specification { def "finds interface methods"() { when: - def environment = env(new ClassWithInterfaces()) + def environment = env("methodYouMustImplement", new ClassWithInterfaces()) def fetcher = new PropertyDataFetcher("methodYouMustImplement") def result = fetcher.get(environment) then: @@ -397,7 +522,7 @@ class PropertyDataFetcherTest extends Specification { } def "finds interface methods with inheritance"() { - def environment = env(new ClassWithInteritanceAndInterfaces.StartingClass()) + def environment = env("methodYouMustImplement", new ClassWithInteritanceAndInterfaces.StartingClass()) when: def fetcher = new PropertyDataFetcher("methodYouMustImplement") @@ -411,7 +536,7 @@ class PropertyDataFetcherTest extends Specification { then: result == "methodThatIsADefault" - def environment2 = env(new ClassWithInteritanceAndInterfaces.InheritedClass()) + def environment2 = env("methodYouMustImplement", new ClassWithInteritanceAndInterfaces.InheritedClass()) when: fetcher = new PropertyDataFetcher("methodYouMustImplement") @@ -440,7 +565,7 @@ class PropertyDataFetcherTest extends Specification { def "ensure DFE is passed to method"() { - def environment = env(new ClassWithDFEMethods()) + def environment = env("methodUsesDataFetchingEnvironment", new ClassWithDFEMethods()) def fetcher = new PropertyDataFetcher("methodUsesDataFetchingEnvironment") when: def result = fetcher.get(environment) @@ -455,7 +580,7 @@ class PropertyDataFetcherTest extends Specification { } def "negative caching works as expected"() { - def environment = env(new ClassWithDFEMethods()) + def environment = env("doesNotExist", new ClassWithDFEMethods()) def fetcher = new PropertyDataFetcher("doesNotExist") when: def result = fetcher.get(environment) @@ -546,69 +671,81 @@ class PropertyDataFetcherTest extends Specification { def "search for private getter in class hierarchy"() { given: Bar bar = new Baz() - PropertyDataFetcher propertyDataFetcher = new PropertyDataFetcher("something") - def dfe = Mock(DataFetchingEnvironment) - dfe.getSource() >> bar + def dfe = env("something", bar) + when: - def result = propertyDataFetcher.get(dfe) + def result = fetcher.get(dfe) then: result == "bar" // repeat - should be cached when: - result = propertyDataFetcher.get(dfe) + result = fetcher.get(dfe) then: result == "bar" + + where: + fetcher | _ + new PropertyDataFetcher("something") | _ + SingletonPropertyDataFetcher.singleton() | _ } def "issue 3247 - record like statics should not be used"() { given: def payload = new UpdateOrganizerSubscriptionPayload(true, new OrganizerSubscriptionError()) - PropertyDataFetcher propertyDataFetcher = new PropertyDataFetcher("success") - def dfe = Mock(DataFetchingEnvironment) - dfe.getSource() >> payload + def dfe = env("success", payload) + when: - def result = propertyDataFetcher.get(dfe) + def result = fetcher.get(dfe) then: result == true // repeat - should be cached when: - result = propertyDataFetcher.get(dfe) + result = fetcher.get(dfe) then: result == true + + where: + fetcher | _ + new PropertyDataFetcher("success") | _ + SingletonPropertyDataFetcher.singleton() | _ } def "issue 3247 - record like statics should not be found"() { given: def errorShape = new OrganizerSubscriptionError() - PropertyDataFetcher propertyDataFetcher = new PropertyDataFetcher("message") - def dfe = Mock(DataFetchingEnvironment) - dfe.getSource() >> errorShape + def dfe = env("message", errorShape) + when: - def result = propertyDataFetcher.get(dfe) + def result = fetcher.get(dfe) then: result == null // not found as its a static recordLike() method // repeat - should be cached when: - result = propertyDataFetcher.get(dfe) + result = fetcher.get(dfe) then: result == null + + where: + fetcher | _ + new PropertyDataFetcher("message") | _ + SingletonPropertyDataFetcher.singleton() | _ } def "issue 3247 - getter statics should be found"() { given: def objectInQuestion = new BarClassWithStaticProperties() + def dfe = env("foo", objectInQuestion) PropertyDataFetcher propertyDataFetcher = new PropertyDataFetcher("foo") - def dfe = Mock(DataFetchingEnvironment) - dfe.getSource() >> objectInQuestion + when: def result = propertyDataFetcher.get(dfe) @@ -657,15 +794,22 @@ class PropertyDataFetcherTest extends Specification { Locale oldLocale = Locale.getDefault() Locale.setDefault(new Locale("tr", "TR")) - def environment = env(new OtherObject(id: "aValue")) - def fetcher = PropertyDataFetcher.fetching("id") + def environment = env("id", new OtherObject(id: "aValue")) when: + def fetcher = PropertyDataFetcher.fetching("id") String propValue = fetcher.get(environment) then: propValue == 'aValue' + when: + fetcher = SingletonPropertyDataFetcher.singleton() + propValue = fetcher.get(environment) + + then: + propValue == 'aValue' + cleanup: Locale.setDefault(oldLocale) } diff --git a/src/test/groovy/graphql/schema/SchemaTransformerTest.groovy b/src/test/groovy/graphql/schema/SchemaTransformerTest.groovy index 339378f7a8..861520b007 100644 --- a/src/test/groovy/graphql/schema/SchemaTransformerTest.groovy +++ b/src/test/groovy/graphql/schema/SchemaTransformerTest.groovy @@ -959,4 +959,67 @@ type Query { visitedSchema == schema visitedCodeRegistry instanceof GraphQLCodeRegistry.Builder } + + def "deprecation transformation correctly overrides existing deprecated directive reasons"() { + def schema = TestUtil.schema(""" + schema { + query: QueryType + } + + type QueryType { + a: String + b: String @deprecated(reason: "Replace this doc") + } + + interface InterfaceType { + a: String + b: String @deprecated(reason: "Replace this doc") + } + + input InputType { + a: String + b: String @deprecated(reason: "Replace this doc") + } + """) + + when: + def typeVisitor = new GraphQLTypeVisitorStub() { + @Override + TraversalControl visitGraphQLFieldDefinition(GraphQLFieldDefinition node, TraverserContext context) { + def n = node.transform(b -> b.deprecate("NEW REASON")); + return changeNode(context, n); + } + + @Override + TraversalControl visitGraphQLInputObjectField(GraphQLInputObjectField node, TraverserContext context) { + def n = node.transform(b -> b.deprecate("NEW REASON")); + return changeNode(context, n); + } + } + def newSchema = SchemaTransformer.transformSchema(schema, typeVisitor) + + then: + def newQueryType = newSchema.getObjectType("QueryType") + def newQueryTypePrinted = new SchemaPrinter().print(newQueryType) + + newQueryTypePrinted == """type QueryType { + a: String @deprecated(reason : "NEW REASON") + b: String @deprecated(reason : "NEW REASON") +} +""" + def newInterfaceType = newSchema.getType("InterfaceType") + def newInterfaceTypePrinted = new SchemaPrinter().print(newInterfaceType) + newInterfaceTypePrinted == """interface InterfaceType { + a: String @deprecated(reason : "NEW REASON") + b: String @deprecated(reason : "NEW REASON") +} +""" + def newInputType = newSchema.getType("InputType") + def newInputTypePrinted = new SchemaPrinter().print(newInputType) + newInputTypePrinted == """input InputType { + a: String @deprecated(reason : "NEW REASON") + b: String @deprecated(reason : "NEW REASON") +} +""" + } } diff --git a/src/test/groovy/graphql/schema/diffing/SchemaDiffingTest.groovy b/src/test/groovy/graphql/schema/diffing/SchemaDiffingTest.groovy index 425252519f..46481fa7a5 100644 --- a/src/test/groovy/graphql/schema/diffing/SchemaDiffingTest.groovy +++ b/src/test/groovy/graphql/schema/diffing/SchemaDiffingTest.groovy @@ -35,13 +35,13 @@ class SchemaDiffingTest extends Specification { schemaGraph.getVerticesByType(SchemaGraph.UNION).size() == 0 schemaGraph.getVerticesByType(SchemaGraph.SCALAR).size() == 2 schemaGraph.getVerticesByType(SchemaGraph.FIELD).size() == 40 - schemaGraph.getVerticesByType(SchemaGraph.ARGUMENT).size() == 9 + schemaGraph.getVerticesByType(SchemaGraph.ARGUMENT).size() == 11 schemaGraph.getVerticesByType(SchemaGraph.INPUT_FIELD).size() == 0 schemaGraph.getVerticesByType(SchemaGraph.INPUT_OBJECT).size() == 0 - schemaGraph.getVerticesByType(SchemaGraph.DIRECTIVE).size() == 5 + schemaGraph.getVerticesByType(SchemaGraph.DIRECTIVE).size() == 7 schemaGraph.getVerticesByType(SchemaGraph.APPLIED_ARGUMENT).size() == 0 schemaGraph.getVerticesByType(SchemaGraph.APPLIED_DIRECTIVE).size() == 0 - schemaGraph.size() == 93 + schemaGraph.size() == 97 } @@ -1554,6 +1554,43 @@ class SchemaDiffingTest extends Specification { operations.size() == 1 } + + /* + * The schema can't be mapped at the moment because + * the arguments mapping doesn't work. + * The PossibleMappingCalculator finds two context: "Object.Query" (with one argument vertex) which is deleted + * and "Object.Foo" (with two argument vertices) which is added. Therefore one isolated vertex is added in the source + * to align both context. + * + * But the parent restrictions dictate that the target parent of i1 must be Query.foo, because Query.echo is fixed mapped + * to Query.foo. But that would mean i1 is deleted, but there is no isolated argument vertex for the target because of + * the contexts. So there is no possible mapping and the exception is thrown. + */ + + def "bug produced well known exception"() { + given: + def schema1 = schema(''' + type Query { + echo(i1: String): String + } + ''') + def schema2 = schema(''' + type Query { + foo: Foo + } + type Foo { + a(i2: String): String + b(i3: String): String + } +''') + + when: + def diff = new SchemaDiffing().diffGraphQLSchema(schema1, schema2) + then: + def e = thrown(RuntimeException) + e.message.contains("bug: ") + } + } diff --git a/src/test/groovy/graphql/schema/idl/RuntimeWiringTest.groovy b/src/test/groovy/graphql/schema/idl/RuntimeWiringTest.groovy index bd3c225d2a..beb518ae2f 100644 --- a/src/test/groovy/graphql/schema/idl/RuntimeWiringTest.groovy +++ b/src/test/groovy/graphql/schema/idl/RuntimeWiringTest.groovy @@ -193,25 +193,23 @@ class RuntimeWiringTest extends Specification { newWiring.fieldVisibility == fieldVisibility } - def "strict mode can stop certain redefinitions"() { + def "strict mode, on by default, can stop certain redefinitions"() { DataFetcher DF1 = env -> "x" + DataFetcher DF2 = env -> "x" TypeResolver TR1 = env -> null EnumValuesProvider EVP1 = name -> null when: RuntimeWiring.newRuntimeWiring() - .strictMode() .type(TypeRuntimeWiring.newTypeWiring("Foo").dataFetcher("foo", DF1)) - .type(TypeRuntimeWiring.newTypeWiring("Foo").dataFetcher("bar", DF1)) - + .type(TypeRuntimeWiring.newTypeWiring("Foo").dataFetcher("foo", DF1)) // Cannot redefine the same field's datafetcher then: def e1 = thrown(StrictModeWiringException) - e1.message == "The type Foo has already been defined" + e1.message == "The field foo on type Foo has already been defined" when: RuntimeWiring.newRuntimeWiring() - .strictMode() .type(TypeRuntimeWiring.newTypeWiring("Foo").typeResolver(TR1)) .type(TypeRuntimeWiring.newTypeWiring("Foo").typeResolver(TR1)) @@ -221,7 +219,6 @@ class RuntimeWiringTest extends Specification { when: RuntimeWiring.newRuntimeWiring() - .strictMode() .type(TypeRuntimeWiring.newTypeWiring("Foo").enumValues(EVP1)) .type(TypeRuntimeWiring.newTypeWiring("Foo").enumValues(EVP1)) then: @@ -230,11 +227,163 @@ class RuntimeWiringTest extends Specification { when: RuntimeWiring.newRuntimeWiring() - .strictMode() .scalar(Scalars.GraphQLString) then: def e4 = thrown(StrictModeWiringException) e4.message == "The scalar String is already defined" + when: + TypeRuntimeWiring.newTypeWiring("Foo") + .defaultDataFetcher(DF1) + .defaultDataFetcher(DF2) + + then: + def e5 = thrown(StrictModeWiringException) + e5.message == "The type Foo has already has a default data fetcher defined" + } + + def "strict mode, on by default, permits a type to be defined more than once as long as elements are not overlapping"() { + DataFetcher DF1 = env -> "x" + DataFetcher DF2 = env -> "x" + TypeResolver TR1 = env -> null + EnumValuesProvider EVP1 = name -> null + + when: + // Permit type wiring to be defined more than once, if child DataFetchers are for distinct fields + def runtimeWiring1 = RuntimeWiring.newRuntimeWiring() + .type(TypeRuntimeWiring.newTypeWiring("Foo").dataFetcher("foo", DF1)) + .type(TypeRuntimeWiring.newTypeWiring("Foo").dataFetcher("bar", DF2)) + .build() + + then: + noExceptionThrown() + runtimeWiring1.getDataFetchers().get("Foo").get("foo") == DF1 + runtimeWiring1.getDataFetchers().get("Foo").get("bar") == DF2 + + when: + // Only one type wiring is allowed per type, do not allow redefinition + RuntimeWiring.newRuntimeWiring() + .type(TypeRuntimeWiring.newTypeWiring("Foo").typeResolver(TR1)) + .type(TypeRuntimeWiring.newTypeWiring("Foo").typeResolver(TR1)) + + then: + def e2 = thrown(StrictModeWiringException) + e2.message == "The type Foo already has a type resolver defined" + + when: + // Only one enum values provider is allowed per type, do not allow redefinition + RuntimeWiring.newRuntimeWiring() + .type(TypeRuntimeWiring.newTypeWiring("Foo").enumValues(EVP1)) + .type(TypeRuntimeWiring.newTypeWiring("Foo").enumValues(EVP1)) + + then: + def e3 = thrown(StrictModeWiringException) + e3.message == "The type Foo already has a enum provider defined" + + when: + // Only one scalar wiring is allowed per scalar + RuntimeWiring.newRuntimeWiring() + .scalar(Scalars.GraphQLString) + then: + def e4 = thrown(StrictModeWiringException) + e4.message == "The scalar String is already defined" + + when: + // Only one default data fetcher is allowed, do not allow redefinition + TypeRuntimeWiring.newTypeWiring("Foo") + .defaultDataFetcher(DF1) + .defaultDataFetcher(DF2) + + then: + def e5 = thrown(StrictModeWiringException) + e5.message == "The type Foo has already has a default data fetcher defined" + } + + def "strict mode, if set to off, won't stop certain redefinitions"() { + DataFetcher DF1 = env -> "x" + DataFetcher DF2 = env -> "x" + TypeResolver TR1 = env -> null + EnumValuesProvider EVP1 = name -> null + + when: + def runtimeWiring1 = RuntimeWiring.newRuntimeWiring() + .strictMode(false) + .type(TypeRuntimeWiring.newTypeWiring("Foo").dataFetcher("foo", DF1)) + .type(TypeRuntimeWiring.newTypeWiring("Foo").dataFetcher("foo", DF2)) + .build() + + then: + noExceptionThrown() + runtimeWiring1.getDataFetchers().get("Foo").get("foo") == DF2 + + when: + def runtimeWiring2 = RuntimeWiring.newRuntimeWiring() + .strictMode(false) + .type(TypeRuntimeWiring.newTypeWiring("Foo").typeResolver(TR1)) + .type(TypeRuntimeWiring.newTypeWiring("Foo").typeResolver(TR1)) + .build() + + then: + noExceptionThrown() + runtimeWiring2.typeResolvers.get("Foo") == TR1 + + when: + def runtimeWiring3 = RuntimeWiring.newRuntimeWiring() + .strictMode(false) + .type(TypeRuntimeWiring.newTypeWiring("Foo").enumValues(EVP1)) + .type(TypeRuntimeWiring.newTypeWiring("Foo").enumValues(EVP1)) + .build() + + then: + noExceptionThrown() + runtimeWiring3.getEnumValuesProviders().get("Foo") == EVP1 + + when: + def runtimeWiring4 = RuntimeWiring.newRuntimeWiring() + .strictMode(false) + .scalar(Scalars.GraphQLString) + .build() + + then: + noExceptionThrown() + runtimeWiring4.scalars.get("String") == Scalars.GraphQLString + + when: + def typeRuntimeWiring = TypeRuntimeWiring.newTypeWiring("Foo") + .strictMode(false) + .defaultDataFetcher(DF1) + .defaultDataFetcher(DF2) + .build() + + then: + noExceptionThrown() + typeRuntimeWiring.defaultDataFetcher == DF2 + } + + def "when strict mode on, do not allow default data fetcher redefinition"() { + DataFetcher DF1 = env -> "w" + DataFetcher DEFAULT_DF = env -> "x" + DataFetcher DEFAULT_DF2 = env -> "y" + + // Having a datafetcher and a default for the type is ok + when: + def runtimeWiring1 = RuntimeWiring.newRuntimeWiring() + .type(TypeRuntimeWiring.newTypeWiring("Foo").defaultDataFetcher(DEFAULT_DF)) + .type(TypeRuntimeWiring.newTypeWiring("Foo").dataFetcher("foo", DF1)) + .build() + + then: + runtimeWiring1.getDefaultDataFetcherForType("Foo") == DEFAULT_DF + + // Do not permit redefinition of the default datafetcher + when: + RuntimeWiring.newRuntimeWiring() + .type(TypeRuntimeWiring.newTypeWiring("Foo").defaultDataFetcher(DEFAULT_DF)) + .type(TypeRuntimeWiring.newTypeWiring("Foo").defaultDataFetcher(DEFAULT_DF2)) + .build() + + then: + def error = thrown(StrictModeWiringException) + error.message == "The type Foo already has a default data fetcher defined" } } diff --git a/src/test/groovy/graphql/schema/idl/SchemaGeneratorAppliedDirectiveHelperTest.groovy b/src/test/groovy/graphql/schema/idl/SchemaGeneratorAppliedDirectiveHelperTest.groovy index 824db92e15..f42cc49058 100644 --- a/src/test/groovy/graphql/schema/idl/SchemaGeneratorAppliedDirectiveHelperTest.groovy +++ b/src/test/groovy/graphql/schema/idl/SchemaGeneratorAppliedDirectiveHelperTest.groovy @@ -55,7 +55,9 @@ class SchemaGeneratorAppliedDirectiveHelperTest extends Specification { schema.getDirectives().collect {it.name}.sort() == [ "bar", "complex", + "defer", "deprecated", + "experimental_disableErrorPropagation", "foo", "include", "oneOf", @@ -105,7 +107,9 @@ class SchemaGeneratorAppliedDirectiveHelperTest extends Specification { schema.getDirectives().collect {it.name}.sort() == [ "bar", "complex", + "defer", "deprecated", + "experimental_disableErrorPropagation", "foo", "include", "oneOf", diff --git a/src/test/groovy/graphql/schema/idl/SchemaGeneratorTest.groovy b/src/test/groovy/graphql/schema/idl/SchemaGeneratorTest.groovy index d8895370c6..9eeed6c018 100644 --- a/src/test/groovy/graphql/schema/idl/SchemaGeneratorTest.groovy +++ b/src/test/groovy/graphql/schema/idl/SchemaGeneratorTest.groovy @@ -1770,7 +1770,8 @@ class SchemaGeneratorTest extends Specification { def appliedDirective = f1.getAppliedDirective("deprecated") appliedDirective.name == "deprecated" - appliedDirective.getArgument("reason").type == GraphQLString + appliedDirective.getArgument("reason").type instanceof GraphQLNonNull + (appliedDirective.getArgument("reason").type as GraphQLNonNull).wrappedType == GraphQLString printAst(appliedDirective.getArgument("reason").argumentValue.value as Node) == '"No longer supported"' when: @@ -1781,7 +1782,8 @@ class SchemaGeneratorTest extends Specification { def appliedDirective2 = f2.getAppliedDirective("deprecated") appliedDirective2.name == "deprecated" - appliedDirective2.getArgument("reason").type == GraphQLString + appliedDirective2.getArgument("reason").type instanceof GraphQLNonNull + (appliedDirective2.getArgument("reason").type as GraphQLNonNull).wrappedType == GraphQLString printAst(appliedDirective2.getArgument("reason").argumentValue.value as Node) == '"Just because"' def directive2 = f2.getDirective("deprecated") printAst(directive2.getArgument("reason").argumentDefaultValue.value as Node) == '"No longer supported"' @@ -2023,10 +2025,11 @@ class SchemaGeneratorTest extends Specification { directives = schema.getDirectives() then: - directives.size() == 8 // built in ones : include / skip and deprecated + directives.size() == 10 // built in ones : include / skip and deprecated def directiveNames = directives.collect { it.name } directiveNames.contains("include") directiveNames.contains("skip") + directiveNames.contains("defer") directiveNames.contains("deprecated") directiveNames.contains("specifiedBy") directiveNames.contains("oneOf") @@ -2038,9 +2041,10 @@ class SchemaGeneratorTest extends Specification { directivesMap = schema.getDirectivesByName() then: - directivesMap.size() == 8 // built in ones + directivesMap.size() == 10 // built in ones directivesMap.containsKey("include") directivesMap.containsKey("skip") + directivesMap.containsKey("defer") directivesMap.containsKey("deprecated") directivesMap.containsKey("oneOf") directivesMap.containsKey("sd1") @@ -2282,6 +2286,11 @@ class SchemaGeneratorTest extends Specification { DataFetcher get(DataFetcherFactoryEnvironment environment) { return df } + + @Override + DataFetcher get(GraphQLFieldDefinition fieldDefinition) { + return df + } } GraphQLCodeRegistry codeRegistry = newCodeRegistry() diff --git a/src/test/groovy/graphql/schema/idl/SchemaPrinterTest.groovy b/src/test/groovy/graphql/schema/idl/SchemaPrinterTest.groovy index 1cff3fffec..2870244328 100644 --- a/src/test/groovy/graphql/schema/idl/SchemaPrinterTest.groovy +++ b/src/test/groovy/graphql/schema/idl/SchemaPrinterTest.groovy @@ -965,16 +965,27 @@ type Query { // args and directives are sorted like the rest of the schema printer result == '''directive @argDirective on ARGUMENT_DEFINITION +"This directive allows results to be deferred during execution" +directive @defer( + "Deferred behaviour is controlled by this argument" + if: Boolean! = true, + "A unique label that represents the fragment being deferred" + label: String + ) on FRAGMENT_SPREAD | INLINE_FRAGMENT + "Marks the field, argument, input field or enum value as deprecated" directive @deprecated( "The reason for the deprecation" - reason: String = "No longer supported" + reason: String! = "No longer supported" ) on FIELD_DEFINITION | ARGUMENT_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION directive @enumTypeDirective on ENUM directive @enumValueDirective on ENUM_VALUE +"This directive disables error propagation when a non nullable field returns null for the given operation." +directive @experimental_disableErrorPropagation on QUERY | MUTATION | SUBSCRIPTION + directive @fieldDirective1 on FIELD_DEFINITION directive @fieldDirective2(argBool: Boolean, argFloat: Float, argInt: Int, argStr: String) on FIELD_DEFINITION @@ -1141,12 +1152,23 @@ input SomeInput { then: // args and directives are sorted like the rest of the schema printer - result == '''"Marks the field, argument, input field or enum value as deprecated" + result == '''"This directive allows results to be deferred during execution" +directive @defer( + "Deferred behaviour is controlled by this argument" + if: Boolean! = true, + "A unique label that represents the fragment being deferred" + label: String + ) on FRAGMENT_SPREAD | INLINE_FRAGMENT + +"Marks the field, argument, input field or enum value as deprecated" directive @deprecated( "The reason for the deprecation" - reason: String = "No longer supported" + reason: String! = "No longer supported" ) on FIELD_DEFINITION | ARGUMENT_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION +"This directive disables error propagation when a non nullable field returns null for the given operation." +directive @experimental_disableErrorPropagation on QUERY | MUTATION | SUBSCRIPTION + "Directs the executor to include this field or fragment only when the `if` argument is true" directive @include( "Included when true." @@ -1237,14 +1259,25 @@ type Query { def resultWithDirectives = new SchemaPrinter(defaultOptions().includeDirectives(true)).print(schema) then: - resultWithDirectives == '''"Marks the field, argument, input field or enum value as deprecated" + resultWithDirectives == '''"This directive allows results to be deferred during execution" +directive @defer( + "Deferred behaviour is controlled by this argument" + if: Boolean! = true, + "A unique label that represents the fragment being deferred" + label: String + ) on FRAGMENT_SPREAD | INLINE_FRAGMENT + +"Marks the field, argument, input field or enum value as deprecated" directive @deprecated( "The reason for the deprecation" - reason: String = "No longer supported" + reason: String! = "No longer supported" ) on FIELD_DEFINITION | ARGUMENT_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION directive @example on FIELD_DEFINITION +"This directive disables error propagation when a non nullable field returns null for the given operation." +directive @experimental_disableErrorPropagation on QUERY | MUTATION | SUBSCRIPTION + "Directs the executor to include this field or fragment only when the `if` argument is true" directive @include( "Included when true." @@ -1305,14 +1338,25 @@ type Query { def resultWithDirectiveDefinitions = new SchemaPrinter(defaultOptions().includeDirectiveDefinitions(true)).print(schema) then: - resultWithDirectiveDefinitions == '''"Marks the field, argument, input field or enum value as deprecated" + resultWithDirectiveDefinitions == '''"This directive allows results to be deferred during execution" +directive @defer( + "Deferred behaviour is controlled by this argument" + if: Boolean! = true, + "A unique label that represents the fragment being deferred" + label: String + ) on FRAGMENT_SPREAD | INLINE_FRAGMENT + +"Marks the field, argument, input field or enum value as deprecated" directive @deprecated( "The reason for the deprecation" - reason: String = "No longer supported" + reason: String! = "No longer supported" ) on FIELD_DEFINITION | ARGUMENT_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION directive @example on FIELD_DEFINITION +"This directive disables error propagation when a non nullable field returns null for the given operation." +directive @experimental_disableErrorPropagation on QUERY | MUTATION | SUBSCRIPTION + "Directs the executor to include this field or fragment only when the `if` argument is true" directive @include( "Included when true." @@ -1342,9 +1386,217 @@ type Query { ''' } + def "can print extend schema block when AST printing enabled"() { + def sdl = ''' + directive @schemaDirective on SCHEMA + + """ + My schema block description + """ + schema { + mutation: MyMutation + } + + extend schema @schemaDirective { + query: MyQuery + } + + extend schema { + subscription: MySubscription + } + + type MyQuery { + foo: String + } + + type MyMutation { + pizza: String + } + + type MySubscription { + chippies: String + } + ''' + + when: + def runtimeWiring = newRuntimeWiring().build() + + def options = SchemaGenerator.Options.defaultOptions() + def types = new SchemaParser().parse(sdl) + GraphQLSchema schema = new SchemaGenerator().makeExecutableSchema(options, types, runtimeWiring) + + def printOptions = defaultOptions() + .useAstDefinitions(true) + .includeSchemaDefinition(true) + def result = new SchemaPrinter(printOptions).print(schema) + + then: + result == '''""" +My schema block description +""" +schema { + mutation: MyMutation +} + +extend schema @schemaDirective { + query: MyQuery +} + +extend schema { + subscription: MySubscription +} + +"This directive allows results to be deferred during execution" +directive @defer( + "Deferred behaviour is controlled by this argument" + if: Boolean! = true, + "A unique label that represents the fragment being deferred" + label: String + ) on FRAGMENT_SPREAD | INLINE_FRAGMENT + +"Marks the field, argument, input field or enum value as deprecated" +directive @deprecated( + "The reason for the deprecation" + reason: String! = "No longer supported" + ) on FIELD_DEFINITION | ARGUMENT_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION + +"This directive disables error propagation when a non nullable field returns null for the given operation." +directive @experimental_disableErrorPropagation on QUERY | MUTATION | SUBSCRIPTION + +"Directs the executor to include this field or fragment only when the `if` argument is true" +directive @include( + "Included when true." + if: Boolean! + ) on FIELD | FRAGMENT_SPREAD | INLINE_FRAGMENT + +"Indicates an Input Object is a OneOf Input Object." +directive @oneOf on INPUT_OBJECT + +directive @schemaDirective on SCHEMA + +"Directs the executor to skip this field or fragment when the `if` argument is true." +directive @skip( + "Skipped when true." + if: Boolean! + ) on FIELD | FRAGMENT_SPREAD | INLINE_FRAGMENT + +"Exposes a URL that specifies the behaviour of this scalar." +directive @specifiedBy( + "The URL that specifies the behaviour of this scalar." + url: String! + ) on SCALAR + +type MyMutation { + pizza: String +} + +type MyQuery { + foo: String +} + +type MySubscription { + chippies: String +} +''' + } + + def "will not print extend schema block when AST printing not enabled"() { + def sdl = ''' + directive @schemaDirective on SCHEMA + + """ + My schema block description + """ + schema { + mutation: MyMutation + } + + extend schema @schemaDirective { + query: MyQuery + } + + type MyQuery { + foo: String + } + + type MyMutation { + pizza: String + } + ''' + + when: + def runtimeWiring = newRuntimeWiring().build() + + def options = SchemaGenerator.Options.defaultOptions() + def types = new SchemaParser().parse(sdl) + GraphQLSchema schema = new SchemaGenerator().makeExecutableSchema(options, types, runtimeWiring) + + def printOptions = defaultOptions() + .useAstDefinitions(false) + .includeSchemaDefinition(true) + def result = new SchemaPrinter(printOptions).print(schema) + + then: + result == '''"My schema block description" +schema @schemaDirective{ + query: MyQuery + mutation: MyMutation +} + +"This directive allows results to be deferred during execution" +directive @defer( + "Deferred behaviour is controlled by this argument" + if: Boolean! = true, + "A unique label that represents the fragment being deferred" + label: String + ) on FRAGMENT_SPREAD | INLINE_FRAGMENT + +"Marks the field, argument, input field or enum value as deprecated" +directive @deprecated( + "The reason for the deprecation" + reason: String! = "No longer supported" + ) on FIELD_DEFINITION | ARGUMENT_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION + +"This directive disables error propagation when a non nullable field returns null for the given operation." +directive @experimental_disableErrorPropagation on QUERY | MUTATION | SUBSCRIPTION + +"Directs the executor to include this field or fragment only when the `if` argument is true" +directive @include( + "Included when true." + if: Boolean! + ) on FIELD | FRAGMENT_SPREAD | INLINE_FRAGMENT + +"Indicates an Input Object is a OneOf Input Object." +directive @oneOf on INPUT_OBJECT + +directive @schemaDirective on SCHEMA + +"Directs the executor to skip this field or fragment when the `if` argument is true." +directive @skip( + "Skipped when true." + if: Boolean! + ) on FIELD | FRAGMENT_SPREAD | INLINE_FRAGMENT + +"Exposes a URL that specifies the behaviour of this scalar." +directive @specifiedBy( + "The URL that specifies the behaviour of this scalar." + url: String! + ) on SCALAR + +type MyMutation { + pizza: String +} + +type MyQuery { + foo: String +} +''' + } + def "can print a schema as AST elements"() { def sdl = ''' directive @directive1 on SCALAR + type Query { foo : String } @@ -1442,14 +1694,25 @@ type Query { def result = new SchemaPrinter(printOptions).print(schema) then: - result == '''"Marks the field, argument, input field or enum value as deprecated" + result == '''"This directive allows results to be deferred during execution" +directive @defer( + "Deferred behaviour is controlled by this argument" + if: Boolean! = true, + "A unique label that represents the fragment being deferred" + label: String + ) on FRAGMENT_SPREAD | INLINE_FRAGMENT + +"Marks the field, argument, input field or enum value as deprecated" directive @deprecated( "The reason for the deprecation" - reason: String = "No longer supported" + reason: String! = "No longer supported" ) on FIELD_DEFINITION | ARGUMENT_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION directive @directive1 on SCALAR +"This directive disables error propagation when a non nullable field returns null for the given operation." +directive @experimental_disableErrorPropagation on QUERY | MUTATION | SUBSCRIPTION + "Directs the executor to include this field or fragment only when the `if` argument is true" directive @include( "Included when true." @@ -1687,7 +1950,7 @@ type Query { result == '''"Marks the field, argument, input field or enum value as deprecated" directive @deprecated( "The reason for the deprecation" - reason: String = "No longer supported" + reason: String! = "No longer supported" ) on FIELD_DEFINITION | ARGUMENT_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION type Query { @@ -1978,12 +2241,23 @@ type PrintMeType { query: MyQuery } +"This directive allows results to be deferred during execution" +directive @defer( + "Deferred behaviour is controlled by this argument" + if: Boolean! = true, + "A unique label that represents the fragment being deferred" + label: String + ) on FRAGMENT_SPREAD | INLINE_FRAGMENT + "Marks the field, argument, input field or enum value as deprecated" directive @deprecated( "The reason for the deprecation" - reason: String = "No longer supported" + reason: String! = "No longer supported" ) on FIELD_DEFINITION | ARGUMENT_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION +"This directive disables error propagation when a non nullable field returns null for the given operation." +directive @experimental_disableErrorPropagation on QUERY | MUTATION | SUBSCRIPTION + directive @foo on SCHEMA "Directs the executor to include this field or fragment only when the `if` argument is true" @@ -2210,12 +2484,23 @@ directive @include( if: Boolean! ) on FIELD | FRAGMENT_SPREAD | INLINE_FRAGMENT +"This directive disables error propagation when a non nullable field returns null for the given operation." +directive @experimental_disableErrorPropagation on QUERY | MUTATION | SUBSCRIPTION + "Marks the field, argument, input field or enum value as deprecated" directive @deprecated( "The reason for the deprecation" - reason: String = "No longer supported" + reason: String! = "No longer supported" ) on FIELD_DEFINITION | ARGUMENT_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION +"This directive allows results to be deferred during execution" +directive @defer( + "A unique label that represents the fragment being deferred" + label: String, + "Deferred behaviour is controlled by this argument" + if: Boolean! = true + ) on FRAGMENT_SPREAD | INLINE_FRAGMENT + union ZUnion = XQuery | Query scalar ZScalar @@ -2326,16 +2611,27 @@ schema { mutation: Mutation } +"This directive allows results to be deferred during execution" +directive @defer( + "Deferred behaviour is controlled by this argument" + if: Boolean! = true, + "A unique label that represents the fragment being deferred" + label: String + ) on FRAGMENT_SPREAD | INLINE_FRAGMENT + "Marks the field, argument, input field or enum value as deprecated" directive @deprecated( "The reason for the deprecation" - reason: String = "No longer supported" + reason: String! = "No longer supported" ) on FIELD_DEFINITION | ARGUMENT_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION " custom directive 'example' description 1" # custom directive 'example' comment 1 directive @example on ENUM_VALUE +"This directive disables error propagation when a non nullable field returns null for the given operation." +directive @experimental_disableErrorPropagation on QUERY | MUTATION | SUBSCRIPTION + "Directs the executor to include this field or fragment only when the `if` argument is true" directive @include( "Included when true." @@ -2563,15 +2859,26 @@ schema { mutation: Mutation } +"This directive allows results to be deferred during execution" +directive @defer( + "Deferred behaviour is controlled by this argument" + if: Boolean! = true, + "A unique label that represents the fragment being deferred" + label: String + ) on FRAGMENT_SPREAD | INLINE_FRAGMENT + "Marks the field, argument, input field or enum value as deprecated" directive @deprecated( "The reason for the deprecation" - reason: String = "No longer supported" + reason: String! = "No longer supported" ) on FIELD_DEFINITION | ARGUMENT_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION " custom directive 'example' description 1" directive @example on ENUM_VALUE +"This directive disables error propagation when a non nullable field returns null for the given operation." +directive @experimental_disableErrorPropagation on QUERY | MUTATION | SUBSCRIPTION + "Directs the executor to include this field or fragment only when the `if` argument is true" directive @include( "Included when true." @@ -2751,12 +3058,23 @@ input Input { expect: "has no skip definition" - result == """"Marks the field, argument, input field or enum value as deprecated" + result == """"This directive allows results to be deferred during execution" +directive @defer( + "Deferred behaviour is controlled by this argument" + if: Boolean! = true, + "A unique label that represents the fragment being deferred" + label: String + ) on FRAGMENT_SPREAD | INLINE_FRAGMENT + +"Marks the field, argument, input field or enum value as deprecated" directive @deprecated( "The reason for the deprecation" - reason: String = "No longer supported" + reason: String! = "No longer supported" ) on FIELD_DEFINITION | ARGUMENT_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION +"This directive disables error propagation when a non nullable field returns null for the given operation." +directive @experimental_disableErrorPropagation on QUERY | MUTATION | SUBSCRIPTION + "Directs the executor to include this field or fragment only when the `if` argument is true" directive @include( "Included when true." diff --git a/src/test/groovy/graphql/schema/idl/SchemaTypeCheckerTest.groovy b/src/test/groovy/graphql/schema/idl/SchemaTypeCheckerTest.groovy index 59e027073b..b558c97c85 100644 --- a/src/test/groovy/graphql/schema/idl/SchemaTypeCheckerTest.groovy +++ b/src/test/groovy/graphql/schema/idl/SchemaTypeCheckerTest.groovy @@ -21,7 +21,6 @@ import spock.lang.Unroll import static graphql.schema.GraphQLScalarType.newScalar import static graphql.schema.idl.errors.DirectiveIllegalArgumentTypeError.DUPLICATED_KEYS_MESSAGE import static graphql.schema.idl.errors.DirectiveIllegalArgumentTypeError.EXPECTED_ENUM_MESSAGE -import static graphql.schema.idl.errors.DirectiveIllegalArgumentTypeError.EXPECTED_LIST_MESSAGE import static graphql.schema.idl.errors.DirectiveIllegalArgumentTypeError.EXPECTED_NON_NULL_MESSAGE import static graphql.schema.idl.errors.DirectiveIllegalArgumentTypeError.EXPECTED_OBJECT_MESSAGE import static graphql.schema.idl.errors.DirectiveIllegalArgumentTypeError.MISSING_REQUIRED_FIELD_MESSAGE @@ -1512,13 +1511,14 @@ class SchemaTypeCheckerTest extends Specification { allowedArgType | argValue | detailedMessage "ACustomDate" | '"AFailingDate"' | format(NOT_A_VALID_SCALAR_LITERAL_MESSAGE, "ACustomDate") + "[String]" | 123 | format(NOT_A_VALID_SCALAR_LITERAL_MESSAGE, "String") "[String!]" | '["str", null]' | format(EXPECTED_NON_NULL_MESSAGE) "[[String!]!]" | '[["str"], ["str2", null]]' | format(EXPECTED_NON_NULL_MESSAGE) + "[[String!]!]" | '[["str"], ["str2", "str3"], null]' | format(EXPECTED_NON_NULL_MESSAGE) "WEEKDAY" | '"somestr"' | format(EXPECTED_ENUM_MESSAGE, "StringValue") "WEEKDAY" | 'SATURDAY' | format(MUST_BE_VALID_ENUM_VALUE_MESSAGE, "SATURDAY", "MONDAY,TUESDAY") "UserInput" | '{ fieldNonNull: "str", fieldNonNull: "dupeKey" }' | format(DUPLICATED_KEYS_MESSAGE, "fieldNonNull") "UserInput" | '{ fieldNonNull: "str", unknown: "field" }' | format(UNKNOWN_FIELDS_MESSAGE, "unknown", "UserInput") - "UserInput" | '{ fieldNonNull: "str", fieldArrayOfArray: ["ArrayInsteadOfArrayOfArray"] }' | format(EXPECTED_LIST_MESSAGE, "StringValue") "UserInput" | '{ fieldNonNull: "str", fieldNestedInput: "strInsteadOfObject" }' | format(EXPECTED_OBJECT_MESSAGE, "StringValue") "UserInput" | '{ field: "missing the `fieldNonNull` entry"}' | format(MISSING_REQUIRED_FIELD_MESSAGE, "fieldNonNull") } @@ -1568,8 +1568,11 @@ class SchemaTypeCheckerTest extends Specification { "ACustomDate" | '2002' "[String]" | '["str", null]' "[String]" | 'null' + "[String]" | '"str"' // see #2001 "[String!]!" | '["str"]' "[[String!]!]" | '[["str"], ["str2", "str3"]]' + "[[String]]" | '[["str"], ["str2", null], null]' + "[[String!]]" | '[["str"], ["str2", "str3"], null]' "WEEKDAY" | 'MONDAY' "UserInput" | '{ fieldNonNull: "str" }' "UserInput" | '{ fieldNonNull: "str", fieldString: "Hey" }' diff --git a/src/test/groovy/graphql/schema/idl/TestLiveMockedWiringFactory.groovy b/src/test/groovy/graphql/schema/idl/TestLiveMockedWiringFactory.groovy index 476c13ac13..fe12c3a1b1 100644 --- a/src/test/groovy/graphql/schema/idl/TestLiveMockedWiringFactory.groovy +++ b/src/test/groovy/graphql/schema/idl/TestLiveMockedWiringFactory.groovy @@ -12,6 +12,7 @@ import graphql.schema.GraphQLScalarType import graphql.schema.GraphQLTypeUtil import graphql.schema.GraphQLUnionType import graphql.schema.PropertyDataFetcher +import graphql.schema.SingletonPropertyDataFetcher import graphql.schema.TypeResolver class TestLiveMockedWiringFactory implements WiringFactory { @@ -74,7 +75,7 @@ class TestLiveMockedWiringFactory implements WiringFactory { @Override DataFetcher getDataFetcher(FieldWiringEnvironment environment) { - return new PropertyDataFetcher(environment.getFieldDefinition().getName()) + return SingletonPropertyDataFetcher.singleton() } @Override diff --git a/src/test/groovy/graphql/schema/idl/TestMockedWiringFactory.groovy b/src/test/groovy/graphql/schema/idl/TestMockedWiringFactory.groovy index 9082c7b79b..827fadafbb 100644 --- a/src/test/groovy/graphql/schema/idl/TestMockedWiringFactory.groovy +++ b/src/test/groovy/graphql/schema/idl/TestMockedWiringFactory.groovy @@ -49,12 +49,8 @@ class TestMockedWiringFactory implements WiringFactory { @Override boolean providesDataFetcher(FieldWiringEnvironment environment) { - return true - } - - @Override - DataFetcher getDataFetcher(FieldWiringEnvironment environment) { - return new PropertyDataFetcher(environment.getFieldDefinition().getName()) + // rely on defaulting in code registry + return false } @Override diff --git a/src/test/groovy/graphql/schema/idl/TypeRuntimeWiringTest.groovy b/src/test/groovy/graphql/schema/idl/TypeRuntimeWiringTest.groovy index 2a833ace22..006258cdb3 100644 --- a/src/test/groovy/graphql/schema/idl/TypeRuntimeWiringTest.groovy +++ b/src/test/groovy/graphql/schema/idl/TypeRuntimeWiringTest.groovy @@ -7,42 +7,41 @@ import spock.lang.Specification class TypeRuntimeWiringTest extends Specification { void setup() { - TypeRuntimeWiring.setStrictModeJvmWide(false) + TypeRuntimeWiring.setStrictModeJvmWide(true) } void cleanup() { - TypeRuntimeWiring.setStrictModeJvmWide(false) + TypeRuntimeWiring.setStrictModeJvmWide(true) } DataFetcher DF1 = env -> "x" DataFetcher DF2 = env -> "y" - def "strict mode is off by default"() { + def "strict mode is on by default"() { when: - def typeRuntimeWiring = TypeRuntimeWiring.newTypeWiring("Foo") + TypeRuntimeWiring.newTypeWiring("Foo") .dataFetcher("foo", DF1) .dataFetcher("foo", DF2) .build() then: - typeRuntimeWiring.getFieldDataFetchers().get("foo") == DF2 + def e = thrown(StrictModeWiringException) + e.message == "The field foo already has a data fetcher defined" } - def "strict mode can be turned on"() { + def "strict mode can be turned off"() { when: - TypeRuntimeWiring.newTypeWiring("Foo") - .strictMode() + def typeRuntimeWiring = TypeRuntimeWiring.newTypeWiring("Foo") + .strictMode(false) .dataFetcher("foo", DF1) .dataFetcher("foo", DF2) .build() then: - def e = thrown(StrictModeWiringException) - e.message == "The field foo already has a data fetcher defined" + typeRuntimeWiring.getFieldDataFetchers().get("foo") == DF2 } - def "strict mode can be turned on for maps of fields"() { + def "strict mode, on by default, works for maps of fields"() { when: TypeRuntimeWiring.newTypeWiring("Foo") - .strictMode() .dataFetcher("foo", DF1) .dataFetchers(["foo": DF2]) .build() @@ -51,17 +50,14 @@ class TypeRuntimeWiringTest extends Specification { e.message == "The field foo already has a data fetcher defined" } - def "strict mode can be turned on JVM wide"() { - - + def "strict mode can be turned off and on JVM wide"() { when: def inStrictMode = TypeRuntimeWiring.getStrictModeJvmWide() then: - !inStrictMode - + inStrictMode when: - TypeRuntimeWiring.setStrictModeJvmWide(true) + TypeRuntimeWiring.setStrictModeJvmWide(false) inStrictMode = TypeRuntimeWiring.getStrictModeJvmWide() TypeRuntimeWiring.newTypeWiring("Foo") @@ -69,20 +65,21 @@ class TypeRuntimeWiringTest extends Specification { .dataFetcher("foo", DF2) .build() then: - inStrictMode - def e = thrown(StrictModeWiringException) - e.message == "The field foo already has a data fetcher defined" + !inStrictMode + noExceptionThrown() when: - TypeRuntimeWiring.setStrictModeJvmWide(false) + TypeRuntimeWiring.setStrictModeJvmWide(true) inStrictMode = TypeRuntimeWiring.getStrictModeJvmWide() TypeRuntimeWiring.newTypeWiring("Foo") .dataFetcher("foo", DF1) .dataFetcher("foo", DF2) .build() + then: - !inStrictMode - noExceptionThrown() + inStrictMode + def e = thrown(StrictModeWiringException) + e.message == "The field foo already has a data fetcher defined" } } diff --git a/src/test/groovy/graphql/schema/validation/AppliedDirectivesAreValidTest.groovy b/src/test/groovy/graphql/schema/validation/AppliedDirectivesAreValidTest.groovy index e5fd25747f..f5a2136bba 100644 --- a/src/test/groovy/graphql/schema/validation/AppliedDirectivesAreValidTest.groovy +++ b/src/test/groovy/graphql/schema/validation/AppliedDirectivesAreValidTest.groovy @@ -1,8 +1,16 @@ package graphql.schema.validation import graphql.TestUtil +import graphql.schema.FieldCoordinates import spock.lang.Specification +import static graphql.Scalars.GraphQLString +import static graphql.TestUtil.mkDirective +import static graphql.introspection.Introspection.DirectiveLocation.FIELD_DEFINITION +import static graphql.schema.GraphQLFieldDefinition.newFieldDefinition +import static graphql.schema.GraphQLObjectType.newObject +import static graphql.schema.GraphQLSchema.newSchema + class AppliedDirectivesAreValidTest extends Specification { def "non repeatable directives cannot be repeated"() { @@ -44,11 +52,72 @@ class AppliedDirectivesAreValidTest extends Specification { then: def schemaProblem = thrown(InvalidSchemaException) schemaProblem.getErrors().size() == 5 - hasError(schemaProblem, "The directive 'directiveA' on the 'GraphQLFieldDefinition' called 'fieldC' is a non repeatable directive but has been applied 2 times"); - hasError(schemaProblem, "The directive 'directiveA' on the 'GraphQLFieldDefinition' called 'fieldD' is a non repeatable directive but has been applied 2 times"); - hasError(schemaProblem, "The directive 'directiveA' on the 'GraphQLFieldDefinition' called 'fieldA' is a non repeatable directive but has been applied 2 times"); - hasError(schemaProblem, "The directive 'directiveA' on the 'GraphQLEnumValueDefinition' called 'enumA' is a non repeatable directive but has been applied 2 times"); - hasError(schemaProblem, "The directive 'directiveA' on the 'GraphQLInputObjectField' called 'inputFieldA' is a non repeatable directive but has been applied 2 times"); + hasError(schemaProblem, "The directive 'directiveA' on the 'GraphQLFieldDefinition' called 'fieldC' is a non repeatable directive but has been applied 2 times") + hasError(schemaProblem, "The directive 'directiveA' on the 'GraphQLFieldDefinition' called 'fieldD' is a non repeatable directive but has been applied 2 times") + hasError(schemaProblem, "The directive 'directiveA' on the 'GraphQLFieldDefinition' called 'fieldA' is a non repeatable directive but has been applied 2 times") + hasError(schemaProblem, "The directive 'directiveA' on the 'GraphQLEnumValueDefinition' called 'enumA' is a non repeatable directive but has been applied 2 times") + hasError(schemaProblem, "The directive 'directiveA' on the 'GraphQLInputObjectField' called 'inputFieldA' is a non repeatable directive but has been applied 2 times") + } + + def "applied directive builders do not clear any existing applied directives"() { + given: + def directive1 = mkDirective("myDirectiveName1", FIELD_DEFINITION) + def directive2 = mkDirective("myDirectiveName2", FIELD_DEFINITION) + def field = newFieldDefinition() + .name("hello") + .type(GraphQLString) + .withAppliedDirectives(directive1.toAppliedDirective()) + .withAppliedDirectives(directive2.toAppliedDirective()) + .build() + + when: + def schema = newSchema() + .query( + newObject() + .name("Query") + .field(field) + .build() + ) + .additionalDirective(directive1) + .additionalDirective(directive2) + .build() + + then: + def fieldAppliedDirectives = schema.getFieldDefinition(FieldCoordinates.coordinates("Query", "hello")).getAppliedDirectives() + fieldAppliedDirectives.size() == 2 + fieldAppliedDirectives.any { it.name == "myDirectiveName1" } + fieldAppliedDirectives.any { it.name == "myDirectiveName2" } + } + + def "replace applied directive builder does clear and replace existing applied directives"() { + given: + def directive1 = mkDirective("myDirectiveName1", FIELD_DEFINITION) + def directive2 = mkDirective("myDirectiveName2", FIELD_DEFINITION) + def field = newFieldDefinition() + .name("hello") + .type(GraphQLString) + .withAppliedDirective(directive1.toAppliedDirective()) + .replaceAppliedDirectives(List.of(directive2.toAppliedDirective())) + .build() + + when: + def schema = newSchema() + .query( + newObject() + .name("Query") + .field(field) + .build() + ) + .additionalDirective(directive1) + .additionalDirective(directive2) + .build() + + then: + // As prior applied directives are cleared, there is only 1 applied directive left on the field (directive container) + def fieldAppliedDirectives = schema.getFieldDefinition(FieldCoordinates.coordinates("Query", "hello")).getAppliedDirectives() + fieldAppliedDirectives.size() == 1 + fieldAppliedDirectives.find { it.name == "myDirectiveName1" } == null + fieldAppliedDirectives.any { it.name == "myDirectiveName2" } } static boolean hasError(InvalidSchemaException schemaException, String msg) { diff --git a/src/test/groovy/graphql/schema/validation/DeprecatedInputObjectAndArgumentsAreValidTest.groovy b/src/test/groovy/graphql/schema/validation/DeprecatedInputObjectAndArgumentsAreValidTest.groovy new file mode 100644 index 0000000000..056f134db4 --- /dev/null +++ b/src/test/groovy/graphql/schema/validation/DeprecatedInputObjectAndArgumentsAreValidTest.groovy @@ -0,0 +1,296 @@ +package graphql.schema.validation + +import graphql.TestUtil +import spock.lang.Specification + +class DeprecatedInputObjectAndArgumentsAreValidTest extends Specification { + + def "required input field cannot be deprecated"() { + def sdl = ''' + type Query { + pizza(name: String!): String + } + + type Mutation { + updatePizza(pizzaInfo: PizzaInfo!): String + } + + input PizzaInfo { + name: String! + pineapples: Boolean! @deprecated(reason: "Don't need this input field") + spicy: Boolean @deprecated(reason: "Don't need this nullable input field") + } + ''' + + when: + TestUtil.schema(sdl) + + then: + def schemaProblem = thrown(InvalidSchemaException) + schemaProblem.getErrors().size() == 1 + schemaProblem.getErrors().first().description == "Required input field 'PizzaInfo.pineapples' cannot be deprecated." + } + + def "multiple required input fields cannot be deprecated"() { + def sdl = ''' + type Query { + pizza(name: String!): String + } + + type Mutation { + updatePizza(pizzaInfo: PizzaInfo!): String + } + + input PizzaInfo { + name: String! + pineapples: Boolean! @deprecated(reason: "Don't need this input field") + spicy: Boolean! @deprecated(reason: "Don't need this input field") + } + ''' + + when: + TestUtil.schema(sdl) + + then: + def schemaProblem = thrown(InvalidSchemaException) + schemaProblem.getErrors().size() == 2 + schemaProblem.getErrors()[0].description == "Required input field 'PizzaInfo.pineapples' cannot be deprecated." + schemaProblem.getErrors()[1].description == "Required input field 'PizzaInfo.spicy' cannot be deprecated." + } + + def "required input field list cannot be deprecated"() { + def sdl = ''' + type Query { + pizza(name: String!): String + } + + type Mutation { + updatePizza(pizzaInfos: [PizzaInfo]!): String + } + + input PizzaInfo { + name: String! + pineapples: Boolean! @deprecated(reason: "Don't need this input field") + } + ''' + + when: + TestUtil.schema(sdl) + + then: + def schemaProblem = thrown(InvalidSchemaException) + schemaProblem.getErrors().size() == 1 + schemaProblem.getErrors().first().description == "Required input field 'PizzaInfo.pineapples' cannot be deprecated." + } + + def "nullable input field can be deprecated"() { + def sdl = ''' + type Query { + pizza(name: String!): String + } + + type Mutation { + updatePizza(pizzaInfo: PizzaInfo!): String + } + + input PizzaInfo { + name: String! + pineapples: Boolean @deprecated(reason: "Don't need this input field") + } + ''' + + when: + TestUtil.schema(sdl) + + then: + noExceptionThrown() + } + + def "non-nullable input field with default value can be deprecated"() { + def sdl = ''' + type Query { + pizza(name: String!): String + } + + type Mutation { + updatePizza(pizzaInfo: PizzaInfo!): String + } + + input PizzaInfo { + name: String! + pineapples: Boolean! = false @deprecated(reason: "Don't need this input field") + } + ''' + + when: + TestUtil.schema(sdl) + + then: + noExceptionThrown() + } + + def "required field argument cannot be deprecated"() { + def sdl = ''' + type Query { + pizza(name: String!): String + } + + type Mutation { + updatePizza(name: String!, pineapples: Boolean! @deprecated(reason: "Don't need this field argument")): String + } + ''' + + when: + TestUtil.schema(sdl) + + then: + def schemaProblem = thrown(InvalidSchemaException) + schemaProblem.getErrors().size() == 1 + schemaProblem.getErrors().first().description == "Required argument 'pineapples' on field 'updatePizza' cannot be deprecated." + } + + def "multiple required field arguments cannot be deprecated"() { + def sdl = ''' + type Query { + pizza(name: String!): String + } + + type Mutation { + updatePizza(name: String! @deprecated(reason: "yeah nah"), pineapples: Boolean! @deprecated(reason: "Don't need this field argument")): String + } + ''' + + when: + TestUtil.schema(sdl) + + then: + def schemaProblem = thrown(InvalidSchemaException) + schemaProblem.getErrors().size() == 2 + schemaProblem.getErrors()[0].description == "Required argument 'name' on field 'updatePizza' cannot be deprecated." + schemaProblem.getErrors()[1].description == "Required argument 'pineapples' on field 'updatePizza' cannot be deprecated." + } + + def "nullable field argument can be deprecated"() { + def sdl = ''' + type Query { + pizza(name: String!): String + } + + type Mutation { + updatePizza(name: String!, pineapples: Boolean @deprecated(reason: "Don't need this field argument")): String + } + ''' + + when: + TestUtil.schema(sdl) + + then: + noExceptionThrown() + } + + def "non-nullable field argument with default value can be deprecated"() { + def sdl = ''' + type Query { + pizza(name: String!): String + } + + type Mutation { + updatePizza(name: String!, pineapples: Boolean! = false @deprecated(reason: "Don't need this field argument")): String + } + ''' + + when: + TestUtil.schema(sdl) + + then: + noExceptionThrown() + } + + def "required directive argument cannot be deprecated"() { + def sdl = ''' + directive @pizzaDirective(name: String!, likesPineapples: Boolean! @deprecated(reason: "Don't need this directive argument")) on FIELD_DEFINITION + + type Query { + pizza(name: String!): String @pizzaDirective(name: "Stefano", likesPineapples: false) + } + + type Mutation { + updatePizza(name: String!, pineapples: Boolean!): String + } + ''' + + when: + TestUtil.schema(sdl) + + then: + def schemaProblem = thrown(InvalidSchemaException) + schemaProblem.getErrors().size() == 1 + schemaProblem.getErrors().first().description == "Required argument 'likesPineapples' on directive 'pizzaDirective' cannot be deprecated." + } + + def "multiple required directive arguments cannot be deprecated"() { + def sdl = ''' + directive @pizzaDirective(name: String! @deprecated, likesPineapples: Boolean! @deprecated(reason: "Don't need this directive argument")) on FIELD_DEFINITION + + type Query { + pizza(name: String!): String @pizzaDirective(name: "Stefano", likesPineapples: false) + } + + type Mutation { + updatePizza(name: String!, pineapples: Boolean!): String + } + ''' + + when: + TestUtil.schema(sdl) + + then: + def schemaProblem = thrown(InvalidSchemaException) + schemaProblem.getErrors().size() == 2 + schemaProblem.getErrors()[0].description == "Required argument 'name' on directive 'pizzaDirective' cannot be deprecated." + schemaProblem.getErrors()[1].description == "Required argument 'likesPineapples' on directive 'pizzaDirective' cannot be deprecated." + } + + def "nullable directive argument can be deprecated"() { + def sdl = ''' + directive @pizzaDirective(name: String!, likesPineapples: Boolean @deprecated(reason: "Don't need this directive argument")) on FIELD_DEFINITION + + type Query { + pizza(name: String!): String @pizzaDirective(name: "Stefano", likesPineapples: false) + } + + type Mutation { + updatePizza(name: String!, pineapples: Boolean!): String + } + + ''' + + when: + TestUtil.schema(sdl) + + then: + noExceptionThrown() + } + + def "non-nullable directive argument with default value can be deprecated"() { + def sdl = ''' + directive @pizzaDirective(name: String!, likesPineapples: Boolean! = false @deprecated(reason: "Don't need this directive argument")) on FIELD_DEFINITION + + type Query { + pizza(name: String!): String @pizzaDirective(name: "Stefano", likesPineapples: false) + } + + type Mutation { + updatePizza(name: String!, pineapples: Boolean!): String + } + + ''' + + when: + TestUtil.schema(sdl) + + then: + noExceptionThrown() + } + +} diff --git a/src/test/groovy/graphql/schema/validation/SchemaValidatorTest.groovy b/src/test/groovy/graphql/schema/validation/SchemaValidatorTest.groovy index 6efd8acbe8..706542df8d 100644 --- a/src/test/groovy/graphql/schema/validation/SchemaValidatorTest.groovy +++ b/src/test/groovy/graphql/schema/validation/SchemaValidatorTest.groovy @@ -11,7 +11,7 @@ class SchemaValidatorTest extends Specification { def validator = new SchemaValidator() def rules = validator.rules then: - rules.size() == 8 + rules.size() == 9 rules[0] instanceof NoUnbrokenInputCycles rules[1] instanceof TypesImplementInterfaces rules[2] instanceof TypeAndFieldRule @@ -20,5 +20,6 @@ class SchemaValidatorTest extends Specification { rules[5] instanceof AppliedDirectiveArgumentsAreValid rules[6] instanceof InputAndOutputTypesUsedAppropriately rules[7] instanceof OneOfInputObjectRules + rules[8] instanceof DeprecatedInputObjectAndArgumentsAreValid } } diff --git a/src/test/groovy/graphql/util/AnonymizerTest.groovy b/src/test/groovy/graphql/util/AnonymizerTest.groovy index 439132eda3..48f5ecde40 100644 --- a/src/test/groovy/graphql/util/AnonymizerTest.groovy +++ b/src/test/groovy/graphql/util/AnonymizerTest.groovy @@ -729,8 +729,12 @@ type Object1 { directive @Directive1(argument1: String! = "stringValue4") repeatable on SCHEMA | SCALAR | OBJECT | FIELD_DEFINITION | ARGUMENT_DEFINITION | INTERFACE | UNION | ENUM | ENUM_VALUE | INPUT_OBJECT | INPUT_FIELD_DEFINITION - directive @deprecated(reason: String) on FIELD_DEFINITION | ARGUMENT_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION - + "Marks the field, argument, input field or enum value as deprecated" + directive @deprecated( + "The reason for the deprecation" + reason: String! = "No longer supported" + ) on FIELD_DEFINITION | ARGUMENT_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION + interface Interface1 @Directive1(argument1 : "stringValue12") { field2: String field3: Enum1 diff --git a/src/test/groovy/graphql/util/FpKitTest.groovy b/src/test/groovy/graphql/util/FpKitTest.groovy index 455e9b57a1..21dad8ef1f 100644 --- a/src/test/groovy/graphql/util/FpKitTest.groovy +++ b/src/test/groovy/graphql/util/FpKitTest.groovy @@ -1,6 +1,6 @@ package graphql.util - +import com.google.common.collect.ImmutableList import spock.lang.Specification import java.util.function.Supplier @@ -98,21 +98,115 @@ class FpKitTest extends Specification { l == ["Parrot"] } + class Person { + String name + String city + + Person(String name) { + this.name = name + } + + Person(String name, String city) { + this.name = name + this.city = city + } + + String getName() { + return name + } + + String getCity() { + return city + } + } + + def a = new Person("a", "New York") + def b = new Person("b", "New York") + def c1 = new Person("c", "Sydney") + def c2 = new Person("c", "London") + + def "getByName tests"() { + + when: + def map = FpKit.getByName([a, b, c1, c2], { it -> it.getName() }) + then: + map == ["a": a, "b": b, c: c1] + + when: + map = FpKit.getByName([a, b, c1, c2], { it -> it.getName() }, { it1, it2 -> it2 }) + then: + map == ["a": a, "b": b, c: c2] + } + + def "groupingBy tests"() { + + when: + Map> map = FpKit.groupingBy([a, b, c1, c2], { it -> it.getCity() }) + then: + map == ["New York": [a, b], "Sydney": [c1], "London": [c2]] + + when: + map = FpKit.filterAndGroupingBy([a, b, c1, c2], { it -> it != c1 }, { it -> it.getCity() }) + then: + map == ["New York": [a, b], "London": [c2]] + + } + + def "toMapByUniqueKey works"() { + + when: + Map map = FpKit.toMapByUniqueKey([a, b, c1], { it -> it.getName() }) + then: + map == ["a": a, "b": b, "c": c1] + + when: + FpKit.toMapByUniqueKey([a, b, c1, c2], { it -> it.getName() }) + then: + def e = thrown(IllegalStateException.class) + e.message.contains("Duplicate key") + } + + def "findOne test"() { + when: + def opt = FpKit.findOne([a, b, c1, c2], { it -> it.getName() == "c" }) + then: + opt.isPresent() + opt.get() == c1 + + when: + opt = FpKit.findOne([a, b, c1, c2], { it -> it.getName() == "d" }) + then: + opt.isEmpty() + + when: + opt = FpKit.findOne([a, b, c1, c2], { it -> it.getName() == "a" }) + then: + opt.isPresent() + opt.get() == a + } + + def "filterList works"() { + when: + def list = FpKit.filterList([a, b, c1, c2], { it -> it.getName() == "c" }) + then: + list == [c1, c2] + } + def "set intersection works"() { - def set1 = ["A","B","C"] as Set - def set2 = ["A","C","D"] as Set + def set1 = ["A", "B", "C"] as Set + def set2 = ["A", "C", "D"] as Set def singleSetA = ["A"] as Set - def disjointSet = ["X","Y"] as Set + def disjointSet = ["X", "Y"] as Set when: def intersection = FpKit.intersection(set1, set2) then: - intersection == ["A","C"] as Set + intersection == ["A", "C"] as Set when: // reversed parameters intersection = FpKit.intersection(set2, set1) then: - intersection == ["A","C"] as Set + intersection == ["A", "C"] as Set when: // singles intersection = FpKit.intersection(set1, singleSetA) @@ -130,8 +224,15 @@ class FpKitTest extends Specification { intersection.isEmpty() when: // disjoint reversed - intersection = FpKit.intersection(disjointSet,set1) + intersection = FpKit.intersection(disjointSet, set1) then: intersection.isEmpty() } + + def "test sized allocation"() { + when: + def newArrayList = FpKit.arrayListSizedTo(["a", "b", "c"]) + then: + newArrayList instanceof ArrayList + } } diff --git a/src/test/groovy/graphql/validation/ValidationUtilTest.groovy b/src/test/groovy/graphql/validation/ValidationUtilTest.groovy index 3373809109..251362b09a 100644 --- a/src/test/groovy/graphql/validation/ValidationUtilTest.groovy +++ b/src/test/groovy/graphql/validation/ValidationUtilTest.groovy @@ -19,8 +19,11 @@ import graphql.schema.GraphQLInputObjectType import graphql.schema.GraphQLSchema import spock.lang.Specification +import static graphql.Directives.OneOfDirective import static graphql.Scalars.GraphQLBoolean import static graphql.Scalars.GraphQLString +import static graphql.language.ObjectField.newObjectField +import static graphql.schema.GraphQLAppliedDirective.newDirective import static graphql.schema.GraphQLList.list import static graphql.schema.GraphQLNonNull.nonNull @@ -91,7 +94,7 @@ class ValidationUtilTest extends Specification { def type = list(GraphQLString) expect: - !validationUtil.isValidLiteralValue(arrayValue, type,schema,graphQLContext, locale) + !validationUtil.isValidLiteralValue(arrayValue, type, schema, graphQLContext, locale) } def "One value is a single element List"() { @@ -99,7 +102,7 @@ class ValidationUtilTest extends Specification { def singleValue = new BooleanValue(true) def type = list(GraphQLBoolean) expect: - validationUtil.isValidLiteralValue(singleValue, type,schema,graphQLContext,locale) + validationUtil.isValidLiteralValue(singleValue, type, schema, graphQLContext, locale) } def "a valid array"() { @@ -108,7 +111,7 @@ class ValidationUtilTest extends Specification { def type = list(GraphQLString) expect: - validationUtil.isValidLiteralValue(arrayValue, type,schema, graphQLContext,locale) + validationUtil.isValidLiteralValue(arrayValue, type, schema, graphQLContext, locale) } def "a valid scalar"() { @@ -150,14 +153,14 @@ class ValidationUtilTest extends Specification { def inputObjectType = GraphQLInputObjectType.newInputObject() .name("inputObjectType") .field(GraphQLInputObjectField.newInputObjectField() - .name("hello") - .type(GraphQLString)) + .name("hello") + .type(GraphQLString)) .build() def objectValue = ObjectValue.newObjectValue() objectValue.objectField(new ObjectField("hello", new StringValue("world"))) expect: - validationUtil.isValidLiteralValue(objectValue.build(), inputObjectType, schema, graphQLContext, locale) + validationUtil.isValidLiteralValueForInputObjectType(objectValue.build(), inputObjectType, schema, graphQLContext, locale) } def "a invalid ObjectValue with a invalid field"() { @@ -165,14 +168,14 @@ class ValidationUtilTest extends Specification { def inputObjectType = GraphQLInputObjectType.newInputObject() .name("inputObjectType") .field(GraphQLInputObjectField.newInputObjectField() - .name("hello") - .type(GraphQLString)) + .name("hello") + .type(GraphQLString)) .build() def objectValue = ObjectValue.newObjectValue() objectValue.objectField(new ObjectField("hello", new BooleanValue(false))) expect: - !validationUtil.isValidLiteralValue(objectValue.build(), inputObjectType, schema, graphQLContext,locale) + !validationUtil.isValidLiteralValueForInputObjectType(objectValue.build(), inputObjectType, schema, graphQLContext, locale) } def "a invalid ObjectValue with a missing field"() { @@ -180,13 +183,13 @@ class ValidationUtilTest extends Specification { def inputObjectType = GraphQLInputObjectType.newInputObject() .name("inputObjectType") .field(GraphQLInputObjectField.newInputObjectField() - .name("hello") - .type(nonNull(GraphQLString))) + .name("hello") + .type(nonNull(GraphQLString))) .build() def objectValue = ObjectValue.newObjectValue().build() expect: - !validationUtil.isValidLiteralValue(objectValue, inputObjectType,schema, graphQLContext,locale) + !validationUtil.isValidLiteralValueForInputObjectType(objectValue, inputObjectType, schema, graphQLContext, locale) } def "a valid ObjectValue with a nonNull field and default value"() { @@ -194,13 +197,55 @@ class ValidationUtilTest extends Specification { def inputObjectType = GraphQLInputObjectType.newInputObject() .name("inputObjectType") .field(GraphQLInputObjectField.newInputObjectField() - .name("hello") - .type(nonNull(GraphQLString)) - .defaultValueProgrammatic("default")) + .name("hello") + .type(nonNull(GraphQLString)) + .defaultValueProgrammatic("default")) .build() def objectValue = ObjectValue.newObjectValue() expect: - validationUtil.isValidLiteralValue(objectValue.build(), inputObjectType, schema, graphQLContext,locale) + validationUtil.isValidLiteralValueForInputObjectType(objectValue.build(), inputObjectType, schema, graphQLContext, locale) + } + + def "a valid @oneOf input literal"() { + given: + def inputObjectType = GraphQLInputObjectType.newInputObject() + .name("inputObjectType") + .withAppliedDirective(newDirective().name(OneOfDirective.getName())) + .field(GraphQLInputObjectField.newInputObjectField() + .name("f1") + .type(GraphQLString)) + .field(GraphQLInputObjectField.newInputObjectField() + .name("f2") + .type(GraphQLString)) + .build() + def objectValue = ObjectValue.newObjectValue() + .objectField(newObjectField().name("f1").value(StringValue.of("v1")).build()) + .build() + + expect: + validationUtil.isValidLiteralValueForInputObjectType(objectValue, inputObjectType, schema, graphQLContext, locale) + } + + def "an invalid @oneOf input literal"() { + given: + def inputObjectType = GraphQLInputObjectType.newInputObject() + .name("inputObjectType") + .withAppliedDirective(newDirective().name(OneOfDirective.getName())) + .field(GraphQLInputObjectField.newInputObjectField() + .name("f1") + .type(GraphQLString)) + .field(GraphQLInputObjectField.newInputObjectField() + .name("f2") + .type(GraphQLString)) + .build() + + def objectValue = ObjectValue.newObjectValue() + .objectField(newObjectField().name("f1").value(StringValue.of("v1")).build()) + .objectField(newObjectField().name("f2").value(StringValue.of("v2")).build()) + .build() + + expect: + !validationUtil.isValidLiteralValueForInputObjectType(objectValue, inputObjectType, schema, graphQLContext, locale) } } diff --git a/src/test/groovy/graphql/validation/rules/ArgumentsOfCorrectTypeTest.groovy b/src/test/groovy/graphql/validation/rules/ArgumentsOfCorrectTypeTest.groovy index 67c87407cf..7e8210955e 100644 --- a/src/test/groovy/graphql/validation/rules/ArgumentsOfCorrectTypeTest.groovy +++ b/src/test/groovy/graphql/validation/rules/ArgumentsOfCorrectTypeTest.groovy @@ -1,6 +1,7 @@ package graphql.validation.rules import graphql.GraphQLContext +import graphql.i18n.I18n import graphql.language.Argument import graphql.language.ArrayValue import graphql.language.BooleanValue @@ -33,11 +34,33 @@ class ArgumentsOfCorrectTypeTest extends Specification { ArgumentsOfCorrectType argumentsOfCorrectType ValidationContext validationContext = Mock(ValidationContext) ValidationErrorCollector errorCollector = new ValidationErrorCollector() + I18n i18n = Mock(I18n) def setup() { argumentsOfCorrectType = new ArgumentsOfCorrectType(validationContext, errorCollector) def context = GraphQLContext.getDefault() validationContext.getGraphQLContext() >> context + validationContext.getI18n() >> i18n + i18n.getLocale() >> Locale.ENGLISH + } + + def "error message uses locale of client (German), not server (English)"() { + def query = """ + query getDog { + dog @objectArgumentDirective(myObject: { id: "1" }) { + name + } + } + """ + def document = new Parser().parseDocument(query) + + when: + def validationErrors = new Validator().validateDocument(SpecValidationSchema.specValidationSchema, document, Locale.GERMAN) + + then: + validationErrors.size() == 1 + validationErrors.get(0).getValidationErrorType() == ValidationErrorType.WrongType + validationErrors.get(0).message == "Validierungsfehler (WrongType@[dog]) : Argument 'myObject' mit Wert 'ObjectValue{objectFields=[ObjectField{name='id', value=StringValue{value='1'}}]}' fehlen Pflichtfelder '[name]'" } def "valid type results in no error"() { @@ -335,6 +358,37 @@ class ArgumentsOfCorrectTypeTest extends Specification { validationErrors.get(0).message == "Validation error (WrongType@[dog/doesKnowCommand]) : argument 'dogCommand' with value 'EnumValue{name='PRETTY'}' is not a valid 'DogCommand' - Literal value not in allowable values for enum 'DogCommand' - 'EnumValue{name='PRETTY'}'" } + def "invalid @oneOf argument - has more than 1 key - case #why"() { + when: + def validationErrors = validate(query) + + then: + validationErrors.size() == 1 + validationErrors.get(0).getValidationErrorType() == ValidationErrorType.WrongType + validationErrors.get(0).message == "Validation error (WrongType@[oneOfField]) : Exactly one key must be specified for OneOf type 'oneOfInputType'." + + where: + why | query | _ + 'some variables' | + ''' + query q($v1 : String) { + oneOfField(oneOfArg : { a : $v1, b : "y" }) + } + ''' | _ + 'all variables' | + ''' + query q($v1 : String, $v2 : String) { + oneOfField(oneOfArg : { a : $v1, b : $v2 }) + } + ''' | _ + 'all literals' | + ''' + query q { + oneOfField(oneOfArg : { a : "x", b : "y" }) + } + ''' | _ + } + static List validate(String query) { def document = new Parser().parseDocument(query) return new Validator().validateDocument(SpecValidationSchema.specValidationSchema, document, Locale.ENGLISH) diff --git a/src/test/groovy/graphql/validation/rules/KnownDirectivesTest.groovy b/src/test/groovy/graphql/validation/rules/KnownDirectivesTest.groovy index 2149a0a171..8ac2b0d037 100644 --- a/src/test/groovy/graphql/validation/rules/KnownDirectivesTest.groovy +++ b/src/test/groovy/graphql/validation/rules/KnownDirectivesTest.groovy @@ -246,6 +246,10 @@ class KnownDirectivesTest extends Specification { field: String } + type Subscription { + field: String + } + ''' def schema = TestUtil.schema(sdl) diff --git a/src/test/groovy/graphql/validation/rules/OverlappingFieldsCanBeMergedTest.groovy b/src/test/groovy/graphql/validation/rules/OverlappingFieldsCanBeMergedTest.groovy index babf549a0a..d35ec38084 100644 --- a/src/test/groovy/graphql/validation/rules/OverlappingFieldsCanBeMergedTest.groovy +++ b/src/test/groovy/graphql/validation/rules/OverlappingFieldsCanBeMergedTest.groovy @@ -47,6 +47,7 @@ class OverlappingFieldsCanBeMergedTest extends Specification { def "identical fields are ok"() { given: def query = """ + {...f} fragment f on Test{ name name @@ -59,9 +60,22 @@ class OverlappingFieldsCanBeMergedTest extends Specification { errorCollector.errors.isEmpty() } + def "identical fields are ok 2"() { + given: + def query = """ + { name name name name: name} + """ + when: + traverse(query, null) + + then: + errorCollector.errors.isEmpty() + } + def "two aliases with different targets"() { given: def query = """ + {... f } fragment f on Test{ myName : name myName : nickname @@ -72,8 +86,8 @@ class OverlappingFieldsCanBeMergedTest extends Specification { then: errorCollector.getErrors().size() == 1 - errorCollector.getErrors()[0].message == "Validation error (FieldsConflict@[f]) : 'myName' : 'name' and 'nickname' are different fields" - errorCollector.getErrors()[0].locations == [new SourceLocation(3, 17), new SourceLocation(4, 17)] + errorCollector.getErrors()[0].message == "Validation error (FieldsConflict) : 'myName' : 'name' and 'nickname' are different fields" + errorCollector.getErrors()[0].locations == [new SourceLocation(4, 17), new SourceLocation(5, 17)] } static GraphQLSchema unionSchema() { @@ -134,7 +148,7 @@ class OverlappingFieldsCanBeMergedTest extends Specification { then: errorCollector.getErrors().size() == 1 - errorCollector.getErrors()[0].message == "Validation error (FieldsConflict@[boxUnion]) : 'scalar' : returns different types 'Int' and 'String'" + errorCollector.getErrors()[0].message == "Validation error (FieldsConflict) : 'boxUnion/scalar' : returns different types 'Int' and 'String'" } @@ -182,7 +196,7 @@ class OverlappingFieldsCanBeMergedTest extends Specification { then: errorCollector.getErrors().size() == 1 - errorCollector.getErrors()[0].message == "Validation error (FieldsConflict@[boxUnion]) : 'scalar' : fields have different nullability shapes" + errorCollector.getErrors()[0].message == "Validation error (FieldsConflict) : 'boxUnion/scalar' : fields have different nullability shapes" } def 'not the same list return types'() { @@ -206,7 +220,7 @@ class OverlappingFieldsCanBeMergedTest extends Specification { then: errorCollector.getErrors().size() == 1 - errorCollector.getErrors()[0].message == "Validation error (FieldsConflict@[boxUnion]) : 'scalar' : fields have different list shapes" + errorCollector.getErrors()[0].message == "Validation error (FieldsConflict) : 'boxUnion/scalar' : fields have different list shapes" } @@ -303,6 +317,7 @@ class OverlappingFieldsCanBeMergedTest extends Specification { def 'Same aliases with different field targets'() { given: def query = """ + {dog{...sameAliasesWithDifferentFieldTargets}} fragment sameAliasesWithDifferentFieldTargets on Dog { fido: name fido: nickname @@ -322,13 +337,14 @@ class OverlappingFieldsCanBeMergedTest extends Specification { then: errorCollector.getErrors().size() == 1 - errorCollector.getErrors()[0].message == "Validation error (FieldsConflict@[sameAliasesWithDifferentFieldTargets]) : 'fido' : 'name' and 'nickname' are different fields" - errorCollector.getErrors()[0].locations == [new SourceLocation(3, 13), new SourceLocation(4, 13)] + errorCollector.getErrors()[0].message == "Validation error (FieldsConflict) : 'dog/fido' : 'name' and 'nickname' are different fields" + errorCollector.getErrors()[0].locations == [new SourceLocation(4, 13), new SourceLocation(5, 13)] } def 'Alias masking direct field access'() { given: def query = """ + {dog{...aliasMaskingDirectFieldAccess}} fragment aliasMaskingDirectFieldAccess on Dog { name: nickname name @@ -346,8 +362,8 @@ class OverlappingFieldsCanBeMergedTest extends Specification { then: errorCollector.getErrors().size() == 1 - errorCollector.getErrors()[0].message == "Validation error (FieldsConflict@[aliasMaskingDirectFieldAccess]) : 'name' : 'nickname' and 'name' are different fields" - errorCollector.getErrors()[0].locations == [new SourceLocation(3, 13), new SourceLocation(4, 13)] + errorCollector.getErrors()[0].message == "Validation error (FieldsConflict) : 'dog/name' : 'nickname' and 'name' are different fields" + errorCollector.getErrors()[0].locations == [new SourceLocation(4, 13), new SourceLocation(5, 13)] } def 'issue 3332 - Alias masking direct field access non fragment'() { @@ -370,7 +386,7 @@ class OverlappingFieldsCanBeMergedTest extends Specification { then: errorCollector.getErrors().size() == 1 - errorCollector.getErrors()[0].message == "Validation error (FieldsConflict@[dog]) : 'name' : 'nickname' and 'name' are different fields" + errorCollector.getErrors()[0].message == "Validation error (FieldsConflict) : 'dog/name' : 'nickname' and 'name' are different fields" errorCollector.getErrors()[0].locations == [new SourceLocation(3, 13), new SourceLocation(4, 13)] } @@ -398,13 +414,14 @@ class OverlappingFieldsCanBeMergedTest extends Specification { then: errorCollector.getErrors().size() == 1 - errorCollector.getErrors()[0].message == "Validation error (FieldsConflict@[cat]) : 'foo1' : 'foo1' and 'foo2' are different fields" + errorCollector.getErrors()[0].message == "Validation error (FieldsConflict) : 'cat/foo1' : 'foo1' and 'foo2' are different fields" errorCollector.getErrors()[0].locations == [new SourceLocation(4, 17), new SourceLocation(5, 17)] } def 'conflicting args'() { given: def query = """ + {dog{...conflictingArgs}} fragment conflictingArgs on Dog { doesKnowCommand(dogCommand: SIT) doesKnowCommand(dogCommand: HEEL) @@ -424,8 +441,8 @@ class OverlappingFieldsCanBeMergedTest extends Specification { then: errorCollector.getErrors().size() == 1 - errorCollector.getErrors()[0].message == "Validation error (FieldsConflict@[conflictingArgs]) : 'doesKnowCommand' : fields have different arguments" - errorCollector.getErrors()[0].locations == [new SourceLocation(3, 13), new SourceLocation(4, 13)] + errorCollector.getErrors()[0].message == "Validation error (FieldsConflict) : 'dog/doesKnowCommand' : fields have different arguments" + errorCollector.getErrors()[0].locations == [new SourceLocation(4, 13), new SourceLocation(5, 13)] } // @@ -524,7 +541,7 @@ class OverlappingFieldsCanBeMergedTest extends Specification { then: errorCollector.getErrors().size() == 1 - errorCollector.getErrors()[0].message == "Validation error (FieldsConflict@[f1]) : 'x' : 'a' and 'b' are different fields" + errorCollector.getErrors()[0].message == "Validation error (FieldsConflict) : 'f1/x' : 'a' and 'b' are different fields" errorCollector.getErrors()[0].locations == [new SourceLocation(18, 13), new SourceLocation(21, 13)] } @@ -672,7 +689,7 @@ class OverlappingFieldsCanBeMergedTest extends Specification { then: errorCollector.getErrors().size() == 1 - errorCollector.getErrors()[0].message == "Validation error (FieldsConflict@[field]) : 'deepField/x' : 'a' and 'b' are different fields" + errorCollector.getErrors()[0].message == "Validation error (FieldsConflict) : 'field/deepField/x' : 'a' and 'b' are different fields" errorCollector.getErrors()[0].locations.size() == 2 } @@ -892,7 +909,7 @@ class OverlappingFieldsCanBeMergedTest extends Specification { then: errorCollector.getErrors().size() == 1 - errorCollector.getErrors()[0].message == "Validation error (FieldsConflict@[pets]) : 'friends/conflict' : returns different types 'Int' and 'Float'" + errorCollector.getErrors()[0].message == "Validation error (FieldsConflict) : 'pets/friends/conflict' : returns different types 'Int' and 'Float'" } @@ -948,5 +965,57 @@ class OverlappingFieldsCanBeMergedTest extends Specification { errorCollector.getErrors().size() == 0 } + def "overlapping fields on lower level"() { + given: + def schema = schema(''' + type Query { + pets: [Pet] + } + interface Pet { + name: String + breed: String + friends: [Pet] + } + type Dog implements Pet { + name: String + age: Int + dogBreed: String + breed: String + friends: [Pet] + + } + type Cat implements Pet { + catBreed: String + breed: String + height: Float + name : String + friends: [Pet] + + } + ''') + def query = ''' + { + pets { + friends { + ... on Dog { + x: name + } + ... on Cat { + x: height + } + } + } + } + ''' + when: + traverse(query, schema) + + + then: + errorCollector.getErrors().size() == 1 + errorCollector.getErrors()[0].message == "Validation error (FieldsConflict) : 'pets/friends/x' : returns different types 'String' and 'Float'" + + } + } diff --git a/src/test/groovy/graphql/validation/rules/VariableDefaultValuesOfCorrectTypeTest.groovy b/src/test/groovy/graphql/validation/rules/VariableDefaultValuesOfCorrectTypeTest.groovy index e69baff7b2..29f132d411 100644 --- a/src/test/groovy/graphql/validation/rules/VariableDefaultValuesOfCorrectTypeTest.groovy +++ b/src/test/groovy/graphql/validation/rules/VariableDefaultValuesOfCorrectTypeTest.groovy @@ -19,10 +19,13 @@ class VariableDefaultValuesOfCorrectTypeTest extends Specification { ValidationContext validationContext = Mock(ValidationContext) ValidationErrorCollector errorCollector = new ValidationErrorCollector() VariableDefaultValuesOfCorrectType defaultValuesOfCorrectType = new VariableDefaultValuesOfCorrectType(validationContext, errorCollector) + I18n i18n = Mock(I18n) void setup() { def context = GraphQLContext.getDefault() validationContext.getGraphQLContext() >> context + validationContext.getI18n() >> i18n + i18n.getLocale() >> Locale.ENGLISH } def "default value has wrong type"() { @@ -70,4 +73,38 @@ class VariableDefaultValuesOfCorrectTypeTest extends Specification { validationErrors[0].getValidationErrorType() == ValidationErrorType.BadValueForDefaultArg validationErrors[0].message == "Validation error (BadValueForDefaultArg) : Bad default value 'StringValue{value='NotANumber'}' for type 'Int'" } + + def "default value has wrong type with error message of client (German), not server (English)"() { + setup: + def schema = ''' + type User { + id: String + } + + type Query { + getUsers(howMany: Int) : [User] + } + ''' + + def query = ''' + query($howMany: Int = "NotANumber") { + getUsers(howMany: $howMany) { + id + } + } + ''' + + def graphQlSchema = TestUtil.schema(schema) + def document = TestUtil.parseQuery(query) + def validator = new Validator() + + when: + def validationErrors = validator.validateDocument(graphQlSchema, document, Locale.GERMAN) + + then: + !validationErrors.empty + validationErrors.size() == 1 + validationErrors[0].getValidationErrorType() == ValidationErrorType.BadValueForDefaultArg + validationErrors[0].message == "Validierungsfehler (BadValueForDefaultArg) : Ungültiger Standardwert 'StringValue{value='NotANumber'}' für Typ 'Int'" + } } \ No newline at end of file diff --git a/src/test/groovy/readme/DataFetchingExamples.java b/src/test/groovy/readme/DataFetchingExamples.java index dbe637dad1..c44dfce56a 100644 --- a/src/test/groovy/readme/DataFetchingExamples.java +++ b/src/test/groovy/readme/DataFetchingExamples.java @@ -47,7 +47,7 @@ void getProductsDataFetcher() { DataFetcher productsDataFetcher = new DataFetcher>() { @Override public List get(DataFetchingEnvironment environment) { - DatabaseSecurityCtx ctx = environment.getContext(); + DatabaseSecurityCtx ctx = environment.getGraphQlContext().get("databaseSecurityCtx"); List products; String match = environment.getArgument("match"); diff --git a/src/test/groovy/readme/DataLoaderBatchingExamples.java b/src/test/groovy/readme/DataLoaderBatchingExamples.java index 287d4c5650..1bf55e0452 100644 --- a/src/test/groovy/readme/DataLoaderBatchingExamples.java +++ b/src/test/groovy/readme/DataLoaderBatchingExamples.java @@ -171,7 +171,7 @@ public CompletableFuture clear() { } }; - DataLoaderOptions options = DataLoaderOptions.newOptions().setValueCache(crossRequestValueCache); + DataLoaderOptions options = DataLoaderOptions.newOptions().setValueCache(crossRequestValueCache).build(); DataLoader dataLoader = DataLoaderFactory.newDataLoader(batchLoader, options); } @@ -260,7 +260,7 @@ public Object getContext() { // // this creates an overall context for the dataloader // - DataLoaderOptions loaderOptions = DataLoaderOptions.newOptions().setBatchLoaderContextProvider(contextProvider); + DataLoaderOptions loaderOptions = DataLoaderOptions.newOptions().setBatchLoaderContextProvider(contextProvider).build(); DataLoader characterDataLoader = DataLoaderFactory.newDataLoader(batchLoaderWithCtx, loaderOptions); // .... later in your data fetcher diff --git a/src/test/groovy/readme/DirectivesExamples.java b/src/test/groovy/readme/DirectivesExamples.java index 77dd5d6c76..2d6af20f24 100644 --- a/src/test/groovy/readme/DirectivesExamples.java +++ b/src/test/groovy/readme/DirectivesExamples.java @@ -4,6 +4,9 @@ import graphql.ExecutionResult; import graphql.GraphQL; import graphql.Scalars; +import graphql.execution.directives.QueryAppliedDirective; +import graphql.execution.directives.QueryAppliedDirectiveArgument; +import graphql.execution.directives.QueryDirectives; import graphql.schema.DataFetcher; import graphql.schema.DataFetcherFactories; import graphql.schema.DataFetchingEnvironment; @@ -20,6 +23,7 @@ import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.HashMap; +import java.util.List; import java.util.Map; @SuppressWarnings({"Convert2Lambda", "unused", "ClassCanBeStatic"}) @@ -39,7 +43,7 @@ class AuthorisationDirective implements SchemaDirectiveWiring { @Override public GraphQLFieldDefinition onField(SchemaDirectiveWiringEnvironment environment) { - String targetAuthRole = (String) environment.getDirective().getArgument("role").getArgumentValue().getValue(); + String targetAuthRole = (String) environment.getAppliedDirective().getArgument("role").getArgumentValue().getValue(); // // build a data fetcher that first checks authorisation roles before then calling the original data fetcher @@ -48,8 +52,7 @@ public GraphQLFieldDefinition onField(SchemaDirectiveWiringEnvironment contextMap = dataFetchingEnvironment.getContext(); - AuthorisationCtx authContext = (AuthorisationCtx) contextMap.get("authContext"); + AuthorisationCtx authContext = dataFetchingEnvironment.getGraphQlContext().get("authContext"); if (authContext.hasRole(targetAuthRole)) { return originalDataFetcher.get(dataFetchingEnvironment); @@ -83,7 +86,7 @@ void contextWiring() { ExecutionInput executionInput = ExecutionInput.newExecutionInput() .query(query) - .graphQLContext(builder -> builder.put("authCtx", authCtx)) + .graphQLContext(builder -> builder.put("authContext", authCtx)) .build(); } @@ -171,4 +174,26 @@ public static void main(String[] args) { // data['default'] == '08-10-1969' // data['usa'] == '10-08-1969' } + + DataFetcher cacheDataFetcher = new DataFetcher() { + @Override + public Object get(DataFetchingEnvironment env) { + QueryDirectives queryDirectives = env.getQueryDirectives(); + List cacheDirectives = queryDirectives + .getImmediateAppliedDirective("cache"); + // We get a List, because we could have + // repeatable directives + if (cacheDirectives.size() > 0) { + QueryAppliedDirective cache = cacheDirectives.get(0); + QueryAppliedDirectiveArgument maxAgeArgument + = cache.getArgument("maxAge"); + int maxAge = maxAgeArgument.getValue(); + + // Now we know the max allowed cache time and + // can make use of it + // Your logic goes here + } + return "your logic here"; + } + }; } diff --git a/src/test/groovy/readme/ExecutionExamples.java b/src/test/groovy/readme/ExecutionExamples.java index a18197a63c..b2b56e798f 100644 --- a/src/test/groovy/readme/ExecutionExamples.java +++ b/src/test/groovy/readme/ExecutionExamples.java @@ -12,12 +12,15 @@ import graphql.execution.DataFetcherExceptionHandlerParameters; import graphql.execution.DataFetcherExceptionHandlerResult; import graphql.execution.ExecutionStrategy; +import graphql.execution.values.InputInterceptor; +import graphql.execution.values.legacycoercing.LegacyCoercingInputInterceptor; import graphql.language.SourceLocation; import graphql.schema.DataFetcher; import graphql.schema.DataFetchingEnvironment; import graphql.schema.GraphQLCodeRegistry; import graphql.schema.GraphQLFieldDefinition; import graphql.schema.GraphQLFieldsContainer; +import graphql.schema.GraphQLInputType; import graphql.schema.GraphQLSchema; import graphql.schema.visibility.BlockedFields; import graphql.schema.visibility.GraphqlFieldVisibility; @@ -290,4 +293,26 @@ private GraphQL buildSchema() { .build(); } + private void emitAMetric(Object inputValue, GraphQLInputType graphQLInputType) { + return; + } + + private void inputInterceptorObservesExample() { + InputInterceptor legacyInputInterceptor = LegacyCoercingInputInterceptor.observesValues((inputValue, graphQLInputType) -> { + emitAMetric(inputValue, graphQLInputType); + }); + + ExecutionInput executionInput = ExecutionInput.newExecutionInput() + .query("query { exampleField }") + .graphQLContext(Map.of(InputInterceptor.class, legacyInputInterceptor)) + .build(); + } + + private void inputInterceptorMigratesExample() { + ExecutionInput executionInput = ExecutionInput.newExecutionInput() + .query("query { exampleField }") + .graphQLContext(Map.of(InputInterceptor.class, LegacyCoercingInputInterceptor.migratesValues())) + .build(); + } + } diff --git a/src/test/groovy/readme/InstrumentationExamples.java b/src/test/groovy/readme/InstrumentationExamples.java index 60ad4dc4dc..142cd4f240 100644 --- a/src/test/groovy/readme/InstrumentationExamples.java +++ b/src/test/groovy/readme/InstrumentationExamples.java @@ -21,8 +21,8 @@ import graphql.execution.instrumentation.tracing.TracingInstrumentation; import graphql.schema.DataFetcher; import graphql.schema.GraphQLSchema; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; +import org.jspecify.annotations.NonNull; +import org.jspecify.annotations.Nullable; import java.util.ArrayList; import java.util.HashMap; @@ -86,7 +86,7 @@ public void onCompleted(ExecutionResult result, Throwable t) { } @Override - public @NotNull DataFetcher instrumentDataFetcher(DataFetcher dataFetcher, InstrumentationFieldFetchParameters parameters, InstrumentationState state) { + public @NonNull DataFetcher instrumentDataFetcher(DataFetcher dataFetcher, InstrumentationFieldFetchParameters parameters, InstrumentationState state) { // // this allows you to intercept the data fetcher used to fetch a field and provide another one, perhaps // that enforces certain behaviours or has certain side effects on the data @@ -95,7 +95,7 @@ public void onCompleted(ExecutionResult result, Throwable t) { } @Override - public @NotNull CompletableFuture instrumentExecutionResult(ExecutionResult executionResult, InstrumentationExecutionParameters parameters, InstrumentationState state) { + public @NonNull CompletableFuture instrumentExecutionResult(ExecutionResult executionResult, InstrumentationExecutionParameters parameters, InstrumentationState state) { // // this allows you to instrument the execution result somehow. For example the Tracing support uses this to put // the `extensions` map of data in place diff --git a/src/test/java/performance/ComplexQueryPerformance.java b/src/test/java/performance/ComplexQueryPerformance.java new file mode 100644 index 0000000000..e8b2c3da0e --- /dev/null +++ b/src/test/java/performance/ComplexQueryPerformance.java @@ -0,0 +1,272 @@ +package performance; + +import benchmark.BenchmarkUtils; +import com.google.common.collect.ImmutableList; +import graphql.ExecutionInput; +import graphql.ExecutionResult; +import graphql.GraphQL; +import graphql.schema.DataFetcher; +import graphql.schema.DataFetchingEnvironment; +import graphql.schema.GraphQLSchema; +import graphql.schema.idl.RuntimeWiring; +import graphql.schema.idl.SchemaGenerator; +import graphql.schema.idl.SchemaParser; +import graphql.schema.idl.TypeDefinitionRegistry; +import org.openjdk.jmh.annotations.Benchmark; +import org.openjdk.jmh.annotations.BenchmarkMode; +import org.openjdk.jmh.annotations.Fork; +import org.openjdk.jmh.annotations.Level; +import org.openjdk.jmh.annotations.Measurement; +import org.openjdk.jmh.annotations.Mode; +import org.openjdk.jmh.annotations.OutputTimeUnit; +import org.openjdk.jmh.annotations.Param; +import org.openjdk.jmh.annotations.Scope; +import org.openjdk.jmh.annotations.Setup; +import org.openjdk.jmh.annotations.State; +import org.openjdk.jmh.annotations.TearDown; +import org.openjdk.jmh.annotations.Warmup; +import org.openjdk.jmh.profile.GCProfiler; +import org.openjdk.jmh.runner.Runner; +import org.openjdk.jmh.runner.options.Options; +import org.openjdk.jmh.runner.options.OptionsBuilder; + +import java.util.List; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.atomic.AtomicInteger; +import java.util.function.Supplier; + +import static graphql.schema.idl.TypeRuntimeWiring.newTypeWiring; + +/** + * This benchmark is an attempt to have a more complex query that involves async and sync work together + * along with multiple threads happening. + *

    + * It can also be run in a forever mode say if you want to connect a profiler to it say + */ +@State(Scope.Benchmark) +@Warmup(iterations = 2, time = 5) +@Measurement(iterations = 2) +@Fork(2) +public class ComplexQueryPerformance { + + @Param({"5", "10", "20"}) + int howManyItems = 5; + int howLongToSleep = 5; + int howManyQueries = 10; + int howManyQueryThreads = 10; + int howManyFetcherThreads = 10; + + ExecutorService queryExecutorService; + ExecutorService fetchersExecutorService; + GraphQL graphQL; + volatile boolean shutDown; + + @Setup(Level.Trial) + public void setUp() { + shutDown = false; + queryExecutorService = Executors.newFixedThreadPool(howManyQueryThreads); + fetchersExecutorService = Executors.newFixedThreadPool(howManyFetcherThreads); + graphQL = buildGraphQL(); + } + + @TearDown(Level.Trial) + public void tearDown() { + shutDown = true; + queryExecutorService.shutdownNow(); + fetchersExecutorService.shutdownNow(); + } + + + @Benchmark + @BenchmarkMode(Mode.Throughput) + @OutputTimeUnit(TimeUnit.SECONDS) + public Object benchMarkSimpleQueriesThroughput() { + return runManyQueriesToCompletion(); + } + + + public static void main(String[] args) throws Exception { + // just to make sure it's all valid before testing + runAtStartup(); + + Options opt = new OptionsBuilder() + .include("benchmark.ComplexQueryBenchmark") + .addProfiler(GCProfiler.class) + .build(); + + new Runner(opt).run(); + } + + @SuppressWarnings({"ConstantValue", "LoopConditionNotUpdatedInsideLoop"}) + private static void runAtStartup() { + + ComplexQueryPerformance complexQueryBenchmark = new ComplexQueryPerformance(); + complexQueryBenchmark.howManyQueries = 5; + complexQueryBenchmark.howManyItems = 10; + + BenchmarkUtils.runInToolingForSomeTimeThenExit( + complexQueryBenchmark::setUp, + complexQueryBenchmark::runManyQueriesToCompletion, + complexQueryBenchmark::tearDown + + ); + } + + + @SuppressWarnings("UnnecessaryLocalVariable") + private Void runManyQueriesToCompletion() { + CompletableFuture[] cfs = new CompletableFuture[howManyQueries]; + for (int i = 0; i < howManyQueries; i++) { + cfs[i] = CompletableFuture.supplyAsync(() -> executeQuery(howManyItems, howLongToSleep), queryExecutorService).thenCompose(cf -> cf); + } + Void result = CompletableFuture.allOf(cfs).join(); + return result; + } + + public CompletableFuture executeQuery(int howMany, int howLong) { + String fields = "id name f1 f2 f3 f4 f5 f6 f7 f8 f9 f10"; + String query = "query q {" + + String.format("shops(howMany : %d) { %s departments( howMany : %d) { %s products(howMany : %d) { %s }}}\n" + , howMany, fields, 10, fields, 5, fields) + + String.format("expensiveShops(howMany : %d howLong : %d) { %s expensiveDepartments( howMany : %d howLong : %d) { %s expensiveProducts(howMany : %d howLong : %d) { %s }}}\n" + , howMany, howLong, fields, 10, howLong, fields, 5, howLong, fields) + + "}"; + return graphQL.executeAsync(ExecutionInput.newExecutionInput(query).build()); + } + + private GraphQL buildGraphQL() { + TypeDefinitionRegistry definitionRegistry = new SchemaParser().parse(PerformanceTestingUtils.loadResource("storesanddepartments.graphqls")); + + DataFetcher shopsDF = env -> mkHowManyThings(env.getArgument("howMany")); + DataFetcher expensiveShopsDF = env -> supplyAsync(() -> sleepAndReturnThings(env)); + DataFetcher departmentsDF = env -> mkHowManyThings(env.getArgument("howMany")); + DataFetcher expensiveDepartmentsDF = env -> supplyAsyncListItems(env, () -> sleepAndReturnThings(env)); + DataFetcher productsDF = env -> mkHowManyThings(env.getArgument("howMany")); + DataFetcher expensiveProductsDF = env -> supplyAsyncListItems(env, () -> sleepAndReturnThings(env)); + + RuntimeWiring runtimeWiring = RuntimeWiring.newRuntimeWiring() + .type(newTypeWiring("Query") + .dataFetcher("shops", shopsDF) + .dataFetcher("expensiveShops", expensiveShopsDF)) + .type(newTypeWiring("Shop") + .dataFetcher("departments", departmentsDF) + .dataFetcher("expensiveDepartments", expensiveDepartmentsDF)) + .type(newTypeWiring("Department") + .dataFetcher("products", productsDF) + .dataFetcher("expensiveProducts", expensiveProductsDF)) + .build(); + + GraphQLSchema graphQLSchema = new SchemaGenerator().makeExecutableSchema(definitionRegistry, runtimeWiring); + + return GraphQL.newGraphQL(graphQLSchema).build(); + } + + private CompletableFuture supplyAsyncListItems(DataFetchingEnvironment environment, Supplier codeToRun) { + return supplyAsync(codeToRun); + } + + private CompletableFuture supplyAsync(Supplier codeToRun) { + if (!shutDown) { + //logEvery(100, "async fetcher"); + return CompletableFuture.supplyAsync(codeToRun, fetchersExecutorService); + } else { + // if we have shutdown - get on with it, so we shut down quicker + return CompletableFuture.completedFuture(codeToRun.get()); + } + } + + private List sleepAndReturnThings(DataFetchingEnvironment env) { + // by sleeping, we hope to cause the objects to stay longer in GC land and hence have a longer lifecycle + // then a simple stack say or young gen gc. I don't know this will work, but I am trying it + // to represent work that takes some tie to complete + sleep(env.getArgument("howLong")); + return mkHowManyThings(env.getArgument("howMany")); + } + + private void sleep(Integer howLong) { + if (howLong > 0) { + try { + Thread.sleep(howLong); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + } + } + + AtomicInteger logCount = new AtomicInteger(); + + private void logEvery(int every, String s) { + int count = logCount.getAndIncrement(); + if (count == 0 || count % every == 0) { + System.out.println("\t" + count + "\t" + s); + } + } + + private List mkHowManyThings(Integer howMany) { + ImmutableList.Builder builder = ImmutableList.builder(); + for (int i = 0; i < howMany; i++) { + builder.add(new IdAndNamedThing(i)); + } + return builder.build(); + } + + @SuppressWarnings("unused") + static class IdAndNamedThing { + private final int i; + + public IdAndNamedThing(int i) { + this.i = i; + } + + public String getId() { + return "id" + i; + } + + public String getName() { + return "name" + i; + } + + public String getF1() { + return "f1" + i; + } + + public String getF2() { + return "f2" + i; + } + + public String getF3() { + return "f3" + i; + } + + public String getF4() { + return "f4" + i; + } + + public String getF5() { + return "f5" + i; + } + + public String getF6() { + return "f6" + i; + } + + public String getF7() { + return "f7" + i; + } + + public String getF8() { + return "f8" + i; + } + + public String getF9() { + return "f9" + i; + } + + public String getF10() { + return "f10" + i; + } + } +} diff --git a/src/test/java/benchmark/DFSelectionSetBenchmark.java b/src/test/java/performance/DFSelectionSetPerformance.java similarity index 72% rename from src/test/java/benchmark/DFSelectionSetBenchmark.java rename to src/test/java/performance/DFSelectionSetPerformance.java index 01081cf51c..12a71fbe8e 100644 --- a/src/test/java/benchmark/DFSelectionSetBenchmark.java +++ b/src/test/java/performance/DFSelectionSetPerformance.java @@ -1,4 +1,4 @@ -package benchmark; +package performance; import graphql.execution.CoercedVariables; import graphql.language.Document; @@ -31,7 +31,7 @@ @Warmup(iterations = 2, time = 5) @Measurement(iterations = 3) @Fork(3) -public class DFSelectionSetBenchmark { +public class DFSelectionSetPerformance { @State(Scope.Benchmark) public static class MyState { @@ -44,10 +44,10 @@ public static class MyState { @Setup public void setup() { try { - String schemaString = BenchmarkUtils.loadResource("large-schema-2.graphqls"); + String schemaString = PerformanceTestingUtils.loadResource("large-schema-2.graphqls"); schema = SchemaGenerator.createdMockedSchema(schemaString); - String query = BenchmarkUtils.loadResource("large-schema-2-query.graphql"); + String query = PerformanceTestingUtils.loadResource("large-schema-2-query.graphql"); document = Parser.parse(query); ExecutableNormalizedOperation executableNormalizedOperation = ExecutableNormalizedOperationFactory.createExecutableNormalizedOperation(schema, document, null, CoercedVariables.emptyVariables()); @@ -79,17 +79,38 @@ public void benchMarkThroughput(MyState myState, Blackhole blackhole) { blackhole.consume(fields); } + @Benchmark + @BenchmarkMode(Mode.AverageTime) + @OutputTimeUnit(TimeUnit.MILLISECONDS) + public void benchMarkAvgTime_getImmediateFields(MyState myState, Blackhole blackhole) { + List fields = getImmediateFields(myState); + blackhole.consume(fields); + } + + @Benchmark + @BenchmarkMode(Mode.Throughput) + @OutputTimeUnit(TimeUnit.MILLISECONDS) + public void benchMarkThroughput_getImmediateFields(MyState myState, Blackhole blackhole) { + List fields = getImmediateFields(myState); + blackhole.consume(fields); + } + private List getSelectedFields(MyState myState) { DataFetchingFieldSelectionSet dataFetchingFieldSelectionSet = DataFetchingFieldSelectionSetImpl.newCollector(myState.schema, myState.outputFieldType, () -> myState.normalisedField); return dataFetchingFieldSelectionSet.getFields("wontBeFound"); } + private List getImmediateFields(MyState myState) { + DataFetchingFieldSelectionSet dataFetchingFieldSelectionSet = DataFetchingFieldSelectionSetImpl.newCollector(myState.schema, myState.outputFieldType, () -> myState.normalisedField); + return dataFetchingFieldSelectionSet.getImmediateFields(); + } + public static void mainX(String[] args) throws InterruptedException { MyState myState = new MyState(); myState.setup(); while (true) { - List selectedFields = new DFSelectionSetBenchmark().getSelectedFields(myState); + List selectedFields = new DFSelectionSetPerformance().getSelectedFields(myState); Thread.sleep(500); } } diff --git a/src/test/java/benchmark/ENFBenchmark1.java b/src/test/java/performance/ENF1Performance.java similarity index 89% rename from src/test/java/benchmark/ENFBenchmark1.java rename to src/test/java/performance/ENF1Performance.java index 6c10de1b19..8e324b2976 100644 --- a/src/test/java/benchmark/ENFBenchmark1.java +++ b/src/test/java/performance/ENF1Performance.java @@ -1,4 +1,4 @@ -package benchmark; +package performance; import graphql.execution.CoercedVariables; import graphql.language.Document; @@ -25,7 +25,7 @@ @Warmup(iterations = 2, time = 5) @Measurement(iterations = 3) @Fork(3) -public class ENFBenchmark1 { +public class ENF1Performance { @State(Scope.Benchmark) public static class MyState { @@ -36,10 +36,10 @@ public static class MyState { @Setup public void setup() { try { - String schemaString = BenchmarkUtils.loadResource("large-schema-1.graphqls"); + String schemaString = PerformanceTestingUtils.loadResource("large-schema-1.graphqls"); schema = SchemaGenerator.createdMockedSchema(schemaString); - String query = BenchmarkUtils.loadResource("large-schema-1-query.graphql"); + String query = PerformanceTestingUtils.loadResource("large-schema-1-query.graphql"); document = Parser.parse(query); } catch (Exception e) { throw new RuntimeException(e); diff --git a/src/test/java/benchmark/ENFBenchmark2.java b/src/test/java/performance/ENF2Performance.java similarity index 87% rename from src/test/java/benchmark/ENFBenchmark2.java rename to src/test/java/performance/ENF2Performance.java index a2a0ad3648..4a6989e77c 100644 --- a/src/test/java/benchmark/ENFBenchmark2.java +++ b/src/test/java/performance/ENF2Performance.java @@ -1,4 +1,4 @@ -package benchmark; +package performance; import graphql.execution.CoercedVariables; import graphql.language.Document; @@ -24,7 +24,7 @@ @Warmup(iterations = 2, time = 5) @Measurement(iterations = 3) @Fork(3) -public class ENFBenchmark2 { +public class ENF2Performance { @State(Scope.Benchmark) public static class MyState { @@ -35,10 +35,10 @@ public static class MyState { @Setup public void setup() { try { - String schemaString = BenchmarkUtils.loadResource("large-schema-2.graphqls"); + String schemaString = PerformanceTestingUtils.loadResource("large-schema-2.graphqls"); schema = SchemaGenerator.createdMockedSchema(schemaString); - String query = BenchmarkUtils.loadResource("large-schema-2-query.graphql"); + String query = PerformanceTestingUtils.loadResource("large-schema-2-query.graphql"); document = Parser.parse(query); } catch (Exception e) { throw new RuntimeException(e); diff --git a/src/test/java/benchmark/ENFBenchmarkDeepIntrospection.java b/src/test/java/performance/ENFDeepIntrospectionPerformance.java similarity index 79% rename from src/test/java/benchmark/ENFBenchmarkDeepIntrospection.java rename to src/test/java/performance/ENFDeepIntrospectionPerformance.java index 0ed09d4675..02d3626d0c 100644 --- a/src/test/java/benchmark/ENFBenchmarkDeepIntrospection.java +++ b/src/test/java/performance/ENFDeepIntrospectionPerformance.java @@ -1,5 +1,6 @@ -package benchmark; +package performance; +import benchmark.BenchmarkUtils; import graphql.execution.CoercedVariables; import graphql.language.Document; import graphql.normalized.ExecutableNormalizedOperation; @@ -26,15 +27,15 @@ import java.util.concurrent.TimeUnit; -import static graphql.normalized.ExecutableNormalizedOperationFactory.*; +import static graphql.normalized.ExecutableNormalizedOperationFactory.createExecutableNormalizedOperation; @State(Scope.Benchmark) @Warmup(iterations = 2, time = 5) @Measurement(iterations = 3, time = 5) @Fork(2) -public class ENFBenchmarkDeepIntrospection { +public class ENFDeepIntrospectionPerformance { - @Param({"2", "10", "20"}) + @Param({"2", "10"}) int howDeep = 2; String query = ""; @@ -44,17 +45,18 @@ public class ENFBenchmarkDeepIntrospection { @Setup(Level.Trial) public void setUp() { - String schemaString = BenchmarkUtils.loadResource("large-schema-2.graphqls"); + String schemaString = PerformanceTestingUtils.loadResource("large-schema-2.graphqls"); schema = SchemaGenerator.createdMockedSchema(schemaString); query = createDeepQuery(howDeep); document = Parser.parse(query); } + @Benchmark @BenchmarkMode(Mode.AverageTime) @OutputTimeUnit(TimeUnit.MILLISECONDS) public ExecutableNormalizedOperation benchMarkAvgTime() { - ExecutableNormalizedOperationFactory.Options options = ExecutableNormalizedOperationFactory.Options.defaultOptions(); + ExecutableNormalizedOperationFactory.Options options = ExecutableNormalizedOperationFactory.Options.defaultOptions(); ExecutableNormalizedOperation executableNormalizedOperation = createExecutableNormalizedOperation(schema, document, null, @@ -67,7 +69,7 @@ public static void main(String[] args) throws RunnerException { runAtStartup(); Options opt = new OptionsBuilder() - .include("benchmark.ENFBenchmarkDeepIntrospection") + .include("performance.ENFDeepIntrospectionPerformance") .build(); new Runner(opt).run(); @@ -75,18 +77,22 @@ public static void main(String[] args) throws RunnerException { private static void runAtStartup() { - ENFBenchmarkDeepIntrospection benchmarkIntrospection = new ENFBenchmarkDeepIntrospection(); + ENFDeepIntrospectionPerformance benchmarkIntrospection = new ENFDeepIntrospectionPerformance(); benchmarkIntrospection.howDeep = 2; BenchmarkUtils.runInToolingForSomeTimeThenExit( benchmarkIntrospection::setUp, - () -> { while (true) { benchmarkIntrospection.benchMarkAvgTime(); }}, - () ->{} + () -> { + while (true) { + benchmarkIntrospection.benchMarkAvgTime(); + } + }, + () -> { + } ); } - private static String createDeepQuery(int depth) { String result = "query test {\n" + " __schema {\n" + @@ -100,12 +106,12 @@ private static String createDeepQuery(int depth) { result += " fragment F" + i + " on __Type {\n" + " fields {\n" + " type {\n" + - " ...F" + (i + 1) +"\n" + + " ...F" + (i + 1) + "\n" + " }\n" + " }\n" + "\n" + " ofType {\n" + - " ...F"+ (i + 1) + "\n" + + " ...F" + (i + 1) + "\n" + " }\n" + " }\n"; } diff --git a/src/test/java/benchmark/ENFExtraLargeBenchmark.java b/src/test/java/performance/ENFExtraLargePerformance.java similarity index 88% rename from src/test/java/benchmark/ENFExtraLargeBenchmark.java rename to src/test/java/performance/ENFExtraLargePerformance.java index 19a410a44d..f0be3a09c5 100644 --- a/src/test/java/benchmark/ENFExtraLargeBenchmark.java +++ b/src/test/java/performance/ENFExtraLargePerformance.java @@ -1,4 +1,4 @@ -package benchmark; +package performance; import graphql.execution.CoercedVariables; import graphql.language.Document; @@ -25,7 +25,7 @@ @Warmup(iterations = 2, time = 5) @Measurement(iterations = 3) @Fork(3) -public class ENFExtraLargeBenchmark { +public class ENFExtraLargePerformance { @State(Scope.Benchmark) public static class MyState { @@ -36,10 +36,10 @@ public static class MyState { @Setup public void setup() { try { - String schemaString = BenchmarkUtils.loadResource("extra-large-schema-1.graphqls"); + String schemaString = PerformanceTestingUtils.loadResource("extra-large-schema-1.graphqls"); schema = SchemaGenerator.createdMockedSchema(schemaString); - String query = BenchmarkUtils.loadResource("extra-large-schema-1-query.graphql"); + String query = PerformanceTestingUtils.loadResource("extra-large-schema-1-query.graphql"); document = Parser.parse(query); } catch (Exception e) { throw new RuntimeException(e); diff --git a/src/test/java/performance/OverlappingFieldValidationPerformance.java b/src/test/java/performance/OverlappingFieldValidationPerformance.java new file mode 100644 index 0000000000..19e7c0cdda --- /dev/null +++ b/src/test/java/performance/OverlappingFieldValidationPerformance.java @@ -0,0 +1,246 @@ +package performance; + +import graphql.Assert; +import graphql.ExecutionResult; +import graphql.GraphQL; +import graphql.i18n.I18n; +import graphql.language.Document; +import graphql.parser.Parser; +import graphql.schema.GraphQLSchema; +import graphql.schema.idl.SchemaGenerator; +import graphql.validation.LanguageTraversal; +import graphql.validation.RulesVisitor; +import graphql.validation.ValidationContext; +import graphql.validation.ValidationError; +import graphql.validation.ValidationErrorCollector; +import graphql.validation.rules.OverlappingFieldsCanBeMerged; +import org.openjdk.jmh.annotations.Benchmark; +import org.openjdk.jmh.annotations.BenchmarkMode; +import org.openjdk.jmh.annotations.Fork; +import org.openjdk.jmh.annotations.Measurement; +import org.openjdk.jmh.annotations.Mode; +import org.openjdk.jmh.annotations.OutputTimeUnit; +import org.openjdk.jmh.annotations.Param; +import org.openjdk.jmh.annotations.Scope; +import org.openjdk.jmh.annotations.Setup; +import org.openjdk.jmh.annotations.State; +import org.openjdk.jmh.annotations.Warmup; +import org.openjdk.jmh.infra.Blackhole; + +import java.util.Collections; +import java.util.List; +import java.util.Locale; +import java.util.concurrent.TimeUnit; + +import static graphql.Assert.assertTrue; + +@State(Scope.Benchmark) +@Warmup(iterations = 2, time = 5) +@Measurement(iterations = 3) +@Fork(3) +public class OverlappingFieldValidationPerformance { + + + static String schemaSdl = " type Query { viewer: Viewer } interface Abstract { field: Abstract leaf: Int } interface Abstract1 { field: Abstract leaf: Int } interface Abstract2 { field: Abstract leaf: Int }" + + " type Concrete1 implements Abstract1{ field: Abstract leaf: Int} " + + "type Concrete2 implements Abstract2{ field: Abstract leaf: Int} " + + "type Viewer { xingId: XingId } type XingId { firstName: String! lastName: String! }"; + + @State(Scope.Benchmark) + public static class MyState { + + GraphQLSchema schema; + GraphQLSchema schema2; + Document document; + + @Param({"100"}) + int size; + + Document overlapFrag; + Document overlapNoFrag; + Document noOverlapFrag; + Document noOverlapNoFrag; + Document repeatedFields; + Document deepAbstractConcrete; + + @Setup + public void setup() { + try { + overlapFrag = makeQuery(size, true, true); + overlapNoFrag = makeQuery(size, true, false); + noOverlapFrag = makeQuery(size, false, true); + noOverlapNoFrag = makeQuery(size, false, false); + repeatedFields = makeRepeatedFieldsQuery(size); + deepAbstractConcrete = makeDeepAbstractConcreteQuery(size); + + + schema2 = SchemaGenerator.createdMockedSchema(schemaSdl); + + String schemaString = PerformanceTestingUtils.loadResource("large-schema-4.graphqls"); + String query = PerformanceTestingUtils.loadResource("large-schema-4-query.graphql"); + schema = SchemaGenerator.createdMockedSchema(schemaString); + document = Parser.parse(query); + + // make sure this is a valid query overall + GraphQL graphQL = GraphQL.newGraphQL(schema).build(); + ExecutionResult executionResult = graphQL.execute(query); + assertTrue(executionResult.getErrors().size() == 0); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + } + + @Benchmark + @BenchmarkMode(Mode.AverageTime) + @OutputTimeUnit(TimeUnit.NANOSECONDS) + public void overlappingFieldValidationAvgTime(MyState myState, Blackhole blackhole) { + blackhole.consume(validateQuery(myState.schema, myState.document)); + } + + @Benchmark + @BenchmarkMode(Mode.Throughput) + @OutputTimeUnit(TimeUnit.SECONDS) + public void overlappingFieldValidationThroughput(MyState myState, Blackhole blackhole) { + blackhole.consume(validateQuery(myState.schema, myState.document)); + } + + @Benchmark + @BenchmarkMode(Mode.AverageTime) + @OutputTimeUnit(TimeUnit.MILLISECONDS) + public void benchmarkRepeatedFields(MyState myState, Blackhole blackhole) { + blackhole.consume(validateQuery(myState.schema2, myState.repeatedFields)); + } + + @Benchmark + @BenchmarkMode(Mode.AverageTime) + @OutputTimeUnit(TimeUnit.MILLISECONDS) + public void benchmarkOverlapFrag(MyState myState, Blackhole blackhole) { + blackhole.consume(validateQuery(myState.schema2, myState.overlapFrag)); + } + + @Benchmark + @BenchmarkMode(Mode.AverageTime) + @OutputTimeUnit(TimeUnit.MILLISECONDS) + public void benchmarkOverlapNoFrag(MyState myState, Blackhole blackhole) { + blackhole.consume(validateQuery(myState.schema2, myState.overlapNoFrag)); + } + + @Benchmark + @BenchmarkMode(Mode.AverageTime) + @OutputTimeUnit(TimeUnit.MILLISECONDS) + public void benchmarkNoOverlapFrag(MyState myState, Blackhole blackhole) { + blackhole.consume(validateQuery(myState.schema2, myState.noOverlapFrag)); + } + + @Benchmark + @BenchmarkMode(Mode.AverageTime) + @OutputTimeUnit(TimeUnit.MILLISECONDS) + public void benchmarkNoOverlapNoFrag(MyState myState, Blackhole blackhole) { + blackhole.consume(validateQuery(myState.schema2, myState.noOverlapNoFrag)); + } + + @Benchmark + @BenchmarkMode(Mode.AverageTime) + @OutputTimeUnit(TimeUnit.MILLISECONDS) + public void benchmarkDeepAbstractConcrete(MyState myState, Blackhole blackhole) { + blackhole.consume(validateQuery(myState.schema2, myState.deepAbstractConcrete)); + } + + private List validateQuery(GraphQLSchema schema, Document document) { + ValidationErrorCollector errorCollector = new ValidationErrorCollector(); + I18n i18n = I18n.i18n(I18n.BundleType.Validation, Locale.ENGLISH); + ValidationContext validationContext = new ValidationContext(schema, document, i18n); + OverlappingFieldsCanBeMerged overlappingFieldsCanBeMerged = new OverlappingFieldsCanBeMerged(validationContext, errorCollector); + LanguageTraversal languageTraversal = new LanguageTraversal(); + languageTraversal.traverse(document, new RulesVisitor(validationContext, Collections.singletonList(overlappingFieldsCanBeMerged))); + Assert.assertTrue(errorCollector.getErrors().size() == 0); + return errorCollector.getErrors(); + } + + + private static Document makeQuery(int size, boolean overlapping, boolean fragments) { + if (fragments) { + return makeQueryWithFragments(size, overlapping); + } else { + return makeQueryWithoutFragments(size, overlapping); + } + } + + private static Document makeRepeatedFieldsQuery(int size) { + StringBuilder b = new StringBuilder(); + + b.append(" query testQuery { viewer { xingId {"); + + b.append("firstName\n".repeat(Math.max(0, size))); + + b.append("} } }"); + + return Parser.parse(b.toString()); + } + + + private static Document makeQueryWithFragments(int size, boolean overlapping) { + StringBuilder b = new StringBuilder(); + + for (int i = 1; i <= size; i++) { + if (overlapping) { + b.append(" fragment mergeIdenticalFields" + i + " on Query {viewer { xingId { firstName lastName }}}"); + } else { + b.append("fragment mergeIdenticalFields" + i + " on Query {viewer" + i + " { xingId" + i + " { firstName" + i + " lastName" + i + " } }}"); + } + + b.append("\n\n"); + } + + b.append("query testQuery {"); + for (int i = 1; i <= size; i++) { + b.append("...mergeIdenticalFields" + i + "\n"); + } + b.append("}"); + return Parser.parse(b.toString()); + } + + private static Document makeQueryWithoutFragments(int size, boolean overlapping) { + StringBuilder b = new StringBuilder(); + + b.append("query testQuery {"); + + for (int i = 1; i <= size; i++) { + if (overlapping) { + b.append(" viewer { xingId { firstName } } "); + } else { + b.append(" viewer" + i + " { xingId" + i + " { firstName" + i + " } } "); + } + + b.append("\n\n"); + } + + b.append("}"); + + return Parser.parse(b.toString()); + } + + private static Document makeDeepAbstractConcreteQuery(int depth) { + StringBuilder q = new StringBuilder(); + + q.append("fragment multiply on Whatever { field { " + + "... on Abstract1 { field { leaf } } " + + "... on Abstract2 { field { leaf } } " + + "... on Concrete1 { field { leaf } } " + + "... on Concrete2 { field { leaf } } } } " + + "query DeepAbstractConcrete { "); + + for (int i = 1; i <= depth; i++) { + q.append("field { ...multiply "); + } + + for (int i = 1; i <= depth; i++) { + q.append(" }"); + } + + q.append("\n}"); + + return Parser.parse(q.toString()); + } +} diff --git a/src/test/java/performance/PerformanceTestingUtils.java b/src/test/java/performance/PerformanceTestingUtils.java new file mode 100644 index 0000000000..9e05fd661c --- /dev/null +++ b/src/test/java/performance/PerformanceTestingUtils.java @@ -0,0 +1,84 @@ +package performance; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.net.URL; +import java.nio.charset.Charset; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.concurrent.Callable; + +public class PerformanceTestingUtils { + + @SuppressWarnings("UnstableApiUsage") + static String loadResource(String name) { + return asRTE(() -> { + URL resource = PerformanceTestingUtils.class.getClassLoader().getResource(name); + if (resource == null) { + throw new IllegalArgumentException("missing resource: " + name); + } + byte[] bytes; + try (InputStream inputStream = resource.openStream()) { + bytes = inputStream.readAllBytes(); + } + return new String(bytes, Charset.defaultCharset()); + }); + } + + static T asRTE(Callable callable) { + try { + return callable.call(); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + + public static void runInToolingForSomeTimeThenExit(Runnable setup, Runnable r, Runnable tearDown) { + int runForMillis = getRunForMillis(); + if (runForMillis <= 0) { + System.out.print("'runForMillis' environment var is not set - continuing \n"); + return; + } + System.out.printf("Running initial code in some tooling - runForMillis=%d \n", runForMillis); + System.out.print("Get your tooling in order and press enter..."); + readLine(); + System.out.print("Lets go...\n"); + setup.run(); + + DateTimeFormatter dtf = DateTimeFormatter.ofPattern("HH:mm:ss"); + long now, then = System.currentTimeMillis(); + do { + now = System.currentTimeMillis(); + long msLeft = runForMillis - (now - then); + System.out.printf("\t%s Running in loop... %s ms left\n", dtf.format(LocalDateTime.now()), msLeft); + r.run(); + now = System.currentTimeMillis(); + } while ((now - then) < runForMillis); + + tearDown.run(); + + System.out.printf("This ran for %d millis. Exiting...\n", System.currentTimeMillis() - then); + System.exit(0); + } + + private static void readLine() { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + try { + br.readLine(); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + + private static int getRunForMillis() { + String runFor = System.getenv("runForMillis"); + try { + return Integer.parseInt(runFor); + } catch (NumberFormatException e) { + return -1; + } + } + +} diff --git a/src/test/java/reproductions/SubscriptionReproduction.java b/src/test/java/reproductions/SubscriptionReproduction.java new file mode 100644 index 0000000000..47bde26e74 --- /dev/null +++ b/src/test/java/reproductions/SubscriptionReproduction.java @@ -0,0 +1,202 @@ +package reproductions; + +import graphql.ExecutionInput; +import graphql.ExecutionResult; +import graphql.GraphQL; +import graphql.execution.SubscriptionExecutionStrategy; +import graphql.schema.DataFetchingEnvironment; +import graphql.schema.GraphQLSchema; +import graphql.schema.idl.RuntimeWiring; +import graphql.schema.idl.SchemaGenerator; +import graphql.schema.idl.SchemaParser; +import org.jspecify.annotations.NonNull; +import org.reactivestreams.Publisher; +import org.reactivestreams.Subscriber; +import org.reactivestreams.Subscription; +import reactor.core.publisher.Flux; +import reactor.core.publisher.Mono; +import reactor.core.scheduler.Schedulers; + +import java.util.Map; +import java.util.Random; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.atomic.AtomicBoolean; +import java.util.function.Supplier; + +import static graphql.schema.idl.RuntimeWiring.newRuntimeWiring; +import static graphql.schema.idl.TypeRuntimeWiring.newTypeWiring; + +/** + * Related to ... + *

    + * This reproduction is to see what's happening with Subscriptions and whether they keep their + * order when values are async. + */ +public class SubscriptionReproduction { + public static void main(String[] args) { + new SubscriptionReproduction().run(args); + } + + private void run(String[] args) { + + boolean ordered = args.length > 0 && "ordered".equals(args[0]); + + GraphQL graphQL = mkGraphQl(); + String query = "subscription MySubscription {\n" + + " searchVideo {\n" + + " id\n" + + " name\n" + + " lastEpisode\n" + + " isFavorite\n" + + " }\n" + + "}"; + + ExecutionInput executionInput = ExecutionInput.newExecutionInput().query(query).graphQLContext( + b -> b.put(SubscriptionExecutionStrategy.KEEP_SUBSCRIPTION_EVENTS_ORDERED, ordered) + ).build(); + ExecutionResult executionResult = graphQL.execute(executionInput); + Publisher> publisher = executionResult.getData(); + + DeathEater eater = new DeathEater(); + eater.eat(publisher); + } + + private GraphQL mkGraphQl() { + String sdl = "type Query { f : ID }" + + "type Subscription {" + + " searchVideo : VideoSearch" + + "}" + + "type VideoSearch {" + + " id : ID" + + " name : String" + + " lastEpisode : String" + + " isFavorite : Boolean" + + "}"; + RuntimeWiring runtimeWiring = newRuntimeWiring() + .type(newTypeWiring("Subscription") + .dataFetcher("searchVideo", this::mkFluxDF) + ) + .type(newTypeWiring("VideoSearch") + .dataFetcher("name", this::nameDF) + .dataFetcher("isFavorite", this::isFavoriteDF) + .dataFetcher("lastEpisode", this::lastEpisode) + ) + .build(); + + GraphQLSchema schema = new SchemaGenerator().makeExecutableSchema( + new SchemaParser().parse(sdl), runtimeWiring + ); + return GraphQL.newGraphQL(schema).build(); + } + + private CompletableFuture> mkFluxDF(DataFetchingEnvironment env) { + // async deliver of the publisher with random snoozing between values + Supplier> fluxSupplier = () -> Flux.generate(() -> 0, (counter, sink) -> { + sink.next(mkValue(counter)); + snooze(rand(10, 100)); + if (counter == 10) { + sink.complete(); + } + return counter + 1; + }); + return CompletableFuture.supplyAsync(fluxSupplier); + } + + private Object isFavoriteDF(DataFetchingEnvironment env) { + // async deliver of the isFavorite property with random delay + return CompletableFuture.supplyAsync(() -> { + Integer counter = getCounter(env.getSource()); + return counter % 2 == 0; + }); + } + + private Object lastEpisode(DataFetchingEnvironment env) { + // Mono-based async property that uses CF as the interface + return Mono.fromCallable(() -> { + Integer counter = getCounter(env.getSource()); + return "episode-" + Thread.currentThread().getName() + "for" + counter; + }) + .publishOn(Schedulers.boundedElastic()) + .toFuture(); + } + + private Object nameDF(DataFetchingEnvironment env) { + // async deliver of the isFavorite property with random delay + return CompletableFuture.supplyAsync(() -> { + Integer counter = getCounter(env.getSource()); + return "name" + counter; + }); + } + + private static Integer getCounter(Map video) { + Integer counter = (Integer) video.getOrDefault("counter", 0); + snooze(rand(100, 500)); + return counter; + } + + private @NonNull Object mkValue(Integer counter) { + // name and isFavorite are future values via DFs + return Map.of( + "counter", counter, + "id", String.valueOf(counter) // immediate value + ); + } + + + private static void snooze(int ms) { + try { + Thread.sleep(ms); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + } + + static Random rn = new Random(); + + private static int rand(int min, int max) { + return rn.nextInt(max - min + 1) + min; + } + + public static class DeathEater implements Subscriber { + private Subscription subscription; + private final AtomicBoolean done = new AtomicBoolean(); + + public boolean isDone() { + return done.get(); + } + + @Override + public void onSubscribe(Subscription subscription) { + this.subscription = subscription; + System.out.println("onSubscribe"); + subscription.request(10); + } + + @Override + public void onNext(Object o) { + System.out.println("\tonNext : " + o); + subscription.request(1); + } + + @Override + public void onError(Throwable throwable) { + System.out.println("onError"); + throwable.printStackTrace(System.err); + done.set(true); + } + + @Override + public void onComplete() { + System.out.println("complete"); + done.set(true); + } + + public void eat(Publisher publisher) { + publisher.subscribe(this); + while (!this.isDone()) { + snooze(2); + } + + } + } +} diff --git a/src/test/resources/large-schema-1.graphqls b/src/test/resources/large-schema-1.graphqls index 65f548089a..d56a03590d 100644 --- a/src/test/resources/large-schema-1.graphqls +++ b/src/test/resources/large-schema-1.graphqls @@ -15,7 +15,11 @@ directive @skip( if: Boolean! ) on FIELD | FRAGMENT_SPREAD | INLINE_FRAGMENT -directive @deprecated(reason: String) on FIELD_DEFINITION | ENUM_VALUE +"Marks the field, argument, input field or enum value as deprecated" +directive @deprecated( + "The reason for the deprecation" + reason: String! = "No longer supported" +) on FIELD_DEFINITION | ARGUMENT_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION "Exposes a URL that specifies the behaviour of this scalar." directive @specifiedBy( @@ -544,4 +548,4 @@ input InputObject9 { inputField32: [ID!] inputField33: [Scalar2] inputField34: InputObject8 -} \ No newline at end of file +} diff --git a/src/test/resources/many-fragments.graphqls b/src/test/resources/many-fragments.graphqls index 977da297a9..928774ea70 100644 --- a/src/test/resources/many-fragments.graphqls +++ b/src/test/resources/many-fragments.graphqls @@ -25,7 +25,11 @@ directive @Directive8(argument7: Enum3!) on FIELD_DEFINITION directive @Directive9(argument8: String!) on OBJECT -directive @deprecated(reason: String) on FIELD_DEFINITION | ARGUMENT_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION +"Marks the field, argument, input field or enum value as deprecated" +directive @deprecated( + "The reason for the deprecation" + reason: String! = "No longer supported" +) on FIELD_DEFINITION | ARGUMENT_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION "Directs the executor to include this field or fragment only when the `if` argument is true" directive @include(