diff --git a/bin/jmh.sh b/bin/jmh.sh new file mode 100755 index 0000000000..26aa5e9460 --- /dev/null +++ b/bin/jmh.sh @@ -0,0 +1,9 @@ +#!/usr/bin/env bash + +BRANCH=$(git rev-parse --abbrev-ref HEAD) +JAR="build/libs/graphql-java-0.0.0-$BRANCH-SNAPSHOT-jmh.jar" +echo "build and then running jmh for $JAR" + +./gradlew clean jmhJar + +java -jar "$JAR" "$@" \ No newline at end of file diff --git a/build.gradle b/build.gradle index bc09fed61d..c0313eba89 100644 --- a/build.gradle +++ b/build.gradle @@ -119,7 +119,7 @@ jar { } dependencies { - api 'com.graphql-java:java-dataloader:5.0.0' + api 'com.graphql-java:java-dataloader:5.0.1' api 'org.reactivestreams:reactive-streams:' + reactiveStreamsVersion api "org.jspecify:jspecify:1.0.0" @@ -152,7 +152,7 @@ dependencies { jmh 'org.openjdk.jmh:jmh-generator-annprocess:1.37' errorprone 'com.uber.nullaway:nullaway:0.12.7' - errorprone 'com.google.errorprone:error_prone_core:2.39.0' + errorprone 'com.google.errorprone:error_prone_core:2.40.0' // just tests - no Kotlin otherwise testCompileOnly 'org.jetbrains.kotlin:kotlin-stdlib-jdk8' diff --git a/performance-results/2025-07-08T02:45:03Z-48f469d204c9b0e955bc8fbb7ae15d40f05711ea-jdk17.json b/performance-results/2025-07-08T02:45:03Z-48f469d204c9b0e955bc8fbb7ae15d40f05711ea-jdk17.json new file mode 100644 index 0000000000..8073a7d49c --- /dev/null +++ b/performance-results/2025-07-08T02:45:03Z-48f469d204c9b0e955bc8fbb7ae15d40f05711ea-jdk17.json @@ -0,0 +1,1279 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit 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.3111861877386053, + "scoreError" : 0.04470102755307947, + "scoreConfidence" : [ + 3.266485160185526, + 3.3558872152916845 + ], + "scorePercentiles" : { + "0.0" : 3.3049687089703568, + "50.0" : 3.3094569453262896, + "90.0" : 3.320862151331487, + "95.0" : 3.320862151331487, + "99.0" : 3.320862151331487, + "99.9" : 3.320862151331487, + "99.99" : 3.320862151331487, + "99.999" : 3.320862151331487, + "99.9999" : 3.320862151331487, + "100.0" : 3.320862151331487 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.3078298410530467, + 3.3110840495995326 + ], + [ + 3.3049687089703568, + 3.320862151331487 + ] + ] + }, + "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.6753659085298707, + "scoreError" : 0.02860010959827416, + "scoreConfidence" : [ + 1.6467657989315965, + 1.7039660181281449 + ], + "scorePercentiles" : { + "0.0" : 1.6725027788648428, + "50.0" : 1.6735065161850493, + "90.0" : 1.6819478228845417, + "95.0" : 1.6819478228845417, + "99.0" : 1.6819478228845417, + "99.9" : 1.6819478228845417, + "99.99" : 1.6819478228845417, + "99.999" : 1.6819478228845417, + "99.9999" : 1.6819478228845417, + "100.0" : 1.6819478228845417 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.6739139151999702, + 1.6819478228845417 + ], + [ + 1.6725027788648428, + 1.6730991171701284 + ] + ] + }, + "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.8421832733153307, + "scoreError" : 0.0354929934469997, + "scoreConfidence" : [ + 0.806690279868331, + 0.8776762667623305 + ], + "scorePercentiles" : { + "0.0" : 0.8343765017386404, + "50.0" : 0.8436491691662704, + "90.0" : 0.8470582531901418, + "95.0" : 0.8470582531901418, + "99.0" : 0.8470582531901418, + "99.9" : 0.8470582531901418, + "99.99" : 0.8470582531901418, + "99.999" : 0.8470582531901418, + "99.9999" : 0.8470582531901418, + "100.0" : 0.8470582531901418 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8343765017386404, + 0.8470582531901418 + ], + [ + 0.8427841566094152, + 0.8445141817231258 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit 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.877844446876482, + "scoreError" : 0.17759586155784932, + "scoreConfidence" : [ + 15.700248585318633, + 16.05544030843433 + ], + "scorePercentiles" : { + "0.0" : 15.778433816243677, + "50.0" : 15.875790957114207, + "90.0" : 15.959411956553302, + "95.0" : 15.959411956553302, + "99.0" : 15.959411956553302, + "99.9" : 15.959411956553302, + "99.99" : 15.959411956553302, + "99.999" : 15.959411956553302, + "99.9999" : 15.959411956553302, + "100.0" : 15.959411956553302 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 15.959411956553302, + 15.881307320211134, + 15.778433816243677 + ], + [ + 15.848763089624175, + 15.87027459401728, + 15.928875904609336 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2625.129232819502, + "scoreError" : 74.74242116017345, + "scoreConfidence" : [ + 2550.3868116593285, + 2699.871653979675 + ], + "scorePercentiles" : { + "0.0" : 2590.7559302768545, + "50.0" : 2633.3223789418107, + "90.0" : 2650.3388720892685, + "95.0" : 2650.3388720892685, + "99.0" : 2650.3388720892685, + "99.9" : 2650.3388720892685, + "99.99" : 2650.3388720892685, + "99.999" : 2650.3388720892685, + "99.9999" : 2650.3388720892685, + "100.0" : 2650.3388720892685 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2630.719588056037, + 2650.3388720892685, + 2635.925169827584 + ], + [ + 2590.7559302768545, + 2593.5786459636256, + 2649.4571907036425 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 76722.39059217849, + "scoreError" : 463.7358071425132, + "scoreConfidence" : [ + 76258.65478503598, + 77186.126399321 + ], + "scorePercentiles" : { + "0.0" : 76508.45852063182, + "50.0" : 76711.13400314134, + "90.0" : 76973.16205956138, + "95.0" : 76973.16205956138, + "99.0" : 76973.16205956138, + "99.9" : 76973.16205956138, + "99.99" : 76973.16205956138, + "99.999" : 76973.16205956138, + "99.9999" : 76973.16205956138, + "100.0" : 76973.16205956138 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 76973.16205956138, + 76779.59769384586, + 76811.03124363018 + ], + [ + 76619.42372296487, + 76642.6703124368, + 76508.45852063182 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 336.5046428066452, + "scoreError" : 11.584847503522433, + "scoreConfidence" : [ + 324.9197953031228, + 348.08949031016766 + ], + "scorePercentiles" : { + "0.0" : 330.8177965082622, + "50.0" : 336.09940638505753, + "90.0" : 342.3118122616779, + "95.0" : 342.3118122616779, + "99.0" : 342.3118122616779, + "99.9" : 342.3118122616779, + "99.99" : 342.3118122616779, + "99.999" : 342.3118122616779, + "99.9999" : 342.3118122616779, + "100.0" : 342.3118122616779 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 337.5329349398442, + 339.5512776513493, + 342.3118122616779 + ], + [ + 330.8177965082622, + 334.66587783027086, + 334.1481576484668 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "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.6112473012206, + "scoreError" : 10.262775363795884, + "scoreConfidence" : [ + 96.34847193742472, + 116.87402266501648 + ], + "scorePercentiles" : { + "0.0" : 102.27929920169393, + "50.0" : 106.99108172242693, + "90.0" : 111.23888913643067, + "95.0" : 111.23888913643067, + "99.0" : 111.23888913643067, + "99.9" : 111.23888913643067, + "99.99" : 111.23888913643067, + "99.999" : 111.23888913643067, + "99.9999" : 111.23888913643067, + "100.0" : 111.23888913643067 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 102.27929920169393, + 102.51190470324684, + 106.52684513921808 + ], + [ + 111.23888913643067, + 109.65522732109837, + 107.45531830563577 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.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" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06277289458362904, + "scoreError" : 0.0016463727331435215, + "scoreConfidence" : [ + 0.061126521850485525, + 0.06441926731677257 + ], + "scorePercentiles" : { + "0.0" : 0.06205951003487694, + "50.0" : 0.06269829759126007, + "90.0" : 0.06345989360027922, + "95.0" : 0.06345989360027922, + "99.0" : 0.06345989360027922, + "99.9" : 0.06345989360027922, + "99.99" : 0.06345989360027922, + "99.999" : 0.06345989360027922, + "99.9999" : 0.06345989360027922, + "100.0" : 0.06345989360027922 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06234717211259703, + 0.06337419657150099, + 0.06345989360027922 + ], + [ + 0.06300545099200473, + 0.062391144190515405, + 0.06205951003487694 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "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" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.7993614329277125E-4, + "scoreError" : 8.952824358270682E-6, + "scoreConfidence" : [ + 3.709833189345006E-4, + 3.888889676510419E-4 + ], + "scorePercentiles" : { + "0.0" : 3.767672024697854E-4, + "50.0" : 3.785163843943335E-4, + "90.0" : 3.84583105211169E-4, + "95.0" : 3.84583105211169E-4, + "99.0" : 3.84583105211169E-4, + "99.9" : 3.84583105211169E-4, + "99.99" : 3.84583105211169E-4, + "99.999" : 3.84583105211169E-4, + "99.9999" : 3.84583105211169E-4, + "100.0" : 3.84583105211169E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.7824936950372465E-4, + 3.787833992849424E-4, + 3.7794966499175457E-4 + ], + [ + 3.767672024697854E-4, + 3.84583105211169E-4, + 3.832841182952514E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "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" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.12830921352283547, + "scoreError" : 0.002731332017477503, + "scoreConfidence" : [ + 0.12557788150535798, + 0.13104054554031297 + ], + "scorePercentiles" : { + "0.0" : 0.1269519347983395, + "50.0" : 0.12827221420476245, + "90.0" : 0.1293692783958603, + "95.0" : 0.1293692783958603, + "99.0" : 0.1293692783958603, + "99.9" : 0.1293692783958603, + "99.99" : 0.1293692783958603, + "99.999" : 0.1293692783958603, + "99.9999" : 0.1293692783958603, + "100.0" : 0.1293692783958603 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.12777093854370297, + 0.1269519347983395, + 0.12771911583948503 + ], + [ + 0.12927052369380315, + 0.1293692783958603, + 0.12877348986582193 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.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" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.013348862864830328, + "scoreError" : 3.2105634440955406E-4, + "scoreConfidence" : [ + 0.013027806520420774, + 0.013669919209239883 + ], + "scorePercentiles" : { + "0.0" : 0.013227774104624892, + "50.0" : 0.013356163110647475, + "90.0" : 0.013468953135459332, + "95.0" : 0.013468953135459332, + "99.0" : 0.013468953135459332, + "99.9" : 0.013468953135459332, + "99.99" : 0.013468953135459332, + "99.999" : 0.013468953135459332, + "99.9999" : 0.013468953135459332, + "100.0" : 0.013468953135459332 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013468953135459332, + 0.013444068554458533, + 0.013444049000114273 + ], + [ + 0.013268277221180676, + 0.013240055173144269, + 0.013227774104624892 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.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" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9968187037689585, + "scoreError" : 0.009986572694560615, + "scoreConfidence" : [ + 0.9868321310743979, + 1.0068052764635191 + ], + "scorePercentiles" : { + "0.0" : 0.9929747458047861, + "50.0" : 0.9963180555242077, + "90.0" : 1.0023362932745314, + "95.0" : 1.0023362932745314, + "99.0" : 1.0023362932745314, + "99.9" : 1.0023362932745314, + "99.99" : 1.0023362932745314, + "99.999" : 1.0023362932745314, + "99.9999" : 1.0023362932745314, + "100.0" : 1.0023362932745314 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9980668740518962, + 1.0023362932745314, + 0.9988648376947663 + ], + [ + 0.9929747458047861, + 0.9941002347912525, + 0.9945692369965191 + ] + ] + }, + "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.010905440239151456, + "scoreError" : 8.594165241699118E-4, + "scoreConfidence" : [ + 0.010046023714981544, + 0.011764856763321369 + ], + "scorePercentiles" : { + "0.0" : 0.010556125764507433, + "50.0" : 0.01092512002364807, + "90.0" : 0.011205883796085673, + "95.0" : 0.011205883796085673, + "99.0" : 0.011205883796085673, + "99.9" : 0.011205883796085673, + "99.99" : 0.011205883796085673, + "99.999" : 0.011205883796085673, + "99.9999" : 0.011205883796085673, + "100.0" : 0.011205883796085673 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.01068130523880527, + 0.010647859976021686, + 0.010556125764507433 + ], + [ + 0.011168934808490868, + 0.011205883796085673, + 0.011172531850997794 + ] + ] + }, + "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.3453512570174113, + "scoreError" : 0.06386717355793192, + "scoreConfidence" : [ + 3.281484083459479, + 3.4092184305753435 + ], + "scorePercentiles" : { + "0.0" : 3.3175940039787797, + "50.0" : 3.3403724550869565, + "90.0" : 3.373957721322537, + "95.0" : 3.373957721322537, + "99.0" : 3.373957721322537, + "99.9" : 3.373957721322537, + "99.99" : 3.373957721322537, + "99.999" : 3.373957721322537, + "99.9999" : 3.373957721322537, + "100.0" : 3.373957721322537 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.3707236138814016, + 3.373957721322537, + 3.335524458 + ], + [ + 3.3175940039787797, + 3.345220452173913, + 3.329087292747838 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.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" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.0079616733984746, + "scoreError" : 0.08355177916826348, + "scoreConfidence" : [ + 2.924409894230211, + 3.0915134525667383 + ], + "scorePercentiles" : { + "0.0" : 2.9821529499105544, + "50.0" : 2.999913718133117, + "90.0" : 3.0636365065849924, + "95.0" : 3.0636365065849924, + "99.0" : 3.0636365065849924, + "99.9" : 3.0636365065849924, + "99.99" : 3.0636365065849924, + "99.999" : 3.0636365065849924, + "99.9999" : 3.0636365065849924, + "100.0" : 3.0636365065849924 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.008593572330827, + 2.9821529499105544, + 2.9912338639354066 + ], + [ + 2.9888697149686285, + 3.01328343266044, + 3.0636365065849924 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "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" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.18122155300118947, + "scoreError" : 0.009063308059644172, + "scoreConfidence" : [ + 0.1721582449415453, + 0.19028486106083364 + ], + "scorePercentiles" : { + "0.0" : 0.1780329494935109, + "50.0" : 0.1809839238952508, + "90.0" : 0.18515482881264927, + "95.0" : 0.18515482881264927, + "99.0" : 0.18515482881264927, + "99.9" : 0.18515482881264927, + "99.99" : 0.18515482881264927, + "99.999" : 0.18515482881264927, + "99.9999" : 0.18515482881264927, + "100.0" : 0.18515482881264927 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.18313498903050945, + 0.18515482881264927, + 0.18401856169954364 + ], + [ + 0.17883285875999214, + 0.17815513021093138, + 0.1780329494935109 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "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" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.31816100737555447, + "scoreError" : 0.008830802387586744, + "scoreConfidence" : [ + 0.3093302049879677, + 0.32699180976314124 + ], + "scorePercentiles" : { + "0.0" : 0.3145582155888274, + "50.0" : 0.31776938356964624, + "90.0" : 0.3220582074329329, + "95.0" : 0.3220582074329329, + "99.0" : 0.3220582074329329, + "99.9" : 0.3220582074329329, + "99.99" : 0.3220582074329329, + "99.999" : 0.3220582074329329, + "99.9999" : 0.3220582074329329, + "100.0" : 0.3220582074329329 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3158951409167009, + 0.3145582155888274, + 0.31576292491316704 + ], + [ + 0.3220582074329329, + 0.32104792917910685, + 0.31964362622259157 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "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" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1424024796974789, + "scoreError" : 0.004456492077122292, + "scoreConfidence" : [ + 0.13794598762035662, + 0.1468589717746012 + ], + "scorePercentiles" : { + "0.0" : 0.14066881949895205, + "50.0" : 0.14223852714229443, + "90.0" : 0.14494651903119202, + "95.0" : 0.14494651903119202, + "99.0" : 0.14494651903119202, + "99.9" : 0.14494651903119202, + "99.99" : 0.14494651903119202, + "99.999" : 0.14494651903119202, + "99.9999" : 0.14494651903119202, + "100.0" : 0.14494651903119202 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.14147809809857959, + 0.14120629286924596, + 0.14066881949895205 + ], + [ + 0.14494651903119202, + 0.14299895618600927, + 0.14311619250089447 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "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" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.40966062381724605, + "scoreError" : 0.022533144263186478, + "scoreConfidence" : [ + 0.3871274795540596, + 0.4321937680804325 + ], + "scorePercentiles" : { + "0.0" : 0.40210735778045836, + "50.0" : 0.409238245903968, + "90.0" : 0.41810533075507983, + "95.0" : 0.41810533075507983, + "99.0" : 0.41810533075507983, + "99.9" : 0.41810533075507983, + "99.99" : 0.41810533075507983, + "99.999" : 0.41810533075507983, + "99.9999" : 0.41810533075507983, + "100.0" : 0.41810533075507983 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.4024812152688345, + 0.40246750116709595, + 0.40210735778045836 + ], + [ + 0.4159952765391015, + 0.41810533075507983, + 0.41680706139290624 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "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" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15530993485383823, + "scoreError" : 0.0018728554582300564, + "scoreConfidence" : [ + 0.1534370793956082, + 0.15718279031206828 + ], + "scorePercentiles" : { + "0.0" : 0.15455439169139465, + "50.0" : 0.15528874632037193, + "90.0" : 0.15612519779241865, + "95.0" : 0.15612519779241865, + "99.0" : 0.15612519779241865, + "99.9" : 0.15612519779241865, + "99.99" : 0.15612519779241865, + "99.999" : 0.15612519779241865, + "99.9999" : 0.15612519779241865, + "100.0" : 0.15612519779241865 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15587509144896813, + 0.15569813772809366, + 0.15612519779241865 + ], + [ + 0.15455439169139465, + 0.1547274355495041, + 0.15487935491265023 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "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" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.047980968429249295, + "scoreError" : 0.0071018296586655, + "scoreConfidence" : [ + 0.040879138770583794, + 0.055082798087914796 + ], + "scorePercentiles" : { + "0.0" : 0.045308783196125246, + "50.0" : 0.04797000298196152, + "90.0" : 0.05074128772941075, + "95.0" : 0.05074128772941075, + "99.0" : 0.05074128772941075, + "99.9" : 0.05074128772941075, + "99.99" : 0.05074128772941075, + "99.999" : 0.05074128772941075, + "99.9999" : 0.05074128772941075, + "100.0" : 0.05074128772941075 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.05074128772941075, + 0.050183216461838785, + 0.049882316368624516 + ], + [ + 0.04605768959529852, + 0.04571251722419799, + 0.045308783196125246 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "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" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9167712.766603893, + "scoreError" : 627819.1233977225, + "scoreConfidence" : [ + 8539893.64320617, + 9795531.890001616 + ], + "scorePercentiles" : { + "0.0" : 8894901.506666666, + "50.0" : 9234356.134530727, + "90.0" : 9458672.793005671, + "95.0" : 9458672.793005671, + "99.0" : 9458672.793005671, + "99.9" : 9458672.793005671, + "99.99" : 9458672.793005671, + "99.999" : 9458672.793005671, + "99.9999" : 9458672.793005671, + "100.0" : 9458672.793005671 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 8904308.558718862, + 8894901.506666666, + 9253595.640148012 + ], + [ + 9279681.472170686, + 9215116.628913444, + 9458672.793005671 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-07-10T01:24:24Z-ecaebb16aeb692ba23468c5cd82b1cad34aa5554-jdk17.json b/performance-results/2025-07-10T01:24:24Z-ecaebb16aeb692ba23468c5cd82b1cad34aa5554-jdk17.json new file mode 100644 index 0000000000..496e0044c2 --- /dev/null +++ b/performance-results/2025-07-10T01:24:24Z-ecaebb16aeb692ba23468c5cd82b1cad34aa5554-jdk17.json @@ -0,0 +1,1279 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit 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.323005923108179, + "scoreError" : 0.04315431117395122, + "scoreConfidence" : [ + 3.2798516119342276, + 3.3661602342821304 + ], + "scorePercentiles" : { + "0.0" : 3.3160301993257795, + "50.0" : 3.3225227127798456, + "90.0" : 3.330948067547246, + "95.0" : 3.330948067547246, + "99.0" : 3.330948067547246, + "99.9" : 3.330948067547246, + "99.99" : 3.330948067547246, + "99.999" : 3.330948067547246, + "99.9999" : 3.330948067547246, + "100.0" : 3.330948067547246 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.319237229857945, + 3.3258081957017462 + ], + [ + 3.3160301993257795, + 3.330948067547246 + ] + ] + }, + "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.673868262976891, + "scoreError" : 0.03020656530751464, + "scoreConfidence" : [ + 1.6436616976693765, + 1.7040748282844056 + ], + "scorePercentiles" : { + "0.0" : 1.6668959889018127, + "50.0" : 1.6758426967660927, + "90.0" : 1.6768916694735663, + "95.0" : 1.6768916694735663, + "99.0" : 1.6768916694735663, + "99.9" : 1.6768916694735663, + "99.99" : 1.6768916694735663, + "99.999" : 1.6768916694735663, + "99.9999" : 1.6768916694735663, + "100.0" : 1.6768916694735663 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.6668959889018127, + 1.6768916694735663 + ], + [ + 1.6758777982453095, + 1.675807595286876 + ] + ] + }, + "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.8442386528591477, + "scoreError" : 0.05158203258772448, + "scoreConfidence" : [ + 0.7926566202714231, + 0.8958206854468722 + ], + "scorePercentiles" : { + "0.0" : 0.8324064853223972, + "50.0" : 0.8473190211568677, + "90.0" : 0.8499100838004581, + "95.0" : 0.8499100838004581, + "99.0" : 0.8499100838004581, + "99.9" : 0.8499100838004581, + "99.99" : 0.8499100838004581, + "99.999" : 0.8499100838004581, + "99.9999" : 0.8499100838004581, + "100.0" : 0.8499100838004581 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8324064853223972, + 0.8472404232345855 + ], + [ + 0.8473976190791499, + 0.8499100838004581 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit 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.014154586259714, + "scoreError" : 0.1540343587331148, + "scoreConfidence" : [ + 15.860120227526599, + 16.168188944992828 + ], + "scorePercentiles" : { + "0.0" : 15.952568887888775, + "50.0" : 16.01106336493644, + "90.0" : 16.0848092840248, + "95.0" : 16.0848092840248, + "99.0" : 16.0848092840248, + "99.9" : 16.0848092840248, + "99.99" : 16.0848092840248, + "99.999" : 16.0848092840248, + "99.9999" : 16.0848092840248, + "100.0" : 16.0848092840248 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.0848092840248, + 16.04405008087214, + 16.058000326794936 + ], + [ + 15.952568887888775, + 15.978076649000737, + 15.967422288976893 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2596.719602636972, + "scoreError" : 45.01215347233643, + "scoreConfidence" : [ + 2551.7074491646354, + 2641.7317561093087 + ], + "scorePercentiles" : { + "0.0" : 2579.2937183539243, + "50.0" : 2597.756551787292, + "90.0" : 2612.1209995924146, + "95.0" : 2612.1209995924146, + "99.0" : 2612.1209995924146, + "99.9" : 2612.1209995924146, + "99.99" : 2612.1209995924146, + "99.999" : 2612.1209995924146, + "99.9999" : 2612.1209995924146, + "100.0" : 2612.1209995924146 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2609.3685423544284, + 2612.1209995924146, + 2612.1157164536526 + ], + [ + 2579.2937183539243, + 2586.144561220156, + 2581.2740778472557 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 72962.98512175732, + "scoreError" : 4736.504566248494, + "scoreConfidence" : [ + 68226.48055550882, + 77699.48968800581 + ], + "scorePercentiles" : { + "0.0" : 71336.90040608442, + "50.0" : 72977.00617270188, + "90.0" : 74628.15749514847, + "95.0" : 74628.15749514847, + "99.0" : 74628.15749514847, + "99.9" : 74628.15749514847, + "99.99" : 74628.15749514847, + "99.999" : 74628.15749514847, + "99.9999" : 74628.15749514847, + "100.0" : 74628.15749514847 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 74443.86631713864, + 74436.170108594, + 74628.15749514847 + ], + [ + 71517.84223680975, + 71336.90040608442, + 71414.97416676856 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit 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.47620038744043, + "scoreError" : 1.9553043344013494, + "scoreConfidence" : [ + 331.52089605303905, + 335.4315047218418 + ], + "scorePercentiles" : { + "0.0" : 332.3582652408605, + "50.0" : 333.44214791303096, + "90.0" : 334.3035836037439, + "95.0" : 334.3035836037439, + "99.0" : 334.3035836037439, + "99.9" : 334.3035836037439, + "99.99" : 334.3035836037439, + "99.999" : 334.3035836037439, + "99.9999" : 334.3035836037439, + "100.0" : 334.3035836037439 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 334.3035836037439, + 334.10335365560536, + 333.32188391657627 + ], + [ + 332.3582652408605, + 333.56241190948566, + 333.207703998371 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 112.4578486544778, + "scoreError" : 3.5201569945154336, + "scoreConfidence" : [ + 108.93769165996237, + 115.97800564899323 + ], + "scorePercentiles" : { + "0.0" : 111.12071324869143, + "50.0" : 112.48890692528505, + "90.0" : 113.87634312350211, + "95.0" : 113.87634312350211, + "99.0" : 113.87634312350211, + "99.9" : 113.87634312350211, + "99.99" : 113.87634312350211, + "99.999" : 113.87634312350211, + "99.9999" : 113.87634312350211, + "100.0" : 113.87634312350211 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 113.87634312350211, + 113.3029176413511, + 113.55693511080062 + ], + [ + 111.12071324869143, + 111.21528659330252, + 111.674896209219 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.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" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.062176378242574694, + "scoreError" : 0.001597868950891, + "scoreConfidence" : [ + 0.060578509291683694, + 0.0637742471934657 + ], + "scorePercentiles" : { + "0.0" : 0.06154697670482521, + "50.0" : 0.062192199937072534, + "90.0" : 0.0627719292758099, + "95.0" : 0.0627719292758099, + "99.0" : 0.0627719292758099, + "99.9" : 0.0627719292758099, + "99.99" : 0.0627719292758099, + "99.999" : 0.0627719292758099, + "99.9999" : 0.0627719292758099, + "100.0" : 0.0627719292758099 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.061761136966081175, + 0.06154697670482521, + 0.061677238205961625 + ], + [ + 0.0626232629080639, + 0.06267772539470633, + 0.0627719292758099 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "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" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.6888442651416214E-4, + "scoreError" : 2.134356696497218E-5, + "scoreConfidence" : [ + 3.4754085954919E-4, + 3.902279934791343E-4 + ], + "scorePercentiles" : { + "0.0" : 3.604473438141589E-4, + "50.0" : 3.686788237354444E-4, + "90.0" : 3.773868659548477E-4, + "95.0" : 3.773868659548477E-4, + "99.0" : 3.773868659548477E-4, + "99.9" : 3.773868659548477E-4, + "99.99" : 3.773868659548477E-4, + "99.999" : 3.773868659548477E-4, + "99.9999" : 3.773868659548477E-4, + "100.0" : 3.773868659548477E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.604473438141589E-4, + 3.6252952839136565E-4, + 3.6316448081670754E-4 + ], + [ + 3.773868659548477E-4, + 3.741931666541812E-4, + 3.7558517345371147E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "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" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.12730998644290217, + "scoreError" : 0.0023791726137559342, + "scoreConfidence" : [ + 0.12493081382914624, + 0.12968915905665812 + ], + "scorePercentiles" : { + "0.0" : 0.1264087550625711, + "50.0" : 0.12727730516329772, + "90.0" : 0.1281651864506703, + "95.0" : 0.1281651864506703, + "99.0" : 0.1281651864506703, + "99.9" : 0.1281651864506703, + "99.99" : 0.1281651864506703, + "99.999" : 0.1281651864506703, + "99.9999" : 0.1281651864506703, + "100.0" : 0.1281651864506703 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1281651864506703, + 0.12816447271422346, + 0.12789825723567252 + ], + [ + 0.1266563530909229, + 0.1265668941033527, + 0.1264087550625711 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.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" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.0132658907922358, + "scoreError" : 6.420574643064141E-4, + "scoreConfidence" : [ + 0.012623833327929386, + 0.013907948256542214 + ], + "scorePercentiles" : { + "0.0" : 0.01305284900525501, + "50.0" : 0.013263493753057905, + "90.0" : 0.013480998916145522, + "95.0" : 0.013480998916145522, + "99.0" : 0.013480998916145522, + "99.9" : 0.013480998916145522, + "99.99" : 0.013480998916145522, + "99.999" : 0.013480998916145522, + "99.9999" : 0.013480998916145522, + "100.0" : 0.013480998916145522 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.01305663237820928, + 0.013061348668021546, + 0.01305284900525501 + ], + [ + 0.013480998916145522, + 0.013477876947689189, + 0.013465638838094263 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.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" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.979885543890148, + "scoreError" : 0.04365298879395025, + "scoreConfidence" : [ + 0.9362325550961977, + 1.0235385326840982 + ], + "scorePercentiles" : { + "0.0" : 0.96500151288237, + "50.0" : 0.979892679717701, + "90.0" : 0.9948080274544912, + "95.0" : 0.9948080274544912, + "99.0" : 0.9948080274544912, + "99.9" : 0.9948080274544912, + "99.99" : 0.9948080274544912, + "99.999" : 0.9948080274544912, + "99.9999" : 0.9948080274544912, + "100.0" : 0.9948080274544912 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9658729567316979, + 0.96500151288237, + 0.9661772877016713 + ], + [ + 0.9948080274544912, + 0.9936080717337308, + 0.9938454068369273 + ] + ] + }, + "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.011066147284259961, + "scoreError" : 1.1634427171318027E-4, + "scoreConfidence" : [ + 0.01094980301254678, + 0.011182491555973142 + ], + "scorePercentiles" : { + "0.0" : 0.011028912152653706, + "50.0" : 0.011055648834345812, + "90.0" : 0.01112291139955732, + "95.0" : 0.01112291139955732, + "99.0" : 0.01112291139955732, + "99.9" : 0.01112291139955732, + "99.99" : 0.01112291139955732, + "99.999" : 0.01112291139955732, + "99.9999" : 0.01112291139955732, + "100.0" : 0.01112291139955732 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.011030897964631445, + 0.011028912152653706, + 0.011031285301728987 + ], + [ + 0.011080012366962638, + 0.011102864520025669, + 0.01112291139955732 + ] + ] + }, + "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.4680176054707488, + "scoreError" : 0.7913755381501821, + "scoreConfidence" : [ + 2.6766420673205666, + 4.259393143620931 + ], + "scorePercentiles" : { + "0.0" : 3.1984932007672633, + "50.0" : 3.4700025430439356, + "90.0" : 3.7328222425373134, + "95.0" : 3.7328222425373134, + "99.0" : 3.7328222425373134, + "99.9" : 3.7328222425373134, + "99.99" : 3.7328222425373134, + "99.999" : 3.7328222425373134, + "99.9999" : 3.7328222425373134, + "100.0" : 3.7328222425373134 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.7148553781575036, + 3.7287188635346755, + 3.7328222425373134 + ], + [ + 3.1984932007672633, + 3.2251497079303677, + 3.20806623989737 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.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" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.9458121083249114, + "scoreError" : 0.09713012775807732, + "scoreConfidence" : [ + 2.848681980566834, + 3.0429422360829887 + ], + "scorePercentiles" : { + "0.0" : 2.907372673837209, + "50.0" : 2.941439248068595, + "90.0" : 2.9957614534291706, + "95.0" : 2.9957614534291706, + "99.0" : 2.9957614534291706, + "99.9" : 2.9957614534291706, + "99.99" : 2.9957614534291706, + "99.999" : 2.9957614534291706, + "99.9999" : 2.9957614534291706, + "100.0" : 2.9957614534291706 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.9957614534291706, + 2.9753003117192147, + 2.935184107100939 + ], + [ + 2.947694389036251, + 2.913559714826682, + 2.907372673837209 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "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" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1812379655142996, + "scoreError" : 0.0051469256021169415, + "scoreConfidence" : [ + 0.17609103991218267, + 0.18638489111641654 + ], + "scorePercentiles" : { + "0.0" : 0.17882158725390268, + "50.0" : 0.18221568091872486, + "90.0" : 0.18278863983988008, + "95.0" : 0.18278863983988008, + "99.0" : 0.18278863983988008, + "99.9" : 0.18278863983988008, + "99.99" : 0.18278863983988008, + "99.999" : 0.18278863983988008, + "99.9999" : 0.18278863983988008, + "100.0" : 0.18278863983988008 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.18278863983988008, + 0.1823920969377519, + 0.18242989977561705 + ], + [ + 0.18203926489969782, + 0.17895630437894813, + 0.17882158725390268 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "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" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.33161202983987215, + "scoreError" : 0.0038698449713568182, + "scoreConfidence" : [ + 0.3277421848685153, + 0.335481874811229 + ], + "scorePercentiles" : { + "0.0" : 0.3302999030254987, + "50.0" : 0.3315259270111735, + "90.0" : 0.3331047863495553, + "95.0" : 0.3331047863495553, + "99.0" : 0.3331047863495553, + "99.9" : 0.3331047863495553, + "99.99" : 0.3331047863495553, + "99.999" : 0.3331047863495553, + "99.9999" : 0.3331047863495553, + "100.0" : 0.3331047863495553 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3302999030254987, + 0.3303105337076796, + 0.3304791277594184 + ], + [ + 0.3331047863495553, + 0.3325727262629286, + 0.3329051019341523 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "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" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.14245758436713765, + "scoreError" : 0.00563701590517682, + "scoreConfidence" : [ + 0.13682056846196083, + 0.14809460027231447 + ], + "scorePercentiles" : { + "0.0" : 0.14041816567440815, + "50.0" : 0.14251290525350271, + "90.0" : 0.14436567547278764, + "95.0" : 0.14436567547278764, + "99.0" : 0.14436567547278764, + "99.9" : 0.14436567547278764, + "99.99" : 0.14436567547278764, + "99.999" : 0.14436567547278764, + "99.9999" : 0.14436567547278764, + "100.0" : 0.14436567547278764 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.14041816567440815, + 0.140652842501301, + 0.14080859239650803 + ], + [ + 0.14436567547278764, + 0.1442830120473236, + 0.1442172181104974 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "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" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.4143546864033436, + "scoreError" : 0.03462237626150933, + "scoreConfidence" : [ + 0.3797323101418343, + 0.44897706266485293 + ], + "scorePercentiles" : { + "0.0" : 0.4030289238302503, + "50.0" : 0.4128423201026994, + "90.0" : 0.4314309465895854, + "95.0" : 0.4314309465895854, + "99.0" : 0.4314309465895854, + "99.9" : 0.4314309465895854, + "99.99" : 0.4314309465895854, + "99.999" : 0.4314309465895854, + "99.9999" : 0.4314309465895854, + "100.0" : 0.4314309465895854 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.4030289238302503, + 0.40363529201646753, + 0.40392738690524277 + ], + [ + 0.4314309465895854, + 0.4223483157783597, + 0.42175725330015607 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "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" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15547550080585767, + "scoreError" : 0.0040648289914254135, + "scoreConfidence" : [ + 0.15141067181443227, + 0.15954032979728308 + ], + "scorePercentiles" : { + "0.0" : 0.1533972472082464, + "50.0" : 0.15618186896438918, + "90.0" : 0.15680970081382403, + "95.0" : 0.15680970081382403, + "99.0" : 0.15680970081382403, + "99.9" : 0.15680970081382403, + "99.99" : 0.15680970081382403, + "99.999" : 0.15680970081382403, + "99.9999" : 0.15680970081382403, + "100.0" : 0.15680970081382403 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15680970081382403, + 0.15639404070813068, + 0.15633344265011648 + ], + [ + 0.1560302952786619, + 0.1533972472082464, + 0.15388827817616643 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "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" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.047523319880979166, + "scoreError" : 0.005152506381493881, + "scoreConfidence" : [ + 0.04237081349948529, + 0.052675826262473045 + ], + "scorePercentiles" : { + "0.0" : 0.045832362385993856, + "50.0" : 0.04750050541317424, + "90.0" : 0.04924132040278701, + "95.0" : 0.04924132040278701, + "99.0" : 0.04924132040278701, + "99.9" : 0.04924132040278701, + "99.99" : 0.04924132040278701, + "99.999" : 0.04924132040278701, + "99.9999" : 0.04924132040278701, + "100.0" : 0.04924132040278701 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04584105408254946, + 0.04586557592004843, + 0.045832362385993856 + ], + [ + 0.049135434906300055, + 0.04924132040278701, + 0.049224171588196204 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "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" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 8841982.883323878, + "scoreError" : 201193.75607458787, + "scoreConfidence" : [ + 8640789.12724929, + 9043176.639398467 + ], + "scorePercentiles" : { + "0.0" : 8775809.737719297, + "50.0" : 8819903.516331566, + "90.0" : 8941838.508489722, + "95.0" : 8941838.508489722, + "99.0" : 8941838.508489722, + "99.9" : 8941838.508489722, + "99.99" : 8941838.508489722, + "99.999" : 8941838.508489722, + "99.9999" : 8941838.508489722, + "100.0" : 8941838.508489722 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 8781483.432835821, + 8775809.737719297, + 8790613.151142355 + ], + [ + 8912958.588235294, + 8941838.508489722, + 8849193.881520778 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-07-10T01:28:11Z-49a68f9b969ae7d6d6d4af1482deedb1522fdae2-jdk17.json b/performance-results/2025-07-10T01:28:11Z-49a68f9b969ae7d6d6d4af1482deedb1522fdae2-jdk17.json new file mode 100644 index 0000000000..4b1bd189df --- /dev/null +++ b/performance-results/2025-07-10T01:28:11Z-49a68f9b969ae7d6d6d4af1482deedb1522fdae2-jdk17.json @@ -0,0 +1,1279 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit 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.3386711035583634, + "scoreError" : 0.047335172573526624, + "scoreConfidence" : [ + 3.291335930984837, + 3.38600627613189 + ], + "scorePercentiles" : { + "0.0" : 3.3302764451585163, + "50.0" : 3.339187001546528, + "90.0" : 3.346033965981881, + "95.0" : 3.346033965981881, + "99.0" : 3.346033965981881, + "99.9" : 3.346033965981881, + "99.99" : 3.346033965981881, + "99.999" : 3.346033965981881, + "99.9999" : 3.346033965981881, + "100.0" : 3.346033965981881 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.3302764451585163, + 3.34341547809828 + ], + [ + 3.334958524994777, + 3.346033965981881 + ] + ] + }, + "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.6880200346087548, + "scoreError" : 0.02934086640834834, + "scoreConfidence" : [ + 1.6586791682004065, + 1.7173609010171031 + ], + "scorePercentiles" : { + "0.0" : 1.6825774172996646, + "50.0" : 1.6880061953836756, + "90.0" : 1.6934903303680033, + "95.0" : 1.6934903303680033, + "99.0" : 1.6934903303680033, + "99.9" : 1.6934903303680033, + "99.99" : 1.6934903303680033, + "99.999" : 1.6934903303680033, + "99.9999" : 1.6934903303680033, + "100.0" : 1.6934903303680033 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.6825774172996646, + 1.6869331906092062 + ], + [ + 1.6890792001581452, + 1.6934903303680033 + ] + ] + }, + "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.8477616128920233, + "scoreError" : 0.03181944314820865, + "scoreConfidence" : [ + 0.8159421697438147, + 0.879581056040232 + ], + "scorePercentiles" : { + "0.0" : 0.8429903065929959, + "50.0" : 0.8467150912270157, + "90.0" : 0.8546259625210659, + "95.0" : 0.8546259625210659, + "99.0" : 0.8546259625210659, + "99.9" : 0.8546259625210659, + "99.99" : 0.8546259625210659, + "99.999" : 0.8546259625210659, + "99.9999" : 0.8546259625210659, + "100.0" : 0.8546259625210659 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8472917331416456, + 0.8546259625210659 + ], + [ + 0.8429903065929959, + 0.8461384493123858 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit 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.34542776986988, + "scoreError" : 0.3809278845808266, + "scoreConfidence" : [ + 15.964499885289053, + 16.726355654450707 + ], + "scorePercentiles" : { + "0.0" : 16.218984517815493, + "50.0" : 16.33571789275313, + "90.0" : 16.485411400695025, + "95.0" : 16.485411400695025, + "99.0" : 16.485411400695025, + "99.9" : 16.485411400695025, + "99.99" : 16.485411400695025, + "99.999" : 16.485411400695025, + "99.9999" : 16.485411400695025, + "100.0" : 16.485411400695025 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.221132507036504, + 16.22594683304194, + 16.218984517815493 + ], + [ + 16.485411400695025, + 16.475602408165997, + 16.44548895246432 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2659.3394598612563, + "scoreError" : 119.998444375737, + "scoreConfidence" : [ + 2539.341015485519, + 2779.3379042369934 + ], + "scorePercentiles" : { + "0.0" : 2617.9552038750894, + "50.0" : 2658.096153759663, + "90.0" : 2706.0509268899073, + "95.0" : 2706.0509268899073, + "99.0" : 2706.0509268899073, + "99.9" : 2706.0509268899073, + "99.99" : 2706.0509268899073, + "99.999" : 2706.0509268899073, + "99.9999" : 2706.0509268899073, + "100.0" : 2706.0509268899073 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2692.4137442399046, + 2695.990774844529, + 2706.0509268899073 + ], + [ + 2619.8475460386835, + 2623.778563279422, + 2617.9552038750894 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 75087.19970446477, + "scoreError" : 4797.158260667454, + "scoreConfidence" : [ + 70290.04144379732, + 79884.35796513222 + ], + "scorePercentiles" : { + "0.0" : 73489.34419758937, + "50.0" : 75074.53538069059, + "90.0" : 76703.66991430972, + "95.0" : 76703.66991430972, + "99.0" : 76703.66991430972, + "99.9" : 76703.66991430972, + "99.99" : 76703.66991430972, + "99.999" : 76703.66991430972, + "99.9999" : 76703.66991430972, + "100.0" : 76703.66991430972 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 76703.66991430972, + 76604.12674456972, + 76637.63962183472 + ], + [ + 73489.34419758937, + 73544.94401681147, + 73543.4737316737 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit 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.5812539036665, + "scoreError" : 3.646295318685582, + "scoreConfidence" : [ + 353.9349585849809, + 361.2275492223521 + ], + "scorePercentiles" : { + "0.0" : 355.96787126545604, + "50.0" : 357.73720973394086, + "90.0" : 358.99393135118805, + "95.0" : 358.99393135118805, + "99.0" : 358.99393135118805, + "99.9" : 358.99393135118805, + "99.99" : 358.99393135118805, + "99.999" : 358.99393135118805, + "99.9999" : 358.99393135118805, + "100.0" : 358.99393135118805 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 358.99393135118805, + 358.570202816146, + 358.6239923703594 + ], + [ + 356.4273089671137, + 355.96787126545604, + 356.9042166517358 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 114.98566579693492, + "scoreError" : 2.149268750674122, + "scoreConfidence" : [ + 112.8363970462608, + 117.13493454760905 + ], + "scorePercentiles" : { + "0.0" : 113.60100727569281, + "50.0" : 115.10344375336534, + "90.0" : 115.67250089874734, + "95.0" : 115.67250089874734, + "99.0" : 115.67250089874734, + "99.9" : 115.67250089874734, + "99.99" : 115.67250089874734, + "99.999" : 115.67250089874734, + "99.9999" : 115.67250089874734, + "100.0" : 115.67250089874734 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 115.67250089874734, + 115.3082896786432, + 115.6228126383617 + ], + [ + 113.60100727569281, + 114.8107864620769, + 114.89859782808747 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.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" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06205823492492347, + "scoreError" : 0.002462803424417031, + "scoreConfidence" : [ + 0.05959543150050644, + 0.0645210383493405 + ], + "scorePercentiles" : { + "0.0" : 0.061113345895998976, + "50.0" : 0.062083060660186505, + "90.0" : 0.06291792813011199, + "95.0" : 0.06291792813011199, + "99.0" : 0.06291792813011199, + "99.9" : 0.06291792813011199, + "99.99" : 0.06291792813011199, + "99.999" : 0.06291792813011199, + "99.9999" : 0.06291792813011199, + "100.0" : 0.06291792813011199 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06128660753815039, + 0.061113345895998976, + 0.06138426071290459 + ], + [ + 0.06278186060746842, + 0.06291792813011199, + 0.06286540666490646 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "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" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.743359031687043E-4, + "scoreError" : 2.7932749301509125E-5, + "scoreConfidence" : [ + 3.464031538671952E-4, + 4.0226865247021344E-4 + ], + "scorePercentiles" : { + "0.0" : 3.648290643195147E-4, + "50.0" : 3.7433905038306367E-4, + "90.0" : 3.8389494331663793E-4, + "95.0" : 3.8389494331663793E-4, + "99.0" : 3.8389494331663793E-4, + "99.9" : 3.8389494331663793E-4, + "99.99" : 3.8389494331663793E-4, + "99.999" : 3.8389494331663793E-4, + "99.9999" : 3.8389494331663793E-4, + "100.0" : 3.8389494331663793E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.8389494331663793E-4, + 3.8321592089950304E-4, + 3.831597455898701E-4 + ], + [ + 3.655183551762572E-4, + 3.6539738971044306E-4, + 3.648290643195147E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "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" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.12784193772271693, + "scoreError" : 0.005973645277113812, + "scoreConfidence" : [ + 0.12186829244560311, + 0.13381558299983073 + ], + "scorePercentiles" : { + "0.0" : 0.125846247042686, + "50.0" : 0.12772844797683292, + "90.0" : 0.13019946719700026, + "95.0" : 0.13019946719700026, + "99.0" : 0.13019946719700026, + "99.9" : 0.13019946719700026, + "99.99" : 0.13019946719700026, + "99.999" : 0.13019946719700026, + "99.9999" : 0.13019946719700026, + "100.0" : 0.13019946719700026 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.13019946719700026, + 0.12948817115332323, + 0.12963477625677322 + ], + [ + 0.125846247042686, + 0.12596872480034263, + 0.1259142398861762 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.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" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.013209420583128352, + "scoreError" : 3.2622524769913836E-4, + "scoreConfidence" : [ + 0.012883195335429214, + 0.01353564583082749 + ], + "scorePercentiles" : { + "0.0" : 0.013095547648730405, + "50.0" : 0.013209395008418796, + "90.0" : 0.013322633812630477, + "95.0" : 0.013322633812630477, + "99.0" : 0.013322633812630477, + "99.9" : 0.013322633812630477, + "99.99" : 0.013322633812630477, + "99.999" : 0.013322633812630477, + "99.9999" : 0.013322633812630477, + "100.0" : 0.013322633812630477 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013095547648730405, + 0.013098903132298447, + 0.01311639201615918 + ], + [ + 0.013320648888273187, + 0.013322633812630477, + 0.013302398000678412 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.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" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 1.0333141812876503, + "scoreError" : 0.0880836785083081, + "scoreConfidence" : [ + 0.9452305027793422, + 1.1213978597959584 + ], + "scorePercentiles" : { + "0.0" : 1.0003615240572172, + "50.0" : 1.036171193633142, + "90.0" : 1.0623858547753107, + "95.0" : 1.0623858547753107, + "99.0" : 1.0623858547753107, + "99.9" : 1.0623858547753107, + "99.99" : 1.0623858547753107, + "99.999" : 1.0623858547753107, + "99.9999" : 1.0623858547753107, + "100.0" : 1.0623858547753107 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 1.0623858547753107, + 1.0617533774946921, + 1.0612794283137006 + ], + [ + 1.0003615240572172, + 1.0110629589525832, + 1.0030419441323972 + ] + ] + }, + "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.010793445745626039, + "scoreError" : 6.925182447429463E-4, + "scoreConfidence" : [ + 0.010100927500883093, + 0.011485963990368985 + ], + "scorePercentiles" : { + "0.0" : 0.010562353175282166, + "50.0" : 0.010793412100052541, + "90.0" : 0.011023545018827659, + "95.0" : 0.011023545018827659, + "99.0" : 0.011023545018827659, + "99.9" : 0.011023545018827659, + "99.99" : 0.011023545018827659, + "99.999" : 0.011023545018827659, + "99.9999" : 0.011023545018827659, + "100.0" : 0.011023545018827659 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.011017424191010889, + 0.011015599827280058, + 0.011023545018827659 + ], + [ + 0.01057052788853044, + 0.010571224372825025, + 0.010562353175282166 + ] + ] + }, + "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.122557366993984, + "scoreError" : 0.08011890952441872, + "scoreConfidence" : [ + 3.0424384574695655, + 3.2026762765184027 + ], + "scorePercentiles" : { + "0.0" : 3.092819901669759, + "50.0" : 3.123848700005852, + "90.0" : 3.1502229414357683, + "95.0" : 3.1502229414357683, + "99.0" : 3.1502229414357683, + "99.9" : 3.1502229414357683, + "99.99" : 3.1502229414357683, + "99.999" : 3.1502229414357683, + "99.9999" : 3.1502229414357683, + "100.0" : 3.1502229414357683 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.0948857982673266, + 3.102341726426799, + 3.092819901669759 + ], + [ + 3.1502229414357683, + 3.149718160579345, + 3.1453556735849055 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.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" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.7699728148832015, + "scoreError" : 0.14940413522694126, + "scoreConfidence" : [ + 2.62056867965626, + 2.9193769501101428 + ], + "scorePercentiles" : { + "0.0" : 2.7210124458650706, + "50.0" : 2.767843020407134, + "90.0" : 2.821346806488011, + "95.0" : 2.821346806488011, + "99.0" : 2.821346806488011, + "99.9" : 2.821346806488011, + "99.99" : 2.821346806488011, + "99.999" : 2.821346806488011, + "99.9999" : 2.821346806488011, + "100.0" : 2.821346806488011 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.820621964467005, + 2.821346806488011, + 2.813672436568214 + ], + [ + 2.7210124458650706, + 2.721169631664853, + 2.722013604246053 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "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" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.182361906716641, + "scoreError" : 0.006260704333333856, + "scoreConfidence" : [ + 0.17610120238330712, + 0.18862261104997485 + ], + "scorePercentiles" : { + "0.0" : 0.17975124118344896, + "50.0" : 0.18280763988388, + "90.0" : 0.1844741830843018, + "95.0" : 0.1844741830843018, + "99.0" : 0.1844741830843018, + "99.9" : 0.1844741830843018, + "99.99" : 0.1844741830843018, + "99.999" : 0.1844741830843018, + "99.9999" : 0.1844741830843018, + "100.0" : 0.1844741830843018 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17999564194175457, + 0.18143727372679935, + 0.17975124118344896 + ], + [ + 0.18433509432258063, + 0.1844741830843018, + 0.18417800604096066 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "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" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3272153851648061, + "scoreError" : 0.0034131243715917474, + "scoreConfidence" : [ + 0.32380226079321434, + 0.33062850953639783 + ], + "scorePercentiles" : { + "0.0" : 0.32583248362712197, + "50.0" : 0.3272278174478433, + "90.0" : 0.3285037850009855, + "95.0" : 0.3285037850009855, + "99.0" : 0.3285037850009855, + "99.9" : 0.3285037850009855, + "99.99" : 0.3285037850009855, + "99.999" : 0.3285037850009855, + "99.9999" : 0.3285037850009855, + "100.0" : 0.3285037850009855 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.32639225304350666, + 0.3261466079838236, + 0.32583248362712197 + ], + [ + 0.3283537994812188, + 0.3285037850009855, + 0.3280633818521799 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "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" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1466265380405978, + "scoreError" : 0.0013295659768003507, + "scoreConfidence" : [ + 0.14529697206379746, + 0.14795610401739814 + ], + "scorePercentiles" : { + "0.0" : 0.1457049814523414, + "50.0" : 0.14675010369343117, + "90.0" : 0.14704247655457367, + "95.0" : 0.14704247655457367, + "99.0" : 0.14704247655457367, + "99.9" : 0.14704247655457367, + "99.99" : 0.14704247655457367, + "99.999" : 0.14704247655457367, + "99.9999" : 0.14704247655457367, + "100.0" : 0.14704247655457367 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.14663352956788223, + 0.1457049814523414, + 0.14668718379440843 + ], + [ + 0.14704247655457367, + 0.146878033281927, + 0.14681302359245393 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "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" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.40180722547472003, + "scoreError" : 0.006243360729656814, + "scoreConfidence" : [ + 0.3955638647450632, + 0.40805058620437684 + ], + "scorePercentiles" : { + "0.0" : 0.39985738656537384, + "50.0" : 0.4012504780753967, + "90.0" : 0.4057324315563129, + "95.0" : 0.4057324315563129, + "99.0" : 0.4057324315563129, + "99.9" : 0.4057324315563129, + "99.99" : 0.4057324315563129, + "99.999" : 0.4057324315563129, + "99.9999" : 0.4057324315563129, + "100.0" : 0.4057324315563129 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.4057324315563129, + 0.3998781027671145, + 0.39985738656537384 + ], + [ + 0.40287447580872576, + 0.4014691618692039, + 0.4010317942815896 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "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" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16207254905005605, + "scoreError" : 0.008273960633344839, + "scoreConfidence" : [ + 0.1537985884167112, + 0.1703465096834009 + ], + "scorePercentiles" : { + "0.0" : 0.1597576347370439, + "50.0" : 0.16039306416151727, + "90.0" : 0.16627270743548817, + "95.0" : 0.16627270743548817, + "99.0" : 0.16627270743548817, + "99.9" : 0.16627270743548817, + "99.99" : 0.16627270743548817, + "99.999" : 0.16627270743548817, + "99.9999" : 0.16627270743548817, + "100.0" : 0.16627270743548817 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16048986081109273, + 0.1602962675119418, + 0.1601842199138221 + ], + [ + 0.16627270743548817, + 0.1597576347370439, + 0.16543460389094758 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "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" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.0466384038173576, + "scoreError" : 8.698947453721076E-4, + "scoreConfidence" : [ + 0.04576850907198549, + 0.04750829856272971 + ], + "scorePercentiles" : { + "0.0" : 0.046393041298427765, + "50.0" : 0.04653162533323939, + "90.0" : 0.047191698817866494, + "95.0" : 0.047191698817866494, + "99.0" : 0.047191698817866494, + "99.9" : 0.047191698817866494, + "99.99" : 0.047191698817866494, + "99.999" : 0.047191698817866494, + "99.9999" : 0.047191698817866494, + "100.0" : 0.047191698817866494 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04643167857308682, + 0.04640738657731825, + 0.046393041298427765 + ], + [ + 0.047191698817866494, + 0.046631572093391964, + 0.046775045544054296 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "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" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 8623520.088084025, + "scoreError" : 180031.65244300725, + "scoreConfidence" : [ + 8443488.435641019, + 8803551.740527032 + ], + "scorePercentiles" : { + "0.0" : 8554261.375213675, + "50.0" : 8619693.963995753, + "90.0" : 8694329.051259775, + "95.0" : 8694329.051259775, + "99.0" : 8694329.051259775, + "99.9" : 8694329.051259775, + "99.99" : 8694329.051259775, + "99.999" : 8694329.051259775, + "99.9999" : 8694329.051259775, + "100.0" : 8694329.051259775 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 8694329.051259775, + 8685962.642361112, + 8662679.821645021 + ], + [ + 8576708.106346484, + 8567179.531678082, + 8554261.375213675 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-07-10T01:31:19Z-49a68f9b969ae7d6d6d4af1482deedb1522fdae2-jdk17.json b/performance-results/2025-07-10T01:31:19Z-49a68f9b969ae7d6d6d4af1482deedb1522fdae2-jdk17.json new file mode 100644 index 0000000000..8bc37ff42b --- /dev/null +++ b/performance-results/2025-07-10T01:31:19Z-49a68f9b969ae7d6d6d4af1482deedb1522fdae2-jdk17.json @@ -0,0 +1,1279 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit 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.350819914645622, + "scoreError" : 0.02333452740089837, + "scoreConfidence" : [ + 3.3274853872447236, + 3.37415444204652 + ], + "scorePercentiles" : { + "0.0" : 3.3467376436328893, + "50.0" : 3.3511692012658485, + "90.0" : 3.3542036124179013, + "95.0" : 3.3542036124179013, + "99.0" : 3.3542036124179013, + "99.9" : 3.3542036124179013, + "99.99" : 3.3542036124179013, + "99.999" : 3.3542036124179013, + "99.9999" : 3.3542036124179013, + "100.0" : 3.3542036124179013 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.348849657604126, + 3.353488744927571 + ], + [ + 3.3467376436328893, + 3.3542036124179013 + ] + ] + }, + "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.689308129574393, + "scoreError" : 0.047443854042694716, + "scoreConfidence" : [ + 1.6418642755316983, + 1.7367519836170877 + ], + "scorePercentiles" : { + "0.0" : 1.6828186069646558, + "50.0" : 1.688609535642259, + "90.0" : 1.6971948400483985, + "95.0" : 1.6971948400483985, + "99.0" : 1.6971948400483985, + "99.9" : 1.6971948400483985, + "99.99" : 1.6971948400483985, + "99.999" : 1.6971948400483985, + "99.9999" : 1.6971948400483985, + "100.0" : 1.6971948400483985 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.6939210435067305, + 1.6971948400483985 + ], + [ + 1.6828186069646558, + 1.6832980277777876 + ] + ] + }, + "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.8485872258925267, + "scoreError" : 0.04086454089765866, + "scoreConfidence" : [ + 0.807722684994868, + 0.8894517667901853 + ], + "scorePercentiles" : { + "0.0" : 0.839106231535581, + "50.0" : 0.8516091497694063, + "90.0" : 0.852024372495713, + "95.0" : 0.852024372495713, + "99.0" : 0.852024372495713, + "99.9" : 0.852024372495713, + "99.99" : 0.852024372495713, + "99.999" : 0.852024372495713, + "99.9999" : 0.852024372495713, + "100.0" : 0.852024372495713 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.839106231535581, + 0.8516606788257489 + ], + [ + 0.8515576207130636, + 0.852024372495713 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit 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.40461695193473, + "scoreError" : 0.2161016591656955, + "scoreConfidence" : [ + 16.188515292769036, + 16.620718611100425 + ], + "scorePercentiles" : { + "0.0" : 16.3297274878599, + "50.0" : 16.40653404546939, + "90.0" : 16.47793679209158, + "95.0" : 16.47793679209158, + "99.0" : 16.47793679209158, + "99.9" : 16.47793679209158, + "99.99" : 16.47793679209158, + "99.999" : 16.47793679209158, + "99.9999" : 16.47793679209158, + "100.0" : 16.47793679209158 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.3297274878599, + 16.333590373927436, + 16.33971459325851 + ], + [ + 16.473353497680268, + 16.47793679209158, + 16.473378966790694 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2691.2529136656676, + "scoreError" : 127.79663441169158, + "scoreConfidence" : [ + 2563.456279253976, + 2819.0495480773593 + ], + "scorePercentiles" : { + "0.0" : 2647.1976602028967, + "50.0" : 2691.8918649164098, + "90.0" : 2732.9144928019823, + "95.0" : 2732.9144928019823, + "99.0" : 2732.9144928019823, + "99.9" : 2732.9144928019823, + "99.99" : 2732.9144928019823, + "99.999" : 2732.9144928019823, + "99.9999" : 2732.9144928019823, + "100.0" : 2732.9144928019823 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2732.9144928019823, + 2732.839303423572, + 2732.7578452780895 + ], + [ + 2651.02588455473, + 2647.1976602028967, + 2650.7822957327357 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 76176.971313861, + "scoreError" : 2227.4548357244817, + "scoreConfidence" : [ + 73949.51647813652, + 78404.42614958547 + ], + "scorePercentiles" : { + "0.0" : 75433.2501407948, + "50.0" : 76166.36462532615, + "90.0" : 76923.92912758036, + "95.0" : 76923.92912758036, + "99.0" : 76923.92912758036, + "99.9" : 76923.92912758036, + "99.99" : 76923.92912758036, + "99.999" : 76923.92912758036, + "99.9999" : 76923.92912758036, + "100.0" : 76923.92912758036 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 75462.11227880357, + 75460.9014175589, + 75433.2501407948 + ], + [ + 76911.01794657961, + 76870.61697184872, + 76923.92912758036 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 362.22255299217386, + "scoreError" : 19.069456850411857, + "scoreConfidence" : [ + 343.153096141762, + 381.29200984258574 + ], + "scorePercentiles" : { + "0.0" : 354.1557393864702, + "50.0" : 363.0498586240968, + "90.0" : 368.6176535071154, + "95.0" : 368.6176535071154, + "99.0" : 368.6176535071154, + "99.9" : 368.6176535071154, + "99.99" : 368.6176535071154, + "99.999" : 368.6176535071154, + "99.9999" : 368.6176535071154, + "100.0" : 368.6176535071154 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 367.85846734438877, + 368.461621295449, + 368.6176535071154 + ], + [ + 354.1557393864702, + 356.0005865158149, + 358.2412499038049 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 116.65045311741228, + "scoreError" : 5.192763991695376, + "scoreConfidence" : [ + 111.45768912571691, + 121.84321710910766 + ], + "scorePercentiles" : { + "0.0" : 114.9042774634322, + "50.0" : 116.63514901899373, + "90.0" : 118.44694596648905, + "95.0" : 118.44694596648905, + "99.0" : 118.44694596648905, + "99.9" : 118.44694596648905, + "99.99" : 118.44694596648905, + "99.999" : 118.44694596648905, + "99.9999" : 118.44694596648905, + "100.0" : 118.44694596648905 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 115.02988948941001, + 114.9042774634322, + 114.95022442624429 + ], + [ + 118.33097281032083, + 118.24040854857743, + 118.44694596648905 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.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" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.061894241695642345, + "scoreError" : 0.002614448102822521, + "scoreConfidence" : [ + 0.059279793592819825, + 0.06450868979846487 + ], + "scorePercentiles" : { + "0.0" : 0.060928018619273626, + "50.0" : 0.06189595270510471, + "90.0" : 0.06287789266289824, + "95.0" : 0.06287789266289824, + "99.0" : 0.06287789266289824, + "99.9" : 0.06287789266289824, + "99.99" : 0.06287789266289824, + "99.999" : 0.06287789266289824, + "99.9999" : 0.06287789266289824, + "100.0" : 0.06287789266289824 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.061049256231494764, + 0.060928018619273626, + 0.06117072757523856 + ], + [ + 0.06287789266289824, + 0.06271837724997804, + 0.06262117783497086 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "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" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.777970476362235E-4, + "scoreError" : 2.7864521438112513E-5, + "scoreConfidence" : [ + 3.4993252619811097E-4, + 4.05661569074336E-4 + ], + "scorePercentiles" : { + "0.0" : 3.68515105776253E-4, + "50.0" : 3.77867803407144E-4, + "90.0" : 3.8687994063328466E-4, + "95.0" : 3.8687994063328466E-4, + "99.0" : 3.8687994063328466E-4, + "99.9" : 3.8687994063328466E-4, + "99.99" : 3.8687994063328466E-4, + "99.999" : 3.8687994063328466E-4, + "99.9999" : 3.8687994063328466E-4, + "100.0" : 3.8687994063328466E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.868609797143012E-4, + 3.868611961185294E-4, + 3.8687994063328466E-4 + ], + [ + 3.68515105776253E-4, + 3.6887462709998673E-4, + 3.6879043647498574E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "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" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.12477273281815464, + "scoreError" : 0.0013113660080159109, + "scoreConfidence" : [ + 0.12346136681013872, + 0.12608409882617055 + ], + "scorePercentiles" : { + "0.0" : 0.12417440569704345, + "50.0" : 0.12483444633477972, + "90.0" : 0.1252465153925154, + "95.0" : 0.1252465153925154, + "99.0" : 0.1252465153925154, + "99.9" : 0.1252465153925154, + "99.99" : 0.1252465153925154, + "99.999" : 0.1252465153925154, + "99.9999" : 0.1252465153925154, + "100.0" : 0.1252465153925154 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.12517691182766089, + 0.1252465153925154, + 0.12513240699725967 + ], + [ + 0.12453648567229977, + 0.12436967132214857, + 0.12417440569704345 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.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" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.013306685107809737, + "scoreError" : 5.665022797275359E-4, + "scoreConfidence" : [ + 0.012740182828082201, + 0.013873187387537273 + ], + "scorePercentiles" : { + "0.0" : 0.013117763114330465, + "50.0" : 0.013307326384480053, + "90.0" : 0.013493517064383589, + "95.0" : 0.013493517064383589, + "99.0" : 0.013493517064383589, + "99.9" : 0.013493517064383589, + "99.99" : 0.013493517064383589, + "99.999" : 0.013493517064383589, + "99.9999" : 0.013493517064383589, + "100.0" : 0.013493517064383589 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013490528424190915, + 0.013489207860318557, + 0.013493517064383589 + ], + [ + 0.01312364927499334, + 0.013125444908641547, + 0.013117763114330465 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.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" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 1.030876720215693, + "scoreError" : 0.021711880521495325, + "scoreConfidence" : [ + 1.0091648396941977, + 1.0525886007371883 + ], + "scorePercentiles" : { + "0.0" : 1.022915315741025, + "50.0" : 1.0309249203114617, + "90.0" : 1.038546202928653, + "95.0" : 1.038546202928653, + "99.0" : 1.038546202928653, + "99.9" : 1.038546202928653, + "99.99" : 1.038546202928653, + "99.999" : 1.038546202928653, + "99.9999" : 1.038546202928653, + "100.0" : 1.038546202928653 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 1.024495459127228, + 1.0240882725038403, + 1.022915315741025 + ], + [ + 1.038546202928653, + 1.037860689497717, + 1.0373543814956954 + ] + ] + }, + "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.010776716633841521, + "scoreError" : 2.637657165126356E-4, + "scoreConfidence" : [ + 0.010512950917328887, + 0.011040482350354156 + ], + "scorePercentiles" : { + "0.0" : 0.010689400152641075, + "50.0" : 0.010776800099100774, + "90.0" : 0.010864438780343657, + "95.0" : 0.010864438780343657, + "99.0" : 0.010864438780343657, + "99.9" : 0.010864438780343657, + "99.99" : 0.010864438780343657, + "99.999" : 0.010864438780343657, + "99.9999" : 0.010864438780343657, + "100.0" : 0.010864438780343657 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.010690820255205237, + 0.010689400152641075, + 0.010692360659488703 + ], + [ + 0.010861239538712845, + 0.010864438780343657, + 0.010862040416657615 + ] + ] + }, + "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.067124041181389, + "scoreError" : 0.07368588225741621, + "scoreConfidence" : [ + 2.993438158923973, + 3.1408099234388054 + ], + "scorePercentiles" : { + "0.0" : 3.0285718267716537, + "50.0" : 3.0758596359560353, + "90.0" : 3.091910981458591, + "95.0" : 3.091910981458591, + "99.0" : 3.091910981458591, + "99.9" : 3.091910981458591, + "99.99" : 3.091910981458591, + "99.999" : 3.091910981458591, + "99.9999" : 3.091910981458591, + "100.0" : 3.091910981458591 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.091910981458591, + 3.0879196858024693, + 3.0849798488587292 + ], + [ + 3.0285718267716537, + 3.0667394230533414, + 3.0426224811435523 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.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" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.8070905351331277, + "scoreError" : 0.11741319941302322, + "scoreConfidence" : [ + 2.6896773357201043, + 2.924503734546151 + ], + "scorePercentiles" : { + "0.0" : 2.7666692979253114, + "50.0" : 2.805843725031397, + "90.0" : 2.8491565190883192, + "95.0" : 2.8491565190883192, + "99.0" : 2.8491565190883192, + "99.9" : 2.8491565190883192, + "99.99" : 2.8491565190883192, + "99.999" : 2.8491565190883192, + "99.9999" : 2.8491565190883192, + "100.0" : 2.8491565190883192 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.8491565190883192, + 2.8460913645418326, + 2.8403589349616585 + ], + [ + 2.7666692979253114, + 2.771328515101136, + 2.7689385791805092 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "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" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17310895297613224, + "scoreError" : 0.007363597113679554, + "scoreConfidence" : [ + 0.16574535586245268, + 0.1804725500898118 + ], + "scorePercentiles" : { + "0.0" : 0.17005229540700936, + "50.0" : 0.17369525572785827, + "90.0" : 0.17556015241740108, + "95.0" : 0.17556015241740108, + "99.0" : 0.17556015241740108, + "99.9" : 0.17556015241740108, + "99.99" : 0.17556015241740108, + "99.999" : 0.17556015241740108, + "99.9999" : 0.17556015241740108, + "100.0" : 0.17556015241740108 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17219792952095603, + 0.17019919409081627, + 0.17005229540700936 + ], + [ + 0.17556015241740108, + 0.17519258193476053, + 0.17545156448585014 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "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" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.32881208395442413, + "scoreError" : 0.015697675201900792, + "scoreConfidence" : [ + 0.31311440875252333, + 0.3445097591563249 + ], + "scorePercentiles" : { + "0.0" : 0.3235423501245592, + "50.0" : 0.32885457860065725, + "90.0" : 0.33409412598135835, + "95.0" : 0.33409412598135835, + "99.0" : 0.33409412598135835, + "99.9" : 0.33409412598135835, + "99.99" : 0.33409412598135835, + "99.999" : 0.33409412598135835, + "99.9999" : 0.33409412598135835, + "100.0" : 0.33409412598135835 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3239609487511743, + 0.3235423501245592, + 0.3236102250339784 + ], + [ + 0.33391664538533455, + 0.3337482084501402, + 0.33409412598135835 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "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" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.144110729217939, + "scoreError" : 0.004438371044765838, + "scoreConfidence" : [ + 0.13967235817317317, + 0.14854910026270482 + ], + "scorePercentiles" : { + "0.0" : 0.1425443439811845, + "50.0" : 0.14409787077368802, + "90.0" : 0.14561675334546778, + "95.0" : 0.14561675334546778, + "99.0" : 0.14561675334546778, + "99.9" : 0.14561675334546778, + "99.99" : 0.14561675334546778, + "99.999" : 0.14561675334546778, + "99.9999" : 0.14561675334546778, + "100.0" : 0.14561675334546778 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.14275026592343049, + 0.1425443439811845, + 0.14271016949225104 + ], + [ + 0.14561675334546778, + 0.1455973669413546, + 0.14544547562394555 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "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" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.4054655095119229, + "scoreError" : 0.012388019419332931, + "scoreConfidence" : [ + 0.39307749009258997, + 0.4178535289312558 + ], + "scorePercentiles" : { + "0.0" : 0.4013408142232211, + "50.0" : 0.4054086563721775, + "90.0" : 0.4098287064054752, + "95.0" : 0.4098287064054752, + "99.0" : 0.4098287064054752, + "99.9" : 0.4098287064054752, + "99.99" : 0.4098287064054752, + "99.999" : 0.4098287064054752, + "99.9999" : 0.4098287064054752, + "100.0" : 0.4098287064054752 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.4098287064054752, + 0.4093563019771583, + 0.40929835562558836 + ], + [ + 0.40151895711876656, + 0.40144992172132793, + 0.4013408142232211 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "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" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.158931407183529, + "scoreError" : 0.007700048312805177, + "scoreConfidence" : [ + 0.1512313588707238, + 0.16663145549633418 + ], + "scorePercentiles" : { + "0.0" : 0.1563435273361162, + "50.0" : 0.15832637049988685, + "90.0" : 0.1620935687262943, + "95.0" : 0.1620935687262943, + "99.0" : 0.1620935687262943, + "99.9" : 0.1620935687262943, + "99.99" : 0.1620935687262943, + "99.999" : 0.1620935687262943, + "99.9999" : 0.1620935687262943, + "100.0" : 0.1620935687262943 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1568328969481212, + 0.1563435273361162, + 0.15645568720371733 + ], + [ + 0.1620429188352724, + 0.1620935687262943, + 0.1598198440516525 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "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" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04645898786157401, + "scoreError" : 0.0012709537808444872, + "scoreConfidence" : [ + 0.04518803408072952, + 0.04772994164241849 + ], + "scorePercentiles" : { + "0.0" : 0.045811569795088165, + "50.0" : 0.04655808571537229, + "90.0" : 0.047015186078109644, + "95.0" : 0.047015186078109644, + "99.0" : 0.047015186078109644, + "99.9" : 0.047015186078109644, + "99.99" : 0.047015186078109644, + "99.999" : 0.047015186078109644, + "99.9999" : 0.047015186078109644, + "100.0" : 0.047015186078109644 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04673454051351073, + 0.047015186078109644, + 0.046389707823053516 + ], + [ + 0.04672646360769105, + 0.04607645935199093, + 0.045811569795088165 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "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" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 8738210.149962107, + "scoreError" : 179757.9484483726, + "scoreConfidence" : [ + 8558452.201513734, + 8917968.09841048 + ], + "scorePercentiles" : { + "0.0" : 8673455.924544666, + "50.0" : 8735008.831389125, + "90.0" : 8819877.789241623, + "95.0" : 8819877.789241623, + "99.0" : 8819877.789241623, + "99.9" : 8819877.789241623, + "99.99" : 8819877.789241623, + "99.999" : 8819877.789241623, + "99.9999" : 8819877.789241623, + "100.0" : 8819877.789241623 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 8689234.174630756, + 8680910.774305556, + 8673455.924544666 + ], + [ + 8819877.789241623, + 8784998.748902546, + 8780783.488147497 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-07-10T01:37:12Z-cc111070ee2f6b3cb7494ce6a5c086454386f656-jdk17.json b/performance-results/2025-07-10T01:37:12Z-cc111070ee2f6b3cb7494ce6a5c086454386f656-jdk17.json new file mode 100644 index 0000000000..b24de1c3f8 --- /dev/null +++ b/performance-results/2025-07-10T01:37:12Z-cc111070ee2f6b3cb7494ce6a5c086454386f656-jdk17.json @@ -0,0 +1,1279 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit 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.3308319072363797, + "scoreError" : 0.0157149575188142, + "scoreConfidence" : [ + 3.3151169497175657, + 3.3465468647551937 + ], + "scorePercentiles" : { + "0.0" : 3.3292496261295756, + "50.0" : 3.329816875335484, + "90.0" : 3.334444252144974, + "95.0" : 3.334444252144974, + "99.0" : 3.334444252144974, + "99.9" : 3.334444252144974, + "99.99" : 3.334444252144974, + "99.999" : 3.334444252144974, + "99.9999" : 3.334444252144974, + "100.0" : 3.334444252144974 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.330071126444625, + 3.334444252144974 + ], + [ + 3.3292496261295756, + 3.3295626242263427 + ] + ] + }, + "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.674695400547804, + "scoreError" : 0.04751559309026891, + "scoreConfidence" : [ + 1.6271798074575352, + 1.722210993638073 + ], + "scorePercentiles" : { + "0.0" : 1.6676677630469123, + "50.0" : 1.6744752117100288, + "90.0" : 1.6821634157242462, + "95.0" : 1.6821634157242462, + "99.0" : 1.6821634157242462, + "99.9" : 1.6821634157242462, + "99.99" : 1.6821634157242462, + "99.999" : 1.6821634157242462, + "99.9999" : 1.6821634157242462, + "100.0" : 1.6821634157242462 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.6798113113881936, + 1.6821634157242462 + ], + [ + 1.6676677630469123, + 1.669139112031864 + ] + ] + }, + "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.8411903488071606, + "scoreError" : 0.036464610804582506, + "scoreConfidence" : [ + 0.8047257380025781, + 0.8776549596117431 + ], + "scorePercentiles" : { + "0.0" : 0.8345142027654179, + "50.0" : 0.8421119833674082, + "90.0" : 0.8460232257284079, + "95.0" : 0.8460232257284079, + "99.0" : 0.8460232257284079, + "99.9" : 0.8460232257284079, + "99.99" : 0.8460232257284079, + "99.999" : 0.8460232257284079, + "99.9999" : 0.8460232257284079, + "100.0" : 0.8460232257284079 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8385132452568219, + 0.8457107214779946 + ], + [ + 0.8345142027654179, + 0.8460232257284079 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit 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.043239319662742, + "scoreError" : 0.49704189522200887, + "scoreConfidence" : [ + 15.546197424440733, + 16.54028121488475 + ], + "scorePercentiles" : { + "0.0" : 15.885454860426231, + "50.0" : 15.99909534057647, + "90.0" : 16.31540553831293, + "95.0" : 16.31540553831293, + "99.0" : 16.31540553831293, + "99.9" : 16.31540553831293, + "99.99" : 16.31540553831293, + "99.999" : 16.31540553831293, + "99.9999" : 16.31540553831293, + "100.0" : 16.31540553831293 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 15.905649605311089, + 15.885454860426231, + 15.895256762833387 + ], + [ + 16.31540553831293, + 16.165128075250973, + 16.09254107584185 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2561.3547643355937, + "scoreError" : 57.94079389860759, + "scoreConfidence" : [ + 2503.413970436986, + 2619.2955582342015 + ], + "scorePercentiles" : { + "0.0" : 2527.8596270082235, + "50.0" : 2563.4745944662063, + "90.0" : 2585.3446476311337, + "95.0" : 2585.3446476311337, + "99.0" : 2585.3446476311337, + "99.9" : 2585.3446476311337, + "99.99" : 2585.3446476311337, + "99.999" : 2585.3446476311337, + "99.9999" : 2585.3446476311337, + "100.0" : 2585.3446476311337 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2560.58312746906, + 2578.0877634907515, + 2566.366061463353 + ], + [ + 2585.3446476311337, + 2549.8873589510426, + 2527.8596270082235 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 75700.0420558788, + "scoreError" : 3597.5186002174855, + "scoreConfidence" : [ + 72102.52345566131, + 79297.56065609629 + ], + "scorePercentiles" : { + "0.0" : 74359.10315485684, + "50.0" : 75671.20854140012, + "90.0" : 76983.88807110753, + "95.0" : 76983.88807110753, + "99.0" : 76983.88807110753, + "99.9" : 76983.88807110753, + "99.99" : 76983.88807110753, + "99.999" : 76983.88807110753, + "99.9999" : 76983.88807110753, + "100.0" : 76983.88807110753 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 74593.24525151214, + 74359.10315485684, + 74655.3229260646 + ], + [ + 76687.09415673562, + 76921.59877499603, + 76983.88807110753 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit 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.09464699412456, + "scoreError" : 7.483846050821221, + "scoreConfidence" : [ + 341.61080094330333, + 356.5784930449458 + ], + "scorePercentiles" : { + "0.0" : 345.3748546037982, + "50.0" : 349.7822833447527, + "90.0" : 352.5884652093961, + "95.0" : 352.5884652093961, + "99.0" : 352.5884652093961, + "99.9" : 352.5884652093961, + "99.99" : 352.5884652093961, + "99.999" : 352.5884652093961, + "99.9999" : 352.5884652093961, + "100.0" : 352.5884652093961 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 345.3748546037982, + 350.0261998459773, + 352.5884652093961 + ], + [ + 350.5004060106329, + 349.5383668435281, + 346.53958945141494 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 113.92073282823394, + "scoreError" : 9.361952187042274, + "scoreConfidence" : [ + 104.55878064119166, + 123.28268501527621 + ], + "scorePercentiles" : { + "0.0" : 110.21043964634602, + "50.0" : 113.85116353797076, + "90.0" : 117.66975407227746, + "95.0" : 117.66975407227746, + "99.0" : 117.66975407227746, + "99.9" : 117.66975407227746, + "99.99" : 117.66975407227746, + "99.999" : 117.66975407227746, + "99.9999" : 117.66975407227746, + "100.0" : 117.66975407227746 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 110.21043964634602, + 111.86787375045598, + 110.80652986089763 + ], + [ + 117.66975407227746, + 115.83445332548553, + 117.13534631394106 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.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" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06274318949190916, + "scoreError" : 8.199798131444502E-4, + "scoreConfidence" : [ + 0.061923209678764704, + 0.06356316930505361 + ], + "scorePercentiles" : { + "0.0" : 0.06220937561430793, + "50.0" : 0.06284629158119515, + "90.0" : 0.06298133465171936, + "95.0" : 0.06298133465171936, + "99.0" : 0.06298133465171936, + "99.9" : 0.06298133465171936, + "99.99" : 0.06298133465171936, + "99.999" : 0.06298133465171936, + "99.9999" : 0.06298133465171936, + "100.0" : 0.06298133465171936 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06295236890080766, + 0.06278924858569052, + 0.06220937561430793 + ], + [ + 0.06298133465171936, + 0.06262347462222974, + 0.06290333457669978 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "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" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.7457967877873905E-4, + "scoreError" : 7.18272753027571E-6, + "scoreConfidence" : [ + 3.6739695124846333E-4, + 3.8176240630901476E-4 + ], + "scorePercentiles" : { + "0.0" : 3.6958459479113047E-4, + "50.0" : 3.7537403850749E-4, + "90.0" : 3.76731680727499E-4, + "95.0" : 3.76731680727499E-4, + "99.0" : 3.76731680727499E-4, + "99.9" : 3.76731680727499E-4, + "99.99" : 3.76731680727499E-4, + "99.999" : 3.76731680727499E-4, + "99.9999" : 3.76731680727499E-4, + "100.0" : 3.76731680727499E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.76731680727499E-4, + 3.6958459479113047E-4, + 3.7517337845215484E-4 + ], + [ + 3.7446747485138615E-4, + 3.755746985628251E-4, + 3.7594624528743863E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "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" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.12852723463754115, + "scoreError" : 0.0058290532630292475, + "scoreConfidence" : [ + 0.1226981813745119, + 0.1343562879005704 + ], + "scorePercentiles" : { + "0.0" : 0.1263418249823125, + "50.0" : 0.12862674289347187, + "90.0" : 0.1309475298816258, + "95.0" : 0.1309475298816258, + "99.0" : 0.1309475298816258, + "99.9" : 0.1309475298816258, + "99.99" : 0.1309475298816258, + "99.999" : 0.1309475298816258, + "99.9999" : 0.1309475298816258, + "100.0" : 0.1309475298816258 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.12724858061027128, + 0.1263418249823125, + 0.1264316603747345 + ], + [ + 0.13018890679963027, + 0.1309475298816258, + 0.1300049051766725 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.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" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.013237524956391425, + "scoreError" : 1.6958037246543213E-4, + "scoreConfidence" : [ + 0.013067944583925992, + 0.013407105328856857 + ], + "scorePercentiles" : { + "0.0" : 0.013154269843295156, + "50.0" : 0.013234641389906598, + "90.0" : 0.013303247526293525, + "95.0" : 0.013303247526293525, + "99.0" : 0.013303247526293525, + "99.9" : 0.013303247526293525, + "99.99" : 0.013303247526293525, + "99.999" : 0.013303247526293525, + "99.9999" : 0.013303247526293525, + "100.0" : 0.013303247526293525 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013303247526293525, + 0.013264492654237145, + 0.013298996409330952 + ], + [ + 0.013199353179615719, + 0.013154269843295156, + 0.013204790125576052 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.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" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 1.0406793201805093, + "scoreError" : 0.08603849521313481, + "scoreConfidence" : [ + 0.9546408249673746, + 1.1267178153936441 + ], + "scorePercentiles" : { + "0.0" : 1.007942221023987, + "50.0" : 1.0415386652472598, + "90.0" : 1.0733267749275517, + "95.0" : 1.0733267749275517, + "99.0" : 1.0733267749275517, + "99.9" : 1.0733267749275517, + "99.99" : 1.0733267749275517, + "99.999" : 1.0733267749275517, + "99.9999" : 1.0733267749275517, + "100.0" : 1.0733267749275517 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 1.0113651396642396, + 1.0198345784213747, + 1.007942221023987 + ], + [ + 1.0683644549727593, + 1.0733267749275517, + 1.063242752073145 + ] + ] + }, + "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.011216801328603643, + "scoreError" : 3.000537292775303E-4, + "scoreConfidence" : [ + 0.010916747599326112, + 0.011516855057881173 + ], + "scorePercentiles" : { + "0.0" : 0.011086911923440223, + "50.0" : 0.011187821759084247, + "90.0" : 0.011409034098480354, + "95.0" : 0.011409034098480354, + "99.0" : 0.011409034098480354, + "99.9" : 0.011409034098480354, + "99.99" : 0.011409034098480354, + "99.999" : 0.011409034098480354, + "99.9999" : 0.011409034098480354, + "100.0" : 0.011409034098480354 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.011086911923440223, + 0.011244025925867625, + 0.011409034098480354 + ], + [ + 0.011185192505665156, + 0.011188955596580738, + 0.011186687921587755 + ] + ] + }, + "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.2000498808925495, + "scoreError" : 0.5342452733870223, + "scoreConfidence" : [ + 2.6658046075055273, + 3.7342951542795717 + ], + "scorePercentiles" : { + "0.0" : 3.014500322483424, + "50.0" : 3.1894549831946684, + "90.0" : 3.4202595328317376, + "95.0" : 3.4202595328317376, + "99.0" : 3.4202595328317376, + "99.9" : 3.4202595328317376, + "99.99" : 3.4202595328317376, + "99.999" : 3.4202595328317376, + "99.9999" : 3.4202595328317376, + "100.0" : 3.4202595328317376 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.014500322483424, + 3.0344179053398057, + 3.034937837378641 + ], + [ + 3.3439721290106954, + 3.4202595328317376, + 3.352211558310992 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.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" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.809899452708773, + "scoreError" : 0.13392968917126652, + "scoreConfidence" : [ + 2.6759697635375064, + 2.9438291418800393 + ], + "scorePercentiles" : { + "0.0" : 2.746953985992859, + "50.0" : 2.8083206490557453, + "90.0" : 2.875143469962633, + "95.0" : 2.875143469962633, + "99.0" : 2.875143469962633, + "99.9" : 2.875143469962633, + "99.99" : 2.875143469962633, + "99.999" : 2.875143469962633, + "99.9999" : 2.875143469962633, + "100.0" : 2.875143469962633 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.7729238505683393, + 2.794485414082146, + 2.746953985992859 + ], + [ + 2.8477341116173123, + 2.8221558840293453, + 2.875143469962633 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "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" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.18777746342704849, + "scoreError" : 0.004572960506774189, + "scoreConfidence" : [ + 0.1832045029202743, + 0.19235042393382268 + ], + "scorePercentiles" : { + "0.0" : 0.18517129965743911, + "50.0" : 0.18839868879963878, + "90.0" : 0.18919563365306394, + "95.0" : 0.18919563365306394, + "99.0" : 0.18919563365306394, + "99.9" : 0.18919563365306394, + "99.99" : 0.18919563365306394, + "99.999" : 0.18919563365306394, + "99.9999" : 0.18919563365306394, + "100.0" : 0.18919563365306394 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.18904637954175962, + 0.18645409011075065, + 0.18517129965743911 + ], + [ + 0.18919563365306394, + 0.18797423834586466, + 0.18882313925341287 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "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" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3601624216064699, + "scoreError" : 0.03292187933563572, + "scoreConfidence" : [ + 0.32724054227083416, + 0.3930843009421056 + ], + "scorePercentiles" : { + "0.0" : 0.3480167627631808, + "50.0" : 0.36055106540577764, + "90.0" : 0.3714486345739544, + "95.0" : 0.3714486345739544, + "99.0" : 0.3714486345739544, + "99.9" : 0.3714486345739544, + "99.99" : 0.3714486345739544, + "99.999" : 0.3714486345739544, + "99.9999" : 0.3714486345739544, + "100.0" : 0.3714486345739544 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3480167627631808, + 0.3491084902775353, + 0.3513922217576162 + ], + [ + 0.36970990905393913, + 0.3712985112125938, + 0.3714486345739544 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "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" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.14979917517497288, + "scoreError" : 0.006823645828235725, + "scoreConfidence" : [ + 0.14297552934673716, + 0.1566228210032086 + ], + "scorePercentiles" : { + "0.0" : 0.14710716330043103, + "50.0" : 0.15015725712252548, + "90.0" : 0.1522981194450367, + "95.0" : 0.1522981194450367, + "99.0" : 0.1522981194450367, + "99.9" : 0.1522981194450367, + "99.99" : 0.1522981194450367, + "99.999" : 0.1522981194450367, + "99.9999" : 0.1522981194450367, + "100.0" : 0.1522981194450367 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1522981194450367, + 0.15191000710922073, + 0.15165147152042704 + ], + [ + 0.14716524695009786, + 0.14866304272462388, + 0.14710716330043103 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "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" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.4091450545041764, + "scoreError" : 0.007969279186245602, + "scoreConfidence" : [ + 0.40117577531793075, + 0.417114333690422 + ], + "scorePercentiles" : { + "0.0" : 0.406487306072677, + "50.0" : 0.4086165006825696, + "90.0" : 0.41332784215747054, + "95.0" : 0.41332784215747054, + "99.0" : 0.41332784215747054, + "99.9" : 0.41332784215747054, + "99.99" : 0.41332784215747054, + "99.999" : 0.41332784215747054, + "99.9999" : 0.41332784215747054, + "100.0" : 0.41332784215747054 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.41332784215747054, + 0.4100862018781268, + 0.4065835369165718 + ], + [ + 0.4112386405132001, + 0.40714679948701243, + 0.406487306072677 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "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" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16004545186081076, + "scoreError" : 0.010464600465073564, + "scoreConfidence" : [ + 0.1495808513957372, + 0.17051005232588431 + ], + "scorePercentiles" : { + "0.0" : 0.15640643608552168, + "50.0" : 0.16004523200898693, + "90.0" : 0.16366322930134364, + "95.0" : 0.16366322930134364, + "99.0" : 0.16366322930134364, + "99.9" : 0.16366322930134364, + "99.99" : 0.16366322930134364, + "99.999" : 0.16366322930134364, + "99.9999" : 0.16366322930134364, + "100.0" : 0.16366322930134364 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16366322930134364, + 0.16345824472449696, + 0.1632196017007247 + ], + [ + 0.15687086231724917, + 0.15665433703552853, + 0.15640643608552168 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "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" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04779986683027423, + "scoreError" : 0.0037868361909343114, + "scoreConfidence" : [ + 0.044013030639339916, + 0.05158670302120854 + ], + "scorePercentiles" : { + "0.0" : 0.04630165130244747, + "50.0" : 0.04800056592721949, + "90.0" : 0.04906355881386118, + "95.0" : 0.04906355881386118, + "99.0" : 0.04906355881386118, + "99.9" : 0.04906355881386118, + "99.99" : 0.04906355881386118, + "99.999" : 0.04906355881386118, + "99.9999" : 0.04906355881386118, + "100.0" : 0.04906355881386118 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04703185517763585, + 0.04630165130244747, + 0.046430865542745975 + ], + [ + 0.04896927667680314, + 0.049001993468151726, + 0.04906355881386118 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "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" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 8909326.354449812, + "scoreError" : 987324.7309505814, + "scoreConfidence" : [ + 7922001.623499231, + 9896651.085400393 + ], + "scorePercentiles" : { + "0.0" : 8549841.861538462, + "50.0" : 8894660.020037945, + "90.0" : 9373885.413308341, + "95.0" : 9373885.413308341, + "99.0" : 9373885.413308341, + "99.9" : 9373885.413308341, + "99.99" : 9373885.413308341, + "99.999" : 9373885.413308341, + "99.9999" : 9373885.413308341, + "100.0" : 9373885.413308341 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 8683100.074652778, + 8549841.861538462, + 8569812.359897172 + ], + [ + 9373885.413308341, + 9173098.45187901, + 9106219.965423113 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-07-14T22:01:02Z-d6003326db74b5a55959257d090abfd548e1ed2a-jdk17.json b/performance-results/2025-07-14T22:01:02Z-d6003326db74b5a55959257d090abfd548e1ed2a-jdk17.json new file mode 100644 index 0000000000..14704a4663 --- /dev/null +++ b/performance-results/2025-07-14T22:01:02Z-d6003326db74b5a55959257d090abfd548e1ed2a-jdk17.json @@ -0,0 +1,1279 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit 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.3581073436412483, + "scoreError" : 0.02710646485880727, + "scoreConfidence" : [ + 3.331000878782441, + 3.3852138085000556 + ], + "scorePercentiles" : { + "0.0" : 3.35379066231419, + "50.0" : 3.3578930723381877, + "90.0" : 3.362852567574427, + "95.0" : 3.362852567574427, + "99.0" : 3.362852567574427, + "99.9" : 3.362852567574427, + "99.99" : 3.362852567574427, + "99.999" : 3.362852567574427, + "99.9999" : 3.362852567574427, + "100.0" : 3.362852567574427 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.35379066231419, + 3.362852567574427 + ], + [ + 3.355490448000643, + 3.360295696675732 + ] + ] + }, + "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.7012690471370124, + "scoreError" : 0.010666331042968364, + "scoreConfidence" : [ + 1.690602716094044, + 1.7119353781799809 + ], + "scorePercentiles" : { + "0.0" : 1.6993004308091342, + "50.0" : 1.7012222918155686, + "90.0" : 1.7033311741077786, + "95.0" : 1.7033311741077786, + "99.0" : 1.7033311741077786, + "99.9" : 1.7033311741077786, + "99.99" : 1.7033311741077786, + "99.999" : 1.7033311741077786, + "99.9999" : 1.7033311741077786, + "100.0" : 1.7033311741077786 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7013663644917127, + 1.7010782191394243 + ], + [ + 1.7033311741077786, + 1.6993004308091342 + ] + ] + }, + "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.8531227132939547, + "scoreError" : 0.03378060483417919, + "scoreConfidence" : [ + 0.8193421084597755, + 0.8869033181281339 + ], + "scorePercentiles" : { + "0.0" : 0.8477087372047541, + "50.0" : 0.8522775109118934, + "90.0" : 0.8602270941472778, + "95.0" : 0.8602270941472778, + "99.0" : 0.8602270941472778, + "99.9" : 0.8602270941472778, + "99.99" : 0.8602270941472778, + "99.999" : 0.8602270941472778, + "99.9999" : 0.8602270941472778, + "100.0" : 0.8602270941472778 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8477087372047541, + 0.8516566778662232 + ], + [ + 0.8528983439575635, + 0.8602270941472778 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit 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.658771275196315, + "scoreError" : 0.0365474205988281, + "scoreConfidence" : [ + 16.622223854597486, + 16.695318695795144 + ], + "scorePercentiles" : { + "0.0" : 16.647568678703696, + "50.0" : 16.65301353161767, + "90.0" : 16.675259034169326, + "95.0" : 16.675259034169326, + "99.0" : 16.675259034169326, + "99.9" : 16.675259034169326, + "99.99" : 16.675259034169326, + "99.999" : 16.675259034169326, + "99.9999" : 16.675259034169326, + "100.0" : 16.675259034169326 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.647568678703696, + 16.64888306520242, + 16.649266189360123 + ], + [ + 16.674889809867114, + 16.675259034169326, + 16.656760873875218 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2674.9488730356693, + "scoreError" : 67.11968555061144, + "scoreConfidence" : [ + 2607.829187485058, + 2742.0685585862807 + ], + "scorePercentiles" : { + "0.0" : 2651.8960493684235, + "50.0" : 2674.447994063885, + "90.0" : 2700.0108998225237, + "95.0" : 2700.0108998225237, + "99.0" : 2700.0108998225237, + "99.9" : 2700.0108998225237, + "99.99" : 2700.0108998225237, + "99.999" : 2700.0108998225237, + "99.9999" : 2700.0108998225237, + "100.0" : 2700.0108998225237 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2651.8960493684235, + 2654.718934796574, + 2652.933194796615 + ], + [ + 2694.177053331196, + 2695.9571060986823, + 2700.0108998225237 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 77038.52841575335, + "scoreError" : 2978.8169924909735, + "scoreConfidence" : [ + 74059.71142326237, + 80017.34540824432 + ], + "scorePercentiles" : { + "0.0" : 76004.13672085656, + "50.0" : 77055.58013060322, + "90.0" : 78027.56413739573, + "95.0" : 78027.56413739573, + "99.0" : 78027.56413739573, + "99.9" : 78027.56413739573, + "99.99" : 78027.56413739573, + "99.999" : 78027.56413739573, + "99.9999" : 78027.56413739573, + "100.0" : 78027.56413739573 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 76126.26593886662, + 76078.21299169592, + 76004.13672085656 + ], + [ + 78010.09638336545, + 78027.56413739573, + 77984.89432233982 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 363.44285954652145, + "scoreError" : 6.0287047235114954, + "scoreConfidence" : [ + 357.41415482300994, + 369.47156427003296 + ], + "scorePercentiles" : { + "0.0" : 361.30552272469043, + "50.0" : 363.5534651948339, + "90.0" : 365.4603657502423, + "95.0" : 365.4603657502423, + "99.0" : 365.4603657502423, + "99.9" : 365.4603657502423, + "99.99" : 365.4603657502423, + "99.999" : 365.4603657502423, + "99.9999" : 365.4603657502423, + "100.0" : 365.4603657502423 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 365.4388498747584, + 365.4603657502423, + 365.29476861361866 + ], + [ + 361.3454885397699, + 361.81216177604915, + 361.30552272469043 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 115.84324182878305, + "scoreError" : 4.076898359803688, + "scoreConfidence" : [ + 111.76634346897936, + 119.92014018858674 + ], + "scorePercentiles" : { + "0.0" : 114.49490570946332, + "50.0" : 115.83590586825932, + "90.0" : 117.25459165852146, + "95.0" : 117.25459165852146, + "99.0" : 117.25459165852146, + "99.9" : 117.25459165852146, + "99.99" : 117.25459165852146, + "99.999" : 117.25459165852146, + "99.9999" : 117.25459165852146, + "100.0" : 117.25459165852146 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 117.25459165852146, + 117.12774698505744, + 117.12666177321468 + ], + [ + 114.49490570946332, + 114.51039488313742, + 114.54514996330396 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.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" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.060678850049020884, + "scoreError" : 7.681907580550135E-4, + "scoreConfidence" : [ + 0.05991065929096587, + 0.0614470408070759 + ], + "scorePercentiles" : { + "0.0" : 0.06038200073061015, + "50.0" : 0.0606895397252282, + "90.0" : 0.06095123389692079, + "95.0" : 0.06095123389692079, + "99.0" : 0.06095123389692079, + "99.9" : 0.06095123389692079, + "99.99" : 0.06095123389692079, + "99.999" : 0.06095123389692079, + "99.9999" : 0.06095123389692079, + "100.0" : 0.06095123389692079 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06095123389692079, + 0.06090183969646957, + 0.06092791972875325 + ], + [ + 0.06038200073061015, + 0.060477239753986826, + 0.0604328664873848 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "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" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.607754363793428E-4, + "scoreError" : 2.0620266806125745E-5, + "scoreConfidence" : [ + 3.4015516957321704E-4, + 3.8139570318546854E-4 + ], + "scorePercentiles" : { + "0.0" : 3.5374183551567485E-4, + "50.0" : 3.6064620727426703E-4, + "90.0" : 3.683799092742162E-4, + "95.0" : 3.683799092742162E-4, + "99.0" : 3.683799092742162E-4, + "99.9" : 3.683799092742162E-4, + "99.99" : 3.683799092742162E-4, + "99.999" : 3.683799092742162E-4, + "99.9999" : 3.683799092742162E-4, + "100.0" : 3.683799092742162E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.542190211591999E-4, + 3.5374183551567485E-4, + 3.5428011236902446E-4 + ], + [ + 3.683799092742162E-4, + 3.670194377784314E-4, + 3.6701230217950966E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DataLoaderPerformance.executeRequestWithDataLoaders", + "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" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.12390292081696497, + "scoreError" : 0.0024803731041723996, + "scoreConfidence" : [ + 0.12142254771279257, + 0.12638329392113737 + ], + "scorePercentiles" : { + "0.0" : 0.12289101978494624, + "50.0" : 0.12406299844820684, + "90.0" : 0.12473521069700144, + "95.0" : 0.12473521069700144, + "99.0" : 0.12473521069700144, + "99.9" : 0.12473521069700144, + "99.99" : 0.12473521069700144, + "99.999" : 0.12473521069700144, + "99.9999" : 0.12473521069700144, + "100.0" : 0.12473521069700144 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.12289101978494624, + 0.1235471942254948, + 0.122937652193155 + ], + [ + 0.12473521069700144, + 0.1247276453302734, + 0.12457880267091888 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.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" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.012972946635625806, + "scoreError" : 7.347243648482396E-5, + "scoreConfidence" : [ + 0.012899474199140983, + 0.01304641907211063 + ], + "scorePercentiles" : { + "0.0" : 0.01294594748023178, + "50.0" : 0.012973183065703237, + "90.0" : 0.012998232414586433, + "95.0" : 0.012998232414586433, + "99.0" : 0.012998232414586433, + "99.9" : 0.012998232414586433, + "99.99" : 0.012998232414586433, + "99.999" : 0.012998232414586433, + "99.9999" : 0.012998232414586433, + "100.0" : 0.012998232414586433 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.012950047602459441, + 0.01294594748023178, + 0.0129513091539929 + ], + [ + 0.012995056977413575, + 0.012998232414586433, + 0.012997086185070715 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.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" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9689787832196171, + "scoreError" : 0.014699200456419358, + "scoreConfidence" : [ + 0.9542795827631977, + 0.9836779836760364 + ], + "scorePercentiles" : { + "0.0" : 0.9628837318505681, + "50.0" : 0.9692995504052865, + "90.0" : 0.9742356146127618, + "95.0" : 0.9742356146127618, + "99.0" : 0.9742356146127618, + "99.9" : 0.9742356146127618, + "99.99" : 0.9742356146127618, + "99.999" : 0.9742356146127618, + "99.9999" : 0.9742356146127618, + "100.0" : 0.9742356146127618 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9742356146127618, + 0.9728151185797665, + 0.973958665368134 + ], + [ + 0.9641955866756653, + 0.9628837318505681, + 0.9657839822308064 + ] + ] + }, + "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.010700078671117464, + "scoreError" : 0.0013654921210303175, + "scoreConfidence" : [ + 0.009334586550087147, + 0.01206557079214778 + ], + "scorePercentiles" : { + "0.0" : 0.010246345338970026, + "50.0" : 0.010701962800476757, + "90.0" : 0.011156180661009877, + "95.0" : 0.011156180661009877, + "99.0" : 0.011156180661009877, + "99.9" : 0.011156180661009877, + "99.99" : 0.011156180661009877, + "99.999" : 0.011156180661009877, + "99.9999" : 0.011156180661009877, + "100.0" : 0.011156180661009877 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.010251043734085606, + 0.010269592040485614, + 0.010246345338970026 + ], + [ + 0.011142976691685758, + 0.011134333560467898, + 0.011156180661009877 + ] + ] + }, + "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.0139715932456617, + "scoreError" : 0.1340680251275121, + "scoreConfidence" : [ + 2.8799035681181495, + 3.148039618373174 + ], + "scorePercentiles" : { + "0.0" : 2.9669904816132857, + "50.0" : 3.0120378698953774, + "90.0" : 3.062598700551133, + "95.0" : 3.062598700551133, + "99.0" : 3.062598700551133, + "99.9" : 3.062598700551133, + "99.99" : 3.062598700551133, + "99.999" : 3.062598700551133, + "99.9999" : 3.062598700551133, + "100.0" : 3.062598700551133 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.0600207669724773, + 3.062598700551133, + 3.0495096030487803 + ], + [ + 2.974566136741974, + 2.9701438705463183, + 2.9669904816132857 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.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" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.7391876225229788, + "scoreError" : 0.031165467815250692, + "scoreConfidence" : [ + 2.708022154707728, + 2.7703530903382294 + ], + "scorePercentiles" : { + "0.0" : 2.7282466879432623, + "50.0" : 2.7390798846947897, + "90.0" : 2.750732664191419, + "95.0" : 2.750732664191419, + "99.0" : 2.750732664191419, + "99.9" : 2.750732664191419, + "99.99" : 2.750732664191419, + "99.999" : 2.750732664191419, + "99.9999" : 2.750732664191419, + "100.0" : 2.750732664191419 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.7282466879432623, + 2.7299096476528386, + 2.729085802728513 + ], + [ + 2.750732664191419, + 2.7482501217367408, + 2.7489008108851016 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "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" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1781733904485464, + "scoreError" : 0.01539419483907109, + "scoreConfidence" : [ + 0.16277919560947532, + 0.1935675852876175 + ], + "scorePercentiles" : { + "0.0" : 0.17305912070606558, + "50.0" : 0.1780484700590578, + "90.0" : 0.18383466120077943, + "95.0" : 0.18383466120077943, + "99.0" : 0.18383466120077943, + "99.9" : 0.18383466120077943, + "99.99" : 0.18383466120077943, + "99.999" : 0.18383466120077943, + "99.9999" : 0.18383466120077943, + "100.0" : 0.18383466120077943 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.18383466120077943, + 0.18283883526529418, + 0.18284708814817524 + ], + [ + 0.1732025325181426, + 0.17325810485282142, + 0.17305912070606558 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "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" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.31881618772709136, + "scoreError" : 0.009639145862982517, + "scoreConfidence" : [ + 0.3091770418641088, + 0.3284553335900739 + ], + "scorePercentiles" : { + "0.0" : 0.31538235041629875, + "50.0" : 0.3189867864157143, + "90.0" : 0.32218294055865204, + "95.0" : 0.32218294055865204, + "99.0" : 0.32218294055865204, + "99.9" : 0.32218294055865204, + "99.99" : 0.32218294055865204, + "99.999" : 0.32218294055865204, + "99.9999" : 0.32218294055865204, + "100.0" : 0.32218294055865204 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3155245565091184, + 0.31538235041629875, + 0.31616240227632 + ], + [ + 0.32183370604705047, + 0.3218111705551086, + 0.32218294055865204 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "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" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.14649771378338938, + "scoreError" : 0.002088090981567289, + "scoreConfidence" : [ + 0.1444096228018221, + 0.14858580476495667 + ], + "scorePercentiles" : { + "0.0" : 0.14576349823630586, + "50.0" : 0.14649918355558894, + "90.0" : 0.14729270019442073, + "95.0" : 0.14729270019442073, + "99.0" : 0.14729270019442073, + "99.9" : 0.14729270019442073, + "99.99" : 0.14729270019442073, + "99.999" : 0.14729270019442073, + "99.9999" : 0.14729270019442073, + "100.0" : 0.14729270019442073 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.14593693022882492, + 0.14577050726644608, + 0.14576349823630586 + ], + [ + 0.14729270019442073, + 0.14716120989198575, + 0.14706143688235293 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "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" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.4067546131704393, + "scoreError" : 0.01027505742572403, + "scoreConfidence" : [ + 0.3964795557447153, + 0.41702967059616336 + ], + "scorePercentiles" : { + "0.0" : 0.40224895885121276, + "50.0" : 0.4070826563132047, + "90.0" : 0.4112681787300543, + "95.0" : 0.4112681787300543, + "99.0" : 0.4112681787300543, + "99.9" : 0.4112681787300543, + "99.99" : 0.4112681787300543, + "99.999" : 0.4112681787300543, + "99.9999" : 0.4112681787300543, + "100.0" : 0.4112681787300543 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.40847265619638917, + 0.40975114062115875, + 0.4112681787300543 + ], + [ + 0.4056926564300203, + 0.40309408819380066, + 0.40224895885121276 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "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" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.160258416830071, + "scoreError" : 0.004033999764718583, + "scoreConfidence" : [ + 0.15622441706535242, + 0.16429241659478958 + ], + "scorePercentiles" : { + "0.0" : 0.1588153917386609, + "50.0" : 0.16015476044348922, + "90.0" : 0.16231229376247747, + "95.0" : 0.16231229376247747, + "99.0" : 0.16231229376247747, + "99.9" : 0.16231229376247747, + "99.99" : 0.16231229376247747, + "99.999" : 0.16231229376247747, + "99.9999" : 0.16231229376247747, + "100.0" : 0.16231229376247747 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16231229376247747, + 0.1610217482328315, + 0.1611612606565567 + ], + [ + 0.15928777265414695, + 0.1588153917386609, + 0.15895203393575255 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "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" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04593580255077625, + "scoreError" : 7.083037066726166E-4, + "scoreConfidence" : [ + 0.04522749884410363, + 0.046644106257448865 + ], + "scorePercentiles" : { + "0.0" : 0.0456801348319226, + "50.0" : 0.04593701852658313, + "90.0" : 0.04618633716521105, + "95.0" : 0.04618633716521105, + "99.0" : 0.04618633716521105, + "99.9" : 0.04618633716521105, + "99.99" : 0.04618633716521105, + "99.999" : 0.04618633716521105, + "99.9999" : 0.04618633716521105, + "100.0" : 0.04618633716521105 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04615976102048541, + 0.04618633716521105, + 0.046151208360639094 + ], + [ + 0.045714545233872146, + 0.04572282869252716, + 0.0456801348319226 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "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" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 8506987.78981484, + "scoreError" : 186618.74042547448, + "scoreConfidence" : [ + 8320369.049389364, + 8693606.530240314 + ], + "scorePercentiles" : { + "0.0" : 8447312.75168919, + "50.0" : 8480112.02351723, + "90.0" : 8602675.13327601, + "95.0" : 8602675.13327601, + "99.0" : 8602675.13327601, + "99.9" : 8602675.13327601, + "99.99" : 8602675.13327601, + "99.999" : 8602675.13327601, + "99.9999" : 8602675.13327601, + "100.0" : 8602675.13327601 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 8455794.64750634, + 8462642.928087987, + 8447312.75168919 + ], + [ + 8602675.13327601, + 8575920.159383034, + 8497581.118946474 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/src/jmh/java/benchmark/CreateExtendedSchemaBenchmark.java b/src/jmh/java/benchmark/CreateExtendedSchemaBenchmark.java new file mode 100644 index 0000000000..92c624967d --- /dev/null +++ b/src/jmh/java/benchmark/CreateExtendedSchemaBenchmark.java @@ -0,0 +1,121 @@ +package benchmark; + +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.Measurement; +import org.openjdk.jmh.annotations.Mode; +import org.openjdk.jmh.annotations.OutputTimeUnit; +import org.openjdk.jmh.annotations.Warmup; +import org.openjdk.jmh.infra.Blackhole; +import org.openjdk.jmh.runner.Runner; +import org.openjdk.jmh.runner.RunnerException; +import org.openjdk.jmh.runner.options.Options; +import org.openjdk.jmh.runner.options.OptionsBuilder; + +import java.util.concurrent.TimeUnit; + +import static benchmark.BenchmarkUtils.runInToolingForSomeTimeThenExit; + +/** + * This JMH + */ +@Warmup(iterations = 2, time = 5) +@Measurement(iterations = 3) +@Fork(3) +public class CreateExtendedSchemaBenchmark { + + private static final String SDL = mkSDL(); + + @Benchmark + @BenchmarkMode(Mode.Throughput) + @OutputTimeUnit(TimeUnit.MINUTES) + public void benchmarkLargeSchemaCreate(Blackhole blackhole) { + blackhole.consume(createSchema(SDL)); + } + + @Benchmark + @BenchmarkMode(Mode.AverageTime) + @OutputTimeUnit(TimeUnit.MILLISECONDS) + public void benchmarkLargeSchemaCreateAvgTime(Blackhole blackhole) { + blackhole.consume(createSchema(SDL)); + } + + private static GraphQLSchema createSchema(String sdl) { + TypeDefinitionRegistry registry = new SchemaParser().parse(sdl); + return new SchemaGenerator().makeExecutableSchema(registry, RuntimeWiring.MOCKED_WIRING); + } + + /* something like + type Query { q : String } interface I { f : String } + interface I1 implements I { + f : String + f1 : String + } + type O1_1 implements I1 & I { + f : String + f1 : String + } + type O1_2 implements I1 & I { + f : String + f1 : String + } + */ + private static String mkSDL() { + int numTypes = 10000; + int numExtends = 10; + + StringBuilder sb = new StringBuilder(); + sb.append("type Query { q : String } interface I { f : String } interface X { x : String }\n"); + for (int i = 0; i < numTypes; i++) { + sb.append("interface I").append(i).append(" implements I { \n") + .append("\tf : String \n") + .append("\tf").append(i).append(" : String \n").append("}\n"); + + sb.append("type O").append(i).append(" implements I").append(i).append(" & I { \n") + .append("\tf : String \n") + .append("\tf").append(i).append(" : String \n") + .append("}\n"); + + sb.append("extend type O").append(i).append(" implements X").append(" { \n") + .append("\tx : String \n") + .append("}\n"); + + for (int j = 0; j < numExtends; j++) { + sb.append("extend type O").append(i).append(" { \n") + .append("\textendedF").append(j).append(" : String \n") + .append("}\n"); + + } + } + return sb.toString(); + } + + public static void main(String[] args) throws RunnerException { + try { + runAtStartup(); + } catch (Throwable e) { + throw new RuntimeException(e); + } + Options opt = new OptionsBuilder() + .include("benchmark.CreateExtendedSchemaBenchmark") + .build(); + + new Runner(opt).run(); + } + + private static void runAtStartup() { + runInToolingForSomeTimeThenExit( + () -> { + }, + () -> createSchema(SDL), + () -> { + } + ); + } +} \ No newline at end of file diff --git a/src/main/java/graphql/EngineRunningState.java b/src/main/java/graphql/EngineRunningState.java index 0806f58800..706a0e30b6 100644 --- a/src/main/java/graphql/EngineRunningState.java +++ b/src/main/java/graphql/EngineRunningState.java @@ -29,6 +29,9 @@ public class EngineRunningState { private final EngineRunningObserver engineRunningObserver; private volatile ExecutionInput executionInput; private final GraphQLContext graphQLContext; + + // will be null after updateExecutionInput is called + @Nullable private volatile ExecutionId executionId; // if true the last decrementRunning() call will be ignored @@ -164,7 +167,7 @@ private void incrementRunning() { public void updateExecutionInput(ExecutionInput executionInput) { this.executionInput = executionInput; - this.executionId = executionInput.getExecutionId(); + this.executionId = executionInput.getExecutionIdNonNull(); } private void changeOfState(EngineRunningObserver.RunningState runningState) { diff --git a/src/main/java/graphql/ExecutionInput.java b/src/main/java/graphql/ExecutionInput.java index fa2ffe21ad..7bc9238701 100644 --- a/src/main/java/graphql/ExecutionInput.java +++ b/src/main/java/graphql/ExecutionInput.java @@ -4,6 +4,9 @@ import graphql.execution.ExecutionId; import graphql.execution.RawVariables; import org.dataloader.DataLoaderRegistry; +import org.jspecify.annotations.NullMarked; +import org.jspecify.annotations.NullUnmarked; +import org.jspecify.annotations.Nullable; import java.util.Locale; import java.util.Map; @@ -17,6 +20,7 @@ * This represents the series of values that can be input on a graphql query execution */ @PublicApi +@NullMarked public class ExecutionInput { private final String query; private final String operationName; @@ -58,6 +62,7 @@ public String getQuery() { /** * @return the name of the query operation */ + @Nullable public String getOperationName() { return operationName; } @@ -71,6 +76,7 @@ public String getOperationName() { * @deprecated - use {@link #getGraphQLContext()} */ @Deprecated(since = "2021-07-05") + @Nullable public Object getContext() { return context; } @@ -85,6 +91,7 @@ public GraphQLContext getGraphQLContext() { /** * @return the local context object to pass to all top level (i.e. query, mutation, subscription) data fetchers */ + @Nullable public Object getLocalContext() { return localContext; } @@ -92,6 +99,7 @@ public Object getLocalContext() { /** * @return the root object to start the query execution on */ + @Nullable public Object getRoot() { return root; } @@ -119,12 +127,27 @@ public DataLoaderRegistry getDataLoaderRegistry() { /** + * This value can be null before the execution starts, but once the execution starts, it will be set to a non-null value. + * See #getExecutionIdNonNull() for a non-null version of this. + * * @return Id that will be/was used to execute this operation. */ + @Nullable public ExecutionId getExecutionId() { return executionId; } + + /** + * Once the execution starts, GraphQL Java will make sure that this execution id is non-null. + * Therefore use this method if you are sue that the execution has started to get a guaranteed non-null execution id. + * + * @return the non null execution id of this operation. + */ + public ExecutionId getExecutionIdNonNull() { + return Assert.assertNotNull(this.executionId); + } + /** * This returns the locale of this operation. * @@ -224,6 +247,7 @@ public static Builder newExecutionInput(String query) { return new Builder().query(query); } + @NullUnmarked public static class Builder { private String query; @@ -245,6 +269,7 @@ public static class Builder { /** * Package level access to the graphql context + * * @return shhh but it's the graphql context */ GraphQLContext graphQLContext() { @@ -312,7 +337,7 @@ public Builder context(Object context) { return this; } - /** + /** * This will give you a builder of {@link GraphQLContext} and any values you set will be copied * into the underlying {@link GraphQLContext} of this execution input * diff --git a/src/main/java/graphql/collect/ImmutableKit.java b/src/main/java/graphql/collect/ImmutableKit.java index 99ba867493..ff7ca7a22e 100644 --- a/src/main/java/graphql/collect/ImmutableKit.java +++ b/src/main/java/graphql/collect/ImmutableKit.java @@ -185,4 +185,27 @@ public static ImmutableSet addToSet(Collection existing, T n return newSet.build(); } -} + + /** + * Filters a variable args array to a list + * + * @param filter the predicate the filter with + * @param args the variable args + * @param fot two + * + * @return a filtered list + */ + @SafeVarargs + public static List filterVarArgs(Predicate filter, T... args) { + if (args.length == 0) { + return ImmutableList.of(); + } + ImmutableList.Builder builder = ImmutableList.builderWithExpectedSize(args.length); + for (T arg : args) { + if (filter.test(arg)) { + builder.add(arg); + } + } + return builder.build(); + } +} \ No newline at end of file diff --git a/src/main/java/graphql/execution/EngineRunningObserver.java b/src/main/java/graphql/execution/EngineRunningObserver.java index a13fe77012..008cb53b4d 100644 --- a/src/main/java/graphql/execution/EngineRunningObserver.java +++ b/src/main/java/graphql/execution/EngineRunningObserver.java @@ -4,6 +4,7 @@ import graphql.ExperimentalApi; import graphql.GraphQLContext; import org.jspecify.annotations.NullMarked; +import org.jspecify.annotations.Nullable; /** * This class lets you observe the running state of the graphql-java engine. As it processes and dispatches graphql fields, @@ -46,8 +47,9 @@ enum RunningState { /** * This will be called when the running state of the graphql-java engine changes. * - * @param executionId the id of the current execution + * @param executionId the id of the current execution. This could be null when the engine starts, + * if there is no execution id provided in the execution input * @param graphQLContext the graphql context */ - void runningStateChanged(ExecutionId executionId, GraphQLContext graphQLContext, RunningState runningState); + void runningStateChanged(@Nullable ExecutionId executionId, GraphQLContext graphQLContext, RunningState runningState); } diff --git a/src/main/java/graphql/execution/ExecutionStrategy.java b/src/main/java/graphql/execution/ExecutionStrategy.java index 563d4d5279..614b75e703 100644 --- a/src/main/java/graphql/execution/ExecutionStrategy.java +++ b/src/main/java/graphql/execution/ExecutionStrategy.java @@ -105,7 +105,7 @@ *

* The first phase (data fetching) is handled by the method {@link #fetchField(ExecutionContext, ExecutionStrategyParameters)} *

- * The second phase (value completion) is handled by the methods {@link #completeField(ExecutionContext, ExecutionStrategyParameters, FetchedValue)} + * The second phase (value completion) is handled by the methods {@link #completeField(ExecutionContext, ExecutionStrategyParameters, Object)} * and the other "completeXXX" methods. *

* The order of fields fetching and completion is up to the execution strategy. As the graphql specification @@ -358,7 +358,7 @@ protected Object resolveFieldWithInfo(ExecutionContext executionContext, Executi Object fetchedValueObj = fetchField(executionContext, parameters); if (fetchedValueObj instanceof CompletableFuture) { - CompletableFuture fetchFieldFuture = (CompletableFuture) fetchedValueObj; + CompletableFuture fetchFieldFuture = (CompletableFuture) fetchedValueObj; CompletableFuture result = fetchFieldFuture.thenApply((fetchedValue) -> completeField(fieldDef, executionContext, parameters, fetchedValue)); @@ -367,10 +367,9 @@ protected Object resolveFieldWithInfo(ExecutionContext executionContext, Executi return result; } else { try { - FetchedValue fetchedValue = (FetchedValue) fetchedValueObj; - FieldValueInfo fieldValueInfo = completeField(fieldDef, executionContext, parameters, fetchedValue); + FieldValueInfo fieldValueInfo = completeField(fieldDef, executionContext, parameters, fetchedValueObj); fieldCtx.onDispatched(); - fieldCtx.onCompleted(fetchedValue.getFetchedValue(), null); + fieldCtx.onCompleted(FetchedValue.getFetchedValue(fetchedValueObj), null); return fieldValueInfo; } catch (Exception e) { return Async.exceptionallyCompletedFuture(e); @@ -383,16 +382,16 @@ protected Object resolveFieldWithInfo(ExecutionContext executionContext, Executi * {@link GraphQLFieldDefinition}. *

* 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. + * 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 promise to a {@link FetchedValue} object or the {@link FetchedValue} itself + * @return a promise to a value object or the value itself. The value maybe a raw object OR a {@link FetchedValue} * - * @throws NonNullableFieldWasNullException in the future if a non null field resolves to a null value + * @throws NonNullableFieldWasNullException in the future if a non-null field resolves to a null value */ - @DuckTyped(shape = "CompletableFuture | FetchedValue") + @DuckTyped(shape = "CompletableFuture | ") protected Object fetchField(ExecutionContext executionContext, ExecutionStrategyParameters parameters) { MergedField field = parameters.getField(); GraphQLObjectType parentType = (GraphQLObjectType) parameters.getExecutionStepInfo().getUnwrappedNonNullType(); @@ -400,12 +399,12 @@ protected Object fetchField(ExecutionContext executionContext, ExecutionStrategy return fetchField(fieldDef, executionContext, parameters); } - @DuckTyped(shape = "CompletableFuture | FetchedValue") + @DuckTyped(shape = "CompletableFuture | ") private Object fetchField(GraphQLFieldDefinition fieldDef, ExecutionContext executionContext, ExecutionStrategyParameters parameters) { executionContext.throwIfCancelled(); if (incrementAndCheckMaxNodesExceeded(executionContext)) { - return new FetchedValue(null, Collections.emptyList(), null); + return null; } MergedField field = parameters.getField(); @@ -486,9 +485,8 @@ private Object fetchField(GraphQLFieldDefinition fieldDef, ExecutionContext exec } }); CompletableFuture rawResultCF = engineRunningState.compose(handleCF, Function.identity()); - CompletableFuture fetchedValueCF = rawResultCF + return rawResultCF .thenApply(result -> unboxPossibleDataFetcherResult(executionContext, parameters, result)); - return fetchedValueCF; } else { fetchCtx.onCompleted(fetchedObject, null); return unboxPossibleDataFetcherResult(executionContext, parameters, fetchedObject); @@ -520,9 +518,21 @@ protected Supplier getNormalizedField(ExecutionContex return () -> normalizedQuery.get().getNormalizedField(parameters.getField(), executionStepInfo.get().getObjectType(), executionStepInfo.get().getPath()); } - protected FetchedValue unboxPossibleDataFetcherResult(ExecutionContext executionContext, - ExecutionStrategyParameters parameters, - Object result) { + /** + * If the data fetching returned a {@link DataFetcherResult} then it can contain errors and new local context + * and hence it gets turned into a {@link FetchedValue} but otherwise this method returns the unboxed + * value without the wrapper. This means its more efficient overall by default. + * + * @param executionContext the execution context in play + * @param parameters the parameters in play + * @param result the fetched raw object + * + * @return an unboxed value which can be a FetchedValue or an Object + */ + @DuckTyped(shape = "FetchedValue | Object") + protected Object unboxPossibleDataFetcherResult(ExecutionContext executionContext, + ExecutionStrategyParameters parameters, + Object result) { if (result instanceof DataFetcherResult) { DataFetcherResult dataFetcherResult = (DataFetcherResult) result; @@ -538,8 +548,7 @@ protected FetchedValue unboxPossibleDataFetcherResult(ExecutionContext execution Object unBoxedValue = executionContext.getValueUnboxer().unbox(dataFetcherResult.getData()); return new FetchedValue(unBoxedValue, dataFetcherResult.getErrors(), localContext); } else { - Object unBoxedValue = executionContext.getValueUnboxer().unbox(result); - return new FetchedValue(unBoxedValue, ImmutableList.of(), parameters.getLocalContext()); + return executionContext.getValueUnboxer().unbox(result); } } @@ -577,29 +586,32 @@ protected CompletableFuture handleFetchingException( private CompletableFuture asyncHandleException(DataFetcherExceptionHandler handler, DataFetcherExceptionHandlerParameters handlerParameters) { //noinspection unchecked return handler.handleException(handlerParameters).thenApply( - handlerResult -> (T) DataFetcherResult.newResult().errors(handlerResult.getErrors()).build() + handlerResult -> (T) DataFetcherResult.newResult().errors(handlerResult.getErrors()).build() ); } /** * Called to complete a field based on the type of the field. *

- * If the field is a scalar type, then it will be coerced and returned. However if the field type is an complex object type, then + * If the field is a scalar type, then it will be coerced and returned. However, if the field type is an complex object type, then * the execution strategy will be called recursively again to execute the fields of that type before returning. *

* 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. + * 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 - * @param fetchedValue the fetched raw value + * @param fetchedValue the fetched raw value or perhaps a {@link FetchedValue} wrapper of that value * * @return a {@link FieldValueInfo} * * @throws NonNullableFieldWasNullException in the {@link FieldValueInfo#getFieldValueFuture()} future * if a nonnull field resolves to a null value */ - protected FieldValueInfo completeField(ExecutionContext executionContext, ExecutionStrategyParameters parameters, FetchedValue fetchedValue) { + protected FieldValueInfo completeField(ExecutionContext executionContext, + ExecutionStrategyParameters parameters, + @DuckTyped(shape = "Object | FetchedValue") + Object fetchedValue) { executionContext.throwIfCancelled(); Field field = parameters.getField().getSingleField(); @@ -608,7 +620,7 @@ protected FieldValueInfo completeField(ExecutionContext executionContext, Execut return completeField(fieldDef, executionContext, parameters, fetchedValue); } - private FieldValueInfo completeField(GraphQLFieldDefinition fieldDef, ExecutionContext executionContext, ExecutionStrategyParameters parameters, FetchedValue fetchedValue) { + private FieldValueInfo completeField(GraphQLFieldDefinition fieldDef, ExecutionContext executionContext, ExecutionStrategyParameters parameters, Object fetchedValue) { GraphQLObjectType parentType = (GraphQLObjectType) parameters.getExecutionStepInfo().getUnwrappedNonNullType(); ExecutionStepInfo executionStepInfo = createExecutionStepInfo(executionContext, parameters, fieldDef, parentType); @@ -618,9 +630,11 @@ private FieldValueInfo completeField(GraphQLFieldDefinition fieldDef, ExecutionC instrumentationParams, executionContext.getInstrumentationState() )); - ExecutionStrategyParameters newParameters = parameters.transform(executionStepInfo, - fetchedValue.getLocalContext(), - fetchedValue.getFetchedValue()); + ExecutionStrategyParameters newParameters = parameters.transform( + executionStepInfo, + FetchedValue.getLocalContext(fetchedValue, parameters.getLocalContext()), + FetchedValue.getFetchedValue(fetchedValue) + ); FieldValueInfo fieldValueInfo = completeValue(executionContext, newParameters); ctxCompleteField.onDispatched(); @@ -777,12 +791,14 @@ protected FieldValueInfo completeValueForList(ExecutionContext executionContext, ExecutionStepInfo stepInfoForListElement = executionStepInfoFactory.newExecutionStepInfoForListElement(executionStepInfo, indexedPath); - FetchedValue value = unboxPossibleDataFetcherResult(executionContext, parameters, item); + Object fetchedValue = unboxPossibleDataFetcherResult(executionContext, parameters, item); - ExecutionStrategyParameters newParameters = parameters.transform(stepInfoForListElement, + ExecutionStrategyParameters newParameters = parameters.transform( + stepInfoForListElement, indexedPath, - value.getLocalContext(), - value.getFetchedValue()); + FetchedValue.getLocalContext(fetchedValue, parameters.getLocalContext()), + FetchedValue.getFetchedValue(fetchedValue) + ); fieldValueInfos.add(completeValue(executionContext, newParameters)); index++; diff --git a/src/main/java/graphql/execution/FetchedValue.java b/src/main/java/graphql/execution/FetchedValue.java index 8ebac38ced..fe56fa0a10 100644 --- a/src/main/java/graphql/execution/FetchedValue.java +++ b/src/main/java/graphql/execution/FetchedValue.java @@ -8,7 +8,7 @@ import java.util.List; /** - * Note: This is returned by {@link InstrumentationFieldCompleteParameters#getFetchedValue()} + * Note: This MAY be returned by {@link InstrumentationFieldCompleteParameters#getFetchedObject()} * and therefore part of the public despite never used in a method signature. */ @PublicApi @@ -17,6 +17,39 @@ public class FetchedValue { private final Object localContext; private final ImmutableList errors; + /** + * This allows you to get to the underlying fetched value depending on whether the source + * value is a {@link FetchedValue} or not + * + * @param sourceValue the source value in play + * + * @return the {@link FetchedValue#getFetchedValue()} if its wrapped otherwise the source value itself + */ + public static Object getFetchedValue(Object sourceValue) { + if (sourceValue instanceof FetchedValue) { + return ((FetchedValue) sourceValue).fetchedValue; + } else { + return sourceValue; + } + } + + /** + * This allows you to get to the local context depending on whether the source + * value is a {@link FetchedValue} or not + * + * @param sourceValue the source value in play + * @param defaultLocalContext the default local context to use + * + * @return the {@link FetchedValue#getFetchedValue()} if its wrapped otherwise the default local context + */ + public static Object getLocalContext(Object sourceValue, Object defaultLocalContext) { + if (sourceValue instanceof FetchedValue) { + return ((FetchedValue) sourceValue).localContext; + } else { + return defaultLocalContext; + } + } + public FetchedValue(Object fetchedValue, List errors, Object localContext) { this.fetchedValue = fetchedValue; this.errors = ImmutableList.copyOf(errors); diff --git a/src/main/java/graphql/execution/RawVariables.java b/src/main/java/graphql/execution/RawVariables.java index d7c1fba61b..4ebfa27f2a 100644 --- a/src/main/java/graphql/execution/RawVariables.java +++ b/src/main/java/graphql/execution/RawVariables.java @@ -3,6 +3,8 @@ import graphql.PublicApi; import graphql.collect.ImmutableKit; import graphql.collect.ImmutableMapWithNullValues; +import org.jspecify.annotations.NullMarked; +import org.jspecify.annotations.Nullable; import java.util.Map; @@ -10,6 +12,7 @@ * Holds raw variables, which have not been coerced yet into {@link CoercedVariables} */ @PublicApi +@NullMarked public class RawVariables { private static final RawVariables EMPTY = RawVariables.of(ImmutableKit.emptyMap()); private final ImmutableMapWithNullValues rawVariables; @@ -26,7 +29,7 @@ public boolean containsKey(String key) { return rawVariables.containsKey(key); } - public Object get(String key) { + public @Nullable Object get(String key) { return rawVariables.get(key); } diff --git a/src/main/java/graphql/execution/SubscriptionExecutionStrategy.java b/src/main/java/graphql/execution/SubscriptionExecutionStrategy.java index dea9172fc0..45e2192248 100644 --- a/src/main/java/graphql/execution/SubscriptionExecutionStrategy.java +++ b/src/main/java/graphql/execution/SubscriptionExecutionStrategy.java @@ -109,9 +109,9 @@ private boolean keepOrdered(GraphQLContext graphQLContext) { private CompletableFuture> createSourceEventStream(ExecutionContext executionContext, ExecutionStrategyParameters parameters) { ExecutionStrategyParameters newParameters = firstFieldOfSubscriptionSelection(executionContext, parameters, false); - CompletableFuture fieldFetched = Async.toCompletableFuture(fetchField(executionContext, newParameters)); + CompletableFuture fieldFetched = Async.toCompletableFuture(fetchField(executionContext, newParameters)); return fieldFetched.thenApply(fetchedValue -> { - Object publisher = fetchedValue.getFetchedValue(); + Object publisher = FetchedValue.getFetchedValue(fetchedValue); return mkReactivePublisher(publisher); }); } @@ -168,7 +168,7 @@ private CompletableFuture executeSubscriptionEvent(ExecutionCon i13nFieldParameters, executionContext.getInstrumentationState() )); - FetchedValue fetchedValue = unboxPossibleDataFetcherResult(newExecutionContext, newParameters, eventPayload); + Object fetchedValue = unboxPossibleDataFetcherResult(newExecutionContext, newParameters, eventPayload); FieldValueInfo fieldValueInfo = completeField(newExecutionContext, newParameters, fetchedValue); executionContext.getDataLoaderDispatcherStrategy().newSubscriptionExecution(fieldValueInfo, newParameters.getDeferredCallContext()); CompletableFuture overallResult = fieldValueInfo diff --git a/src/main/java/graphql/execution/instrumentation/parameters/InstrumentationFieldCompleteParameters.java b/src/main/java/graphql/execution/instrumentation/parameters/InstrumentationFieldCompleteParameters.java index bd89baa15a..ac7e1b27e5 100644 --- a/src/main/java/graphql/execution/instrumentation/parameters/InstrumentationFieldCompleteParameters.java +++ b/src/main/java/graphql/execution/instrumentation/parameters/InstrumentationFieldCompleteParameters.java @@ -48,7 +48,13 @@ public ExecutionStepInfo getExecutionStepInfo() { return executionStepInfo.get(); } - public Object getFetchedValue() { + /** + * This returns the object that was fetched, ready to be completed as a value. This can sometimes be a {@link graphql.execution.FetchedValue} object + * but most often it's a simple POJO. + * + * @return the object was fetched, ready to be completed as a value. + */ + public Object getFetchedObject() { return fetchedValue; } diff --git a/src/main/java/graphql/introspection/Introspection.java b/src/main/java/graphql/introspection/Introspection.java index f9a80f3e80..df6b6cd6e8 100644 --- a/src/main/java/graphql/introspection/Introspection.java +++ b/src/main/java/graphql/introspection/Introspection.java @@ -7,6 +7,7 @@ import graphql.GraphQLContext; import graphql.Internal; import graphql.PublicApi; +import graphql.collect.ImmutableKit; import graphql.execution.ExecutionContext; import graphql.execution.MergedField; import graphql.execution.MergedSelectionSet; @@ -48,7 +49,6 @@ import java.util.Set; import java.util.concurrent.atomic.AtomicBoolean; import java.util.function.Function; -import java.util.stream.Collectors; import static graphql.Assert.assertTrue; import static graphql.Scalars.GraphQLBoolean; @@ -356,9 +356,8 @@ private static String printDefaultValue(InputValueWithState inputValueWithState, Object type = environment.getSource(); GraphQLFieldDefinition fieldDef = (GraphQLFieldDefinition) type; Boolean includeDeprecated = environment.getArgument("includeDeprecated"); - return fieldDef.getArguments().stream() - .filter(arg -> includeDeprecated || !arg.isDeprecated()) - .collect(Collectors.toList()); + return ImmutableKit.filter(fieldDef.getArguments(), + arg -> includeDeprecated || !arg.isDeprecated()); }; register(__Field, "name", nameDataFetcher); register(__Field, "description", descriptionDataFetcher); @@ -406,9 +405,8 @@ private static String printDefaultValue(InputValueWithState inputValueWithState, if (includeDeprecated) { return fieldDefinitions; } - return fieldDefinitions.stream() - .filter(field -> !field.isDeprecated()) - .collect(Collectors.toList()); + return ImmutableKit.filter(fieldDefinitions, + field -> !field.isDeprecated()); } return null; }; @@ -444,9 +442,8 @@ private static String printDefaultValue(InputValueWithState inputValueWithState, if (includeDeprecated) { return values; } - return values.stream() - .filter(enumValue -> !enumValue.isDeprecated()) - .collect(Collectors.toList()); + return ImmutableKit.filter(values, + enumValue -> !enumValue.isDeprecated()); } return null; }; @@ -463,9 +460,8 @@ private static String printDefaultValue(InputValueWithState inputValueWithState, if (includeDeprecated) { return inputFields; } - return inputFields - .stream().filter(inputField -> !inputField.isDeprecated()) - .collect(Collectors.toList()); + return ImmutableKit.filter(inputFields, + inputField -> !inputField.isDeprecated()); } return null; }; @@ -650,9 +646,8 @@ public enum DirectiveLocation { IntrospectionDataFetcher argsDataFetcher = environment -> { GraphQLDirective directive = environment.getSource(); Boolean includeDeprecated = environment.getArgument("includeDeprecated"); - return directive.getArguments().stream() - .filter(arg -> includeDeprecated || !arg.isDeprecated()) - .collect(Collectors.toList()); + return ImmutableKit.filter(directive.getArguments(), + arg -> includeDeprecated || !arg.isDeprecated()); }; register(__Directive, "name", nameDataFetcher); register(__Directive, "description", descriptionDataFetcher); diff --git a/src/main/java/graphql/introspection/IntrospectionQueryBuilder.java b/src/main/java/graphql/introspection/IntrospectionQueryBuilder.java index 21024349f8..d4d37005b0 100644 --- a/src/main/java/graphql/introspection/IntrospectionQueryBuilder.java +++ b/src/main/java/graphql/introspection/IntrospectionQueryBuilder.java @@ -2,13 +2,13 @@ import com.google.common.collect.ImmutableList; import graphql.PublicApi; +import graphql.collect.ImmutableKit; import graphql.language.AstPrinter; import graphql.language.BooleanValue; import graphql.language.Document; import graphql.language.OperationDefinition; import graphql.language.SelectionSet; -import java.util.Arrays; import java.util.List; import java.util.Objects; @@ -20,7 +20,6 @@ import static graphql.language.OperationDefinition.newOperationDefinition; import static graphql.language.SelectionSet.newSelectionSet; import static graphql.language.TypeName.newTypeName; -import static java.util.stream.Collectors.toList; /** * {@link IntrospectionQueryBuilder} allows you to build introspection queries controlled @@ -152,6 +151,7 @@ public Options isOneOf(boolean flag) { this.inputValueDeprecation, this.typeRefFragmentDepth); } + /** * This will allow you to include the `isRepeatable` field for directives in the introspection query. * @@ -223,7 +223,7 @@ public Options typeRefFragmentDepth(int typeRefFragmentDepth) { @SafeVarargs private static List filter(T... args) { - return Arrays.stream(args).filter(Objects::nonNull).collect(toList()); + return ImmutableKit.filterVarArgs(Objects::nonNull, args); } /** diff --git a/src/main/java/graphql/introspection/IntrospectionWithDirectivesSupport.java b/src/main/java/graphql/introspection/IntrospectionWithDirectivesSupport.java index ba939f51d5..5d264e113c 100644 --- a/src/main/java/graphql/introspection/IntrospectionWithDirectivesSupport.java +++ b/src/main/java/graphql/introspection/IntrospectionWithDirectivesSupport.java @@ -4,6 +4,7 @@ import graphql.DirectivesUtil; import graphql.PublicApi; import graphql.PublicSpi; +import graphql.collect.ImmutableKit; import graphql.execution.ValuesResolver; import graphql.language.AstPrinter; import graphql.language.Node; @@ -41,7 +42,6 @@ import static graphql.schema.GraphQLNonNull.nonNull; import static graphql.schema.GraphQLObjectType.newObject; import static graphql.util.TraversalControl.CONTINUE; -import static java.util.stream.Collectors.toList; /** * The graphql specification does not allow you to retrieve the directives and their argument values that @@ -171,9 +171,9 @@ private GraphQLObjectType mkAppliedDirectiveType(String name, GraphQLType direct } private GraphQLSchema addDirectiveDefinitionFilter(GraphQLSchema schema) { - DataFetcher df = env -> { + DataFetcher df = env -> { List definedDirectives = env.getGraphQLSchema().getDirectives(); - return filterDirectives(schema,true, null, definedDirectives); + return filterDirectives(schema, true, null, definedDirectives); }; GraphQLCodeRegistry codeRegistry = schema.getCodeRegistry().transform(bld -> bld.dataFetcher(coordinates(__Schema, "directives"), df)); @@ -199,8 +199,8 @@ private GraphQLObjectType addAppliedDirectives(GraphQLObjectType originalType, G DataFetcher argsDF = env -> { final GraphQLAppliedDirective directive = env.getSource(); // we only show directive arguments that have values set on them - return directive.getArguments().stream() - .filter(arg -> arg.getArgumentValue().isSet()); + return ImmutableKit.filter(directive.getArguments(), + arg -> arg.getArgumentValue().isSet()); }; DataFetcher argValueDF = env -> { final GraphQLAppliedDirectiveArgument argument = env.getSource(); @@ -225,17 +225,19 @@ private GraphQLObjectType addAppliedDirectives(GraphQLObjectType originalType, G } private List filterDirectives(GraphQLSchema schema, boolean isDefinedDirective, GraphQLDirectiveContainer container, List directives) { - return directives.stream().filter(directive -> { - DirectivePredicateEnvironment env = buildDirectivePredicateEnv(schema, isDefinedDirective, container, directive.getName()); - return directivePredicate.isDirectiveIncluded(env); - }).collect(toList()); + return ImmutableKit.filter(directives, + directive -> { + DirectivePredicateEnvironment env = buildDirectivePredicateEnv(schema, isDefinedDirective, container, directive.getName()); + return directivePredicate.isDirectiveIncluded(env); + }); } private List filterAppliedDirectives(GraphQLSchema schema, boolean isDefinedDirective, GraphQLDirectiveContainer container, List directives) { - return directives.stream().filter(directive -> { - DirectivePredicateEnvironment env = buildDirectivePredicateEnv(schema, isDefinedDirective, container, directive.getName()); - return directivePredicate.isDirectiveIncluded(env); - }).collect(toList()); + return ImmutableKit.filter(directives, + directive -> { + DirectivePredicateEnvironment env = buildDirectivePredicateEnv(schema, isDefinedDirective, container, directive.getName()); + return directivePredicate.isDirectiveIncluded(env); + }); } @NonNull diff --git a/src/main/java/graphql/schema/DataFetchingEnvironmentImpl.java b/src/main/java/graphql/schema/DataFetchingEnvironmentImpl.java index 9447f9cc90..b0907d3aa6 100644 --- a/src/main/java/graphql/schema/DataFetchingEnvironmentImpl.java +++ b/src/main/java/graphql/schema/DataFetchingEnvironmentImpl.java @@ -226,10 +226,14 @@ public ExecutionStepInfo getExecutionStepInfo() { @Override public @Nullable DataLoader getDataLoader(String dataLoaderName) { + DataLoader dataLoader = dataLoaderRegistry.getDataLoader(dataLoaderName); + if (dataLoader == null) { + return null; + } if (!graphQLContext.getBoolean(DataLoaderDispatchingContextKeys.ENABLE_DATA_LOADER_CHAINING, false)) { - return dataLoaderRegistry.getDataLoader(dataLoaderName); + return dataLoader; } - return new DataLoaderWithContext<>(this, dataLoaderName, dataLoaderRegistry.getDataLoader(dataLoaderName)); + return new DataLoaderWithContext<>(this, dataLoaderName, dataLoader); } @Override diff --git a/src/main/java/graphql/schema/idl/ArgValueOfAllowedTypeChecker.java b/src/main/java/graphql/schema/idl/ArgValueOfAllowedTypeChecker.java index e00a40812f..1711b635c0 100644 --- a/src/main/java/graphql/schema/idl/ArgValueOfAllowedTypeChecker.java +++ b/src/main/java/graphql/schema/idl/ArgValueOfAllowedTypeChecker.java @@ -122,8 +122,10 @@ private void checkArgValueMatchesAllowedTypeName(List errors, Valu } String allowedTypeName = ((TypeName) allowedArgType).getName(); - TypeDefinition allowedTypeDefinition = typeRegistry.getType(allowedTypeName) - .orElseThrow(() -> new AssertException(format("Directive unknown argument type '%s'. This should have been validated before.", allowedTypeName))); + TypeDefinition allowedTypeDefinition = typeRegistry.getTypeOrNull(allowedTypeName); + if (allowedTypeDefinition == null) { + throw new AssertException(format("Directive unknown argument type '%s'. This should have been validated before.", allowedTypeName)); + } if (allowedTypeDefinition instanceof ScalarTypeDefinition) { checkArgValueMatchesAllowedScalar(errors, instanceValue, (ScalarTypeDefinition) allowedTypeDefinition); diff --git a/src/main/java/graphql/schema/idl/ImmutableTypeDefinitionRegistry.java b/src/main/java/graphql/schema/idl/ImmutableTypeDefinitionRegistry.java index 1604551f25..fee750ac05 100644 --- a/src/main/java/graphql/schema/idl/ImmutableTypeDefinitionRegistry.java +++ b/src/main/java/graphql/schema/idl/ImmutableTypeDefinitionRegistry.java @@ -6,13 +6,17 @@ import graphql.PublicApi; import graphql.language.DirectiveDefinition; import graphql.language.EnumTypeExtensionDefinition; +import graphql.language.ImplementingTypeDefinition; import graphql.language.InputObjectTypeExtensionDefinition; +import graphql.language.InterfaceTypeDefinition; import graphql.language.InterfaceTypeExtensionDefinition; +import graphql.language.ObjectTypeDefinition; import graphql.language.ObjectTypeExtensionDefinition; import graphql.language.SDLDefinition; import graphql.language.ScalarTypeDefinition; import graphql.language.ScalarTypeExtensionDefinition; import graphql.language.SchemaExtensionDefinition; +import graphql.language.Type; import graphql.language.TypeDefinition; import graphql.language.UnionTypeExtensionDefinition; import graphql.schema.idl.errors.SchemaProblem; @@ -34,6 +38,7 @@ @PublicApi @NullMarked public class ImmutableTypeDefinitionRegistry extends TypeDefinitionRegistry { + ImmutableTypeDefinitionRegistry(TypeDefinitionRegistry registry) { super( copyOf(registry.objectTypeExtensions), @@ -51,6 +56,7 @@ public class ImmutableTypeDefinitionRegistry extends TypeDefinitionRegistry { ); } + private UnsupportedOperationException unsupportedOperationException() { return new UnsupportedOperationException("The TypeDefinitionRegistry is in read only mode"); } diff --git a/src/main/java/graphql/schema/idl/ImplementingTypesChecker.java b/src/main/java/graphql/schema/idl/ImplementingTypesChecker.java index 6f2a22ec10..0294e290a1 100644 --- a/src/main/java/graphql/schema/idl/ImplementingTypesChecker.java +++ b/src/main/java/graphql/schema/idl/ImplementingTypesChecker.java @@ -29,7 +29,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.Optional; +import java.util.Objects; import java.util.Set; import java.util.function.BinaryOperator; import java.util.function.Function; @@ -73,7 +73,7 @@ void checkImplementingTypes(List errors, TypeDefinitionRegistry ty private void checkImplementingType( List errors, TypeDefinitionRegistry typeRegistry, - ImplementingTypeDefinition type) { + ImplementingTypeDefinition type) { Map implementedInterfaces = checkInterfacesNotImplementedMoreThanOnce(errors, type, typeRegistry); @@ -172,7 +172,7 @@ private void checkInterfaceIsImplemented( private void checkArgumentConsistency( String typeOfType, - ImplementingTypeDefinition objectTypeDef, + ImplementingTypeDefinition objectTypeDef, InterfaceTypeDefinition interfaceTypeDef, FieldDefinition objectFieldDef, FieldDefinition interfaceFieldDef, @@ -211,7 +211,7 @@ private void checkArgumentConsistency( } private Map> getLogicallyImplementedInterfaces( - ImplementingTypeDefinition type, + ImplementingTypeDefinition type, TypeDefinitionRegistry typeRegistry ) { @@ -255,18 +255,17 @@ private BinaryOperator mergeFirstValue() { return (v1, v2) -> v1; } - private Optional toInterfaceTypeDefinition(Type type, TypeDefinitionRegistry typeRegistry) { + private InterfaceTypeDefinition toInterfaceTypeDefinition(Type type, TypeDefinitionRegistry typeRegistry) { TypeInfo typeInfo = TypeInfo.typeInfo(type); TypeName unwrapped = typeInfo.getTypeName(); - return typeRegistry.getType(unwrapped, InterfaceTypeDefinition.class); + return typeRegistry.getTypeOrNull(unwrapped, InterfaceTypeDefinition.class); } private Set toInterfaceTypeDefinitions(TypeDefinitionRegistry typeRegistry, Collection implementsTypes) { return implementsTypes.stream() .map(t -> toInterfaceTypeDefinition(t, typeRegistry)) - .filter(Optional::isPresent) - .map(Optional::get) + .filter(Objects::nonNull) .collect(toSet()); } } diff --git a/src/main/java/graphql/schema/idl/SchemaExtensionsChecker.java b/src/main/java/graphql/schema/idl/SchemaExtensionsChecker.java index cb022bb666..9a3fb7d11e 100644 --- a/src/main/java/graphql/schema/idl/SchemaExtensionsChecker.java +++ b/src/main/java/graphql/schema/idl/SchemaExtensionsChecker.java @@ -76,10 +76,10 @@ static List checkSchemaInvariants(List er // ensure we have a "query" one Optional query = operationTypeDefinitions.stream().filter(op -> "query".equals(op.getName())).findFirst(); - if (!query.isPresent()) { + if (query.isEmpty()) { // its ok if they have a type named Query - Optional queryType = typeRegistry.getType("Query"); - if (!queryType.isPresent()) { + TypeDefinition queryType = typeRegistry.getTypeOrNull("Query"); + if (queryType == null) { errors.add(new QueryOperationMissingError()); } } @@ -117,13 +117,13 @@ private static Consumer checkOperationTypesExist(TypeDe private static Consumer checkOperationTypesAreObjects(TypeDefinitionRegistry typeRegistry, List errors) { return op -> { // make sure it is defined as a ObjectTypeDef - Type queryType = op.getTypeName(); - Optional type = typeRegistry.getType(queryType); - type.ifPresent(typeDef -> { - if (!(typeDef instanceof ObjectTypeDefinition)) { + Type queryType = op.getTypeName(); + TypeDefinition type = typeRegistry.getTypeOrNull(queryType); + if (type != null) { + if (!(type instanceof ObjectTypeDefinition)) { errors.add(new OperationTypesMustBeObjects(op)); } - }); + } }; } diff --git a/src/main/java/graphql/schema/idl/SchemaGeneratorHelper.java b/src/main/java/graphql/schema/idl/SchemaGeneratorHelper.java index 521bb185b0..768253fe5c 100644 --- a/src/main/java/graphql/schema/idl/SchemaGeneratorHelper.java +++ b/src/main/java/graphql/schema/idl/SchemaGeneratorHelper.java @@ -141,11 +141,12 @@ public TypeDefinitionRegistry getTypeRegistry() { } TypeDefinition getTypeDefinition(Type type) { - Optional optionalTypeDefinition = typeRegistry.getType(type); - - return optionalTypeDefinition.orElseThrow( - () -> new AssertException(format(" type definition for type '%s' not found", type)) - ); + TypeDefinition typeDefinition = typeRegistry.getTypeOrNull(type); + if (typeDefinition != null) { + return typeDefinition; + } else { + throw new AssertException(format(" type definition for type '%s' not found", type)); + } } boolean stackContains(TypeInfo typeInfo) { @@ -905,9 +906,8 @@ void buildOperations(BuildContext buildCtx, GraphQLSchema.Builder schemaBuilder) GraphQLObjectType subscription; Optional queryOperation = getOperationNamed("query", operationTypeDefs); - if (!queryOperation.isPresent()) { - @SuppressWarnings({"OptionalGetWithoutIsPresent"}) - TypeDefinition queryTypeDef = typeRegistry.getType("Query").get(); + if (queryOperation.isEmpty()) { + TypeDefinition queryTypeDef = Objects.requireNonNull(typeRegistry.getTypeOrNull("Query")); query = buildOutputType(buildCtx, TypeName.newTypeName().name(queryTypeDef.getName()).build()); } else { query = buildOperation(buildCtx, queryOperation.get()); @@ -915,12 +915,12 @@ void buildOperations(BuildContext buildCtx, GraphQLSchema.Builder schemaBuilder) schemaBuilder.query(query); Optional mutationOperation = getOperationNamed("mutation", operationTypeDefs); - if (!mutationOperation.isPresent()) { - if (!typeRegistry.schemaDefinition().isPresent()) { + if (mutationOperation.isEmpty()) { + if (typeRegistry.schemaDefinition().isEmpty()) { // If no schema definition, then there is no schema keyword. Default to using type called Mutation - Optional mutationTypeDef = typeRegistry.getType("Mutation"); - if (mutationTypeDef.isPresent()) { - mutation = buildOutputType(buildCtx, TypeName.newTypeName().name(mutationTypeDef.get().getName()).build()); + TypeDefinition mutationTypeDef = typeRegistry.getTypeOrNull("Mutation"); + if (mutationTypeDef != null) { + mutation = buildOutputType(buildCtx, TypeName.newTypeName().name(mutationTypeDef.getName()).build()); schemaBuilder.mutation(mutation); } } @@ -930,12 +930,12 @@ void buildOperations(BuildContext buildCtx, GraphQLSchema.Builder schemaBuilder) } Optional subscriptionOperation = getOperationNamed("subscription", operationTypeDefs); - if (!subscriptionOperation.isPresent()) { - if (!typeRegistry.schemaDefinition().isPresent()) { + if (subscriptionOperation.isEmpty()) { + if (typeRegistry.schemaDefinition().isEmpty()) { // If no schema definition, then there is no schema keyword. Default to using type called Subscription - Optional subscriptionTypeDef = typeRegistry.getType("Subscription"); - if (subscriptionTypeDef.isPresent()) { - subscription = buildOutputType(buildCtx, TypeName.newTypeName().name(subscriptionTypeDef.get().getName()).build()); + TypeDefinition subscriptionTypeDef = typeRegistry.getTypeOrNull("Subscription"); + if (subscriptionTypeDef != null) { + subscription = buildOutputType(buildCtx, TypeName.newTypeName().name(subscriptionTypeDef.getName()).build()); schemaBuilder.subscription(subscription); } } diff --git a/src/main/java/graphql/schema/idl/SchemaParseOrder.java b/src/main/java/graphql/schema/idl/SchemaParseOrder.java index 3db10148ab..4853b9e92d 100644 --- a/src/main/java/graphql/schema/idl/SchemaParseOrder.java +++ b/src/main/java/graphql/schema/idl/SchemaParseOrder.java @@ -1,6 +1,7 @@ package graphql.schema.idl; import com.google.common.collect.ImmutableMap; +import graphql.collect.ImmutableKit; import graphql.language.SDLDefinition; import graphql.language.SDLNamedDefinition; import graphql.language.SourceLocation; @@ -21,7 +22,6 @@ import java.util.List; import java.util.Map; import java.util.StringJoiner; -import java.util.stream.Collectors; import static java.util.Optional.ofNullable; @@ -53,10 +53,9 @@ public Map>> getInOrder() { public Map>> getInNameOrder() { Map>> named = new LinkedHashMap<>(); definitionOrder.forEach((location, def) -> { - List> namedDefs = def.stream() - .filter(d -> d instanceof SDLNamedDefinition) - .map(d -> (SDLNamedDefinition) d) - .collect(Collectors.toList()); + List> namedDefs = ImmutableKit.filterAndMap(def, + d -> d instanceof SDLNamedDefinition, + d -> (SDLNamedDefinition) d); named.put(location, namedDefs); }); return named; diff --git a/src/main/java/graphql/schema/idl/SchemaTypeChecker.java b/src/main/java/graphql/schema/idl/SchemaTypeChecker.java index 5d702b6444..3827f463f5 100644 --- a/src/main/java/graphql/schema/idl/SchemaTypeChecker.java +++ b/src/main/java/graphql/schema/idl/SchemaTypeChecker.java @@ -34,7 +34,6 @@ import java.util.LinkedHashSet; import java.util.List; import java.util.Map; -import java.util.Optional; import java.util.Set; import java.util.function.BiFunction; import java.util.function.Consumer; @@ -130,12 +129,8 @@ private void checkForMissingTypes(List errors, TypeDefinitionRegis List inputTypes = filterTo(typesMap, InputObjectTypeDefinition.class); inputTypes.forEach(inputType -> { List inputValueDefinitions = inputType.getInputValueDefinitions(); - List inputValueTypes = inputValueDefinitions.stream() - .map(InputValueDefinition::getType) - .collect(toList()); - + List inputValueTypes = ImmutableKit.map(inputValueDefinitions, InputValueDefinition::getType); inputValueTypes.forEach(checkTypeExists("input value", typeRegistry, errors, inputType)); - }); } @@ -149,10 +144,7 @@ private void checkDirectiveDefinitions(TypeDefinitionRegistry typeRegistry, List checkNamedUniqueness(errors, arguments, InputValueDefinition::getName, (name, arg) -> new NonUniqueNameError(directiveDefinition, arg)); - List inputValueTypes = arguments.stream() - .map(InputValueDefinition::getType) - .collect(toList()); - + List inputValueTypes = ImmutableKit.map(arguments, InputValueDefinition::getType); inputValueTypes.forEach( checkTypeExists(typeRegistry, errors, "directive definition", directiveDefinition, directiveDefinition.getName()) ); @@ -316,7 +308,7 @@ private void checkTypeResolversArePresent(List errors, TypeDefinit } private void checkFieldTypesPresent(TypeDefinitionRegistry typeRegistry, List errors, TypeDefinition typeDefinition, List fields) { - List fieldTypes = fields.stream().map(FieldDefinition::getType).collect(toList()); + List fieldTypes = ImmutableKit.map(fields, FieldDefinition::getType); fieldTypes.forEach(checkTypeExists("field", typeRegistry, errors, typeDefinition)); List fieldInputValues = fields.stream() @@ -333,8 +325,9 @@ private void checkFieldTypesPresent(TypeDefinitionRegistry typeRegistry, List checkTypeExists(String typeOfType, TypeDefinitionRegistry typeRegistry, List errors, TypeDefinition typeDefinition) { return t -> { - TypeName unwrapped = TypeInfo.typeInfo(t).getTypeName(); - if (!typeRegistry.hasType(unwrapped)) { + String name = TypeInfo.typeName(t); + if (!typeRegistry.hasType(name)) { + TypeName unwrapped = TypeInfo.typeInfo(t).getTypeName(); errors.add(new MissingTypeError(typeOfType, typeDefinition, unwrapped)); } }; @@ -342,8 +335,9 @@ private Consumer checkTypeExists(String typeOfType, TypeDefinitionRegistry private Consumer checkTypeExists(TypeDefinitionRegistry typeRegistry, List errors, String typeOfType, Node element, String elementName) { return ivType -> { - TypeName unwrapped = TypeInfo.typeInfo(ivType).getTypeName(); - if (!typeRegistry.hasType(unwrapped)) { + String name = TypeInfo.typeName(ivType); + if (!typeRegistry.hasType(name)) { + TypeName unwrapped = TypeInfo.typeInfo(ivType).getTypeName(); errors.add(new MissingTypeError(typeOfType, element, elementName, unwrapped)); } }; @@ -353,19 +347,17 @@ private Consumer checkInterfaceTypeExists(TypeDefinitionRegistry t return t -> { TypeInfo typeInfo = TypeInfo.typeInfo(t); TypeName unwrapped = typeInfo.getTypeName(); - Optional type = typeRegistry.getType(unwrapped); - if (!type.isPresent()) { + TypeDefinition type = typeRegistry.getTypeOrNull(unwrapped); + if (type == null) { errors.add(new MissingInterfaceTypeError("interface", typeDefinition, unwrapped)); - } else if (!(type.get() instanceof InterfaceTypeDefinition)) { + } else if (!(type instanceof InterfaceTypeDefinition)) { errors.add(new MissingInterfaceTypeError("interface", typeDefinition, unwrapped)); } }; } private List filterTo(Map types, Class clazz) { - return types.values().stream() - .filter(t -> clazz.equals(t.getClass())) - .map(clazz::cast) - .collect(toList()); + return ImmutableKit.filterAndMap(types.values(), t -> clazz.equals(t.getClass()), + clazz::cast); } } diff --git a/src/main/java/graphql/schema/idl/SchemaTypeDirectivesChecker.java b/src/main/java/graphql/schema/idl/SchemaTypeDirectivesChecker.java index 8ec32a0550..7892efa46a 100644 --- a/src/main/java/graphql/schema/idl/SchemaTypeDirectivesChecker.java +++ b/src/main/java/graphql/schema/idl/SchemaTypeDirectivesChecker.java @@ -2,6 +2,7 @@ import graphql.GraphQLError; import graphql.Internal; +import graphql.collect.ImmutableKit; import graphql.introspection.Introspection.DirectiveLocation; import graphql.language.Argument; import graphql.language.Directive; @@ -34,7 +35,6 @@ import java.util.List; import java.util.Map; import java.util.Optional; -import java.util.stream.Collectors; import static graphql.introspection.Introspection.DirectiveLocation.ARGUMENT_DEFINITION; import static graphql.introspection.Introspection.DirectiveLocation.ENUM; @@ -137,7 +137,7 @@ private void checkFieldsDirectives(List errors, TypeDefinitionRegi private void checkDirectives(DirectiveLocation expectedLocation, List errors, TypeDefinitionRegistry typeRegistry, Node element, String elementName, List directives) { directives.forEach(directive -> { Optional directiveDefinition = typeRegistry.getDirectiveDefinition(directive.getName()); - if (!directiveDefinition.isPresent()) { + if (directiveDefinition.isEmpty()) { errors.add(new DirectiveUndeclaredError(element, elementName, directive.getName())); } else { if (!inRightLocation(expectedLocation, directiveDefinition.get())) { @@ -149,15 +149,12 @@ private void checkDirectives(DirectiveLocation expectedLocation, List names = directiveDefinition.getDirectiveLocations() - .stream().map(graphql.language.DirectiveLocation::getName) - .map(String::toUpperCase) - .collect(Collectors.toList()); - + List names = ImmutableKit.map(directiveDefinition.getDirectiveLocations(), + it -> it.getName().toUpperCase()); return names.contains(expectedLocation.name().toUpperCase()); } - private void checkDirectiveArguments(List errors, TypeDefinitionRegistry typeRegistry, Node element, String elementName, Directive directive, DirectiveDefinition directiveDefinition) { + private void checkDirectiveArguments(List errors, TypeDefinitionRegistry typeRegistry, Node element, String elementName, Directive directive, DirectiveDefinition directiveDefinition) { Map allowedArgs = getByName(directiveDefinition.getInputValueDefinitions(), (InputValueDefinition::getName), mergeFirst()); Map providedArgs = getByName(directive.getArguments(), (Argument::getName), mergeFirst()); directive.getArguments().forEach(argument -> { @@ -195,7 +192,7 @@ private void commonCheck(Collection directiveDefinitions, L }); } - private void assertTypeName(NamedNode node, List errors) { + private void assertTypeName(NamedNode node, List errors) { if (node.getName().length() >= 2 && node.getName().startsWith("__")) { errors.add((new IllegalNameError(node))); } @@ -204,7 +201,7 @@ private void assertTypeName(NamedNode node, List errors) { public void assertExistAndIsInputType(InputValueDefinition definition, List errors) { TypeName namedType = TypeUtil.unwrapAll(definition.getType()); - TypeDefinition unwrappedType = findTypeDefFromRegistry(namedType.getName(), typeRegistry); + TypeDefinition unwrappedType = findTypeDefFromRegistry(namedType.getName(), typeRegistry); if (unwrappedType == null) { errors.add(new MissingTypeError(namedType.getName(), definition, definition.getName())); @@ -218,7 +215,11 @@ public void assertExistAndIsInputType(InputValueDefinition definition, List typeRegistry.scalars().get(typeName)); + private TypeDefinition findTypeDefFromRegistry(String typeName, TypeDefinitionRegistry typeRegistry) { + TypeDefinition typeDefinition = typeRegistry.getTypeOrNull(typeName); + if (typeDefinition != null) { + return typeDefinition; + } + return typeRegistry.scalars().get(typeName); } } \ No newline at end of file diff --git a/src/main/java/graphql/schema/idl/SchemaTypeExtensionsChecker.java b/src/main/java/graphql/schema/idl/SchemaTypeExtensionsChecker.java index 36b4a2c3ff..fe233dcbf6 100644 --- a/src/main/java/graphql/schema/idl/SchemaTypeExtensionsChecker.java +++ b/src/main/java/graphql/schema/idl/SchemaTypeExtensionsChecker.java @@ -88,9 +88,10 @@ private void checkObjectTypeExtensions(List errors, TypeDefinition // // then check for field re-defs from the base type - Optional baseTypeOpt = typeRegistry.getType(extension.getName(), ObjectTypeDefinition.class); - baseTypeOpt.ifPresent(baseTypeDef -> checkForFieldRedefinition(errors, extension, fieldDefinitions, baseTypeDef.getFieldDefinitions())); - + ObjectTypeDefinition baseTypeDef = typeRegistry.getTypeOrNull(extension.getName(), ObjectTypeDefinition.class); + if (baseTypeDef != null) { + checkForFieldRedefinition(errors, extension, fieldDefinitions, baseTypeDef.getFieldDefinitions()); + } }); } ); @@ -132,8 +133,10 @@ private void checkInterfaceTypeExtensions(List errors, TypeDefinit // // then check for field re-defs from the base type - Optional baseTypeOpt = typeRegistry.getType(extension.getName(), InterfaceTypeDefinition.class); - baseTypeOpt.ifPresent(baseTypeDef -> checkForFieldRedefinition(errors, extension, fieldDefinitions, baseTypeDef.getFieldDefinitions())); + InterfaceTypeDefinition baseTypeDef = typeRegistry.getTypeOrNull(extension.getName(), InterfaceTypeDefinition.class); + if (baseTypeDef != null) { + checkForFieldRedefinition(errors, extension, fieldDefinitions, baseTypeDef.getFieldDefinitions()); + } }); }); } @@ -161,8 +164,8 @@ private void checkUnionTypeExtensions(List errors, TypeDefinitionR memberTypes.forEach( memberType -> { - Optional unionTypeDefinition = typeRegistry.getType(memberType, ObjectTypeDefinition.class); - if (!unionTypeDefinition.isPresent()) { + ObjectTypeDefinition unionTypeDefinition = typeRegistry.getTypeOrNull(memberType, ObjectTypeDefinition.class); + if (unionTypeDefinition == null) { errors.add(new MissingTypeError("union member", extension, memberType)); } } @@ -197,8 +200,10 @@ private void checkEnumTypeExtensions(List errors, TypeDefinitionRe // // then check for field re-defs from the base type - Optional baseTypeOpt = typeRegistry.getType(extension.getName(), EnumTypeDefinition.class); - baseTypeOpt.ifPresent(baseTypeDef -> checkForEnumValueRedefinition(errors, extension, enumValueDefinitions, baseTypeDef.getEnumValueDefinitions())); + EnumTypeDefinition baseTypeDef = typeRegistry.getTypeOrNull(extension.getName(), EnumTypeDefinition.class); + if (baseTypeDef != null) { + checkForEnumValueRedefinition(errors, extension, enumValueDefinitions, baseTypeDef.getEnumValueDefinitions()); + } }); @@ -251,8 +256,10 @@ private void checkInputObjectTypeExtensions(List errors, TypeDefin // // then check for field re-defs from the base type - Optional baseTypeOpt = typeRegistry.getType(extension.getName(), InputObjectTypeDefinition.class); - baseTypeOpt.ifPresent(baseTypeDef -> checkForInputValueRedefinition(errors, extension, inputValueDefinitions, baseTypeDef.getInputValueDefinitions())); + InputObjectTypeDefinition baseTypeDef = typeRegistry.getTypeOrNull(extension.getName(), InputObjectTypeDefinition.class); + if (baseTypeDef != null) { + checkForInputValueRedefinition(errors, extension, inputValueDefinitions, baseTypeDef.getInputValueDefinitions()); + } }); }); @@ -260,16 +267,16 @@ private void checkInputObjectTypeExtensions(List errors, TypeDefin private void checkTypeExtensionHasCorrespondingType(List errors, TypeDefinitionRegistry typeRegistry, String name, List extTypeList, Class targetClass) { - TypeDefinition extensionDefinition = extTypeList.get(0); - Optional typeDefinition = typeRegistry.getType(TypeName.newTypeName().name(name).build(), targetClass); - if (!typeDefinition.isPresent()) { + TypeDefinition extensionDefinition = extTypeList.get(0); + TypeDefinition typeDefinition = typeRegistry.getTypeOrNull(TypeName.newTypeName().name(name).build(), targetClass); + if (typeDefinition == null) { errors.add(new TypeExtensionMissingBaseTypeError(extensionDefinition)); } } @SuppressWarnings("unchecked") - private void checkForFieldRedefinition(List errors, TypeDefinition typeDefinition, List fieldDefinitions, List referenceFieldDefinitions) { + private void checkForFieldRedefinition(List errors, TypeDefinition typeDefinition, List fieldDefinitions, List referenceFieldDefinitions) { Map referenceMap = FpKit.getByName(referenceFieldDefinitions, FieldDefinition::getName, mergeFirst()); @@ -290,7 +297,7 @@ private void checkForInputValueRedefinition(List errors, InputObje }); } - private void checkForEnumValueRedefinition(List errors, TypeDefinition typeDefinition, List enumValueDefinitions, List referenceEnumValueDefinitions) { + private void checkForEnumValueRedefinition(List errors, TypeDefinition typeDefinition, List enumValueDefinitions, List referenceEnumValueDefinitions) { Map referenceMap = FpKit.getByName(referenceEnumValueDefinitions, EnumValueDefinition::getName, mergeFirst()); diff --git a/src/main/java/graphql/schema/idl/TypeDefinitionRegistry.java b/src/main/java/graphql/schema/idl/TypeDefinitionRegistry.java index dcbfb9c413..850e7b2155 100644 --- a/src/main/java/graphql/schema/idl/TypeDefinitionRegistry.java +++ b/src/main/java/graphql/schema/idl/TypeDefinitionRegistry.java @@ -3,6 +3,7 @@ import graphql.Assert; import graphql.GraphQLError; import graphql.PublicApi; +import graphql.collect.ImmutableKit; import graphql.language.DirectiveDefinition; import graphql.language.EnumTypeExtensionDefinition; import graphql.language.ImplementingTypeDefinition; @@ -36,13 +37,14 @@ import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.Optional; import java.util.function.Function; -import java.util.stream.Collectors; import static graphql.Assert.assertNotNull; import static graphql.schema.idl.SchemaExtensionsChecker.defineOperationDefs; import static graphql.schema.idl.SchemaExtensionsChecker.gatherOperationDefs; +import static graphql.schema.idl.TypeInfo.typeName; import static java.util.Optional.ofNullable; /** @@ -83,17 +85,17 @@ public TypeDefinitionRegistry() { } protected TypeDefinitionRegistry(Map> objectTypeExtensions, - Map> interfaceTypeExtensions, - Map> unionTypeExtensions, - Map> enumTypeExtensions, - Map> scalarTypeExtensions, - Map> inputObjectTypeExtensions, - Map types, - Map scalarTypes, - Map directiveDefinitions, - List schemaExtensionDefinitions, - @Nullable SchemaDefinition schema, - SchemaParseOrder schemaParseOrder) { + Map> interfaceTypeExtensions, + Map> unionTypeExtensions, + Map> enumTypeExtensions, + Map> scalarTypeExtensions, + Map> inputObjectTypeExtensions, + Map types, + Map scalarTypes, + Map directiveDefinitions, + List schemaExtensionDefinitions, + @Nullable SchemaDefinition schema, + SchemaParseOrder schemaParseOrder) { this.objectTypeExtensions = objectTypeExtensions; this.interfaceTypeExtensions = interfaceTypeExtensions; this.unionTypeExtensions = unionTypeExtensions; @@ -344,6 +346,7 @@ public void remove(SDLDefinition definition) { } private void removeFromList(Map source, TypeDefinition value) { + //noinspection unchecked List list = (List) source.get(value.getName()); if (list == null) { return; @@ -490,43 +493,149 @@ public Map getDirectiveDefinitions() { return new LinkedHashMap<>(directiveDefinitions); } + /** + * Returns true if the registry has a type of the specified {@link TypeName} + * + * @param typeName the type name to check + * + * @return true if the registry has a type by that type name + */ public boolean hasType(TypeName typeName) { String name = typeName.getName(); + return hasType(name); + } + + /** + * Returns true if the registry has a type of the specified name + * + * @param name the name to check + * + * @return true if the registry has a type by that name + */ + public boolean hasType(String name) { return types.containsKey(name) || ScalarInfo.GRAPHQL_SPECIFICATION_SCALARS_DEFINITIONS.containsKey(name) || scalarTypes.containsKey(name) || objectTypeExtensions.containsKey(name); } + /** + * Returns an optional {@link TypeDefinition} of the specified type or {@link Optional#empty()} + * + * @param type the type to check + * + * @return an optional {@link TypeDefinition} or empty if it's not found + * + * @deprecated use the {@link #getTypeOrNull(Type)} variants instead since they avoid the allocation of an + * optional object + */ + @Deprecated(since = "2025-07-7") public Optional getType(Type type) { - String typeName = TypeInfo.typeInfo(type).getName(); - return getType(typeName); + return Optional.ofNullable(getTypeOrNull(type)); } + /** + * Returns an optional {@link TypeDefinition} of the specified type with the specified class or {@link Optional#empty()} + * + * @param type the type to check + * @param ofType the class of {@link TypeDefinition} + * + * @return an optional {@link TypeDefinition} or empty if it's not found + * + * @deprecated use the {@link #getTypeOrNull(Type)} variants instead since they avoid the allocation of an + * optional object + */ + @Deprecated(since = "2025-07-7") public Optional getType(Type type, Class ofType) { - String typeName = TypeInfo.typeInfo(type).getName(); - return getType(typeName, ofType); + return Optional.ofNullable(getTypeOrNull(typeName(type), ofType)); } + /** + * Returns an optional {@link TypeDefinition} of the specified type name or {@link Optional#empty()} + * + * @param typeName the type to check + * + * @return an optional {@link TypeDefinition} or empty if it's not found + * + * @deprecated use the {@link #getTypeOrNull(Type)} variants instead since they avoid the allocation of an + * optional object + */ + @Deprecated(since = "2025-07-7") public Optional getType(String typeName) { + return Optional.ofNullable(getTypeOrNull(typeName)); + } + + /** + * Returns an optional {@link TypeDefinition} of the specified type name with the specified class or {@link Optional#empty()} + * + * @param typeName the type to check + * @param ofType the class of {@link TypeDefinition} + * + * @deprecated use the {@link #getTypeOrNull(Type)} variants instead since they avoid the allocation of an + * optional object + */ + @Deprecated(since = "2025-07-7") + public Optional getType(String typeName, Class ofType) { + return Optional.ofNullable(getTypeOrNull(typeName, ofType)); + } + + /** + * Returns a {@link TypeDefinition} of the specified type or null + * + * @param type the type to check + * + * @return a {@link TypeDefinition} or null if it's not found + */ + @Nullable + public TypeDefinition getTypeOrNull(Type type) { + return getTypeOrNull(typeName(type)); + } + + /** + * Returns a {@link TypeDefinition} of the specified type with the specified class or null + * + * @param type the type to check + * @param ofType the class of {@link TypeDefinition} + * + * @return a {@link TypeDefinition} or null if it's not found + */ + @Nullable + public T getTypeOrNull(Type type, Class ofType) { + return getTypeOrNull(typeName(type), ofType); + } + + /** + * Returns a {@link TypeDefinition} of the specified name or null + * + * @param typeName the type name to check + * + * @return a {@link TypeDefinition} or null if it's not found + */ + @Nullable + public TypeDefinition getTypeOrNull(String typeName) { TypeDefinition typeDefinition = types.get(typeName); if (typeDefinition != null) { - return Optional.of(typeDefinition); + return typeDefinition; } typeDefinition = scalars().get(typeName); - if (typeDefinition != null) { - return Optional.of(typeDefinition); - } - return Optional.empty(); + return typeDefinition; } - public Optional getType(String typeName, Class ofType) { - Optional type = getType(typeName); - if (type.isPresent()) { - TypeDefinition typeDefinition = type.get(); - if (typeDefinition.getClass().equals(ofType)) { + /** + * Returns a {@link TypeDefinition} of the specified name and class or null + * + * @param typeName the type name to check + * @param ofType the class of {@link TypeDefinition} + * + * @return a {@link TypeDefinition} or null if it's not found + */ + @Nullable + public T getTypeOrNull(String typeName, Class ofType) { + TypeDefinition type = getTypeOrNull(typeName); + if (type != null) { + if (type.getClass().equals(ofType)) { //noinspection unchecked - return Optional.of((T) typeDefinition); + return (T) type; } } - return Optional.empty(); + return null; } /** @@ -537,10 +646,9 @@ public Optional getType(String typeName, Class * @return true if its abstract */ public boolean isInterfaceOrUnion(Type type) { - Optional typeDefinition = getType(type); - if (typeDefinition.isPresent()) { - TypeDefinition definition = typeDefinition.get(); - return definition instanceof UnionTypeDefinition || definition instanceof InterfaceTypeDefinition; + TypeDefinition typeDefinition = getTypeOrNull(type); + if (typeDefinition != null) { + return typeDefinition instanceof UnionTypeDefinition || typeDefinition instanceof InterfaceTypeDefinition; } return false; } @@ -553,10 +661,9 @@ public boolean isInterfaceOrUnion(Type type) { * @return true if its an object type or interface */ public boolean isObjectTypeOrInterface(Type type) { - Optional typeDefinition = getType(type); - if (typeDefinition.isPresent()) { - TypeDefinition definition = typeDefinition.get(); - return definition instanceof ObjectTypeDefinition || definition instanceof InterfaceTypeDefinition; + TypeDefinition typeDefinition = getTypeOrNull(type); + if (typeDefinition != null) { + return typeDefinition instanceof ObjectTypeDefinition || typeDefinition instanceof InterfaceTypeDefinition; } return false; } @@ -569,7 +676,7 @@ public boolean isObjectTypeOrInterface(Type type) { * @return true if its an object type */ public boolean isObjectType(Type type) { - return getType(type, ObjectTypeDefinition.class).isPresent(); + return getTypeOrNull(type, ObjectTypeDefinition.class) != null; } /** @@ -581,10 +688,10 @@ public boolean isObjectType(Type type) { * @return a list of types of the target class */ public List getTypes(Class targetClass) { - return types.values().stream() - .filter(targetClass::isInstance) - .map(targetClass::cast) - .collect(Collectors.toList()); + return ImmutableKit.filterAndMap(types.values(), + targetClass::isInstance, + targetClass::cast + ); } /** @@ -610,20 +717,20 @@ public Map getTypesMap(Class targetClas * @see TypeDefinitionRegistry#getImplementationsOf(InterfaceTypeDefinition) */ public List getAllImplementationsOf(InterfaceTypeDefinition targetInterface) { - List typeDefinitions = getTypes(ImplementingTypeDefinition.class); - return typeDefinitions.stream().filter(typeDefinition -> { - List implementsList = typeDefinition.getImplements(); - for (Type iFace : implementsList) { - Optional interfaceTypeDef = getType(iFace, InterfaceTypeDefinition.class); - if (interfaceTypeDef.isPresent()) { - boolean equals = interfaceTypeDef.get().getName().equals(targetInterface.getName()); - if (equals) { - return true; + return ImmutableKit.filter( + getTypes(ImplementingTypeDefinition.class), + implementingTypeDefinition -> { + List> implementsList = implementingTypeDefinition.getImplements(); + for (Type iFace : implementsList) { + InterfaceTypeDefinition interfaceTypeDef = getTypeOrNull(iFace, InterfaceTypeDefinition.class); + if (interfaceTypeDef != null) { + if (interfaceTypeDef.getName().equals(targetInterface.getName())) { + return true; + } + } } - } - } - return false; - }).collect(Collectors.toList()); + return false; + }); } /** @@ -636,11 +743,11 @@ public List getAllImplementationsOf(InterfaceTypeDef * @see TypeDefinitionRegistry#getAllImplementationsOf(InterfaceTypeDefinition) */ public List getImplementationsOf(InterfaceTypeDefinition targetInterface) { - return this.getAllImplementationsOf(targetInterface) - .stream() - .filter(typeDefinition -> typeDefinition instanceof ObjectTypeDefinition) - .map(typeDefinition -> (ObjectTypeDefinition) typeDefinition) - .collect(Collectors.toList()); + return ImmutableKit.filterAndMap( + getAllImplementationsOf(targetInterface), + typeDefinition -> typeDefinition instanceof ObjectTypeDefinition, + typeDefinition -> (ObjectTypeDefinition) typeDefinition + ); } /** @@ -658,14 +765,14 @@ public boolean isPossibleType(Type abstractType, Type possibleType) { if (!isObjectTypeOrInterface(possibleType)) { return false; } - TypeDefinition targetObjectTypeDef = getType(possibleType).get(); - TypeDefinition abstractTypeDef = getType(abstractType).get(); + TypeDefinition targetObjectTypeDef = Objects.requireNonNull(getTypeOrNull(possibleType)); + TypeDefinition abstractTypeDef = Objects.requireNonNull(getTypeOrNull(abstractType)); if (abstractTypeDef instanceof UnionTypeDefinition) { List memberTypes = ((UnionTypeDefinition) abstractTypeDef).getMemberTypes(); for (Type memberType : memberTypes) { - Optional checkType = getType(memberType, ObjectTypeDefinition.class); - if (checkType.isPresent()) { - if (checkType.get().getName().equals(targetObjectTypeDef.getName())) { + ObjectTypeDefinition checkType = getTypeOrNull(memberType, ObjectTypeDefinition.class); + if (checkType != null) { + if (checkType.getName().equals(targetObjectTypeDef.getName())) { return true; } } @@ -673,9 +780,21 @@ public boolean isPossibleType(Type abstractType, Type possibleType) { return false; } else { InterfaceTypeDefinition iFace = (InterfaceTypeDefinition) abstractTypeDef; - List implementingTypeDefinitions = getAllImplementationsOf(iFace); - return implementingTypeDefinitions.stream() - .anyMatch(od -> od.getName().equals(targetObjectTypeDef.getName())); + for (TypeDefinition t : types.values()) { + if (t instanceof ImplementingTypeDefinition) { + if (t.getName().equals(targetObjectTypeDef.getName())) { + ImplementingTypeDefinition itd = (ImplementingTypeDefinition) t; + + for (Type implementsType : itd.getImplements()) { + TypeDefinition matchingInterface = types.get(typeName(implementsType)); + if (matchingInterface != null && matchingInterface.getName().equals(iFace.getName())) { + return true; + } + } + } + } + } + return false; } } diff --git a/src/main/java/graphql/schema/idl/TypeInfo.java b/src/main/java/graphql/schema/idl/TypeInfo.java index fe12d49885..82a3499fe9 100644 --- a/src/main/java/graphql/schema/idl/TypeInfo.java +++ b/src/main/java/graphql/schema/idl/TypeInfo.java @@ -139,6 +139,36 @@ public Type unwrapOneType() { return unwrapOne().getRawType(); } + /** + * Gets the {@link TypeName} type name of a [Type], unwrapping any lists or non-null decorations + * + * @param type the Type + * + * @return the inner {@link TypeName} for this type + */ + public static TypeName getTypeName(Type type) { + while (!(type instanceof TypeName)) { + if (type instanceof NonNullType) { + type = ((NonNullType) type).getType(); + } + if (type instanceof ListType) { + type = ((ListType) type).getType(); + } + } + return (TypeName) type; + } + + /** + * Gets the string type name of a [Type], unwrapping any lists or non-null decorations + * + * @param type the Type + * + * @return the inner string name for this type + */ + public static String typeName(Type type) { + return getTypeName(type).getName(); + } + @Override public boolean equals(Object o) { if (this == o) return true; diff --git a/src/main/java/graphql/schema/idl/UnionTypesChecker.java b/src/main/java/graphql/schema/idl/UnionTypesChecker.java index 73e11b3e0f..f2134b2d54 100644 --- a/src/main/java/graphql/schema/idl/UnionTypesChecker.java +++ b/src/main/java/graphql/schema/idl/UnionTypesChecker.java @@ -10,11 +10,8 @@ import graphql.language.UnionTypeExtensionDefinition; import graphql.schema.idl.errors.UnionTypeError; -import java.util.HashMap; import java.util.LinkedHashSet; import java.util.List; -import java.util.Map; -import java.util.Optional; import java.util.Set; import java.util.stream.Stream; @@ -33,13 +30,6 @@ */ @Internal class UnionTypesChecker { - private static final Map, String> TYPE_OF_MAP = new HashMap<>(); - - static { - TYPE_OF_MAP.put(UnionTypeDefinition.class, "union"); - TYPE_OF_MAP.put(UnionTypeExtensionDefinition.class, "union extension"); - } - void checkUnionType(List errors, TypeDefinitionRegistry typeRegistry) { List unionTypes = typeRegistry.getTypes(UnionTypeDefinition.class); @@ -52,18 +42,18 @@ void checkUnionType(List errors, TypeDefinitionRegistry typeRegist private void checkUnionType(TypeDefinitionRegistry typeRegistry, UnionTypeDefinition unionTypeDefinition, List errors) { assertTypeName(unionTypeDefinition, errors); + //noinspection rawtypes List memberTypes = unionTypeDefinition.getMemberTypes(); - if (memberTypes == null || memberTypes.size() == 0) { + if (memberTypes == null || memberTypes.isEmpty()) { errors.add(new UnionTypeError(unionTypeDefinition, format("Union type '%s' must include one or more member types.", unionTypeDefinition.getName()))); return; } Set typeNames = new LinkedHashSet<>(); - for (Type memberType : memberTypes) { + for (Type memberType : memberTypes) { String memberTypeName = ((TypeName) memberType).getName(); - Optional memberTypeDefinition = typeRegistry.getType(memberTypeName); - - if (!memberTypeDefinition.isPresent() || !(memberTypeDefinition.get() instanceof ObjectTypeDefinition)) { + TypeDefinition memberTypeDefinition = typeRegistry.getTypeOrNull(memberTypeName); + if (!(memberTypeDefinition instanceof ObjectTypeDefinition)) { errors.add(new UnionTypeError(unionTypeDefinition, format("The member types of a Union type must all be Object base types. member type '%s' in Union '%s' is invalid.", ((TypeName) memberType).getName(), unionTypeDefinition.getName()))); continue; } diff --git a/src/test/groovy/graphql/collect/ImmutableKitTest.groovy b/src/test/groovy/graphql/collect/ImmutableKitTest.groovy index f546147d7b..c777211f53 100644 --- a/src/test/groovy/graphql/collect/ImmutableKitTest.groovy +++ b/src/test/groovy/graphql/collect/ImmutableKitTest.groovy @@ -74,4 +74,21 @@ class ImmutableKitTest extends Specification { then: flatList == ["A", "B", "C", "D", "E",] } + + def "can filter variable args"() { + when: + def list = ImmutableKit.filterVarArgs({ String s -> s.endsWith("x") }, "a", "b", "ax", "bx", "c") + then: + list == ["ax", "bx"] + + when: + list = ImmutableKit.filterVarArgs({ String s -> s.startsWith("Z") }, "a", "b", "ax", "bx", "c") + then: + list == [] + + when: + list = ImmutableKit.filterVarArgs({ String s -> s.startsWith("x") }) + then: + list == [] + } } diff --git a/src/test/groovy/graphql/execution/BreadthFirstExecutionTestStrategy.java b/src/test/groovy/graphql/execution/BreadthFirstExecutionTestStrategy.java index 167e58a3b9..c110f04947 100644 --- a/src/test/groovy/graphql/execution/BreadthFirstExecutionTestStrategy.java +++ b/src/test/groovy/graphql/execution/BreadthFirstExecutionTestStrategy.java @@ -22,11 +22,11 @@ public BreadthFirstExecutionTestStrategy() { public CompletableFuture execute(ExecutionContext executionContext, ExecutionStrategyParameters parameters) throws NonNullableFieldWasNullException { MergedSelectionSet fields = parameters.getFields(); - Map fetchedValues = new LinkedHashMap<>(); + Map fetchedValues = new LinkedHashMap<>(); // first fetch every value for (String fieldName : fields.keySet()) { - FetchedValue fetchedValue = fetchField(executionContext, parameters, fields, fieldName); + Object fetchedValue = fetchField(executionContext, parameters, fields, fieldName); fetchedValues.put(fieldName, fetchedValue); } @@ -34,7 +34,7 @@ public CompletableFuture execute(ExecutionContext executionCont Map results = new LinkedHashMap<>(); for (String fieldName : fetchedValues.keySet()) { MergedField currentField = fields.getSubField(fieldName); - FetchedValue fetchedValue = fetchedValues.get(fieldName); + Object fetchedValue = fetchedValues.get(fieldName); ResultPath fieldPath = parameters.getPath().segment(fieldName); ExecutionStrategyParameters newParameters = parameters @@ -51,17 +51,17 @@ public CompletableFuture execute(ExecutionContext executionCont return CompletableFuture.completedFuture(new ExecutionResultImpl(results, executionContext.getErrors())); } - private FetchedValue fetchField(ExecutionContext executionContext, ExecutionStrategyParameters parameters, MergedSelectionSet fields, String fieldName) { + private Object fetchField(ExecutionContext executionContext, ExecutionStrategyParameters parameters, MergedSelectionSet fields, String fieldName) { MergedField currentField = fields.getSubField(fieldName); ResultPath fieldPath = parameters.getPath().segment(fieldName); ExecutionStrategyParameters newParameters = parameters .transform(builder -> builder.field(currentField).path(fieldPath)); - return Async.toCompletableFuture(fetchField(executionContext, newParameters)).join(); + return Async.toCompletableFuture(fetchField(executionContext, newParameters)).join(); } - private void completeValue(ExecutionContext executionContext, Map results, String fieldName, FetchedValue fetchedValue, ExecutionStrategyParameters newParameters) { + private void completeValue(ExecutionContext executionContext, Map results, String fieldName, Object fetchedValue, ExecutionStrategyParameters newParameters) { Object resolvedResult = completeField(executionContext, newParameters, fetchedValue).getFieldValueFuture().join(); results.put(fieldName, resolvedResult); } diff --git a/src/test/groovy/graphql/execution/BreadthFirstTestStrategy.java b/src/test/groovy/graphql/execution/BreadthFirstTestStrategy.java index 653e035df1..54b5e57898 100644 --- a/src/test/groovy/graphql/execution/BreadthFirstTestStrategy.java +++ b/src/test/groovy/graphql/execution/BreadthFirstTestStrategy.java @@ -27,33 +27,33 @@ public BreadthFirstTestStrategy() { @Override public CompletableFuture execute(ExecutionContext executionContext, ExecutionStrategyParameters parameters) throws NonNullableFieldWasNullException { - Map fetchedValues = fetchFields(executionContext, parameters); + Map fetchedValues = fetchFields(executionContext, parameters); return completeFields(executionContext, parameters, fetchedValues); } - private Map fetchFields(ExecutionContext executionContext, ExecutionStrategyParameters parameters) { + private Map fetchFields(ExecutionContext executionContext, ExecutionStrategyParameters parameters) { MergedSelectionSet fields = parameters.getFields(); - Map> fetchFutures = new LinkedHashMap<>(); + Map> fetchFutures = new LinkedHashMap<>(); // first fetch every value for (String fieldName : fields.keySet()) { ExecutionStrategyParameters newParameters = newParameters(parameters, fields, fieldName); - CompletableFuture fetchFuture = Async.toCompletableFuture(fetchField(executionContext, newParameters)); + CompletableFuture fetchFuture = Async.toCompletableFuture(fetchField(executionContext, newParameters)); fetchFutures.put(fieldName, fetchFuture); } // now wait for all fetches to finish together via this join allOf(fetchFutures.values()).join(); - Map fetchedValues = new LinkedHashMap<>(); + Map fetchedValues = new LinkedHashMap<>(); fetchFutures.forEach((k, v) -> fetchedValues.put(k, v.join())); return fetchedValues; } - private CompletableFuture completeFields(ExecutionContext executionContext, ExecutionStrategyParameters parameters, Map fetchedValues) { + private CompletableFuture completeFields(ExecutionContext executionContext, ExecutionStrategyParameters parameters, Map fetchedValues) { MergedSelectionSet fields = parameters.getFields(); // then for every fetched value, complete it, breath first @@ -61,7 +61,7 @@ private CompletableFuture completeFields(ExecutionContext execu for (String fieldName : fetchedValues.keySet()) { ExecutionStrategyParameters newParameters = newParameters(parameters, fields, fieldName); - FetchedValue fetchedValue = fetchedValues.get(fieldName); + Object fetchedValue = fetchedValues.get(fieldName); try { Object resolvedResult = completeField(executionContext, newParameters, fetchedValue).getFieldValueFuture().join(); results.put(fieldName, resolvedResult); @@ -83,7 +83,7 @@ private ExecutionStrategyParameters newParameters(ExecutionStrategyParameters pa public static CompletableFuture> allOf(final Collection> futures) { - CompletableFuture[] cfs = futures.toArray(new CompletableFuture[futures.size()]); + CompletableFuture[] cfs = futures.toArray(new CompletableFuture[0]); return CompletableFuture.allOf(cfs) .thenApply(vd -> futures.stream() diff --git a/src/test/groovy/graphql/execution/ExecutionStrategyTest.groovy b/src/test/groovy/graphql/execution/ExecutionStrategyTest.groovy index bb6db0bd0e..81df0165af 100644 --- a/src/test/groovy/graphql/execution/ExecutionStrategyTest.groovy +++ b/src/test/groovy/graphql/execution/ExecutionStrategyTest.groovy @@ -28,6 +28,7 @@ import graphql.schema.FieldCoordinates import graphql.schema.GraphQLCodeRegistry import graphql.schema.GraphQLEnumType import graphql.schema.GraphQLFieldDefinition +import graphql.schema.GraphQLObjectType import graphql.schema.GraphQLScalarType import graphql.schema.GraphQLSchema import graphql.schema.LightDataFetcher @@ -667,8 +668,8 @@ class ExecutionStrategyTest extends Specification { @Override @Override InstrumentationContext beginFieldCompletion(InstrumentationFieldCompleteParameters parameters, InstrumentationState state) { - if (parameters.fetchedValue instanceof FetchedValue) { - FetchedValue value = (FetchedValue) parameters.fetchedValue + if (parameters.getFetchedObject() instanceof FetchedValue) { + FetchedValue value = (FetchedValue) parameters.getFetchedObject() fetchedValues.put(parameters.field.name, value) } return super.beginFieldCompletion(parameters, state) @@ -687,7 +688,7 @@ class ExecutionStrategyTest extends Specification { overridingStrategy.resolveFieldWithInfo(instrumentedExecutionContext, params) then: - FetchedValue fetchedValue = instrumentation.fetchedValues.get("someField") + Object fetchedValue = instrumentation.fetchedValues.get("someField") fetchedValue != null fetchedValue.errors.size() == 1 def exceptionWhileDataFetching = fetchedValue.errors[0] as ExceptionWhileDataFetching @@ -860,26 +861,41 @@ class ExecutionStrategyTest extends Specification { def "#1558 forward localContext on nonBoxed return from DataFetcher"() { given: + def capturedLocalContext = "startingValue" + executionStrategy = new ExecutionStrategy(dataFetcherExceptionHandler) { + @Override + CompletableFuture execute(ExecutionContext executionContext, ExecutionStrategyParameters parameters) throws NonNullableFieldWasNullException { + return null + } + + @Override + protected FieldValueInfo completeValue(ExecutionContext executionContext, ExecutionStrategyParameters parameters) throws NonNullableFieldWasNullException { + // shows we set the local context if the value is non boxed + capturedLocalContext = parameters.getLocalContext() + return super.completeValue(executionContext, parameters) + } + } + ExecutionContext executionContext = buildContext() - def fieldType = list(Scalars.GraphQLInt) - def fldDef = newFieldDefinition().name("test").type(fieldType).build() + def fieldType = StarWarsSchema.droidType + def fldDef = StarWarsSchema.droidType.getFieldDefinition("name") def executionStepInfo = ExecutionStepInfo.newExecutionStepInfo().type(fieldType).fieldDefinition(fldDef).build() - def field = Field.newField("parent").sourceLocation(new SourceLocation(5, 10)).build() + def field = Field.newField("name").sourceLocation(new SourceLocation(5, 10)).build() def localContext = "localContext" def parameters = newParameters() - .path(ResultPath.fromList(["parent"])) + .path(ResultPath.fromList(["name"])) .localContext(localContext) .field(mergedField(field)) - .fields(mergedSelectionSet(["parent": [mergedField(field)]])) + .fields(mergedSelectionSet(["name": [mergedField(field)]])) .executionStepInfo(executionStepInfo) .nonNullFieldValidator(new NonNullableFieldValidator(executionContext)) .build() when: - def fetchedValue = executionStrategy.unboxPossibleDataFetcherResult(executionContext, parameters, new Object()) + executionStrategy.completeField(executionContext, parameters, new Object()) then: - fetchedValue.localContext == localContext + capturedLocalContext == localContext } def "#820 processes DataFetcherResult just message"() { diff --git a/src/test/groovy/graphql/schema/idl/ImmutableTypeDefinitionRegistryTest.groovy b/src/test/groovy/graphql/schema/idl/ImmutableTypeDefinitionRegistryTest.groovy index c29636b3e1..9bf440c572 100644 --- a/src/test/groovy/graphql/schema/idl/ImmutableTypeDefinitionRegistryTest.groovy +++ b/src/test/groovy/graphql/schema/idl/ImmutableTypeDefinitionRegistryTest.groovy @@ -1,5 +1,6 @@ package graphql.schema.idl +import graphql.language.InterfaceTypeDefinition import graphql.language.TypeDefinition import spock.lang.Specification @@ -50,8 +51,8 @@ class ImmutableTypeDefinitionRegistryTest extends Specification { then: - TypeDefinition typeIn = registryIn.getType(typeName).get() - TypeDefinition typeOut = registryOut.getType(typeName).get() + TypeDefinition typeIn = registryIn.getTypeOrNull(typeName) + TypeDefinition typeOut = registryOut.getTypeOrNull(typeName) typeIn.isEqualTo(typeOut) where: @@ -73,8 +74,8 @@ class ImmutableTypeDefinitionRegistryTest extends Specification { containsSameObjects(mutableRegistry.types(), immutableRegistry.types()) - TypeDefinition typeIn = mutableRegistry.getType(typeName).get() - TypeDefinition typeOut = immutableRegistry.getType(typeName).get() + TypeDefinition typeIn = mutableRegistry.getTypeOrNull(typeName) + TypeDefinition typeOut = immutableRegistry.getTypeOrNull(typeName) typeIn.isEqualTo(typeOut) where: @@ -169,6 +170,64 @@ class ImmutableTypeDefinitionRegistryTest extends Specification { immutableRegistry.remove("key", someDef) then: thrown(UnsupportedOperationException) + } + + def "get implementations of"() { + def sdl = serializableSchema + """ + interface IType { + i : String + } + + interface DerivedIType implements IType { + i : String + d : String + } + + """ + for (int i = 0; i < 10; i++) { + sdl += """ + type OT$i implements IType { + i : String + } + """ + + } + for (int i = 0; i < 5; i++) { + sdl += """ + type DT$i implements DerivedIType { + i : String + d : String + } + """ + + } + def immutableRegistry = new SchemaParser().parse(sdl).readOnly() + + Map interfaces = immutableRegistry.getTypesMap(InterfaceTypeDefinition.class) + + when: + def iFieldType = interfaces.get("IType") + def allImplementationsOf = immutableRegistry.getAllImplementationsOf(iFieldType) + def implementationsOf = immutableRegistry.getImplementationsOf(iFieldType) + + then: + allImplementationsOf.size() == 11 + allImplementationsOf.collect({ it.getName() }).every { it.startsWith("OT") || it == "DerivedIType" } + + implementationsOf.size() == 10 + implementationsOf.collect({ it.getName() }).every { it.startsWith("OT") } + + when: + def iDerivedType = interfaces.get("DerivedIType") + allImplementationsOf = immutableRegistry.getAllImplementationsOf(iDerivedType) + implementationsOf = immutableRegistry.getImplementationsOf(iDerivedType) + + then: + allImplementationsOf.size() == 5 + allImplementationsOf.collect({ it.getName() }).every { it.startsWith("DT") } + + implementationsOf.size() == 5 + implementationsOf.collect({ it.getName() }).every { it.startsWith("DT") } } diff --git a/src/test/groovy/graphql/schema/idl/SchemaTypeCheckerTest.groovy b/src/test/groovy/graphql/schema/idl/SchemaTypeCheckerTest.groovy index 7bdd2fea01..50cbade723 100644 --- a/src/test/groovy/graphql/schema/idl/SchemaTypeCheckerTest.groovy +++ b/src/test/groovy/graphql/schema/idl/SchemaTypeCheckerTest.groovy @@ -32,7 +32,7 @@ import static java.lang.String.format class SchemaTypeCheckerTest extends Specification { static TypeDefinitionRegistry parseSDL(String spec) { - new SchemaParser().parse(spec) + new SchemaParser().parse(spec).readOnly() } def resolver = new TypeResolver() { diff --git a/src/test/groovy/graphql/schema/idl/TypeDefinitionRegistryTest.groovy b/src/test/groovy/graphql/schema/idl/TypeDefinitionRegistryTest.groovy index 91aef9d938..0ebd6dc882 100644 --- a/src/test/groovy/graphql/schema/idl/TypeDefinitionRegistryTest.groovy +++ b/src/test/groovy/graphql/schema/idl/TypeDefinitionRegistryTest.groovy @@ -375,7 +375,7 @@ class TypeDefinitionRegistryTest extends Specification { } - def "test can get implements of interface"() { + def "test can get implements of interface #typeOfReg"() { def spec = ''' interface Interface { name : String @@ -407,11 +407,19 @@ class TypeDefinitionRegistryTest extends Specification { ''' when: def registry = parse(spec) - def interfaceDef = registry.getType("Interface", InterfaceTypeDefinition.class).get() + if (typeOfReg == "immutable") { + registry = registry.readOnly() + } + def interfaceDef = registry.getTypeOrNull("Interface", InterfaceTypeDefinition.class) def implementingTypeDefinitions = registry.getAllImplementationsOf(interfaceDef) def names = implementingTypeDefinitions.collect { it.getName() } then: names == ["Type1", "Type2", "Type3", "Type5"] + + where: + typeOfReg | _ + "mutable" | _ + "immutable" | _ } def animalia = ''' @@ -461,9 +469,16 @@ class TypeDefinitionRegistryTest extends Specification { ''' - def "test possible type detection"() { + def "test possible type detection #typeOfReg"() { + given: + TypeDefinitionRegistry mutableReg = parse(animalia) + ImmutableTypeDefinitionRegistry immutableReg = mutableReg.readOnly() + when: - def registry = parse(animalia) + def registry = mutableReg + if (typeOfReg == "immutable") { + registry = immutableReg + } then: registry.isPossibleType(type("Mammal"), type("Canine")) @@ -485,12 +500,19 @@ class TypeDefinitionRegistryTest extends Specification { !registry.isPossibleType(type("Platypus"), type("Dog")) !registry.isPossibleType(type("Platypus"), type("Cat")) + where: + typeOfReg | _ + "mutable" | _ + "immutable" | _ } - def "isSubTypeOf detection"() { + def "isSubTypeOf detection #typeOfReg"() { when: def registry = parse(animalia) + if (typeOfReg == "immutable") { + registry = registry.readOnly() + } then: registry.isSubTypeOf(type("Mammal"), type("Mammal")) @@ -517,6 +539,11 @@ class TypeDefinitionRegistryTest extends Specification { registry.isSubTypeOf(listType(nonNullType(listType(type("Canine")))), listType(nonNullType(listType(type("Mammal"))))) !registry.isSubTypeOf(listType(nonNullType(listType(type("Turtle")))), listType(nonNullType(listType(type("Mammal"))))) + + where: + typeOfReg | _ + "mutable" | _ + "immutable" | _ } @Unroll @@ -527,7 +554,7 @@ class TypeDefinitionRegistryTest extends Specification { when: registry.remove(definition) then: - !registry.getType(definition.getName()).isPresent() + registry.getTypeOrNull(definition.getName()) == null where: definition | _ @@ -920,8 +947,8 @@ class TypeDefinitionRegistryTest extends Specification { when: registry.addAll(Arrays.asList(obj1, obj2)) then: - registry.getType("foo").isPresent() - registry.getType("bar").isPresent() + registry.getTypeOrNull("foo") != null + registry.getTypeOrNull("bar") != null } def "addAll will return an error on the first abd thing"() { @@ -974,8 +1001,8 @@ class TypeDefinitionRegistryTest extends Specification { TypeDefinitionRegistry registryIn = serialise(registryOut) then: - TypeDefinition typeIn = registryIn.getType(typeName).get() - TypeDefinition typeOut = registryOut.getType(typeName).get() + TypeDefinition typeIn = registryIn.getTypeOrNull(typeName) + TypeDefinition typeOut = registryOut.getTypeOrNull(typeName) typeIn.isEqualTo(typeOut) where: diff --git a/src/test/groovy/graphql/schema/idl/TypeInfoTest.groovy b/src/test/groovy/graphql/schema/idl/TypeInfoTest.groovy index 92ec7b1b8c..556755e436 100644 --- a/src/test/groovy/graphql/schema/idl/TypeInfoTest.groovy +++ b/src/test/groovy/graphql/schema/idl/TypeInfoTest.groovy @@ -136,4 +136,22 @@ class TypeInfoTest extends Specification { "[named!]!" | "[newName!]!" "[[named!]!]" | "[[newName!]!]" } + + @Unroll + def "test getTypeName gets to the inner type"() { + + expect: + Type actualType = TestUtil.parseType(actual) + def typeName = TypeInfo.getTypeName(actualType) + typeName.getName() == expected + + where: + actual | expected + "named" | "named" + "named!" | "named" + "[named]" | "named" + "[named!]" | "named" + "[named!]!" | "named" + "[[named!]!]" | "named" + } } diff --git a/src/test/groovy/graphql/schema/idl/WiringFactoryTest.groovy b/src/test/groovy/graphql/schema/idl/WiringFactoryTest.groovy index edb7efc12d..70c96fc7da 100644 --- a/src/test/groovy/graphql/schema/idl/WiringFactoryTest.groovy +++ b/src/test/groovy/graphql/schema/idl/WiringFactoryTest.groovy @@ -259,7 +259,7 @@ class WiringFactoryTest extends Specification { boolean providesDataFetcher(FieldWiringEnvironment environment) { assert ["id", "name", "homePlanet"].contains(environment.fieldDefinition.name) assert environment.parentType.name == "Human" - assert environment.registry.getType("Human").isPresent() + assert environment.registry.getTypeOrNull("Human") != null return true } @@ -267,7 +267,7 @@ class WiringFactoryTest extends Specification { DataFetcher getDataFetcher(FieldWiringEnvironment environment) { assert ["id", "name", "homePlanet"].contains(environment.fieldDefinition.name) assert environment.parentType.name == "Human" - assert environment.registry.getType("Human").isPresent() + assert environment.registry.getTypeOrNull("Human") != null new PropertyDataFetcher(environment.fieldDefinition.name) } }