# Adaptive pass 1, group 1 # Command: java -cp /build/classes/java/benchmark:/build/resources/benchmark:/build/moddev/artifacts/vanilla-26.2-2.jar:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar:/modules-2/files-2.1/com.abahgat/suffixtree/2.0.0/ffe2c29796add2624d2e0b9f33e72421eb5c5ea5/suffixtree-2.0.0.jar:/modules-2/files-2.1/net.mezzdev/suffixtree/1.3.0/1a1b87af70a1631ff6d6c9d49c63564aadecb176/suffixtree-1.3.0.jar:/modules-2/files-2.1/net.mezzdev/baked-substring-index/0.1.0/4f9fbd9eb54fdb1b8ec40a83297f4e8f4479eb7c/baked-substring-index-0.1.0.jar:/modules-2/files-2.1/net.mezzdev/baked-suffix-array-index/0.1.0/cd5e5ffbcee030d149e7a5a70e151a06158bd643/baked-suffix-array-index-0.1.0.jar:/modules-2/files-2.1/net.neoforged/mergetool/2.0.7/793b18456e92c4a7f66d9b5d8bf7a9c1c7a20b20/mergetool-2.0.7-api.jar:/modules-2/files-2.1/net.sf.jopt-simple/jopt-simple/5.0.4/4fdac2fbe92dfad86aa6e9301736f6b4342a3f5c/jopt-simple-5.0.4.jar:/modules-2/files-2.1/org.apache.commons/commons-math3/3.6.1/e4ba98f1d4b3c80ec46392f25e094a6a2e58fcbf/commons-math3-3.6.1.jar:/modules-2/files-2.1/com.google.code.findbugs/jsr305/3.0.2/25ea2e8b0c338a877313bd4672d3fe056ea78f0d/jsr305-3.0.2.jar:/modules-2/files-2.1/org.jspecify/jspecify/1.0.0/7425a601c1c7ec76645a78d22b8c6a627edee507/jspecify-1.0.0.jar:/modules-2/files-2.1/org.jetbrains/annotations/26.0.2-1/c7ce3cdeda3d18909368dfe5977332dfad326c6d/annotations-26.0.2-1.jar:/modules-2/files-2.1/ca.weblite/java-objc-bridge/1.1/1227f9e0666314f9de41477e3ec277e542ed7f7b/java-objc-bridge-1.1.jar:/modules-2/files-2.1/at.yawk.lz4/lz4-java/1.10.1/f541d7f910fe3d76f38f799c507c48cc81b12ecb/lz4-java-1.10.1.jar:/modules-2/files-2.1/com.azure/azure-json/1.4.0/fcc1d354dbc3e0300e5276b1bf124d0247799cd8/azure-json-1.4.0.jar:/modules-2/files-2.1/com.github.oshi/oshi-core/6.9.0/3224870731860cfcd7744581a05b559e94291e7/oshi-core-6.9.0.jar:/modules-2/files-2.1/com.google.code.gson/gson/2.14.0/efc0e34ede4e3204eaefb84a00e55e8c86634382/gson-2.14.0.jar:/modules-2/files-2.1/com.google.guava/failureaccess/1.0.3/aeaffd00d57023a2c947393ed251f0354f0985fc/failureaccess-1.0.3.jar:/modules-2/files-2.1/com.google.guava/guava/33.6.0-jre/c376b13067cc99a5774403530953f7b05a91e218/guava-33.6.0-jre.jar:/modules-2/files-2.1/com.ibm.icu/icu4j/78.3/6a851a53bb1f25689fc418dcc8935b0d93580adf/icu4j-78.3.jar:/modules-2/files-2.1/com.microsoft.azure/msal4j/1.24.1/c233f2d047b9755f7041adf21a858c680e4c9242/msal4j-1.24.1.jar:/modules-2/files-2.1/com.mojang/authlib/9.0.75/d61056a234d5e4b272e09d59b0713f80d6c0b6af/authlib-9.0.75.jar:/modules-2/files-2.1/com.mojang/blocklist/1.0.10/5c685c5ffa94c4cd39496c7184c1d122e515ecef/blocklist-1.0.10.jar:/modules-2/files-2.1/com.mojang/brigadier/1.3.10/d15b53a14cf20fdcaa98f731af5dda654452c010/brigadier-1.3.10.jar:/modules-2/files-2.1/com.mojang/datafixerupper/10.0.21/b6b2ae770c02e0c1eb90f9985b151e9085a38d0b/datafixerupper-10.0.21.jar:/modules-2/files-2.1/com.mojang/jtracy/1.0.37/a3fb649b2e2b2288d2978f0b0bc3d83f62809d1e/jtracy-1.0.37.jar:/modules-2/files-2.1/com.mojang/jtracy/1.0.37/a99fcb63b72fb623534d0ceb71bda4bed9b55b4c/jtracy-1.0.37-natives-macos.jar:/modules-2/files-2.1/com.mojang/jtracy/1.0.37/c8e971da5150aa33283c5bf4097154c0da554fb9/jtracy-1.0.37-natives-macos-arm64.jar:/modules-2/files-2.1/com.mojang/logging/1.7.12/351cea64a5233361327d8d54c44277041beed97f/logging-1.7.12.jar:/modules-2/files-2.1/com.mojang/patchy/2.2.10/da05971b07cbb379d002cf7eaec6a2048211fefc/patchy-2.2.10.jar:/modules-2/files-2.1/com.mojang/text2speech/1.19.12/2e517a75c79d34d32de2b5d68422150836c2133e/text2speech-1.19.12.jar:/modules-2/files-2.1/commons-codec/commons-codec/1.22.0/6b3eb4beb7058c2a638f5f17bcb388649fd339dd/commons-codec-1.22.0.jar:/modules-2/files-2.1/commons-io/commons-io/2.20.0/36f3474daec2849c149e877614e7f979b2082cd2/commons-io-2.20.0.jar:/modules-2/files-2.1/io.netty/netty-buffer/4.2.15.Final/2beb620803bf871cda2dd5d46b8f831e8015dd34/netty-buffer-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-codec-base/4.2.15.Final/e97149fdd5fb04858efa90e314651c8d700dc68b/netty-codec-base-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-codec-compression/4.2.15.Final/89fc4a20b7ae6af974304b1695405e62c4f9b16d/netty-codec-compression-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-codec-http/4.2.15.Final/e611826aa054371bb9a17f27bdb05755a4cac5f0/netty-codec-http-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-common/4.2.15.Final/7222492c1af9c2d4d78d521eea340a619e242fda/netty-common-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-handler/4.2.15.Final/d5344afd1148e3b9927a74be019605ebb0937a93/netty-handler-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-resolver/4.2.15.Final/b961a16d379b508b473e064ba06842bba280f4e3/netty-resolver-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-transport-classes-epoll/4.2.15.Final/44bafba9c9993800e955b365bba4981326f3f3b1/netty-transport-classes-epoll-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-transport-classes-kqueue/4.2.15.Final/f248656bb907607c5a41c7b61fd918a97db79250/netty-transport-classes-kqueue-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-transport-native-unix-common/4.2.15.Final/efb6943b4de9e0226a5ac35330f232605424af02/netty-transport-native-unix-common-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-transport/4.2.15.Final/a000c3a6196ee40207b73ac619dcb339409dd62f/netty-transport-4.2.15.Final.jar:/modules-2/files-2.1/it.unimi.dsi/fastutil/8.5.18/a6cff377eecc19c2037bf31568a6d7106b50ba1f/fastutil-8.5.18.jar:/modules-2/files-2.1/net.java.dev.jna/jna-platform/5.17.0/a4934c44d25a9d8c2ddf4203affd20330cb3426f/jna-platform-5.17.0.jar:/modules-2/files-2.1/net.java.dev.jna/jna/5.17.0/33d12735bef894440780fce64f9758d420c7bae2/jna-5.17.0.jar:/modules-2/files-2.1/org.apache.commons/commons-compress/1.28.0/e482f2c7a88dac3c497e96aa420b6a769f59c8d7/commons-compress-1.28.0.jar:/modules-2/files-2.1/org.apache.commons/commons-lang3/3.20.0/65897b3e5731220962e659e001904af3c3cbeba9/commons-lang3-3.20.0.jar:/modules-2/files-2.1/org.apache.logging.log4j/log4j-api/2.26.0/ad52af0ecf054a7e3f275a2e180ee06d9c490951/log4j-api-2.26.0.jar:/modules-2/files-2.1/org.apache.logging.log4j/log4j-core/2.26.0/d267ca60b27ddb075e0b4e75e7875859717bf85f/log4j-core-2.26.0.jar:/modules-2/files-2.1/org.apache.logging.log4j/log4j-slf4j2-impl/2.26.0/668c0f0e813d83f00a7182533aa658ec7e7a0a0d/log4j-slf4j2-impl-2.26.0.jar:/modules-2/files-2.1/org.jcraft/jorbis/0.0.17/8872d22b293e8f5d7d56ff92be966e6dc28ebdc6/jorbis-0.0.17.jar:/modules-2/files-2.1/org.joml/joml/1.10.8/fc0a71dad90a2cf41d82a76156a0e700af8e4f8d/joml-1.10.8.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-freetype/3.4.1/caa75a37e857efc9b0686e434d708d6420c5b6ea/lwjgl-freetype-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-freetype/3.4.1/61cb2d85e1838bca1a0b664f54e818bc68deb2ef/lwjgl-freetype-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-freetype/3.4.1/cce5a86b4a7d17817fe8ea0296302a4353acf2d5/lwjgl-freetype-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-glfw/3.4.1/a782b1ddd175c9107bf300fd92920579ea65e2a4/lwjgl-glfw-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-glfw/3.4.1/3c8538942f58377d59cd7be2dc164ba71a53868a/lwjgl-glfw-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-glfw/3.4.1/ef1f8efca5a60ba3512bc4982b88e446ecc43378/lwjgl-glfw-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-jemalloc/3.4.1/16b663092854fc6adfe0a941e61cae2bb2e437b6/lwjgl-jemalloc-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-jemalloc/3.4.1/581b4d542e841015ce3265eed0495e2cde15b1d0/lwjgl-jemalloc-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-jemalloc/3.4.1/dcd7e3f9a2ca386e8c5b8f508a8511d9dd63bab0/lwjgl-jemalloc-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-openal/3.4.1/8508bd60589de0539aa465b78fcf838efd07ae9a/lwjgl-openal-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-openal/3.4.1/a4dc57b7b0880d3fffb4d0b61649f45712bccc93/lwjgl-openal-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-openal/3.4.1/1c709a38c4a0e86aae96db7b8c78432307f2322a/lwjgl-openal-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-opengl/3.4.1/830412cab823c029cda6b9729f9d2ed36cf79959/lwjgl-opengl-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-opengl/3.4.1/ba18fc6012b88494ee893506934b92b01c4ef14b/lwjgl-opengl-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-opengl/3.4.1/35b5550058de4960525f465243bd01805f04fd8b/lwjgl-opengl-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-shaderc/3.4.1/5c02c88f0d879529014c78463b76f43fdecfd272/lwjgl-shaderc-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-shaderc/3.4.1/1d7bbdba70cf29c42978f6c0c1bdef945b922072/lwjgl-shaderc-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-shaderc/3.4.1/48aa2727e8616154d399d4dab0d8e8479741fa4f/lwjgl-shaderc-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-spvc/3.4.1/188553592e97b5ab2dba54a1b403ee80b48dad4c/lwjgl-spvc-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-spvc/3.4.1/2eeebd6d5bae966bfffda9747eba744cfe839ae1/lwjgl-spvc-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-spvc/3.4.1/a4f66638d28129eba0babd8fdc4385427a5ea83e/lwjgl-spvc-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-stb/3.4.1/f077c3dafc31924fbe8acb0b913f08977ba27f8e/lwjgl-stb-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-stb/3.4.1/fd1ea36b717b0832babca09324a6cfc43906e2aa/lwjgl-stb-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-stb/3.4.1/da554e04f819f09b0f3473bd931628ebf557965e/lwjgl-stb-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-tinyfd/3.4.1/562697d40dbd2ed0424bf24dcf65d51170f81adf/lwjgl-tinyfd-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-tinyfd/3.4.1/211ae9e8720e8f10f2ce85a118fa7bd5ee71584b/lwjgl-tinyfd-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-tinyfd/3.4.1/7bcde70f6164b2e72f84cac5257b7e9877b88510/lwjgl-tinyfd-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vma/3.4.1/2c54ce10154feb1ede4d23c5947438cdbfdcc003/lwjgl-vma-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vma/3.4.1/a130a9e4f96c83063f749e1dcc7065e0dffb3936/lwjgl-vma-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vma/3.4.1/9451dc1067716bc4125cdba65a7096e465f4d0e5/lwjgl-vma-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vulkan/3.4.1/d0601fdc38890755e5638048c14cc0f7b990964b/lwjgl-vulkan-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vulkan/3.4.1/140c7fd3e0fdbcc625c92be9328301c555035905/lwjgl-vulkan-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vulkan/3.4.1/2c933bf617cb8a174af26585efda4778b59e6d44/lwjgl-vulkan-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl/3.4.1/129e06a04f93992cb2a45172435b21fc4b60dd7d/lwjgl-3.4.1-unsafe.jar:/modules-2/files-2.1/org.lwjgl/lwjgl/3.4.1/b034fd9a67cb8646c01af7efcefcb93be835542b/lwjgl-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl/3.4.1/b4cbdef4818abd714ee66985344c0949fd1cd6d6/lwjgl-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.slf4j/slf4j-api/2.0.17/d9e58ac9c7779ba3bf8142aff6c830617a7fe60f/slf4j-api-2.0.17.jar:/modules-2/files-2.1/org.ow2.asm/asm-util/9.5/64b5a1fc8c1b15ed2efd6a063e976bc8d3dc5ffe/asm-util-9.5.jar:/modules-2/files-2.1/org.ow2.asm/asm-analysis/9.5/490bacc77de7cbc0be1a30bb3471072d705be4a4/asm-analysis-9.5.jar:/modules-2/files-2.1/org.ow2.asm/asm-tree/9.5/fd33c8b6373abaa675be407082fdfda35021254a/asm-tree-9.5.jar:/modules-2/files-2.1/org.ow2.asm/asm/9.5/dc6ea1875f4d64fbc85e1691c95b96a3d8569c90/asm-9.5.jar:/modules-2/files-2.1/net.neoforged/srgutils/1.0.10/abb471237b33b19f040ada00bfbad1ec45b949b6/srgutils-1.0.10.jar:/modules-2/files-2.1/io.netty/netty-transport-native-kqueue/4.2.15.Final/8ea0ef3eb716d821332e4b4926825a4b7c1a6d38/netty-transport-native-kqueue-4.2.15.Final-osx-aarch_64.jar:/modules-2/files-2.1/io.netty/netty-transport-native-kqueue/4.2.15.Final/4245380831515fb4eca18d32477a27fbb8f7b8f4/netty-transport-native-kqueue-4.2.15.Final-osx-x86_64.jar:/build/classes/java/main:/build/resources/main org.openjdk.jmh.Main .*net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.buildAllDefaultsIndex -p itemCount=100000 -p implementation=generalized-suffix-tree -f 1 -wi 1 -i 4 -w 100ms -r 100ms -rf json -rff /build/reports/jmh/adaptive-jmh-passes/pass-01-group-001.json -o /build/reports/jmh/adaptive-jmh-passes/pass-01-group-001.txt -foe true -prof gc # JMH version: 1.37 # VM version: JDK 25, OpenJDK 64-Bit Server VM, 25+36-b176.4 # VM invoker: java # VM options: # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 1 iterations, 100 ms each # Measurement: 4 iterations, 100 ms each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.buildAllDefaultsIndex # Parameters: (implementation = generalized-suffix-tree, itemCount = 100000) # Run progress: 0.00% complete, ETA 00:00:00 # Fork: 1 of 1 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::objectFieldOffset has been called by org.openjdk.jmh.util.Utils (file:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar) WARNING: Please consider reporting this to the maintainers of class org.openjdk.jmh.util.Utils WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release # Warmup Iteration 1: 978.420 ms/op Iteration 1: 752.126 ms/op gc.alloc.rate: 378.328 MB/sec gc.alloc.rate.norm: 298443360.000 B/op gc.count: 2.000 counts gc.time: 41.000 ms Iteration 2: 726.646 ms/op gc.alloc.rate: 391.549 MB/sec gc.alloc.rate.norm: 298443376.000 B/op gc.count: 2.000 counts gc.time: 1.000 ms Iteration 3: 651.139 ms/op gc.alloc.rate: 436.983 MB/sec gc.alloc.rate.norm: 298443376.000 B/op gc.count: 1.000 counts gc.time: 16.000 ms Iteration 4: 683.540 ms/op gc.alloc.rate: 416.274 MB/sec gc.alloc.rate.norm: 298443376.000 B/op gc.count: 1.000 counts gc.time: 41.000 ms Result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.buildAllDefaultsIndex": 703.363 ±(99.9%) 289.955 ms/op [Average] (min, avg, max) = (651.139, 703.363, 752.126), stdev = 44.871 CI (99.9%): [413.408, 993.318] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.buildAllDefaultsIndex:gc.alloc.rate": 405.783 ±(99.9%) 168.505 MB/sec [Average] (min, avg, max) = (378.328, 405.783, 436.983), stdev = 26.076 CI (99.9%): [237.278, 574.289] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.buildAllDefaultsIndex:gc.alloc.rate.norm": 298443372.000 ±(99.9%) 51.696 B/op [Average] (min, avg, max) = (298443360.000, 298443372.000, 298443376.000), stdev = 8.000 CI (99.9%): [298443320.304, 298443423.696] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.buildAllDefaultsIndex:gc.count": 6.000 ±(99.9%) 0.001 counts [Sum] (min, avg, max) = (1.000, 1.500, 2.000), stdev = 0.577 CI (99.9%): [6.000, 6.000] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.buildAllDefaultsIndex:gc.time": 99.000 ±(99.9%) 0.001 ms [Sum] (min, avg, max) = (1.000, 24.750, 41.000), stdev = 19.738 CI (99.9%): [99.000, 99.000] (assumes normal distribution) # Run complete. Total time: 00:00:04 REMEMBER: The numbers below are just data. To gain reusable insights, you need to follow up on why the numbers are the way they are. Use profilers (see -prof, -lprof), design factorial experiments, perform baseline and negative tests that provide experimental control, make sure the benchmarking environment is safe on JVM/OS/HW level, ask for reviews from the domain experts. Do not assume the numbers tell you what you want them to tell. NOTE: Current JVM experimentally supports Compiler Blackholes, and they are in use. Please exercise extra caution when trusting the results, look into the generated code to check the benchmark still works, and factor in a small probability of new VM bugs. Additionally, while comparisons between different JVMs are already problematic, the performance difference caused by different Blackhole modes can be very significant. Please make sure you use the consistent Blackhole mode for comparisons. Benchmark (implementation) (itemCount) Mode Cnt Score Error Units LargeCatalogSearchBenchmark.buildAllDefaultsIndex generalized-suffix-tree 100000 avgt 4 703.363 ± 289.955 ms/op LargeCatalogSearchBenchmark.buildAllDefaultsIndex:gc.alloc.rate generalized-suffix-tree 100000 avgt 4 405.783 ± 168.505 MB/sec LargeCatalogSearchBenchmark.buildAllDefaultsIndex:gc.alloc.rate.norm generalized-suffix-tree 100000 avgt 4 298443372.000 ± 51.696 B/op LargeCatalogSearchBenchmark.buildAllDefaultsIndex:gc.count generalized-suffix-tree 100000 avgt 4 6.000 counts LargeCatalogSearchBenchmark.buildAllDefaultsIndex:gc.time generalized-suffix-tree 100000 avgt 4 99.000 ms Benchmark result is saved to /build/reports/jmh/adaptive-jmh-passes/pass-01-group-001.json # Adaptive pass 1, group 2 # Command: java -cp /build/classes/java/benchmark:/build/resources/benchmark:/build/moddev/artifacts/vanilla-26.2-2.jar:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar:/modules-2/files-2.1/com.abahgat/suffixtree/2.0.0/ffe2c29796add2624d2e0b9f33e72421eb5c5ea5/suffixtree-2.0.0.jar:/modules-2/files-2.1/net.mezzdev/suffixtree/1.3.0/1a1b87af70a1631ff6d6c9d49c63564aadecb176/suffixtree-1.3.0.jar:/modules-2/files-2.1/net.mezzdev/baked-substring-index/0.1.0/4f9fbd9eb54fdb1b8ec40a83297f4e8f4479eb7c/baked-substring-index-0.1.0.jar:/modules-2/files-2.1/net.mezzdev/baked-suffix-array-index/0.1.0/cd5e5ffbcee030d149e7a5a70e151a06158bd643/baked-suffix-array-index-0.1.0.jar:/modules-2/files-2.1/net.neoforged/mergetool/2.0.7/793b18456e92c4a7f66d9b5d8bf7a9c1c7a20b20/mergetool-2.0.7-api.jar:/modules-2/files-2.1/net.sf.jopt-simple/jopt-simple/5.0.4/4fdac2fbe92dfad86aa6e9301736f6b4342a3f5c/jopt-simple-5.0.4.jar:/modules-2/files-2.1/org.apache.commons/commons-math3/3.6.1/e4ba98f1d4b3c80ec46392f25e094a6a2e58fcbf/commons-math3-3.6.1.jar:/modules-2/files-2.1/com.google.code.findbugs/jsr305/3.0.2/25ea2e8b0c338a877313bd4672d3fe056ea78f0d/jsr305-3.0.2.jar:/modules-2/files-2.1/org.jspecify/jspecify/1.0.0/7425a601c1c7ec76645a78d22b8c6a627edee507/jspecify-1.0.0.jar:/modules-2/files-2.1/org.jetbrains/annotations/26.0.2-1/c7ce3cdeda3d18909368dfe5977332dfad326c6d/annotations-26.0.2-1.jar:/modules-2/files-2.1/ca.weblite/java-objc-bridge/1.1/1227f9e0666314f9de41477e3ec277e542ed7f7b/java-objc-bridge-1.1.jar:/modules-2/files-2.1/at.yawk.lz4/lz4-java/1.10.1/f541d7f910fe3d76f38f799c507c48cc81b12ecb/lz4-java-1.10.1.jar:/modules-2/files-2.1/com.azure/azure-json/1.4.0/fcc1d354dbc3e0300e5276b1bf124d0247799cd8/azure-json-1.4.0.jar:/modules-2/files-2.1/com.github.oshi/oshi-core/6.9.0/3224870731860cfcd7744581a05b559e94291e7/oshi-core-6.9.0.jar:/modules-2/files-2.1/com.google.code.gson/gson/2.14.0/efc0e34ede4e3204eaefb84a00e55e8c86634382/gson-2.14.0.jar:/modules-2/files-2.1/com.google.guava/failureaccess/1.0.3/aeaffd00d57023a2c947393ed251f0354f0985fc/failureaccess-1.0.3.jar:/modules-2/files-2.1/com.google.guava/guava/33.6.0-jre/c376b13067cc99a5774403530953f7b05a91e218/guava-33.6.0-jre.jar:/modules-2/files-2.1/com.ibm.icu/icu4j/78.3/6a851a53bb1f25689fc418dcc8935b0d93580adf/icu4j-78.3.jar:/modules-2/files-2.1/com.microsoft.azure/msal4j/1.24.1/c233f2d047b9755f7041adf21a858c680e4c9242/msal4j-1.24.1.jar:/modules-2/files-2.1/com.mojang/authlib/9.0.75/d61056a234d5e4b272e09d59b0713f80d6c0b6af/authlib-9.0.75.jar:/modules-2/files-2.1/com.mojang/blocklist/1.0.10/5c685c5ffa94c4cd39496c7184c1d122e515ecef/blocklist-1.0.10.jar:/modules-2/files-2.1/com.mojang/brigadier/1.3.10/d15b53a14cf20fdcaa98f731af5dda654452c010/brigadier-1.3.10.jar:/modules-2/files-2.1/com.mojang/datafixerupper/10.0.21/b6b2ae770c02e0c1eb90f9985b151e9085a38d0b/datafixerupper-10.0.21.jar:/modules-2/files-2.1/com.mojang/jtracy/1.0.37/a3fb649b2e2b2288d2978f0b0bc3d83f62809d1e/jtracy-1.0.37.jar:/modules-2/files-2.1/com.mojang/jtracy/1.0.37/a99fcb63b72fb623534d0ceb71bda4bed9b55b4c/jtracy-1.0.37-natives-macos.jar:/modules-2/files-2.1/com.mojang/jtracy/1.0.37/c8e971da5150aa33283c5bf4097154c0da554fb9/jtracy-1.0.37-natives-macos-arm64.jar:/modules-2/files-2.1/com.mojang/logging/1.7.12/351cea64a5233361327d8d54c44277041beed97f/logging-1.7.12.jar:/modules-2/files-2.1/com.mojang/patchy/2.2.10/da05971b07cbb379d002cf7eaec6a2048211fefc/patchy-2.2.10.jar:/modules-2/files-2.1/com.mojang/text2speech/1.19.12/2e517a75c79d34d32de2b5d68422150836c2133e/text2speech-1.19.12.jar:/modules-2/files-2.1/commons-codec/commons-codec/1.22.0/6b3eb4beb7058c2a638f5f17bcb388649fd339dd/commons-codec-1.22.0.jar:/modules-2/files-2.1/commons-io/commons-io/2.20.0/36f3474daec2849c149e877614e7f979b2082cd2/commons-io-2.20.0.jar:/modules-2/files-2.1/io.netty/netty-buffer/4.2.15.Final/2beb620803bf871cda2dd5d46b8f831e8015dd34/netty-buffer-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-codec-base/4.2.15.Final/e97149fdd5fb04858efa90e314651c8d700dc68b/netty-codec-base-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-codec-compression/4.2.15.Final/89fc4a20b7ae6af974304b1695405e62c4f9b16d/netty-codec-compression-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-codec-http/4.2.15.Final/e611826aa054371bb9a17f27bdb05755a4cac5f0/netty-codec-http-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-common/4.2.15.Final/7222492c1af9c2d4d78d521eea340a619e242fda/netty-common-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-handler/4.2.15.Final/d5344afd1148e3b9927a74be019605ebb0937a93/netty-handler-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-resolver/4.2.15.Final/b961a16d379b508b473e064ba06842bba280f4e3/netty-resolver-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-transport-classes-epoll/4.2.15.Final/44bafba9c9993800e955b365bba4981326f3f3b1/netty-transport-classes-epoll-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-transport-classes-kqueue/4.2.15.Final/f248656bb907607c5a41c7b61fd918a97db79250/netty-transport-classes-kqueue-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-transport-native-unix-common/4.2.15.Final/efb6943b4de9e0226a5ac35330f232605424af02/netty-transport-native-unix-common-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-transport/4.2.15.Final/a000c3a6196ee40207b73ac619dcb339409dd62f/netty-transport-4.2.15.Final.jar:/modules-2/files-2.1/it.unimi.dsi/fastutil/8.5.18/a6cff377eecc19c2037bf31568a6d7106b50ba1f/fastutil-8.5.18.jar:/modules-2/files-2.1/net.java.dev.jna/jna-platform/5.17.0/a4934c44d25a9d8c2ddf4203affd20330cb3426f/jna-platform-5.17.0.jar:/modules-2/files-2.1/net.java.dev.jna/jna/5.17.0/33d12735bef894440780fce64f9758d420c7bae2/jna-5.17.0.jar:/modules-2/files-2.1/org.apache.commons/commons-compress/1.28.0/e482f2c7a88dac3c497e96aa420b6a769f59c8d7/commons-compress-1.28.0.jar:/modules-2/files-2.1/org.apache.commons/commons-lang3/3.20.0/65897b3e5731220962e659e001904af3c3cbeba9/commons-lang3-3.20.0.jar:/modules-2/files-2.1/org.apache.logging.log4j/log4j-api/2.26.0/ad52af0ecf054a7e3f275a2e180ee06d9c490951/log4j-api-2.26.0.jar:/modules-2/files-2.1/org.apache.logging.log4j/log4j-core/2.26.0/d267ca60b27ddb075e0b4e75e7875859717bf85f/log4j-core-2.26.0.jar:/modules-2/files-2.1/org.apache.logging.log4j/log4j-slf4j2-impl/2.26.0/668c0f0e813d83f00a7182533aa658ec7e7a0a0d/log4j-slf4j2-impl-2.26.0.jar:/modules-2/files-2.1/org.jcraft/jorbis/0.0.17/8872d22b293e8f5d7d56ff92be966e6dc28ebdc6/jorbis-0.0.17.jar:/modules-2/files-2.1/org.joml/joml/1.10.8/fc0a71dad90a2cf41d82a76156a0e700af8e4f8d/joml-1.10.8.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-freetype/3.4.1/caa75a37e857efc9b0686e434d708d6420c5b6ea/lwjgl-freetype-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-freetype/3.4.1/61cb2d85e1838bca1a0b664f54e818bc68deb2ef/lwjgl-freetype-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-freetype/3.4.1/cce5a86b4a7d17817fe8ea0296302a4353acf2d5/lwjgl-freetype-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-glfw/3.4.1/a782b1ddd175c9107bf300fd92920579ea65e2a4/lwjgl-glfw-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-glfw/3.4.1/3c8538942f58377d59cd7be2dc164ba71a53868a/lwjgl-glfw-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-glfw/3.4.1/ef1f8efca5a60ba3512bc4982b88e446ecc43378/lwjgl-glfw-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-jemalloc/3.4.1/16b663092854fc6adfe0a941e61cae2bb2e437b6/lwjgl-jemalloc-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-jemalloc/3.4.1/581b4d542e841015ce3265eed0495e2cde15b1d0/lwjgl-jemalloc-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-jemalloc/3.4.1/dcd7e3f9a2ca386e8c5b8f508a8511d9dd63bab0/lwjgl-jemalloc-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-openal/3.4.1/8508bd60589de0539aa465b78fcf838efd07ae9a/lwjgl-openal-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-openal/3.4.1/a4dc57b7b0880d3fffb4d0b61649f45712bccc93/lwjgl-openal-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-openal/3.4.1/1c709a38c4a0e86aae96db7b8c78432307f2322a/lwjgl-openal-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-opengl/3.4.1/830412cab823c029cda6b9729f9d2ed36cf79959/lwjgl-opengl-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-opengl/3.4.1/ba18fc6012b88494ee893506934b92b01c4ef14b/lwjgl-opengl-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-opengl/3.4.1/35b5550058de4960525f465243bd01805f04fd8b/lwjgl-opengl-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-shaderc/3.4.1/5c02c88f0d879529014c78463b76f43fdecfd272/lwjgl-shaderc-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-shaderc/3.4.1/1d7bbdba70cf29c42978f6c0c1bdef945b922072/lwjgl-shaderc-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-shaderc/3.4.1/48aa2727e8616154d399d4dab0d8e8479741fa4f/lwjgl-shaderc-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-spvc/3.4.1/188553592e97b5ab2dba54a1b403ee80b48dad4c/lwjgl-spvc-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-spvc/3.4.1/2eeebd6d5bae966bfffda9747eba744cfe839ae1/lwjgl-spvc-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-spvc/3.4.1/a4f66638d28129eba0babd8fdc4385427a5ea83e/lwjgl-spvc-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-stb/3.4.1/f077c3dafc31924fbe8acb0b913f08977ba27f8e/lwjgl-stb-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-stb/3.4.1/fd1ea36b717b0832babca09324a6cfc43906e2aa/lwjgl-stb-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-stb/3.4.1/da554e04f819f09b0f3473bd931628ebf557965e/lwjgl-stb-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-tinyfd/3.4.1/562697d40dbd2ed0424bf24dcf65d51170f81adf/lwjgl-tinyfd-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-tinyfd/3.4.1/211ae9e8720e8f10f2ce85a118fa7bd5ee71584b/lwjgl-tinyfd-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-tinyfd/3.4.1/7bcde70f6164b2e72f84cac5257b7e9877b88510/lwjgl-tinyfd-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vma/3.4.1/2c54ce10154feb1ede4d23c5947438cdbfdcc003/lwjgl-vma-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vma/3.4.1/a130a9e4f96c83063f749e1dcc7065e0dffb3936/lwjgl-vma-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vma/3.4.1/9451dc1067716bc4125cdba65a7096e465f4d0e5/lwjgl-vma-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vulkan/3.4.1/d0601fdc38890755e5638048c14cc0f7b990964b/lwjgl-vulkan-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vulkan/3.4.1/140c7fd3e0fdbcc625c92be9328301c555035905/lwjgl-vulkan-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vulkan/3.4.1/2c933bf617cb8a174af26585efda4778b59e6d44/lwjgl-vulkan-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl/3.4.1/129e06a04f93992cb2a45172435b21fc4b60dd7d/lwjgl-3.4.1-unsafe.jar:/modules-2/files-2.1/org.lwjgl/lwjgl/3.4.1/b034fd9a67cb8646c01af7efcefcb93be835542b/lwjgl-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl/3.4.1/b4cbdef4818abd714ee66985344c0949fd1cd6d6/lwjgl-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.slf4j/slf4j-api/2.0.17/d9e58ac9c7779ba3bf8142aff6c830617a7fe60f/slf4j-api-2.0.17.jar:/modules-2/files-2.1/org.ow2.asm/asm-util/9.5/64b5a1fc8c1b15ed2efd6a063e976bc8d3dc5ffe/asm-util-9.5.jar:/modules-2/files-2.1/org.ow2.asm/asm-analysis/9.5/490bacc77de7cbc0be1a30bb3471072d705be4a4/asm-analysis-9.5.jar:/modules-2/files-2.1/org.ow2.asm/asm-tree/9.5/fd33c8b6373abaa675be407082fdfda35021254a/asm-tree-9.5.jar:/modules-2/files-2.1/org.ow2.asm/asm/9.5/dc6ea1875f4d64fbc85e1691c95b96a3d8569c90/asm-9.5.jar:/modules-2/files-2.1/net.neoforged/srgutils/1.0.10/abb471237b33b19f040ada00bfbad1ec45b949b6/srgutils-1.0.10.jar:/modules-2/files-2.1/io.netty/netty-transport-native-kqueue/4.2.15.Final/8ea0ef3eb716d821332e4b4926825a4b7c1a6d38/netty-transport-native-kqueue-4.2.15.Final-osx-aarch_64.jar:/modules-2/files-2.1/io.netty/netty-transport-native-kqueue/4.2.15.Final/4245380831515fb4eca18d32477a27fbb8f7b8f4/netty-transport-native-kqueue-4.2.15.Final-osx-x86_64.jar:/build/classes/java/main:/build/resources/main org.openjdk.jmh.Main .*net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.buildAllDefaultsIndex -p itemCount=100000 -p implementation=abahgat-suffix-tree -f 1 -wi 1 -i 4 -w 100ms -r 100ms -rf json -rff /build/reports/jmh/adaptive-jmh-passes/pass-01-group-002.json -o /build/reports/jmh/adaptive-jmh-passes/pass-01-group-002.txt -foe true -prof gc # JMH version: 1.37 # VM version: JDK 25, OpenJDK 64-Bit Server VM, 25+36-b176.4 # VM invoker: java # VM options: # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 1 iterations, 100 ms each # Measurement: 4 iterations, 100 ms each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.buildAllDefaultsIndex # Parameters: (implementation = abahgat-suffix-tree, itemCount = 100000) # Run progress: 0.00% complete, ETA 00:00:00 # Fork: 1 of 1 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::objectFieldOffset has been called by org.openjdk.jmh.util.Utils (file:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar) WARNING: Please consider reporting this to the maintainers of class org.openjdk.jmh.util.Utils WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release # Warmup Iteration 1: 1079.101 ms/op Iteration 1: 989.984 ms/op gc.alloc.rate: 1481.662 MB/sec gc.alloc.rate.norm: 1538629656.000 B/op gc.count: 3.000 counts gc.time: 51.000 ms Iteration 2: 1036.659 ms/op gc.alloc.rate: 1415.209 MB/sec gc.alloc.rate.norm: 1538629608.000 B/op gc.count: 2.000 counts gc.time: 72.000 ms Iteration 3: 964.015 ms/op gc.alloc.rate: 1521.766 MB/sec gc.alloc.rate.norm: 1538629672.000 B/op gc.count: 2.000 counts gc.time: 39.000 ms Iteration 4: 990.044 ms/op gc.alloc.rate: 1481.764 MB/sec gc.alloc.rate.norm: 1538629640.000 B/op gc.count: 1.000 counts gc.time: 27.000 ms Result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.buildAllDefaultsIndex": 995.176 ±(99.9%) 195.472 ms/op [Average] (min, avg, max) = (964.015, 995.176, 1036.659), stdev = 30.250 CI (99.9%): [799.703, 1190.648] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.buildAllDefaultsIndex:gc.alloc.rate": 1475.100 ±(99.9%) 285.405 MB/sec [Average] (min, avg, max) = (1415.209, 1475.100, 1521.766), stdev = 44.167 CI (99.9%): [1189.696, 1760.505] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.buildAllDefaultsIndex:gc.alloc.rate.norm": 1538629644.000 ±(99.9%) 176.575 B/op [Average] (min, avg, max) = (1538629608.000, 1538629644.000, 1538629672.000), stdev = 27.325 CI (99.9%): [1538629467.425, 1538629820.575] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.buildAllDefaultsIndex:gc.count": 8.000 ±(99.9%) 0.001 counts [Sum] (min, avg, max) = (1.000, 2.000, 3.000), stdev = 0.816 CI (99.9%): [8.000, 8.000] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.buildAllDefaultsIndex:gc.time": 189.000 ±(99.9%) 0.001 ms [Sum] (min, avg, max) = (27.000, 47.250, 72.000), stdev = 19.190 CI (99.9%): [189.000, 189.000] (assumes normal distribution) # Run complete. Total time: 00:00:05 REMEMBER: The numbers below are just data. To gain reusable insights, you need to follow up on why the numbers are the way they are. Use profilers (see -prof, -lprof), design factorial experiments, perform baseline and negative tests that provide experimental control, make sure the benchmarking environment is safe on JVM/OS/HW level, ask for reviews from the domain experts. Do not assume the numbers tell you what you want them to tell. NOTE: Current JVM experimentally supports Compiler Blackholes, and they are in use. Please exercise extra caution when trusting the results, look into the generated code to check the benchmark still works, and factor in a small probability of new VM bugs. Additionally, while comparisons between different JVMs are already problematic, the performance difference caused by different Blackhole modes can be very significant. Please make sure you use the consistent Blackhole mode for comparisons. Benchmark (implementation) (itemCount) Mode Cnt Score Error Units LargeCatalogSearchBenchmark.buildAllDefaultsIndex abahgat-suffix-tree 100000 avgt 4 995.176 ± 195.472 ms/op LargeCatalogSearchBenchmark.buildAllDefaultsIndex:gc.alloc.rate abahgat-suffix-tree 100000 avgt 4 1475.100 ± 285.405 MB/sec LargeCatalogSearchBenchmark.buildAllDefaultsIndex:gc.alloc.rate.norm abahgat-suffix-tree 100000 avgt 4 1538629644.000 ± 176.575 B/op LargeCatalogSearchBenchmark.buildAllDefaultsIndex:gc.count abahgat-suffix-tree 100000 avgt 4 8.000 counts LargeCatalogSearchBenchmark.buildAllDefaultsIndex:gc.time abahgat-suffix-tree 100000 avgt 4 189.000 ms Benchmark result is saved to /build/reports/jmh/adaptive-jmh-passes/pass-01-group-002.json # Adaptive pass 1, group 3 # Command: java -cp /build/classes/java/benchmark:/build/resources/benchmark:/build/moddev/artifacts/vanilla-26.2-2.jar:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar:/modules-2/files-2.1/com.abahgat/suffixtree/2.0.0/ffe2c29796add2624d2e0b9f33e72421eb5c5ea5/suffixtree-2.0.0.jar:/modules-2/files-2.1/net.mezzdev/suffixtree/1.3.0/1a1b87af70a1631ff6d6c9d49c63564aadecb176/suffixtree-1.3.0.jar:/modules-2/files-2.1/net.mezzdev/baked-substring-index/0.1.0/4f9fbd9eb54fdb1b8ec40a83297f4e8f4479eb7c/baked-substring-index-0.1.0.jar:/modules-2/files-2.1/net.mezzdev/baked-suffix-array-index/0.1.0/cd5e5ffbcee030d149e7a5a70e151a06158bd643/baked-suffix-array-index-0.1.0.jar:/modules-2/files-2.1/net.neoforged/mergetool/2.0.7/793b18456e92c4a7f66d9b5d8bf7a9c1c7a20b20/mergetool-2.0.7-api.jar:/modules-2/files-2.1/net.sf.jopt-simple/jopt-simple/5.0.4/4fdac2fbe92dfad86aa6e9301736f6b4342a3f5c/jopt-simple-5.0.4.jar:/modules-2/files-2.1/org.apache.commons/commons-math3/3.6.1/e4ba98f1d4b3c80ec46392f25e094a6a2e58fcbf/commons-math3-3.6.1.jar:/modules-2/files-2.1/com.google.code.findbugs/jsr305/3.0.2/25ea2e8b0c338a877313bd4672d3fe056ea78f0d/jsr305-3.0.2.jar:/modules-2/files-2.1/org.jspecify/jspecify/1.0.0/7425a601c1c7ec76645a78d22b8c6a627edee507/jspecify-1.0.0.jar:/modules-2/files-2.1/org.jetbrains/annotations/26.0.2-1/c7ce3cdeda3d18909368dfe5977332dfad326c6d/annotations-26.0.2-1.jar:/modules-2/files-2.1/ca.weblite/java-objc-bridge/1.1/1227f9e0666314f9de41477e3ec277e542ed7f7b/java-objc-bridge-1.1.jar:/modules-2/files-2.1/at.yawk.lz4/lz4-java/1.10.1/f541d7f910fe3d76f38f799c507c48cc81b12ecb/lz4-java-1.10.1.jar:/modules-2/files-2.1/com.azure/azure-json/1.4.0/fcc1d354dbc3e0300e5276b1bf124d0247799cd8/azure-json-1.4.0.jar:/modules-2/files-2.1/com.github.oshi/oshi-core/6.9.0/3224870731860cfcd7744581a05b559e94291e7/oshi-core-6.9.0.jar:/modules-2/files-2.1/com.google.code.gson/gson/2.14.0/efc0e34ede4e3204eaefb84a00e55e8c86634382/gson-2.14.0.jar:/modules-2/files-2.1/com.google.guava/failureaccess/1.0.3/aeaffd00d57023a2c947393ed251f0354f0985fc/failureaccess-1.0.3.jar:/modules-2/files-2.1/com.google.guava/guava/33.6.0-jre/c376b13067cc99a5774403530953f7b05a91e218/guava-33.6.0-jre.jar:/modules-2/files-2.1/com.ibm.icu/icu4j/78.3/6a851a53bb1f25689fc418dcc8935b0d93580adf/icu4j-78.3.jar:/modules-2/files-2.1/com.microsoft.azure/msal4j/1.24.1/c233f2d047b9755f7041adf21a858c680e4c9242/msal4j-1.24.1.jar:/modules-2/files-2.1/com.mojang/authlib/9.0.75/d61056a234d5e4b272e09d59b0713f80d6c0b6af/authlib-9.0.75.jar:/modules-2/files-2.1/com.mojang/blocklist/1.0.10/5c685c5ffa94c4cd39496c7184c1d122e515ecef/blocklist-1.0.10.jar:/modules-2/files-2.1/com.mojang/brigadier/1.3.10/d15b53a14cf20fdcaa98f731af5dda654452c010/brigadier-1.3.10.jar:/modules-2/files-2.1/com.mojang/datafixerupper/10.0.21/b6b2ae770c02e0c1eb90f9985b151e9085a38d0b/datafixerupper-10.0.21.jar:/modules-2/files-2.1/com.mojang/jtracy/1.0.37/a3fb649b2e2b2288d2978f0b0bc3d83f62809d1e/jtracy-1.0.37.jar:/modules-2/files-2.1/com.mojang/jtracy/1.0.37/a99fcb63b72fb623534d0ceb71bda4bed9b55b4c/jtracy-1.0.37-natives-macos.jar:/modules-2/files-2.1/com.mojang/jtracy/1.0.37/c8e971da5150aa33283c5bf4097154c0da554fb9/jtracy-1.0.37-natives-macos-arm64.jar:/modules-2/files-2.1/com.mojang/logging/1.7.12/351cea64a5233361327d8d54c44277041beed97f/logging-1.7.12.jar:/modules-2/files-2.1/com.mojang/patchy/2.2.10/da05971b07cbb379d002cf7eaec6a2048211fefc/patchy-2.2.10.jar:/modules-2/files-2.1/com.mojang/text2speech/1.19.12/2e517a75c79d34d32de2b5d68422150836c2133e/text2speech-1.19.12.jar:/modules-2/files-2.1/commons-codec/commons-codec/1.22.0/6b3eb4beb7058c2a638f5f17bcb388649fd339dd/commons-codec-1.22.0.jar:/modules-2/files-2.1/commons-io/commons-io/2.20.0/36f3474daec2849c149e877614e7f979b2082cd2/commons-io-2.20.0.jar:/modules-2/files-2.1/io.netty/netty-buffer/4.2.15.Final/2beb620803bf871cda2dd5d46b8f831e8015dd34/netty-buffer-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-codec-base/4.2.15.Final/e97149fdd5fb04858efa90e314651c8d700dc68b/netty-codec-base-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-codec-compression/4.2.15.Final/89fc4a20b7ae6af974304b1695405e62c4f9b16d/netty-codec-compression-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-codec-http/4.2.15.Final/e611826aa054371bb9a17f27bdb05755a4cac5f0/netty-codec-http-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-common/4.2.15.Final/7222492c1af9c2d4d78d521eea340a619e242fda/netty-common-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-handler/4.2.15.Final/d5344afd1148e3b9927a74be019605ebb0937a93/netty-handler-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-resolver/4.2.15.Final/b961a16d379b508b473e064ba06842bba280f4e3/netty-resolver-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-transport-classes-epoll/4.2.15.Final/44bafba9c9993800e955b365bba4981326f3f3b1/netty-transport-classes-epoll-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-transport-classes-kqueue/4.2.15.Final/f248656bb907607c5a41c7b61fd918a97db79250/netty-transport-classes-kqueue-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-transport-native-unix-common/4.2.15.Final/efb6943b4de9e0226a5ac35330f232605424af02/netty-transport-native-unix-common-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-transport/4.2.15.Final/a000c3a6196ee40207b73ac619dcb339409dd62f/netty-transport-4.2.15.Final.jar:/modules-2/files-2.1/it.unimi.dsi/fastutil/8.5.18/a6cff377eecc19c2037bf31568a6d7106b50ba1f/fastutil-8.5.18.jar:/modules-2/files-2.1/net.java.dev.jna/jna-platform/5.17.0/a4934c44d25a9d8c2ddf4203affd20330cb3426f/jna-platform-5.17.0.jar:/modules-2/files-2.1/net.java.dev.jna/jna/5.17.0/33d12735bef894440780fce64f9758d420c7bae2/jna-5.17.0.jar:/modules-2/files-2.1/org.apache.commons/commons-compress/1.28.0/e482f2c7a88dac3c497e96aa420b6a769f59c8d7/commons-compress-1.28.0.jar:/modules-2/files-2.1/org.apache.commons/commons-lang3/3.20.0/65897b3e5731220962e659e001904af3c3cbeba9/commons-lang3-3.20.0.jar:/modules-2/files-2.1/org.apache.logging.log4j/log4j-api/2.26.0/ad52af0ecf054a7e3f275a2e180ee06d9c490951/log4j-api-2.26.0.jar:/modules-2/files-2.1/org.apache.logging.log4j/log4j-core/2.26.0/d267ca60b27ddb075e0b4e75e7875859717bf85f/log4j-core-2.26.0.jar:/modules-2/files-2.1/org.apache.logging.log4j/log4j-slf4j2-impl/2.26.0/668c0f0e813d83f00a7182533aa658ec7e7a0a0d/log4j-slf4j2-impl-2.26.0.jar:/modules-2/files-2.1/org.jcraft/jorbis/0.0.17/8872d22b293e8f5d7d56ff92be966e6dc28ebdc6/jorbis-0.0.17.jar:/modules-2/files-2.1/org.joml/joml/1.10.8/fc0a71dad90a2cf41d82a76156a0e700af8e4f8d/joml-1.10.8.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-freetype/3.4.1/caa75a37e857efc9b0686e434d708d6420c5b6ea/lwjgl-freetype-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-freetype/3.4.1/61cb2d85e1838bca1a0b664f54e818bc68deb2ef/lwjgl-freetype-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-freetype/3.4.1/cce5a86b4a7d17817fe8ea0296302a4353acf2d5/lwjgl-freetype-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-glfw/3.4.1/a782b1ddd175c9107bf300fd92920579ea65e2a4/lwjgl-glfw-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-glfw/3.4.1/3c8538942f58377d59cd7be2dc164ba71a53868a/lwjgl-glfw-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-glfw/3.4.1/ef1f8efca5a60ba3512bc4982b88e446ecc43378/lwjgl-glfw-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-jemalloc/3.4.1/16b663092854fc6adfe0a941e61cae2bb2e437b6/lwjgl-jemalloc-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-jemalloc/3.4.1/581b4d542e841015ce3265eed0495e2cde15b1d0/lwjgl-jemalloc-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-jemalloc/3.4.1/dcd7e3f9a2ca386e8c5b8f508a8511d9dd63bab0/lwjgl-jemalloc-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-openal/3.4.1/8508bd60589de0539aa465b78fcf838efd07ae9a/lwjgl-openal-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-openal/3.4.1/a4dc57b7b0880d3fffb4d0b61649f45712bccc93/lwjgl-openal-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-openal/3.4.1/1c709a38c4a0e86aae96db7b8c78432307f2322a/lwjgl-openal-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-opengl/3.4.1/830412cab823c029cda6b9729f9d2ed36cf79959/lwjgl-opengl-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-opengl/3.4.1/ba18fc6012b88494ee893506934b92b01c4ef14b/lwjgl-opengl-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-opengl/3.4.1/35b5550058de4960525f465243bd01805f04fd8b/lwjgl-opengl-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-shaderc/3.4.1/5c02c88f0d879529014c78463b76f43fdecfd272/lwjgl-shaderc-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-shaderc/3.4.1/1d7bbdba70cf29c42978f6c0c1bdef945b922072/lwjgl-shaderc-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-shaderc/3.4.1/48aa2727e8616154d399d4dab0d8e8479741fa4f/lwjgl-shaderc-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-spvc/3.4.1/188553592e97b5ab2dba54a1b403ee80b48dad4c/lwjgl-spvc-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-spvc/3.4.1/2eeebd6d5bae966bfffda9747eba744cfe839ae1/lwjgl-spvc-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-spvc/3.4.1/a4f66638d28129eba0babd8fdc4385427a5ea83e/lwjgl-spvc-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-stb/3.4.1/f077c3dafc31924fbe8acb0b913f08977ba27f8e/lwjgl-stb-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-stb/3.4.1/fd1ea36b717b0832babca09324a6cfc43906e2aa/lwjgl-stb-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-stb/3.4.1/da554e04f819f09b0f3473bd931628ebf557965e/lwjgl-stb-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-tinyfd/3.4.1/562697d40dbd2ed0424bf24dcf65d51170f81adf/lwjgl-tinyfd-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-tinyfd/3.4.1/211ae9e8720e8f10f2ce85a118fa7bd5ee71584b/lwjgl-tinyfd-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-tinyfd/3.4.1/7bcde70f6164b2e72f84cac5257b7e9877b88510/lwjgl-tinyfd-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vma/3.4.1/2c54ce10154feb1ede4d23c5947438cdbfdcc003/lwjgl-vma-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vma/3.4.1/a130a9e4f96c83063f749e1dcc7065e0dffb3936/lwjgl-vma-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vma/3.4.1/9451dc1067716bc4125cdba65a7096e465f4d0e5/lwjgl-vma-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vulkan/3.4.1/d0601fdc38890755e5638048c14cc0f7b990964b/lwjgl-vulkan-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vulkan/3.4.1/140c7fd3e0fdbcc625c92be9328301c555035905/lwjgl-vulkan-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vulkan/3.4.1/2c933bf617cb8a174af26585efda4778b59e6d44/lwjgl-vulkan-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl/3.4.1/129e06a04f93992cb2a45172435b21fc4b60dd7d/lwjgl-3.4.1-unsafe.jar:/modules-2/files-2.1/org.lwjgl/lwjgl/3.4.1/b034fd9a67cb8646c01af7efcefcb93be835542b/lwjgl-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl/3.4.1/b4cbdef4818abd714ee66985344c0949fd1cd6d6/lwjgl-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.slf4j/slf4j-api/2.0.17/d9e58ac9c7779ba3bf8142aff6c830617a7fe60f/slf4j-api-2.0.17.jar:/modules-2/files-2.1/org.ow2.asm/asm-util/9.5/64b5a1fc8c1b15ed2efd6a063e976bc8d3dc5ffe/asm-util-9.5.jar:/modules-2/files-2.1/org.ow2.asm/asm-analysis/9.5/490bacc77de7cbc0be1a30bb3471072d705be4a4/asm-analysis-9.5.jar:/modules-2/files-2.1/org.ow2.asm/asm-tree/9.5/fd33c8b6373abaa675be407082fdfda35021254a/asm-tree-9.5.jar:/modules-2/files-2.1/org.ow2.asm/asm/9.5/dc6ea1875f4d64fbc85e1691c95b96a3d8569c90/asm-9.5.jar:/modules-2/files-2.1/net.neoforged/srgutils/1.0.10/abb471237b33b19f040ada00bfbad1ec45b949b6/srgutils-1.0.10.jar:/modules-2/files-2.1/io.netty/netty-transport-native-kqueue/4.2.15.Final/8ea0ef3eb716d821332e4b4926825a4b7c1a6d38/netty-transport-native-kqueue-4.2.15.Final-osx-aarch_64.jar:/modules-2/files-2.1/io.netty/netty-transport-native-kqueue/4.2.15.Final/4245380831515fb4eca18d32477a27fbb8f7b8f4/netty-transport-native-kqueue-4.2.15.Final-osx-x86_64.jar:/build/classes/java/main:/build/resources/main org.openjdk.jmh.Main .*net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.buildAllDefaultsIndex -p itemCount=100000 -p implementation=baked-substring-index -f 1 -wi 1 -i 4 -w 100ms -r 100ms -rf json -rff /build/reports/jmh/adaptive-jmh-passes/pass-01-group-003.json -o /build/reports/jmh/adaptive-jmh-passes/pass-01-group-003.txt -foe true -prof gc # JMH version: 1.37 # VM version: JDK 25, OpenJDK 64-Bit Server VM, 25+36-b176.4 # VM invoker: java # VM options: # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 1 iterations, 100 ms each # Measurement: 4 iterations, 100 ms each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.buildAllDefaultsIndex # Parameters: (implementation = baked-substring-index, itemCount = 100000) # Run progress: 0.00% complete, ETA 00:00:00 # Fork: 1 of 1 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::objectFieldOffset has been called by org.openjdk.jmh.util.Utils (file:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar) WARNING: Please consider reporting this to the maintainers of class org.openjdk.jmh.util.Utils WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release # Warmup Iteration 1: 658.027 ms/op Iteration 1: 366.363 ms/op gc.alloc.rate: 892.448 MB/sec gc.alloc.rate.norm: 343061536.000 B/op gc.count: 5.000 counts gc.time: 15.000 ms Iteration 2: 387.998 ms/op gc.alloc.rate: 842.864 MB/sec gc.alloc.rate.norm: 343061440.000 B/op gc.count: ≈ 0 counts Iteration 3: 379.713 ms/op gc.alloc.rate: 861.188 MB/sec gc.alloc.rate.norm: 343061496.000 B/op gc.count: 3.000 counts gc.time: 19.000 ms Iteration 4: 366.622 ms/op gc.alloc.rate: 891.886 MB/sec gc.alloc.rate.norm: 343061528.000 B/op gc.count: 2.000 counts gc.time: 9.000 ms Result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.buildAllDefaultsIndex": 375.174 ±(99.9%) 68.369 ms/op [Average] (min, avg, max) = (366.363, 375.174, 387.998), stdev = 10.580 CI (99.9%): [306.805, 443.543] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.buildAllDefaultsIndex:gc.alloc.rate": 872.096 ±(99.9%) 157.376 MB/sec [Average] (min, avg, max) = (842.864, 872.096, 892.448), stdev = 24.354 CI (99.9%): [714.720, 1029.473] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.buildAllDefaultsIndex:gc.alloc.rate.norm": 343061500.000 ±(99.9%) 281.573 B/op [Average] (min, avg, max) = (343061440.000, 343061500.000, 343061536.000), stdev = 43.574 CI (99.9%): [343061218.427, 343061781.573] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.buildAllDefaultsIndex:gc.count": 10.000 ±(99.9%) 0.001 counts [Sum] (min, avg, max) = (≈ 0, 2.500, 5.000), stdev = 2.082 CI (99.9%): [10.000, 10.000] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.buildAllDefaultsIndex:gc.time": 43.000 ±(99.9%) 0.001 ms [Sum] (min, avg, max) = (≈ 0, 10.750, 19.000), stdev = 8.261 CI (99.9%): [43.000, 43.000] (assumes normal distribution) # Run complete. Total time: 00:00:02 REMEMBER: The numbers below are just data. To gain reusable insights, you need to follow up on why the numbers are the way they are. Use profilers (see -prof, -lprof), design factorial experiments, perform baseline and negative tests that provide experimental control, make sure the benchmarking environment is safe on JVM/OS/HW level, ask for reviews from the domain experts. Do not assume the numbers tell you what you want them to tell. NOTE: Current JVM experimentally supports Compiler Blackholes, and they are in use. Please exercise extra caution when trusting the results, look into the generated code to check the benchmark still works, and factor in a small probability of new VM bugs. Additionally, while comparisons between different JVMs are already problematic, the performance difference caused by different Blackhole modes can be very significant. Please make sure you use the consistent Blackhole mode for comparisons. Benchmark (implementation) (itemCount) Mode Cnt Score Error Units LargeCatalogSearchBenchmark.buildAllDefaultsIndex baked-substring-index 100000 avgt 4 375.174 ± 68.369 ms/op LargeCatalogSearchBenchmark.buildAllDefaultsIndex:gc.alloc.rate baked-substring-index 100000 avgt 4 872.096 ± 157.376 MB/sec LargeCatalogSearchBenchmark.buildAllDefaultsIndex:gc.alloc.rate.norm baked-substring-index 100000 avgt 4 343061500.000 ± 281.573 B/op LargeCatalogSearchBenchmark.buildAllDefaultsIndex:gc.count baked-substring-index 100000 avgt 4 10.000 counts LargeCatalogSearchBenchmark.buildAllDefaultsIndex:gc.time baked-substring-index 100000 avgt 4 43.000 ms Benchmark result is saved to /build/reports/jmh/adaptive-jmh-passes/pass-01-group-003.json # Adaptive pass 1, group 4 # Command: java -cp /build/classes/java/benchmark:/build/resources/benchmark:/build/moddev/artifacts/vanilla-26.2-2.jar:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar:/modules-2/files-2.1/com.abahgat/suffixtree/2.0.0/ffe2c29796add2624d2e0b9f33e72421eb5c5ea5/suffixtree-2.0.0.jar:/modules-2/files-2.1/net.mezzdev/suffixtree/1.3.0/1a1b87af70a1631ff6d6c9d49c63564aadecb176/suffixtree-1.3.0.jar:/modules-2/files-2.1/net.mezzdev/baked-substring-index/0.1.0/4f9fbd9eb54fdb1b8ec40a83297f4e8f4479eb7c/baked-substring-index-0.1.0.jar:/modules-2/files-2.1/net.mezzdev/baked-suffix-array-index/0.1.0/cd5e5ffbcee030d149e7a5a70e151a06158bd643/baked-suffix-array-index-0.1.0.jar:/modules-2/files-2.1/net.neoforged/mergetool/2.0.7/793b18456e92c4a7f66d9b5d8bf7a9c1c7a20b20/mergetool-2.0.7-api.jar:/modules-2/files-2.1/net.sf.jopt-simple/jopt-simple/5.0.4/4fdac2fbe92dfad86aa6e9301736f6b4342a3f5c/jopt-simple-5.0.4.jar:/modules-2/files-2.1/org.apache.commons/commons-math3/3.6.1/e4ba98f1d4b3c80ec46392f25e094a6a2e58fcbf/commons-math3-3.6.1.jar:/modules-2/files-2.1/com.google.code.findbugs/jsr305/3.0.2/25ea2e8b0c338a877313bd4672d3fe056ea78f0d/jsr305-3.0.2.jar:/modules-2/files-2.1/org.jspecify/jspecify/1.0.0/7425a601c1c7ec76645a78d22b8c6a627edee507/jspecify-1.0.0.jar:/modules-2/files-2.1/org.jetbrains/annotations/26.0.2-1/c7ce3cdeda3d18909368dfe5977332dfad326c6d/annotations-26.0.2-1.jar:/modules-2/files-2.1/ca.weblite/java-objc-bridge/1.1/1227f9e0666314f9de41477e3ec277e542ed7f7b/java-objc-bridge-1.1.jar:/modules-2/files-2.1/at.yawk.lz4/lz4-java/1.10.1/f541d7f910fe3d76f38f799c507c48cc81b12ecb/lz4-java-1.10.1.jar:/modules-2/files-2.1/com.azure/azure-json/1.4.0/fcc1d354dbc3e0300e5276b1bf124d0247799cd8/azure-json-1.4.0.jar:/modules-2/files-2.1/com.github.oshi/oshi-core/6.9.0/3224870731860cfcd7744581a05b559e94291e7/oshi-core-6.9.0.jar:/modules-2/files-2.1/com.google.code.gson/gson/2.14.0/efc0e34ede4e3204eaefb84a00e55e8c86634382/gson-2.14.0.jar:/modules-2/files-2.1/com.google.guava/failureaccess/1.0.3/aeaffd00d57023a2c947393ed251f0354f0985fc/failureaccess-1.0.3.jar:/modules-2/files-2.1/com.google.guava/guava/33.6.0-jre/c376b13067cc99a5774403530953f7b05a91e218/guava-33.6.0-jre.jar:/modules-2/files-2.1/com.ibm.icu/icu4j/78.3/6a851a53bb1f25689fc418dcc8935b0d93580adf/icu4j-78.3.jar:/modules-2/files-2.1/com.microsoft.azure/msal4j/1.24.1/c233f2d047b9755f7041adf21a858c680e4c9242/msal4j-1.24.1.jar:/modules-2/files-2.1/com.mojang/authlib/9.0.75/d61056a234d5e4b272e09d59b0713f80d6c0b6af/authlib-9.0.75.jar:/modules-2/files-2.1/com.mojang/blocklist/1.0.10/5c685c5ffa94c4cd39496c7184c1d122e515ecef/blocklist-1.0.10.jar:/modules-2/files-2.1/com.mojang/brigadier/1.3.10/d15b53a14cf20fdcaa98f731af5dda654452c010/brigadier-1.3.10.jar:/modules-2/files-2.1/com.mojang/datafixerupper/10.0.21/b6b2ae770c02e0c1eb90f9985b151e9085a38d0b/datafixerupper-10.0.21.jar:/modules-2/files-2.1/com.mojang/jtracy/1.0.37/a3fb649b2e2b2288d2978f0b0bc3d83f62809d1e/jtracy-1.0.37.jar:/modules-2/files-2.1/com.mojang/jtracy/1.0.37/a99fcb63b72fb623534d0ceb71bda4bed9b55b4c/jtracy-1.0.37-natives-macos.jar:/modules-2/files-2.1/com.mojang/jtracy/1.0.37/c8e971da5150aa33283c5bf4097154c0da554fb9/jtracy-1.0.37-natives-macos-arm64.jar:/modules-2/files-2.1/com.mojang/logging/1.7.12/351cea64a5233361327d8d54c44277041beed97f/logging-1.7.12.jar:/modules-2/files-2.1/com.mojang/patchy/2.2.10/da05971b07cbb379d002cf7eaec6a2048211fefc/patchy-2.2.10.jar:/modules-2/files-2.1/com.mojang/text2speech/1.19.12/2e517a75c79d34d32de2b5d68422150836c2133e/text2speech-1.19.12.jar:/modules-2/files-2.1/commons-codec/commons-codec/1.22.0/6b3eb4beb7058c2a638f5f17bcb388649fd339dd/commons-codec-1.22.0.jar:/modules-2/files-2.1/commons-io/commons-io/2.20.0/36f3474daec2849c149e877614e7f979b2082cd2/commons-io-2.20.0.jar:/modules-2/files-2.1/io.netty/netty-buffer/4.2.15.Final/2beb620803bf871cda2dd5d46b8f831e8015dd34/netty-buffer-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-codec-base/4.2.15.Final/e97149fdd5fb04858efa90e314651c8d700dc68b/netty-codec-base-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-codec-compression/4.2.15.Final/89fc4a20b7ae6af974304b1695405e62c4f9b16d/netty-codec-compression-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-codec-http/4.2.15.Final/e611826aa054371bb9a17f27bdb05755a4cac5f0/netty-codec-http-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-common/4.2.15.Final/7222492c1af9c2d4d78d521eea340a619e242fda/netty-common-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-handler/4.2.15.Final/d5344afd1148e3b9927a74be019605ebb0937a93/netty-handler-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-resolver/4.2.15.Final/b961a16d379b508b473e064ba06842bba280f4e3/netty-resolver-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-transport-classes-epoll/4.2.15.Final/44bafba9c9993800e955b365bba4981326f3f3b1/netty-transport-classes-epoll-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-transport-classes-kqueue/4.2.15.Final/f248656bb907607c5a41c7b61fd918a97db79250/netty-transport-classes-kqueue-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-transport-native-unix-common/4.2.15.Final/efb6943b4de9e0226a5ac35330f232605424af02/netty-transport-native-unix-common-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-transport/4.2.15.Final/a000c3a6196ee40207b73ac619dcb339409dd62f/netty-transport-4.2.15.Final.jar:/modules-2/files-2.1/it.unimi.dsi/fastutil/8.5.18/a6cff377eecc19c2037bf31568a6d7106b50ba1f/fastutil-8.5.18.jar:/modules-2/files-2.1/net.java.dev.jna/jna-platform/5.17.0/a4934c44d25a9d8c2ddf4203affd20330cb3426f/jna-platform-5.17.0.jar:/modules-2/files-2.1/net.java.dev.jna/jna/5.17.0/33d12735bef894440780fce64f9758d420c7bae2/jna-5.17.0.jar:/modules-2/files-2.1/org.apache.commons/commons-compress/1.28.0/e482f2c7a88dac3c497e96aa420b6a769f59c8d7/commons-compress-1.28.0.jar:/modules-2/files-2.1/org.apache.commons/commons-lang3/3.20.0/65897b3e5731220962e659e001904af3c3cbeba9/commons-lang3-3.20.0.jar:/modules-2/files-2.1/org.apache.logging.log4j/log4j-api/2.26.0/ad52af0ecf054a7e3f275a2e180ee06d9c490951/log4j-api-2.26.0.jar:/modules-2/files-2.1/org.apache.logging.log4j/log4j-core/2.26.0/d267ca60b27ddb075e0b4e75e7875859717bf85f/log4j-core-2.26.0.jar:/modules-2/files-2.1/org.apache.logging.log4j/log4j-slf4j2-impl/2.26.0/668c0f0e813d83f00a7182533aa658ec7e7a0a0d/log4j-slf4j2-impl-2.26.0.jar:/modules-2/files-2.1/org.jcraft/jorbis/0.0.17/8872d22b293e8f5d7d56ff92be966e6dc28ebdc6/jorbis-0.0.17.jar:/modules-2/files-2.1/org.joml/joml/1.10.8/fc0a71dad90a2cf41d82a76156a0e700af8e4f8d/joml-1.10.8.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-freetype/3.4.1/caa75a37e857efc9b0686e434d708d6420c5b6ea/lwjgl-freetype-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-freetype/3.4.1/61cb2d85e1838bca1a0b664f54e818bc68deb2ef/lwjgl-freetype-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-freetype/3.4.1/cce5a86b4a7d17817fe8ea0296302a4353acf2d5/lwjgl-freetype-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-glfw/3.4.1/a782b1ddd175c9107bf300fd92920579ea65e2a4/lwjgl-glfw-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-glfw/3.4.1/3c8538942f58377d59cd7be2dc164ba71a53868a/lwjgl-glfw-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-glfw/3.4.1/ef1f8efca5a60ba3512bc4982b88e446ecc43378/lwjgl-glfw-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-jemalloc/3.4.1/16b663092854fc6adfe0a941e61cae2bb2e437b6/lwjgl-jemalloc-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-jemalloc/3.4.1/581b4d542e841015ce3265eed0495e2cde15b1d0/lwjgl-jemalloc-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-jemalloc/3.4.1/dcd7e3f9a2ca386e8c5b8f508a8511d9dd63bab0/lwjgl-jemalloc-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-openal/3.4.1/8508bd60589de0539aa465b78fcf838efd07ae9a/lwjgl-openal-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-openal/3.4.1/a4dc57b7b0880d3fffb4d0b61649f45712bccc93/lwjgl-openal-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-openal/3.4.1/1c709a38c4a0e86aae96db7b8c78432307f2322a/lwjgl-openal-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-opengl/3.4.1/830412cab823c029cda6b9729f9d2ed36cf79959/lwjgl-opengl-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-opengl/3.4.1/ba18fc6012b88494ee893506934b92b01c4ef14b/lwjgl-opengl-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-opengl/3.4.1/35b5550058de4960525f465243bd01805f04fd8b/lwjgl-opengl-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-shaderc/3.4.1/5c02c88f0d879529014c78463b76f43fdecfd272/lwjgl-shaderc-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-shaderc/3.4.1/1d7bbdba70cf29c42978f6c0c1bdef945b922072/lwjgl-shaderc-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-shaderc/3.4.1/48aa2727e8616154d399d4dab0d8e8479741fa4f/lwjgl-shaderc-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-spvc/3.4.1/188553592e97b5ab2dba54a1b403ee80b48dad4c/lwjgl-spvc-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-spvc/3.4.1/2eeebd6d5bae966bfffda9747eba744cfe839ae1/lwjgl-spvc-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-spvc/3.4.1/a4f66638d28129eba0babd8fdc4385427a5ea83e/lwjgl-spvc-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-stb/3.4.1/f077c3dafc31924fbe8acb0b913f08977ba27f8e/lwjgl-stb-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-stb/3.4.1/fd1ea36b717b0832babca09324a6cfc43906e2aa/lwjgl-stb-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-stb/3.4.1/da554e04f819f09b0f3473bd931628ebf557965e/lwjgl-stb-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-tinyfd/3.4.1/562697d40dbd2ed0424bf24dcf65d51170f81adf/lwjgl-tinyfd-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-tinyfd/3.4.1/211ae9e8720e8f10f2ce85a118fa7bd5ee71584b/lwjgl-tinyfd-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-tinyfd/3.4.1/7bcde70f6164b2e72f84cac5257b7e9877b88510/lwjgl-tinyfd-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vma/3.4.1/2c54ce10154feb1ede4d23c5947438cdbfdcc003/lwjgl-vma-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vma/3.4.1/a130a9e4f96c83063f749e1dcc7065e0dffb3936/lwjgl-vma-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vma/3.4.1/9451dc1067716bc4125cdba65a7096e465f4d0e5/lwjgl-vma-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vulkan/3.4.1/d0601fdc38890755e5638048c14cc0f7b990964b/lwjgl-vulkan-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vulkan/3.4.1/140c7fd3e0fdbcc625c92be9328301c555035905/lwjgl-vulkan-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vulkan/3.4.1/2c933bf617cb8a174af26585efda4778b59e6d44/lwjgl-vulkan-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl/3.4.1/129e06a04f93992cb2a45172435b21fc4b60dd7d/lwjgl-3.4.1-unsafe.jar:/modules-2/files-2.1/org.lwjgl/lwjgl/3.4.1/b034fd9a67cb8646c01af7efcefcb93be835542b/lwjgl-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl/3.4.1/b4cbdef4818abd714ee66985344c0949fd1cd6d6/lwjgl-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.slf4j/slf4j-api/2.0.17/d9e58ac9c7779ba3bf8142aff6c830617a7fe60f/slf4j-api-2.0.17.jar:/modules-2/files-2.1/org.ow2.asm/asm-util/9.5/64b5a1fc8c1b15ed2efd6a063e976bc8d3dc5ffe/asm-util-9.5.jar:/modules-2/files-2.1/org.ow2.asm/asm-analysis/9.5/490bacc77de7cbc0be1a30bb3471072d705be4a4/asm-analysis-9.5.jar:/modules-2/files-2.1/org.ow2.asm/asm-tree/9.5/fd33c8b6373abaa675be407082fdfda35021254a/asm-tree-9.5.jar:/modules-2/files-2.1/org.ow2.asm/asm/9.5/dc6ea1875f4d64fbc85e1691c95b96a3d8569c90/asm-9.5.jar:/modules-2/files-2.1/net.neoforged/srgutils/1.0.10/abb471237b33b19f040ada00bfbad1ec45b949b6/srgutils-1.0.10.jar:/modules-2/files-2.1/io.netty/netty-transport-native-kqueue/4.2.15.Final/8ea0ef3eb716d821332e4b4926825a4b7c1a6d38/netty-transport-native-kqueue-4.2.15.Final-osx-aarch_64.jar:/modules-2/files-2.1/io.netty/netty-transport-native-kqueue/4.2.15.Final/4245380831515fb4eca18d32477a27fbb8f7b8f4/netty-transport-native-kqueue-4.2.15.Final-osx-x86_64.jar:/build/classes/java/main:/build/resources/main org.openjdk.jmh.Main .*net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.buildAllDefaultsIndex -p itemCount=100000 -p implementation=baked-suffix-array-index -f 1 -wi 1 -i 4 -w 100ms -r 100ms -rf json -rff /build/reports/jmh/adaptive-jmh-passes/pass-01-group-004.json -o /build/reports/jmh/adaptive-jmh-passes/pass-01-group-004.txt -foe true -prof gc # JMH version: 1.37 # VM version: JDK 25, OpenJDK 64-Bit Server VM, 25+36-b176.4 # VM invoker: java # VM options: # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 1 iterations, 100 ms each # Measurement: 4 iterations, 100 ms each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.buildAllDefaultsIndex # Parameters: (implementation = baked-suffix-array-index, itemCount = 100000) # Run progress: 0.00% complete, ETA 00:00:00 # Fork: 1 of 1 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::objectFieldOffset has been called by org.openjdk.jmh.util.Utils (file:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar) WARNING: Please consider reporting this to the maintainers of class org.openjdk.jmh.util.Utils WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release # Warmup Iteration 1: 2265.946 ms/op Iteration 1: 2661.571 ms/op gc.alloc.rate: 81.770 MB/sec gc.alloc.rate.norm: 228226528.000 B/op gc.count: ≈ 0 counts Iteration 2: 2366.321 ms/op gc.alloc.rate: 91.972 MB/sec gc.alloc.rate.norm: 228226512.000 B/op gc.count: ≈ 0 counts Iteration 3: 2386.622 ms/op gc.alloc.rate: 91.191 MB/sec gc.alloc.rate.norm: 228226536.000 B/op gc.count: 1.000 counts gc.time: 49.000 ms Iteration 4: 2344.327 ms/op gc.alloc.rate: 92.835 MB/sec gc.alloc.rate.norm: 228226480.000 B/op gc.count: ≈ 0 counts Result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.buildAllDefaultsIndex": 2439.710 ±(99.9%) 962.269 ms/op [Average] (min, avg, max) = (2344.327, 2439.710, 2661.571), stdev = 148.912 CI (99.9%): [1477.441, 3401.979] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.buildAllDefaultsIndex:gc.alloc.rate": 89.442 ±(99.9%) 33.336 MB/sec [Average] (min, avg, max) = (81.770, 89.442, 92.835), stdev = 5.159 CI (99.9%): [56.106, 122.777] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.buildAllDefaultsIndex:gc.alloc.rate.norm": 228226514.000 ±(99.9%) 160.035 B/op [Average] (min, avg, max) = (228226480.000, 228226514.000, 228226536.000), stdev = 24.766 CI (99.9%): [228226353.965, 228226674.035] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.buildAllDefaultsIndex:gc.count": 1.000 ±(99.9%) 0.001 counts [Sum] (min, avg, max) = (≈ 0, 0.250, 1.000), stdev = 0.500 CI (99.9%): [1.000, 1.000] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.buildAllDefaultsIndex:gc.time": 49.000 ±(99.9%) 0.001 ms [Sum] (min, avg, max) = (≈ 0, 12.250, 49.000), stdev = 24.500 CI (99.9%): [49.000, 49.000] (assumes normal distribution) # Run complete. Total time: 00:00:12 REMEMBER: The numbers below are just data. To gain reusable insights, you need to follow up on why the numbers are the way they are. Use profilers (see -prof, -lprof), design factorial experiments, perform baseline and negative tests that provide experimental control, make sure the benchmarking environment is safe on JVM/OS/HW level, ask for reviews from the domain experts. Do not assume the numbers tell you what you want them to tell. NOTE: Current JVM experimentally supports Compiler Blackholes, and they are in use. Please exercise extra caution when trusting the results, look into the generated code to check the benchmark still works, and factor in a small probability of new VM bugs. Additionally, while comparisons between different JVMs are already problematic, the performance difference caused by different Blackhole modes can be very significant. Please make sure you use the consistent Blackhole mode for comparisons. Benchmark (implementation) (itemCount) Mode Cnt Score Error Units LargeCatalogSearchBenchmark.buildAllDefaultsIndex baked-suffix-array-index 100000 avgt 4 2439.710 ± 962.269 ms/op LargeCatalogSearchBenchmark.buildAllDefaultsIndex:gc.alloc.rate baked-suffix-array-index 100000 avgt 4 89.442 ± 33.336 MB/sec LargeCatalogSearchBenchmark.buildAllDefaultsIndex:gc.alloc.rate.norm baked-suffix-array-index 100000 avgt 4 228226514.000 ± 160.035 B/op LargeCatalogSearchBenchmark.buildAllDefaultsIndex:gc.count baked-suffix-array-index 100000 avgt 4 1.000 counts LargeCatalogSearchBenchmark.buildAllDefaultsIndex:gc.time baked-suffix-array-index 100000 avgt 4 49.000 ms Benchmark result is saved to /build/reports/jmh/adaptive-jmh-passes/pass-01-group-004.json # Adaptive pass 1, group 5 # Command: java -cp /build/classes/java/benchmark:/build/resources/benchmark:/build/moddev/artifacts/vanilla-26.2-2.jar:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar:/modules-2/files-2.1/com.abahgat/suffixtree/2.0.0/ffe2c29796add2624d2e0b9f33e72421eb5c5ea5/suffixtree-2.0.0.jar:/modules-2/files-2.1/net.mezzdev/suffixtree/1.3.0/1a1b87af70a1631ff6d6c9d49c63564aadecb176/suffixtree-1.3.0.jar:/modules-2/files-2.1/net.mezzdev/baked-substring-index/0.1.0/4f9fbd9eb54fdb1b8ec40a83297f4e8f4479eb7c/baked-substring-index-0.1.0.jar:/modules-2/files-2.1/net.mezzdev/baked-suffix-array-index/0.1.0/cd5e5ffbcee030d149e7a5a70e151a06158bd643/baked-suffix-array-index-0.1.0.jar:/modules-2/files-2.1/net.neoforged/mergetool/2.0.7/793b18456e92c4a7f66d9b5d8bf7a9c1c7a20b20/mergetool-2.0.7-api.jar:/modules-2/files-2.1/net.sf.jopt-simple/jopt-simple/5.0.4/4fdac2fbe92dfad86aa6e9301736f6b4342a3f5c/jopt-simple-5.0.4.jar:/modules-2/files-2.1/org.apache.commons/commons-math3/3.6.1/e4ba98f1d4b3c80ec46392f25e094a6a2e58fcbf/commons-math3-3.6.1.jar:/modules-2/files-2.1/com.google.code.findbugs/jsr305/3.0.2/25ea2e8b0c338a877313bd4672d3fe056ea78f0d/jsr305-3.0.2.jar:/modules-2/files-2.1/org.jspecify/jspecify/1.0.0/7425a601c1c7ec76645a78d22b8c6a627edee507/jspecify-1.0.0.jar:/modules-2/files-2.1/org.jetbrains/annotations/26.0.2-1/c7ce3cdeda3d18909368dfe5977332dfad326c6d/annotations-26.0.2-1.jar:/modules-2/files-2.1/ca.weblite/java-objc-bridge/1.1/1227f9e0666314f9de41477e3ec277e542ed7f7b/java-objc-bridge-1.1.jar:/modules-2/files-2.1/at.yawk.lz4/lz4-java/1.10.1/f541d7f910fe3d76f38f799c507c48cc81b12ecb/lz4-java-1.10.1.jar:/modules-2/files-2.1/com.azure/azure-json/1.4.0/fcc1d354dbc3e0300e5276b1bf124d0247799cd8/azure-json-1.4.0.jar:/modules-2/files-2.1/com.github.oshi/oshi-core/6.9.0/3224870731860cfcd7744581a05b559e94291e7/oshi-core-6.9.0.jar:/modules-2/files-2.1/com.google.code.gson/gson/2.14.0/efc0e34ede4e3204eaefb84a00e55e8c86634382/gson-2.14.0.jar:/modules-2/files-2.1/com.google.guava/failureaccess/1.0.3/aeaffd00d57023a2c947393ed251f0354f0985fc/failureaccess-1.0.3.jar:/modules-2/files-2.1/com.google.guava/guava/33.6.0-jre/c376b13067cc99a5774403530953f7b05a91e218/guava-33.6.0-jre.jar:/modules-2/files-2.1/com.ibm.icu/icu4j/78.3/6a851a53bb1f25689fc418dcc8935b0d93580adf/icu4j-78.3.jar:/modules-2/files-2.1/com.microsoft.azure/msal4j/1.24.1/c233f2d047b9755f7041adf21a858c680e4c9242/msal4j-1.24.1.jar:/modules-2/files-2.1/com.mojang/authlib/9.0.75/d61056a234d5e4b272e09d59b0713f80d6c0b6af/authlib-9.0.75.jar:/modules-2/files-2.1/com.mojang/blocklist/1.0.10/5c685c5ffa94c4cd39496c7184c1d122e515ecef/blocklist-1.0.10.jar:/modules-2/files-2.1/com.mojang/brigadier/1.3.10/d15b53a14cf20fdcaa98f731af5dda654452c010/brigadier-1.3.10.jar:/modules-2/files-2.1/com.mojang/datafixerupper/10.0.21/b6b2ae770c02e0c1eb90f9985b151e9085a38d0b/datafixerupper-10.0.21.jar:/modules-2/files-2.1/com.mojang/jtracy/1.0.37/a3fb649b2e2b2288d2978f0b0bc3d83f62809d1e/jtracy-1.0.37.jar:/modules-2/files-2.1/com.mojang/jtracy/1.0.37/a99fcb63b72fb623534d0ceb71bda4bed9b55b4c/jtracy-1.0.37-natives-macos.jar:/modules-2/files-2.1/com.mojang/jtracy/1.0.37/c8e971da5150aa33283c5bf4097154c0da554fb9/jtracy-1.0.37-natives-macos-arm64.jar:/modules-2/files-2.1/com.mojang/logging/1.7.12/351cea64a5233361327d8d54c44277041beed97f/logging-1.7.12.jar:/modules-2/files-2.1/com.mojang/patchy/2.2.10/da05971b07cbb379d002cf7eaec6a2048211fefc/patchy-2.2.10.jar:/modules-2/files-2.1/com.mojang/text2speech/1.19.12/2e517a75c79d34d32de2b5d68422150836c2133e/text2speech-1.19.12.jar:/modules-2/files-2.1/commons-codec/commons-codec/1.22.0/6b3eb4beb7058c2a638f5f17bcb388649fd339dd/commons-codec-1.22.0.jar:/modules-2/files-2.1/commons-io/commons-io/2.20.0/36f3474daec2849c149e877614e7f979b2082cd2/commons-io-2.20.0.jar:/modules-2/files-2.1/io.netty/netty-buffer/4.2.15.Final/2beb620803bf871cda2dd5d46b8f831e8015dd34/netty-buffer-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-codec-base/4.2.15.Final/e97149fdd5fb04858efa90e314651c8d700dc68b/netty-codec-base-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-codec-compression/4.2.15.Final/89fc4a20b7ae6af974304b1695405e62c4f9b16d/netty-codec-compression-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-codec-http/4.2.15.Final/e611826aa054371bb9a17f27bdb05755a4cac5f0/netty-codec-http-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-common/4.2.15.Final/7222492c1af9c2d4d78d521eea340a619e242fda/netty-common-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-handler/4.2.15.Final/d5344afd1148e3b9927a74be019605ebb0937a93/netty-handler-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-resolver/4.2.15.Final/b961a16d379b508b473e064ba06842bba280f4e3/netty-resolver-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-transport-classes-epoll/4.2.15.Final/44bafba9c9993800e955b365bba4981326f3f3b1/netty-transport-classes-epoll-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-transport-classes-kqueue/4.2.15.Final/f248656bb907607c5a41c7b61fd918a97db79250/netty-transport-classes-kqueue-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-transport-native-unix-common/4.2.15.Final/efb6943b4de9e0226a5ac35330f232605424af02/netty-transport-native-unix-common-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-transport/4.2.15.Final/a000c3a6196ee40207b73ac619dcb339409dd62f/netty-transport-4.2.15.Final.jar:/modules-2/files-2.1/it.unimi.dsi/fastutil/8.5.18/a6cff377eecc19c2037bf31568a6d7106b50ba1f/fastutil-8.5.18.jar:/modules-2/files-2.1/net.java.dev.jna/jna-platform/5.17.0/a4934c44d25a9d8c2ddf4203affd20330cb3426f/jna-platform-5.17.0.jar:/modules-2/files-2.1/net.java.dev.jna/jna/5.17.0/33d12735bef894440780fce64f9758d420c7bae2/jna-5.17.0.jar:/modules-2/files-2.1/org.apache.commons/commons-compress/1.28.0/e482f2c7a88dac3c497e96aa420b6a769f59c8d7/commons-compress-1.28.0.jar:/modules-2/files-2.1/org.apache.commons/commons-lang3/3.20.0/65897b3e5731220962e659e001904af3c3cbeba9/commons-lang3-3.20.0.jar:/modules-2/files-2.1/org.apache.logging.log4j/log4j-api/2.26.0/ad52af0ecf054a7e3f275a2e180ee06d9c490951/log4j-api-2.26.0.jar:/modules-2/files-2.1/org.apache.logging.log4j/log4j-core/2.26.0/d267ca60b27ddb075e0b4e75e7875859717bf85f/log4j-core-2.26.0.jar:/modules-2/files-2.1/org.apache.logging.log4j/log4j-slf4j2-impl/2.26.0/668c0f0e813d83f00a7182533aa658ec7e7a0a0d/log4j-slf4j2-impl-2.26.0.jar:/modules-2/files-2.1/org.jcraft/jorbis/0.0.17/8872d22b293e8f5d7d56ff92be966e6dc28ebdc6/jorbis-0.0.17.jar:/modules-2/files-2.1/org.joml/joml/1.10.8/fc0a71dad90a2cf41d82a76156a0e700af8e4f8d/joml-1.10.8.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-freetype/3.4.1/caa75a37e857efc9b0686e434d708d6420c5b6ea/lwjgl-freetype-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-freetype/3.4.1/61cb2d85e1838bca1a0b664f54e818bc68deb2ef/lwjgl-freetype-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-freetype/3.4.1/cce5a86b4a7d17817fe8ea0296302a4353acf2d5/lwjgl-freetype-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-glfw/3.4.1/a782b1ddd175c9107bf300fd92920579ea65e2a4/lwjgl-glfw-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-glfw/3.4.1/3c8538942f58377d59cd7be2dc164ba71a53868a/lwjgl-glfw-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-glfw/3.4.1/ef1f8efca5a60ba3512bc4982b88e446ecc43378/lwjgl-glfw-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-jemalloc/3.4.1/16b663092854fc6adfe0a941e61cae2bb2e437b6/lwjgl-jemalloc-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-jemalloc/3.4.1/581b4d542e841015ce3265eed0495e2cde15b1d0/lwjgl-jemalloc-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-jemalloc/3.4.1/dcd7e3f9a2ca386e8c5b8f508a8511d9dd63bab0/lwjgl-jemalloc-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-openal/3.4.1/8508bd60589de0539aa465b78fcf838efd07ae9a/lwjgl-openal-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-openal/3.4.1/a4dc57b7b0880d3fffb4d0b61649f45712bccc93/lwjgl-openal-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-openal/3.4.1/1c709a38c4a0e86aae96db7b8c78432307f2322a/lwjgl-openal-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-opengl/3.4.1/830412cab823c029cda6b9729f9d2ed36cf79959/lwjgl-opengl-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-opengl/3.4.1/ba18fc6012b88494ee893506934b92b01c4ef14b/lwjgl-opengl-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-opengl/3.4.1/35b5550058de4960525f465243bd01805f04fd8b/lwjgl-opengl-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-shaderc/3.4.1/5c02c88f0d879529014c78463b76f43fdecfd272/lwjgl-shaderc-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-shaderc/3.4.1/1d7bbdba70cf29c42978f6c0c1bdef945b922072/lwjgl-shaderc-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-shaderc/3.4.1/48aa2727e8616154d399d4dab0d8e8479741fa4f/lwjgl-shaderc-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-spvc/3.4.1/188553592e97b5ab2dba54a1b403ee80b48dad4c/lwjgl-spvc-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-spvc/3.4.1/2eeebd6d5bae966bfffda9747eba744cfe839ae1/lwjgl-spvc-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-spvc/3.4.1/a4f66638d28129eba0babd8fdc4385427a5ea83e/lwjgl-spvc-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-stb/3.4.1/f077c3dafc31924fbe8acb0b913f08977ba27f8e/lwjgl-stb-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-stb/3.4.1/fd1ea36b717b0832babca09324a6cfc43906e2aa/lwjgl-stb-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-stb/3.4.1/da554e04f819f09b0f3473bd931628ebf557965e/lwjgl-stb-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-tinyfd/3.4.1/562697d40dbd2ed0424bf24dcf65d51170f81adf/lwjgl-tinyfd-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-tinyfd/3.4.1/211ae9e8720e8f10f2ce85a118fa7bd5ee71584b/lwjgl-tinyfd-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-tinyfd/3.4.1/7bcde70f6164b2e72f84cac5257b7e9877b88510/lwjgl-tinyfd-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vma/3.4.1/2c54ce10154feb1ede4d23c5947438cdbfdcc003/lwjgl-vma-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vma/3.4.1/a130a9e4f96c83063f749e1dcc7065e0dffb3936/lwjgl-vma-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vma/3.4.1/9451dc1067716bc4125cdba65a7096e465f4d0e5/lwjgl-vma-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vulkan/3.4.1/d0601fdc38890755e5638048c14cc0f7b990964b/lwjgl-vulkan-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vulkan/3.4.1/140c7fd3e0fdbcc625c92be9328301c555035905/lwjgl-vulkan-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vulkan/3.4.1/2c933bf617cb8a174af26585efda4778b59e6d44/lwjgl-vulkan-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl/3.4.1/129e06a04f93992cb2a45172435b21fc4b60dd7d/lwjgl-3.4.1-unsafe.jar:/modules-2/files-2.1/org.lwjgl/lwjgl/3.4.1/b034fd9a67cb8646c01af7efcefcb93be835542b/lwjgl-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl/3.4.1/b4cbdef4818abd714ee66985344c0949fd1cd6d6/lwjgl-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.slf4j/slf4j-api/2.0.17/d9e58ac9c7779ba3bf8142aff6c830617a7fe60f/slf4j-api-2.0.17.jar:/modules-2/files-2.1/org.ow2.asm/asm-util/9.5/64b5a1fc8c1b15ed2efd6a063e976bc8d3dc5ffe/asm-util-9.5.jar:/modules-2/files-2.1/org.ow2.asm/asm-analysis/9.5/490bacc77de7cbc0be1a30bb3471072d705be4a4/asm-analysis-9.5.jar:/modules-2/files-2.1/org.ow2.asm/asm-tree/9.5/fd33c8b6373abaa675be407082fdfda35021254a/asm-tree-9.5.jar:/modules-2/files-2.1/org.ow2.asm/asm/9.5/dc6ea1875f4d64fbc85e1691c95b96a3d8569c90/asm-9.5.jar:/modules-2/files-2.1/net.neoforged/srgutils/1.0.10/abb471237b33b19f040ada00bfbad1ec45b949b6/srgutils-1.0.10.jar:/modules-2/files-2.1/io.netty/netty-transport-native-kqueue/4.2.15.Final/8ea0ef3eb716d821332e4b4926825a4b7c1a6d38/netty-transport-native-kqueue-4.2.15.Final-osx-aarch_64.jar:/modules-2/files-2.1/io.netty/netty-transport-native-kqueue/4.2.15.Final/4245380831515fb4eca18d32477a27fbb8f7b8f4/netty-transport-native-kqueue-4.2.15.Final-osx-x86_64.jar:/build/classes/java/main:/build/resources/main org.openjdk.jmh.Main .*net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.buildAllDefaultsIndex -p itemCount=100000 -p implementation=minecraft-suffix-array -f 1 -wi 1 -i 4 -w 100ms -r 100ms -rf json -rff /build/reports/jmh/adaptive-jmh-passes/pass-01-group-005.json -o /build/reports/jmh/adaptive-jmh-passes/pass-01-group-005.txt -foe true -prof gc # JMH version: 1.37 # VM version: JDK 25, OpenJDK 64-Bit Server VM, 25+36-b176.4 # VM invoker: java # VM options: # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 1 iterations, 100 ms each # Measurement: 4 iterations, 100 ms each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.buildAllDefaultsIndex # Parameters: (implementation = minecraft-suffix-array, itemCount = 100000) # Run progress: 0.00% complete, ETA 00:00:00 # Fork: 1 of 1 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::objectFieldOffset has been called by org.openjdk.jmh.util.Utils (file:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar) WARNING: Please consider reporting this to the maintainers of class org.openjdk.jmh.util.Utils WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release # Warmup Iteration 1: 4057.443 ms/op Iteration 1: 3779.774 ms/op gc.alloc.rate: 133.516 MB/sec gc.alloc.rate.norm: 529205968.000 B/op gc.count: 5.000 counts gc.time: 5.000 ms Iteration 2: 3643.359 ms/op gc.alloc.rate: 138.516 MB/sec gc.alloc.rate.norm: 529205984.000 B/op gc.count: 1.000 counts gc.time: 2.000 ms Iteration 3: 3704.292 ms/op gc.alloc.rate: 136.238 MB/sec gc.alloc.rate.norm: 529205984.000 B/op gc.count: 1.000 counts gc.time: 2.000 ms Iteration 4: 3651.046 ms/op gc.alloc.rate: 138.223 MB/sec gc.alloc.rate.norm: 529205984.000 B/op gc.count: 1.000 counts gc.time: 2.000 ms Result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.buildAllDefaultsIndex": 3694.618 ±(99.9%) 406.492 ms/op [Average] (min, avg, max) = (3643.359, 3694.618, 3779.774), stdev = 62.905 CI (99.9%): [3288.125, 4101.110] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.buildAllDefaultsIndex:gc.alloc.rate": 136.623 ±(99.9%) 14.897 MB/sec [Average] (min, avg, max) = (133.516, 136.623, 138.516), stdev = 2.305 CI (99.9%): [121.726, 151.520] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.buildAllDefaultsIndex:gc.alloc.rate.norm": 529205980.000 ±(99.9%) 51.696 B/op [Average] (min, avg, max) = (529205968.000, 529205980.000, 529205984.000), stdev = 8.000 CI (99.9%): [529205928.304, 529206031.696] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.buildAllDefaultsIndex:gc.count": 8.000 ±(99.9%) 0.001 counts [Sum] (min, avg, max) = (1.000, 2.000, 5.000), stdev = 2.000 CI (99.9%): [8.000, 8.000] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.buildAllDefaultsIndex:gc.time": 11.000 ±(99.9%) 0.001 ms [Sum] (min, avg, max) = (2.000, 2.750, 5.000), stdev = 1.500 CI (99.9%): [11.000, 11.000] (assumes normal distribution) # Run complete. Total time: 00:00:19 REMEMBER: The numbers below are just data. To gain reusable insights, you need to follow up on why the numbers are the way they are. Use profilers (see -prof, -lprof), design factorial experiments, perform baseline and negative tests that provide experimental control, make sure the benchmarking environment is safe on JVM/OS/HW level, ask for reviews from the domain experts. Do not assume the numbers tell you what you want them to tell. NOTE: Current JVM experimentally supports Compiler Blackholes, and they are in use. Please exercise extra caution when trusting the results, look into the generated code to check the benchmark still works, and factor in a small probability of new VM bugs. Additionally, while comparisons between different JVMs are already problematic, the performance difference caused by different Blackhole modes can be very significant. Please make sure you use the consistent Blackhole mode for comparisons. Benchmark (implementation) (itemCount) Mode Cnt Score Error Units LargeCatalogSearchBenchmark.buildAllDefaultsIndex minecraft-suffix-array 100000 avgt 4 3694.618 ± 406.492 ms/op LargeCatalogSearchBenchmark.buildAllDefaultsIndex:gc.alloc.rate minecraft-suffix-array 100000 avgt 4 136.623 ± 14.897 MB/sec LargeCatalogSearchBenchmark.buildAllDefaultsIndex:gc.alloc.rate.norm minecraft-suffix-array 100000 avgt 4 529205980.000 ± 51.696 B/op LargeCatalogSearchBenchmark.buildAllDefaultsIndex:gc.count minecraft-suffix-array 100000 avgt 4 8.000 counts LargeCatalogSearchBenchmark.buildAllDefaultsIndex:gc.time minecraft-suffix-array 100000 avgt 4 11.000 ms Benchmark result is saved to /build/reports/jmh/adaptive-jmh-passes/pass-01-group-005.json # Adaptive pass 1, group 6 # Command: java -cp /build/classes/java/benchmark:/build/resources/benchmark:/build/moddev/artifacts/vanilla-26.2-2.jar:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar:/modules-2/files-2.1/com.abahgat/suffixtree/2.0.0/ffe2c29796add2624d2e0b9f33e72421eb5c5ea5/suffixtree-2.0.0.jar:/modules-2/files-2.1/net.mezzdev/suffixtree/1.3.0/1a1b87af70a1631ff6d6c9d49c63564aadecb176/suffixtree-1.3.0.jar:/modules-2/files-2.1/net.mezzdev/baked-substring-index/0.1.0/4f9fbd9eb54fdb1b8ec40a83297f4e8f4479eb7c/baked-substring-index-0.1.0.jar:/modules-2/files-2.1/net.mezzdev/baked-suffix-array-index/0.1.0/cd5e5ffbcee030d149e7a5a70e151a06158bd643/baked-suffix-array-index-0.1.0.jar:/modules-2/files-2.1/net.neoforged/mergetool/2.0.7/793b18456e92c4a7f66d9b5d8bf7a9c1c7a20b20/mergetool-2.0.7-api.jar:/modules-2/files-2.1/net.sf.jopt-simple/jopt-simple/5.0.4/4fdac2fbe92dfad86aa6e9301736f6b4342a3f5c/jopt-simple-5.0.4.jar:/modules-2/files-2.1/org.apache.commons/commons-math3/3.6.1/e4ba98f1d4b3c80ec46392f25e094a6a2e58fcbf/commons-math3-3.6.1.jar:/modules-2/files-2.1/com.google.code.findbugs/jsr305/3.0.2/25ea2e8b0c338a877313bd4672d3fe056ea78f0d/jsr305-3.0.2.jar:/modules-2/files-2.1/org.jspecify/jspecify/1.0.0/7425a601c1c7ec76645a78d22b8c6a627edee507/jspecify-1.0.0.jar:/modules-2/files-2.1/org.jetbrains/annotations/26.0.2-1/c7ce3cdeda3d18909368dfe5977332dfad326c6d/annotations-26.0.2-1.jar:/modules-2/files-2.1/ca.weblite/java-objc-bridge/1.1/1227f9e0666314f9de41477e3ec277e542ed7f7b/java-objc-bridge-1.1.jar:/modules-2/files-2.1/at.yawk.lz4/lz4-java/1.10.1/f541d7f910fe3d76f38f799c507c48cc81b12ecb/lz4-java-1.10.1.jar:/modules-2/files-2.1/com.azure/azure-json/1.4.0/fcc1d354dbc3e0300e5276b1bf124d0247799cd8/azure-json-1.4.0.jar:/modules-2/files-2.1/com.github.oshi/oshi-core/6.9.0/3224870731860cfcd7744581a05b559e94291e7/oshi-core-6.9.0.jar:/modules-2/files-2.1/com.google.code.gson/gson/2.14.0/efc0e34ede4e3204eaefb84a00e55e8c86634382/gson-2.14.0.jar:/modules-2/files-2.1/com.google.guava/failureaccess/1.0.3/aeaffd00d57023a2c947393ed251f0354f0985fc/failureaccess-1.0.3.jar:/modules-2/files-2.1/com.google.guava/guava/33.6.0-jre/c376b13067cc99a5774403530953f7b05a91e218/guava-33.6.0-jre.jar:/modules-2/files-2.1/com.ibm.icu/icu4j/78.3/6a851a53bb1f25689fc418dcc8935b0d93580adf/icu4j-78.3.jar:/modules-2/files-2.1/com.microsoft.azure/msal4j/1.24.1/c233f2d047b9755f7041adf21a858c680e4c9242/msal4j-1.24.1.jar:/modules-2/files-2.1/com.mojang/authlib/9.0.75/d61056a234d5e4b272e09d59b0713f80d6c0b6af/authlib-9.0.75.jar:/modules-2/files-2.1/com.mojang/blocklist/1.0.10/5c685c5ffa94c4cd39496c7184c1d122e515ecef/blocklist-1.0.10.jar:/modules-2/files-2.1/com.mojang/brigadier/1.3.10/d15b53a14cf20fdcaa98f731af5dda654452c010/brigadier-1.3.10.jar:/modules-2/files-2.1/com.mojang/datafixerupper/10.0.21/b6b2ae770c02e0c1eb90f9985b151e9085a38d0b/datafixerupper-10.0.21.jar:/modules-2/files-2.1/com.mojang/jtracy/1.0.37/a3fb649b2e2b2288d2978f0b0bc3d83f62809d1e/jtracy-1.0.37.jar:/modules-2/files-2.1/com.mojang/jtracy/1.0.37/a99fcb63b72fb623534d0ceb71bda4bed9b55b4c/jtracy-1.0.37-natives-macos.jar:/modules-2/files-2.1/com.mojang/jtracy/1.0.37/c8e971da5150aa33283c5bf4097154c0da554fb9/jtracy-1.0.37-natives-macos-arm64.jar:/modules-2/files-2.1/com.mojang/logging/1.7.12/351cea64a5233361327d8d54c44277041beed97f/logging-1.7.12.jar:/modules-2/files-2.1/com.mojang/patchy/2.2.10/da05971b07cbb379d002cf7eaec6a2048211fefc/patchy-2.2.10.jar:/modules-2/files-2.1/com.mojang/text2speech/1.19.12/2e517a75c79d34d32de2b5d68422150836c2133e/text2speech-1.19.12.jar:/modules-2/files-2.1/commons-codec/commons-codec/1.22.0/6b3eb4beb7058c2a638f5f17bcb388649fd339dd/commons-codec-1.22.0.jar:/modules-2/files-2.1/commons-io/commons-io/2.20.0/36f3474daec2849c149e877614e7f979b2082cd2/commons-io-2.20.0.jar:/modules-2/files-2.1/io.netty/netty-buffer/4.2.15.Final/2beb620803bf871cda2dd5d46b8f831e8015dd34/netty-buffer-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-codec-base/4.2.15.Final/e97149fdd5fb04858efa90e314651c8d700dc68b/netty-codec-base-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-codec-compression/4.2.15.Final/89fc4a20b7ae6af974304b1695405e62c4f9b16d/netty-codec-compression-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-codec-http/4.2.15.Final/e611826aa054371bb9a17f27bdb05755a4cac5f0/netty-codec-http-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-common/4.2.15.Final/7222492c1af9c2d4d78d521eea340a619e242fda/netty-common-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-handler/4.2.15.Final/d5344afd1148e3b9927a74be019605ebb0937a93/netty-handler-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-resolver/4.2.15.Final/b961a16d379b508b473e064ba06842bba280f4e3/netty-resolver-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-transport-classes-epoll/4.2.15.Final/44bafba9c9993800e955b365bba4981326f3f3b1/netty-transport-classes-epoll-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-transport-classes-kqueue/4.2.15.Final/f248656bb907607c5a41c7b61fd918a97db79250/netty-transport-classes-kqueue-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-transport-native-unix-common/4.2.15.Final/efb6943b4de9e0226a5ac35330f232605424af02/netty-transport-native-unix-common-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-transport/4.2.15.Final/a000c3a6196ee40207b73ac619dcb339409dd62f/netty-transport-4.2.15.Final.jar:/modules-2/files-2.1/it.unimi.dsi/fastutil/8.5.18/a6cff377eecc19c2037bf31568a6d7106b50ba1f/fastutil-8.5.18.jar:/modules-2/files-2.1/net.java.dev.jna/jna-platform/5.17.0/a4934c44d25a9d8c2ddf4203affd20330cb3426f/jna-platform-5.17.0.jar:/modules-2/files-2.1/net.java.dev.jna/jna/5.17.0/33d12735bef894440780fce64f9758d420c7bae2/jna-5.17.0.jar:/modules-2/files-2.1/org.apache.commons/commons-compress/1.28.0/e482f2c7a88dac3c497e96aa420b6a769f59c8d7/commons-compress-1.28.0.jar:/modules-2/files-2.1/org.apache.commons/commons-lang3/3.20.0/65897b3e5731220962e659e001904af3c3cbeba9/commons-lang3-3.20.0.jar:/modules-2/files-2.1/org.apache.logging.log4j/log4j-api/2.26.0/ad52af0ecf054a7e3f275a2e180ee06d9c490951/log4j-api-2.26.0.jar:/modules-2/files-2.1/org.apache.logging.log4j/log4j-core/2.26.0/d267ca60b27ddb075e0b4e75e7875859717bf85f/log4j-core-2.26.0.jar:/modules-2/files-2.1/org.apache.logging.log4j/log4j-slf4j2-impl/2.26.0/668c0f0e813d83f00a7182533aa658ec7e7a0a0d/log4j-slf4j2-impl-2.26.0.jar:/modules-2/files-2.1/org.jcraft/jorbis/0.0.17/8872d22b293e8f5d7d56ff92be966e6dc28ebdc6/jorbis-0.0.17.jar:/modules-2/files-2.1/org.joml/joml/1.10.8/fc0a71dad90a2cf41d82a76156a0e700af8e4f8d/joml-1.10.8.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-freetype/3.4.1/caa75a37e857efc9b0686e434d708d6420c5b6ea/lwjgl-freetype-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-freetype/3.4.1/61cb2d85e1838bca1a0b664f54e818bc68deb2ef/lwjgl-freetype-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-freetype/3.4.1/cce5a86b4a7d17817fe8ea0296302a4353acf2d5/lwjgl-freetype-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-glfw/3.4.1/a782b1ddd175c9107bf300fd92920579ea65e2a4/lwjgl-glfw-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-glfw/3.4.1/3c8538942f58377d59cd7be2dc164ba71a53868a/lwjgl-glfw-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-glfw/3.4.1/ef1f8efca5a60ba3512bc4982b88e446ecc43378/lwjgl-glfw-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-jemalloc/3.4.1/16b663092854fc6adfe0a941e61cae2bb2e437b6/lwjgl-jemalloc-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-jemalloc/3.4.1/581b4d542e841015ce3265eed0495e2cde15b1d0/lwjgl-jemalloc-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-jemalloc/3.4.1/dcd7e3f9a2ca386e8c5b8f508a8511d9dd63bab0/lwjgl-jemalloc-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-openal/3.4.1/8508bd60589de0539aa465b78fcf838efd07ae9a/lwjgl-openal-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-openal/3.4.1/a4dc57b7b0880d3fffb4d0b61649f45712bccc93/lwjgl-openal-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-openal/3.4.1/1c709a38c4a0e86aae96db7b8c78432307f2322a/lwjgl-openal-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-opengl/3.4.1/830412cab823c029cda6b9729f9d2ed36cf79959/lwjgl-opengl-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-opengl/3.4.1/ba18fc6012b88494ee893506934b92b01c4ef14b/lwjgl-opengl-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-opengl/3.4.1/35b5550058de4960525f465243bd01805f04fd8b/lwjgl-opengl-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-shaderc/3.4.1/5c02c88f0d879529014c78463b76f43fdecfd272/lwjgl-shaderc-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-shaderc/3.4.1/1d7bbdba70cf29c42978f6c0c1bdef945b922072/lwjgl-shaderc-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-shaderc/3.4.1/48aa2727e8616154d399d4dab0d8e8479741fa4f/lwjgl-shaderc-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-spvc/3.4.1/188553592e97b5ab2dba54a1b403ee80b48dad4c/lwjgl-spvc-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-spvc/3.4.1/2eeebd6d5bae966bfffda9747eba744cfe839ae1/lwjgl-spvc-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-spvc/3.4.1/a4f66638d28129eba0babd8fdc4385427a5ea83e/lwjgl-spvc-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-stb/3.4.1/f077c3dafc31924fbe8acb0b913f08977ba27f8e/lwjgl-stb-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-stb/3.4.1/fd1ea36b717b0832babca09324a6cfc43906e2aa/lwjgl-stb-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-stb/3.4.1/da554e04f819f09b0f3473bd931628ebf557965e/lwjgl-stb-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-tinyfd/3.4.1/562697d40dbd2ed0424bf24dcf65d51170f81adf/lwjgl-tinyfd-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-tinyfd/3.4.1/211ae9e8720e8f10f2ce85a118fa7bd5ee71584b/lwjgl-tinyfd-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-tinyfd/3.4.1/7bcde70f6164b2e72f84cac5257b7e9877b88510/lwjgl-tinyfd-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vma/3.4.1/2c54ce10154feb1ede4d23c5947438cdbfdcc003/lwjgl-vma-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vma/3.4.1/a130a9e4f96c83063f749e1dcc7065e0dffb3936/lwjgl-vma-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vma/3.4.1/9451dc1067716bc4125cdba65a7096e465f4d0e5/lwjgl-vma-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vulkan/3.4.1/d0601fdc38890755e5638048c14cc0f7b990964b/lwjgl-vulkan-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vulkan/3.4.1/140c7fd3e0fdbcc625c92be9328301c555035905/lwjgl-vulkan-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vulkan/3.4.1/2c933bf617cb8a174af26585efda4778b59e6d44/lwjgl-vulkan-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl/3.4.1/129e06a04f93992cb2a45172435b21fc4b60dd7d/lwjgl-3.4.1-unsafe.jar:/modules-2/files-2.1/org.lwjgl/lwjgl/3.4.1/b034fd9a67cb8646c01af7efcefcb93be835542b/lwjgl-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl/3.4.1/b4cbdef4818abd714ee66985344c0949fd1cd6d6/lwjgl-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.slf4j/slf4j-api/2.0.17/d9e58ac9c7779ba3bf8142aff6c830617a7fe60f/slf4j-api-2.0.17.jar:/modules-2/files-2.1/org.ow2.asm/asm-util/9.5/64b5a1fc8c1b15ed2efd6a063e976bc8d3dc5ffe/asm-util-9.5.jar:/modules-2/files-2.1/org.ow2.asm/asm-analysis/9.5/490bacc77de7cbc0be1a30bb3471072d705be4a4/asm-analysis-9.5.jar:/modules-2/files-2.1/org.ow2.asm/asm-tree/9.5/fd33c8b6373abaa675be407082fdfda35021254a/asm-tree-9.5.jar:/modules-2/files-2.1/org.ow2.asm/asm/9.5/dc6ea1875f4d64fbc85e1691c95b96a3d8569c90/asm-9.5.jar:/modules-2/files-2.1/net.neoforged/srgutils/1.0.10/abb471237b33b19f040ada00bfbad1ec45b949b6/srgutils-1.0.10.jar:/modules-2/files-2.1/io.netty/netty-transport-native-kqueue/4.2.15.Final/8ea0ef3eb716d821332e4b4926825a4b7c1a6d38/netty-transport-native-kqueue-4.2.15.Final-osx-aarch_64.jar:/modules-2/files-2.1/io.netty/netty-transport-native-kqueue/4.2.15.Final/4245380831515fb4eca18d32477a27fbb8f7b8f4/netty-transport-native-kqueue-4.2.15.Final-osx-x86_64.jar:/build/classes/java/main:/build/resources/main org.openjdk.jmh.Main .*net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix -p itemCount=100000 -p implementation=generalized-suffix-tree -f 1 -wi 1 -i 4 -w 100ms -r 100ms -rf json -rff /build/reports/jmh/adaptive-jmh-passes/pass-01-group-006.json -o /build/reports/jmh/adaptive-jmh-passes/pass-01-group-006.txt -foe true -p typedCharacterCount=1,2,3,4,5,6,7,8,9,10,11 -prof gc # JMH version: 1.37 # VM version: JDK 25, OpenJDK 64-Bit Server VM, 25+36-b176.4 # VM invoker: java # VM options: # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 1 iterations, 100 ms each # Measurement: 4 iterations, 100 ms each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix # Parameters: (implementation = generalized-suffix-tree, itemCount = 100000, typedCharacterCount = 1) # Run progress: 0.00% complete, ETA 00:00:05 # Fork: 1 of 1 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::objectFieldOffset has been called by org.openjdk.jmh.util.Utils (file:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar) WARNING: Please consider reporting this to the maintainers of class org.openjdk.jmh.util.Utils WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release # Warmup Iteration 1: 15.155 ms/op Iteration 1: 7.520 ms/op gc.alloc.rate: 149.896 MB/sec gc.alloc.rate.norm: 1184564.000 B/op gc.count: ≈ 0 counts Iteration 2: 5.966 ms/op gc.alloc.rate: 184.949 MB/sec gc.alloc.rate.norm: 1159100.235 B/op gc.count: ≈ 0 counts Iteration 3: 4.799 ms/op gc.alloc.rate: 185.459 MB/sec gc.alloc.rate.norm: 934749.091 B/op gc.count: ≈ 0 counts Iteration 4: 5.646 ms/op gc.alloc.rate: 190.564 MB/sec gc.alloc.rate.norm: 1129608.000 B/op gc.count: ≈ 0 counts Result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix": 5.983 ±(99.9%) 7.345 ms/op [Average] (min, avg, max) = (4.799, 5.983, 7.520), stdev = 1.137 CI (99.9%): [≈ 0, 13.328] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate": 177.717 ±(99.9%) 120.968 MB/sec [Average] (min, avg, max) = (149.896, 177.717, 190.564), stdev = 18.720 CI (99.9%): [56.750, 298.685] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm": 1102005.332 ±(99.9%) 735005.189 B/op [Average] (min, avg, max) = (934749.091, 1102005.332, 1184564.000), stdev = 113742.867 CI (99.9%): [367000.143, 1837010.521] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count": ≈ 0 counts # JMH version: 1.37 # VM version: JDK 25, OpenJDK 64-Bit Server VM, 25+36-b176.4 # VM invoker: java # VM options: # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 1 iterations, 100 ms each # Measurement: 4 iterations, 100 ms each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix # Parameters: (implementation = generalized-suffix-tree, itemCount = 100000, typedCharacterCount = 2) # Run progress: 9.09% complete, ETA 00:00:17 # Fork: 1 of 1 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::objectFieldOffset has been called by org.openjdk.jmh.util.Utils (file:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar) WARNING: Please consider reporting this to the maintainers of class org.openjdk.jmh.util.Utils WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release # Warmup Iteration 1: 2.263 ms/op Iteration 1: 1.181 ms/op gc.alloc.rate: 217.044 MB/sec gc.alloc.rate.norm: 269292.315 B/op gc.count: ≈ 0 counts Iteration 2: 0.710 ms/op gc.alloc.rate: 293.133 MB/sec gc.alloc.rate.norm: 218587.973 B/op gc.count: ≈ 0 counts Iteration 3: 0.759 ms/op gc.alloc.rate: 287.560 MB/sec gc.alloc.rate.norm: 229761.439 B/op gc.count: ≈ 0 counts Iteration 4: 0.788 ms/op gc.alloc.rate: 270.498 MB/sec gc.alloc.rate.norm: 223746.102 B/op gc.count: 1.000 counts gc.time: 7.000 ms Result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix": 0.860 ±(99.9%) 1.401 ms/op [Average] (min, avg, max) = (0.710, 0.860, 1.181), stdev = 0.217 CI (99.9%): [≈ 0, 2.260] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate": 267.059 ±(99.9%) 224.266 MB/sec [Average] (min, avg, max) = (217.044, 267.059, 293.133), stdev = 34.705 CI (99.9%): [42.792, 491.325] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm": 235346.957 ±(99.9%) 149183.281 B/op [Average] (min, avg, max) = (218587.973, 235346.957, 269292.315), stdev = 23086.278 CI (99.9%): [86163.676, 384530.239] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count": 1.000 ±(99.9%) 0.001 counts [Sum] (min, avg, max) = (≈ 0, 0.250, 1.000), stdev = 0.500 CI (99.9%): [1.000, 1.000] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time": 7.000 ±(99.9%) 0.001 ms [Sum] (min, avg, max) = (≈ 0, 1.750, 7.000), stdev = 3.500 CI (99.9%): [7.000, 7.000] (assumes normal distribution) # JMH version: 1.37 # VM version: JDK 25, OpenJDK 64-Bit Server VM, 25+36-b176.4 # VM invoker: java # VM options: # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 1 iterations, 100 ms each # Measurement: 4 iterations, 100 ms each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix # Parameters: (implementation = generalized-suffix-tree, itemCount = 100000, typedCharacterCount = 3) # Run progress: 18.18% complete, ETA 00:00:16 # Fork: 1 of 1 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::objectFieldOffset has been called by org.openjdk.jmh.util.Utils (file:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar) WARNING: Please consider reporting this to the maintainers of class org.openjdk.jmh.util.Utils WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release # Warmup Iteration 1: 1.056 ms/op Iteration 1: 0.445 ms/op gc.alloc.rate: 371.428 MB/sec gc.alloc.rate.norm: 173767.898 B/op gc.count: ≈ 0 counts Iteration 2: 0.314 ms/op gc.alloc.rate: 508.034 MB/sec gc.alloc.rate.norm: 167310.817 B/op gc.count: ≈ 0 counts Iteration 3: 0.329 ms/op gc.alloc.rate: 485.422 MB/sec gc.alloc.rate.norm: 167756.634 B/op gc.count: 1.000 counts gc.time: 9.000 ms Iteration 4: 0.279 ms/op gc.alloc.rate: 567.781 MB/sec gc.alloc.rate.norm: 166312.849 B/op gc.count: ≈ 0 counts Result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix": 0.342 ±(99.9%) 0.467 ms/op [Average] (min, avg, max) = (0.279, 0.342, 0.445), stdev = 0.072 CI (99.9%): [≈ 0, 0.809] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate": 483.166 ±(99.9%) 531.149 MB/sec [Average] (min, avg, max) = (371.428, 483.166, 567.781), stdev = 82.196 CI (99.9%): [≈ 0, 1014.316] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm": 168787.049 ±(99.9%) 21809.108 B/op [Average] (min, avg, max) = (166312.849, 168787.049, 173767.898), stdev = 3374.984 CI (99.9%): [146977.941, 190596.158] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count": 1.000 ±(99.9%) 0.001 counts [Sum] (min, avg, max) = (≈ 0, 0.250, 1.000), stdev = 0.500 CI (99.9%): [1.000, 1.000] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time": 9.000 ±(99.9%) 0.001 ms [Sum] (min, avg, max) = (≈ 0, 2.250, 9.000), stdev = 4.500 CI (99.9%): [9.000, 9.000] (assumes normal distribution) # JMH version: 1.37 # VM version: JDK 25, OpenJDK 64-Bit Server VM, 25+36-b176.4 # VM invoker: java # VM options: # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 1 iterations, 100 ms each # Measurement: 4 iterations, 100 ms each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix # Parameters: (implementation = generalized-suffix-tree, itemCount = 100000, typedCharacterCount = 4) # Run progress: 27.27% complete, ETA 00:00:14 # Fork: 1 of 1 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::objectFieldOffset has been called by org.openjdk.jmh.util.Utils (file:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar) WARNING: Please consider reporting this to the maintainers of class org.openjdk.jmh.util.Utils WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release # Warmup Iteration 1: 0.477 ms/op Iteration 1: 0.234 ms/op gc.alloc.rate: 586.635 MB/sec gc.alloc.rate.norm: 153307.253 B/op gc.count: ≈ 0 counts Iteration 2: 0.181 ms/op gc.alloc.rate: 809.518 MB/sec gc.alloc.rate.norm: 153690.920 B/op gc.count: 1.000 counts gc.time: 10.000 ms Iteration 3: 0.173 ms/op gc.alloc.rate: 844.590 MB/sec gc.alloc.rate.norm: 153516.013 B/op gc.count: 1.000 counts gc.time: 3.000 ms Iteration 4: 0.137 ms/op gc.alloc.rate: 1063.482 MB/sec gc.alloc.rate.norm: 153389.504 B/op gc.count: ≈ 0 counts Result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix": 0.181 ±(99.9%) 0.258 ms/op [Average] (min, avg, max) = (0.137, 0.181, 0.234), stdev = 0.040 CI (99.9%): [≈ 0, 0.439] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate": 826.056 ±(99.9%) 1261.389 MB/sec [Average] (min, avg, max) = (586.635, 826.056, 1063.482), stdev = 195.201 CI (99.9%): [≈ 0, 2087.445] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm": 153475.923 ±(99.9%) 1079.680 B/op [Average] (min, avg, max) = (153307.253, 153475.923, 153690.920), stdev = 167.082 CI (99.9%): [152396.243, 154555.602] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count": 2.000 ±(99.9%) 0.001 counts [Sum] (min, avg, max) = (≈ 0, 0.500, 1.000), stdev = 0.577 CI (99.9%): [2.000, 2.000] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time": 13.000 ±(99.9%) 0.001 ms [Sum] (min, avg, max) = (≈ 0, 3.250, 10.000), stdev = 4.717 CI (99.9%): [13.000, 13.000] (assumes normal distribution) # JMH version: 1.37 # VM version: JDK 25, OpenJDK 64-Bit Server VM, 25+36-b176.4 # VM invoker: java # VM options: # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 1 iterations, 100 ms each # Measurement: 4 iterations, 100 ms each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix # Parameters: (implementation = generalized-suffix-tree, itemCount = 100000, typedCharacterCount = 5) # Run progress: 36.36% complete, ETA 00:00:12 # Fork: 1 of 1 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::objectFieldOffset has been called by org.openjdk.jmh.util.Utils (file:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar) WARNING: Please consider reporting this to the maintainers of class org.openjdk.jmh.util.Utils WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release # Warmup Iteration 1: 0.842 ms/op Iteration 1: 0.306 ms/op gc.alloc.rate: 483.505 MB/sec gc.alloc.rate.norm: 155264.767 B/op gc.count: ≈ 0 counts Iteration 2: 0.155 ms/op gc.alloc.rate: 789.697 MB/sec gc.alloc.rate.norm: 128324.934 B/op gc.count: 1.000 counts gc.time: 8.000 ms Iteration 3: 0.136 ms/op gc.alloc.rate: 901.652 MB/sec gc.alloc.rate.norm: 128381.743 B/op gc.count: ≈ 0 counts Iteration 4: 0.123 ms/op gc.alloc.rate: 994.103 MB/sec gc.alloc.rate.norm: 128674.314 B/op gc.count: 1.000 counts gc.time: 4.000 ms Result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix": 0.180 ±(99.9%) 0.548 ms/op [Average] (min, avg, max) = (0.123, 0.180, 0.306), stdev = 0.085 CI (99.9%): [≈ 0, 0.728] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate": 792.239 ±(99.9%) 1435.488 MB/sec [Average] (min, avg, max) = (483.505, 792.239, 994.103), stdev = 222.143 CI (99.9%): [≈ 0, 2227.728] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm": 135161.439 ±(99.9%) 86610.643 B/op [Average] (min, avg, max) = (128324.934, 135161.439, 155264.767), stdev = 13403.093 CI (99.9%): [48550.797, 221772.082] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count": 2.000 ±(99.9%) 0.001 counts [Sum] (min, avg, max) = (≈ 0, 0.500, 1.000), stdev = 0.577 CI (99.9%): [2.000, 2.000] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time": 12.000 ±(99.9%) 0.001 ms [Sum] (min, avg, max) = (≈ 0, 3.000, 8.000), stdev = 3.830 CI (99.9%): [12.000, 12.000] (assumes normal distribution) # JMH version: 1.37 # VM version: JDK 25, OpenJDK 64-Bit Server VM, 25+36-b176.4 # VM invoker: java # VM options: # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 1 iterations, 100 ms each # Measurement: 4 iterations, 100 ms each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix # Parameters: (implementation = generalized-suffix-tree, itemCount = 100000, typedCharacterCount = 6) # Run progress: 45.45% complete, ETA 00:00:10 # Fork: 1 of 1 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::objectFieldOffset has been called by org.openjdk.jmh.util.Utils (file:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar) WARNING: Please consider reporting this to the maintainers of class org.openjdk.jmh.util.Utils WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release # Warmup Iteration 1: 0.652 ms/op Iteration 1: 0.189 ms/op gc.alloc.rate: 635.842 MB/sec gc.alloc.rate.norm: 126732.261 B/op gc.count: ≈ 0 counts Iteration 2: 0.151 ms/op gc.alloc.rate: 796.297 MB/sec gc.alloc.rate.norm: 125950.407 B/op gc.count: 1.000 counts gc.time: 9.000 ms Iteration 3: 0.123 ms/op gc.alloc.rate: 976.325 MB/sec gc.alloc.rate.norm: 126331.392 B/op gc.count: 1.000 counts gc.time: 2.000 ms Iteration 4: 0.111 ms/op gc.alloc.rate: 1084.874 MB/sec gc.alloc.rate.norm: 126451.587 B/op gc.count: ≈ 0 counts Result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix": 0.143 ±(99.9%) 0.223 ms/op [Average] (min, avg, max) = (0.111, 0.143, 0.189), stdev = 0.035 CI (99.9%): [≈ 0, 0.367] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate": 873.335 ±(99.9%) 1279.916 MB/sec [Average] (min, avg, max) = (635.842, 873.335, 1084.874), stdev = 198.068 CI (99.9%): [≈ 0, 2153.250] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm": 126366.412 ±(99.9%) 2095.210 B/op [Average] (min, avg, max) = (125950.407, 126366.412, 126732.261), stdev = 324.236 CI (99.9%): [124271.202, 128461.621] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count": 2.000 ±(99.9%) 0.001 counts [Sum] (min, avg, max) = (≈ 0, 0.500, 1.000), stdev = 0.577 CI (99.9%): [2.000, 2.000] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time": 11.000 ±(99.9%) 0.001 ms [Sum] (min, avg, max) = (≈ 0, 2.750, 9.000), stdev = 4.272 CI (99.9%): [11.000, 11.000] (assumes normal distribution) # JMH version: 1.37 # VM version: JDK 25, OpenJDK 64-Bit Server VM, 25+36-b176.4 # VM invoker: java # VM options: # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 1 iterations, 100 ms each # Measurement: 4 iterations, 100 ms each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix # Parameters: (implementation = generalized-suffix-tree, itemCount = 100000, typedCharacterCount = 7) # Run progress: 54.55% complete, ETA 00:00:08 # Fork: 1 of 1 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::objectFieldOffset has been called by org.openjdk.jmh.util.Utils (file:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar) WARNING: Please consider reporting this to the maintainers of class org.openjdk.jmh.util.Utils WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release # Warmup Iteration 1: 0.182 ms/op Iteration 1: 0.102 ms/op gc.alloc.rate: 741.852 MB/sec gc.alloc.rate.norm: 79296.214 B/op gc.count: 1.000 counts gc.time: 17.000 ms Iteration 2: 0.114 ms/op gc.alloc.rate: 661.243 MB/sec gc.alloc.rate.norm: 79206.749 B/op gc.count: ≈ 0 counts Iteration 3: 0.092 ms/op gc.alloc.rate: 817.478 MB/sec gc.alloc.rate.norm: 79405.815 B/op gc.count: 1.000 counts gc.time: 4.000 ms Iteration 4: 0.078 ms/op gc.alloc.rate: 968.400 MB/sec gc.alloc.rate.norm: 79065.188 B/op gc.count: ≈ 0 counts Result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix": 0.097 ±(99.9%) 0.099 ms/op [Average] (min, avg, max) = (0.078, 0.097, 0.114), stdev = 0.015 CI (99.9%): [≈ 0, 0.195] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate": 797.243 ±(99.9%) 844.752 MB/sec [Average] (min, avg, max) = (661.243, 797.243, 968.400), stdev = 130.726 CI (99.9%): [≈ 0, 1641.995] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm": 79243.491 ±(99.9%) 930.996 B/op [Average] (min, avg, max) = (79065.188, 79243.491, 79405.815), stdev = 144.073 CI (99.9%): [78312.495, 80174.488] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count": 2.000 ±(99.9%) 0.001 counts [Sum] (min, avg, max) = (≈ 0, 0.500, 1.000), stdev = 0.577 CI (99.9%): [2.000, 2.000] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time": 21.000 ±(99.9%) 0.001 ms [Sum] (min, avg, max) = (≈ 0, 5.250, 17.000), stdev = 8.057 CI (99.9%): [21.000, 21.000] (assumes normal distribution) # JMH version: 1.37 # VM version: JDK 25, OpenJDK 64-Bit Server VM, 25+36-b176.4 # VM invoker: java # VM options: # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 1 iterations, 100 ms each # Measurement: 4 iterations, 100 ms each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix # Parameters: (implementation = generalized-suffix-tree, itemCount = 100000, typedCharacterCount = 8) # Run progress: 63.64% complete, ETA 00:00:07 # Fork: 1 of 1 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::objectFieldOffset has been called by org.openjdk.jmh.util.Utils (file:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar) WARNING: Please consider reporting this to the maintainers of class org.openjdk.jmh.util.Utils WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release # Warmup Iteration 1: 0.143 ms/op Iteration 1: 0.063 ms/op gc.alloc.rate: 672.571 MB/sec gc.alloc.rate.norm: 44713.731 B/op gc.count: 1.000 counts gc.time: 16.000 ms Iteration 2: 0.042 ms/op gc.alloc.rate: 1019.039 MB/sec gc.alloc.rate.norm: 44588.979 B/op gc.count: ≈ 0 counts Iteration 3: 0.042 ms/op gc.alloc.rate: 1019.295 MB/sec gc.alloc.rate.norm: 44695.333 B/op gc.count: 1.000 counts gc.time: 2.000 ms Iteration 4: 0.040 ms/op gc.alloc.rate: 1061.241 MB/sec gc.alloc.rate.norm: 44796.145 B/op gc.count: ≈ 0 counts Result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix": 0.047 ±(99.9%) 0.072 ms/op [Average] (min, avg, max) = (0.040, 0.047, 0.063), stdev = 0.011 CI (99.9%): [≈ 0, 0.118] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate": 943.036 ±(99.9%) 1172.193 MB/sec [Average] (min, avg, max) = (672.571, 943.036, 1061.241), stdev = 181.398 CI (99.9%): [≈ 0, 2115.229] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm": 44698.547 ±(99.9%) 550.489 B/op [Average] (min, avg, max) = (44588.979, 44698.547, 44796.145), stdev = 85.189 CI (99.9%): [44148.058, 45249.036] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count": 2.000 ±(99.9%) 0.001 counts [Sum] (min, avg, max) = (≈ 0, 0.500, 1.000), stdev = 0.577 CI (99.9%): [2.000, 2.000] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time": 18.000 ±(99.9%) 0.001 ms [Sum] (min, avg, max) = (≈ 0, 4.500, 16.000), stdev = 7.724 CI (99.9%): [18.000, 18.000] (assumes normal distribution) # JMH version: 1.37 # VM version: JDK 25, OpenJDK 64-Bit Server VM, 25+36-b176.4 # VM invoker: java # VM options: # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 1 iterations, 100 ms each # Measurement: 4 iterations, 100 ms each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix # Parameters: (implementation = generalized-suffix-tree, itemCount = 100000, typedCharacterCount = 9) # Run progress: 72.73% complete, ETA 00:00:05 # Fork: 1 of 1 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::objectFieldOffset has been called by org.openjdk.jmh.util.Utils (file:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar) WARNING: Please consider reporting this to the maintainers of class org.openjdk.jmh.util.Utils WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release # Warmup Iteration 1: 0.117 ms/op Iteration 1: 0.052 ms/op gc.alloc.rate: 793.828 MB/sec gc.alloc.rate.norm: 43076.905 B/op gc.count: 1.000 counts gc.time: 9.000 ms Iteration 2: 0.038 ms/op gc.alloc.rate: 1085.692 MB/sec gc.alloc.rate.norm: 42861.973 B/op gc.count: ≈ 0 counts Iteration 3: 0.031 ms/op gc.alloc.rate: 1321.073 MB/sec gc.alloc.rate.norm: 42851.323 B/op gc.count: 1.000 counts gc.time: 2.000 ms Iteration 4: 0.032 ms/op gc.alloc.rate: 1292.914 MB/sec gc.alloc.rate.norm: 42896.087 B/op gc.count: ≈ 0 counts Result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix": 0.038 ±(99.9%) 0.062 ms/op [Average] (min, avg, max) = (0.031, 0.038, 0.052), stdev = 0.010 CI (99.9%): [≈ 0, 0.100] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate": 1123.377 ±(99.9%) 1573.371 MB/sec [Average] (min, avg, max) = (793.828, 1123.377, 1321.073), stdev = 243.481 CI (99.9%): [≈ 0, 2696.748] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm": 42921.572 ±(99.9%) 680.453 B/op [Average] (min, avg, max) = (42851.323, 42921.572, 43076.905), stdev = 105.301 CI (99.9%): [42241.119, 43602.024] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count": 2.000 ±(99.9%) 0.001 counts [Sum] (min, avg, max) = (≈ 0, 0.500, 1.000), stdev = 0.577 CI (99.9%): [2.000, 2.000] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time": 11.000 ±(99.9%) 0.001 ms [Sum] (min, avg, max) = (≈ 0, 2.750, 9.000), stdev = 4.272 CI (99.9%): [11.000, 11.000] (assumes normal distribution) # JMH version: 1.37 # VM version: JDK 25, OpenJDK 64-Bit Server VM, 25+36-b176.4 # VM invoker: java # VM options: # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 1 iterations, 100 ms each # Measurement: 4 iterations, 100 ms each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix # Parameters: (implementation = generalized-suffix-tree, itemCount = 100000, typedCharacterCount = 10) # Run progress: 81.82% complete, ETA 00:00:03 # Fork: 1 of 1 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::objectFieldOffset has been called by org.openjdk.jmh.util.Utils (file:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar) WARNING: Please consider reporting this to the maintainers of class org.openjdk.jmh.util.Utils WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release # Warmup Iteration 1: 0.047 ms/op Iteration 1: 0.022 ms/op gc.alloc.rate: 1101.410 MB/sec gc.alloc.rate.norm: 25568.975 B/op gc.count: 1.000 counts gc.time: 8.000 ms Iteration 2: 0.026 ms/op gc.alloc.rate: 942.323 MB/sec gc.alloc.rate.norm: 25551.382 B/op gc.count: 1.000 counts gc.time: 3.000 ms Iteration 3: 0.015 ms/op gc.alloc.rate: 1583.036 MB/sec gc.alloc.rate.norm: 25524.647 B/op gc.count: ≈ 0 counts Iteration 4: 0.016 ms/op gc.alloc.rate: 1550.787 MB/sec gc.alloc.rate.norm: 25577.633 B/op gc.count: ≈ 0 counts Result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix": 0.020 ±(99.9%) 0.033 ms/op [Average] (min, avg, max) = (0.015, 0.020, 0.026), stdev = 0.005 CI (99.9%): [≈ 0, 0.053] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate": 1294.389 ±(99.9%) 2078.072 MB/sec [Average] (min, avg, max) = (942.323, 1294.389, 1583.036), stdev = 321.584 CI (99.9%): [≈ 0, 3372.461] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm": 25555.659 ±(99.9%) 151.096 B/op [Average] (min, avg, max) = (25524.647, 25555.659, 25577.633), stdev = 23.382 CI (99.9%): [25404.564, 25706.755] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count": 2.000 ±(99.9%) 0.001 counts [Sum] (min, avg, max) = (≈ 0, 0.500, 1.000), stdev = 0.577 CI (99.9%): [2.000, 2.000] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time": 11.000 ±(99.9%) 0.001 ms [Sum] (min, avg, max) = (≈ 0, 2.750, 8.000), stdev = 3.775 CI (99.9%): [11.000, 11.000] (assumes normal distribution) # JMH version: 1.37 # VM version: JDK 25, OpenJDK 64-Bit Server VM, 25+36-b176.4 # VM invoker: java # VM options: # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 1 iterations, 100 ms each # Measurement: 4 iterations, 100 ms each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix # Parameters: (implementation = generalized-suffix-tree, itemCount = 100000, typedCharacterCount = 11) # Run progress: 90.91% complete, ETA 00:00:01 # Fork: 1 of 1 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::objectFieldOffset has been called by org.openjdk.jmh.util.Utils (file:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar) WARNING: Please consider reporting this to the maintainers of class org.openjdk.jmh.util.Utils WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release # Warmup Iteration 1: 0.039 ms/op Iteration 1: 0.016 ms/op gc.alloc.rate: 1037.177 MB/sec gc.alloc.rate.norm: 17771.777 B/op gc.count: 1.000 counts gc.time: 7.000 ms Iteration 2: 0.018 ms/op gc.alloc.rate: 944.879 MB/sec gc.alloc.rate.norm: 17740.214 B/op gc.count: ≈ 0 counts Iteration 3: 0.012 ms/op gc.alloc.rate: 1380.329 MB/sec gc.alloc.rate.norm: 17740.480 B/op gc.count: 1.000 counts gc.time: 3.000 ms Iteration 4: 0.011 ms/op gc.alloc.rate: 1497.169 MB/sec gc.alloc.rate.norm: 17723.092 B/op gc.count: ≈ 0 counts Result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix": 0.014 ±(99.9%) 0.020 ms/op [Average] (min, avg, max) = (0.011, 0.014, 0.018), stdev = 0.003 CI (99.9%): [≈ 0, 0.035] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate": 1214.888 ±(99.9%) 1715.937 MB/sec [Average] (min, avg, max) = (944.879, 1214.888, 1497.169), stdev = 265.543 CI (99.9%): [≈ 0, 2930.825] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm": 17743.891 ±(99.9%) 131.131 B/op [Average] (min, avg, max) = (17723.092, 17743.891, 17771.777), stdev = 20.293 CI (99.9%): [17612.760, 17875.022] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count": 2.000 ±(99.9%) 0.001 counts [Sum] (min, avg, max) = (≈ 0, 0.500, 1.000), stdev = 0.577 CI (99.9%): [2.000, 2.000] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time": 10.000 ±(99.9%) 0.001 ms [Sum] (min, avg, max) = (≈ 0, 2.500, 7.000), stdev = 3.317 CI (99.9%): [10.000, 10.000] (assumes normal distribution) # Run complete. Total time: 00:00:19 REMEMBER: The numbers below are just data. To gain reusable insights, you need to follow up on why the numbers are the way they are. Use profilers (see -prof, -lprof), design factorial experiments, perform baseline and negative tests that provide experimental control, make sure the benchmarking environment is safe on JVM/OS/HW level, ask for reviews from the domain experts. Do not assume the numbers tell you what you want them to tell. NOTE: Current JVM experimentally supports Compiler Blackholes, and they are in use. Please exercise extra caution when trusting the results, look into the generated code to check the benchmark still works, and factor in a small probability of new VM bugs. Additionally, while comparisons between different JVMs are already problematic, the performance difference caused by different Blackhole modes can be very significant. Please make sure you use the consistent Blackhole mode for comparisons. Benchmark (implementation) (itemCount) (typedCharacterCount) Mode Cnt Score Error Units LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix generalized-suffix-tree 100000 1 avgt 4 5.983 ± 7.345 ms/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate generalized-suffix-tree 100000 1 avgt 4 177.717 ± 120.968 MB/sec LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm generalized-suffix-tree 100000 1 avgt 4 1102005.332 ± 735005.189 B/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count generalized-suffix-tree 100000 1 avgt 4 ≈ 0 counts LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix generalized-suffix-tree 100000 2 avgt 4 0.860 ± 1.401 ms/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate generalized-suffix-tree 100000 2 avgt 4 267.059 ± 224.266 MB/sec LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm generalized-suffix-tree 100000 2 avgt 4 235346.957 ± 149183.281 B/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count generalized-suffix-tree 100000 2 avgt 4 1.000 counts LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time generalized-suffix-tree 100000 2 avgt 4 7.000 ms LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix generalized-suffix-tree 100000 3 avgt 4 0.342 ± 0.467 ms/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate generalized-suffix-tree 100000 3 avgt 4 483.166 ± 531.149 MB/sec LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm generalized-suffix-tree 100000 3 avgt 4 168787.049 ± 21809.108 B/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count generalized-suffix-tree 100000 3 avgt 4 1.000 counts LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time generalized-suffix-tree 100000 3 avgt 4 9.000 ms LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix generalized-suffix-tree 100000 4 avgt 4 0.181 ± 0.258 ms/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate generalized-suffix-tree 100000 4 avgt 4 826.056 ± 1261.389 MB/sec LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm generalized-suffix-tree 100000 4 avgt 4 153475.923 ± 1079.680 B/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count generalized-suffix-tree 100000 4 avgt 4 2.000 counts LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time generalized-suffix-tree 100000 4 avgt 4 13.000 ms LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix generalized-suffix-tree 100000 5 avgt 4 0.180 ± 0.548 ms/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate generalized-suffix-tree 100000 5 avgt 4 792.239 ± 1435.488 MB/sec LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm generalized-suffix-tree 100000 5 avgt 4 135161.439 ± 86610.643 B/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count generalized-suffix-tree 100000 5 avgt 4 2.000 counts LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time generalized-suffix-tree 100000 5 avgt 4 12.000 ms LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix generalized-suffix-tree 100000 6 avgt 4 0.143 ± 0.223 ms/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate generalized-suffix-tree 100000 6 avgt 4 873.335 ± 1279.916 MB/sec LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm generalized-suffix-tree 100000 6 avgt 4 126366.412 ± 2095.210 B/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count generalized-suffix-tree 100000 6 avgt 4 2.000 counts LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time generalized-suffix-tree 100000 6 avgt 4 11.000 ms LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix generalized-suffix-tree 100000 7 avgt 4 0.097 ± 0.099 ms/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate generalized-suffix-tree 100000 7 avgt 4 797.243 ± 844.752 MB/sec LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm generalized-suffix-tree 100000 7 avgt 4 79243.491 ± 930.996 B/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count generalized-suffix-tree 100000 7 avgt 4 2.000 counts LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time generalized-suffix-tree 100000 7 avgt 4 21.000 ms LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix generalized-suffix-tree 100000 8 avgt 4 0.047 ± 0.072 ms/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate generalized-suffix-tree 100000 8 avgt 4 943.036 ± 1172.193 MB/sec LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm generalized-suffix-tree 100000 8 avgt 4 44698.547 ± 550.489 B/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count generalized-suffix-tree 100000 8 avgt 4 2.000 counts LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time generalized-suffix-tree 100000 8 avgt 4 18.000 ms LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix generalized-suffix-tree 100000 9 avgt 4 0.038 ± 0.062 ms/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate generalized-suffix-tree 100000 9 avgt 4 1123.377 ± 1573.371 MB/sec LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm generalized-suffix-tree 100000 9 avgt 4 42921.572 ± 680.453 B/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count generalized-suffix-tree 100000 9 avgt 4 2.000 counts LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time generalized-suffix-tree 100000 9 avgt 4 11.000 ms LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix generalized-suffix-tree 100000 10 avgt 4 0.020 ± 0.033 ms/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate generalized-suffix-tree 100000 10 avgt 4 1294.389 ± 2078.072 MB/sec LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm generalized-suffix-tree 100000 10 avgt 4 25555.659 ± 151.096 B/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count generalized-suffix-tree 100000 10 avgt 4 2.000 counts LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time generalized-suffix-tree 100000 10 avgt 4 11.000 ms LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix generalized-suffix-tree 100000 11 avgt 4 0.014 ± 0.020 ms/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate generalized-suffix-tree 100000 11 avgt 4 1214.888 ± 1715.937 MB/sec LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm generalized-suffix-tree 100000 11 avgt 4 17743.891 ± 131.131 B/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count generalized-suffix-tree 100000 11 avgt 4 2.000 counts LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time generalized-suffix-tree 100000 11 avgt 4 10.000 ms Benchmark result is saved to /build/reports/jmh/adaptive-jmh-passes/pass-01-group-006.json # Adaptive pass 1, group 7 # Command: java -cp /build/classes/java/benchmark:/build/resources/benchmark:/build/moddev/artifacts/vanilla-26.2-2.jar:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar:/modules-2/files-2.1/com.abahgat/suffixtree/2.0.0/ffe2c29796add2624d2e0b9f33e72421eb5c5ea5/suffixtree-2.0.0.jar:/modules-2/files-2.1/net.mezzdev/suffixtree/1.3.0/1a1b87af70a1631ff6d6c9d49c63564aadecb176/suffixtree-1.3.0.jar:/modules-2/files-2.1/net.mezzdev/baked-substring-index/0.1.0/4f9fbd9eb54fdb1b8ec40a83297f4e8f4479eb7c/baked-substring-index-0.1.0.jar:/modules-2/files-2.1/net.mezzdev/baked-suffix-array-index/0.1.0/cd5e5ffbcee030d149e7a5a70e151a06158bd643/baked-suffix-array-index-0.1.0.jar:/modules-2/files-2.1/net.neoforged/mergetool/2.0.7/793b18456e92c4a7f66d9b5d8bf7a9c1c7a20b20/mergetool-2.0.7-api.jar:/modules-2/files-2.1/net.sf.jopt-simple/jopt-simple/5.0.4/4fdac2fbe92dfad86aa6e9301736f6b4342a3f5c/jopt-simple-5.0.4.jar:/modules-2/files-2.1/org.apache.commons/commons-math3/3.6.1/e4ba98f1d4b3c80ec46392f25e094a6a2e58fcbf/commons-math3-3.6.1.jar:/modules-2/files-2.1/com.google.code.findbugs/jsr305/3.0.2/25ea2e8b0c338a877313bd4672d3fe056ea78f0d/jsr305-3.0.2.jar:/modules-2/files-2.1/org.jspecify/jspecify/1.0.0/7425a601c1c7ec76645a78d22b8c6a627edee507/jspecify-1.0.0.jar:/modules-2/files-2.1/org.jetbrains/annotations/26.0.2-1/c7ce3cdeda3d18909368dfe5977332dfad326c6d/annotations-26.0.2-1.jar:/modules-2/files-2.1/ca.weblite/java-objc-bridge/1.1/1227f9e0666314f9de41477e3ec277e542ed7f7b/java-objc-bridge-1.1.jar:/modules-2/files-2.1/at.yawk.lz4/lz4-java/1.10.1/f541d7f910fe3d76f38f799c507c48cc81b12ecb/lz4-java-1.10.1.jar:/modules-2/files-2.1/com.azure/azure-json/1.4.0/fcc1d354dbc3e0300e5276b1bf124d0247799cd8/azure-json-1.4.0.jar:/modules-2/files-2.1/com.github.oshi/oshi-core/6.9.0/3224870731860cfcd7744581a05b559e94291e7/oshi-core-6.9.0.jar:/modules-2/files-2.1/com.google.code.gson/gson/2.14.0/efc0e34ede4e3204eaefb84a00e55e8c86634382/gson-2.14.0.jar:/modules-2/files-2.1/com.google.guava/failureaccess/1.0.3/aeaffd00d57023a2c947393ed251f0354f0985fc/failureaccess-1.0.3.jar:/modules-2/files-2.1/com.google.guava/guava/33.6.0-jre/c376b13067cc99a5774403530953f7b05a91e218/guava-33.6.0-jre.jar:/modules-2/files-2.1/com.ibm.icu/icu4j/78.3/6a851a53bb1f25689fc418dcc8935b0d93580adf/icu4j-78.3.jar:/modules-2/files-2.1/com.microsoft.azure/msal4j/1.24.1/c233f2d047b9755f7041adf21a858c680e4c9242/msal4j-1.24.1.jar:/modules-2/files-2.1/com.mojang/authlib/9.0.75/d61056a234d5e4b272e09d59b0713f80d6c0b6af/authlib-9.0.75.jar:/modules-2/files-2.1/com.mojang/blocklist/1.0.10/5c685c5ffa94c4cd39496c7184c1d122e515ecef/blocklist-1.0.10.jar:/modules-2/files-2.1/com.mojang/brigadier/1.3.10/d15b53a14cf20fdcaa98f731af5dda654452c010/brigadier-1.3.10.jar:/modules-2/files-2.1/com.mojang/datafixerupper/10.0.21/b6b2ae770c02e0c1eb90f9985b151e9085a38d0b/datafixerupper-10.0.21.jar:/modules-2/files-2.1/com.mojang/jtracy/1.0.37/a3fb649b2e2b2288d2978f0b0bc3d83f62809d1e/jtracy-1.0.37.jar:/modules-2/files-2.1/com.mojang/jtracy/1.0.37/a99fcb63b72fb623534d0ceb71bda4bed9b55b4c/jtracy-1.0.37-natives-macos.jar:/modules-2/files-2.1/com.mojang/jtracy/1.0.37/c8e971da5150aa33283c5bf4097154c0da554fb9/jtracy-1.0.37-natives-macos-arm64.jar:/modules-2/files-2.1/com.mojang/logging/1.7.12/351cea64a5233361327d8d54c44277041beed97f/logging-1.7.12.jar:/modules-2/files-2.1/com.mojang/patchy/2.2.10/da05971b07cbb379d002cf7eaec6a2048211fefc/patchy-2.2.10.jar:/modules-2/files-2.1/com.mojang/text2speech/1.19.12/2e517a75c79d34d32de2b5d68422150836c2133e/text2speech-1.19.12.jar:/modules-2/files-2.1/commons-codec/commons-codec/1.22.0/6b3eb4beb7058c2a638f5f17bcb388649fd339dd/commons-codec-1.22.0.jar:/modules-2/files-2.1/commons-io/commons-io/2.20.0/36f3474daec2849c149e877614e7f979b2082cd2/commons-io-2.20.0.jar:/modules-2/files-2.1/io.netty/netty-buffer/4.2.15.Final/2beb620803bf871cda2dd5d46b8f831e8015dd34/netty-buffer-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-codec-base/4.2.15.Final/e97149fdd5fb04858efa90e314651c8d700dc68b/netty-codec-base-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-codec-compression/4.2.15.Final/89fc4a20b7ae6af974304b1695405e62c4f9b16d/netty-codec-compression-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-codec-http/4.2.15.Final/e611826aa054371bb9a17f27bdb05755a4cac5f0/netty-codec-http-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-common/4.2.15.Final/7222492c1af9c2d4d78d521eea340a619e242fda/netty-common-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-handler/4.2.15.Final/d5344afd1148e3b9927a74be019605ebb0937a93/netty-handler-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-resolver/4.2.15.Final/b961a16d379b508b473e064ba06842bba280f4e3/netty-resolver-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-transport-classes-epoll/4.2.15.Final/44bafba9c9993800e955b365bba4981326f3f3b1/netty-transport-classes-epoll-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-transport-classes-kqueue/4.2.15.Final/f248656bb907607c5a41c7b61fd918a97db79250/netty-transport-classes-kqueue-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-transport-native-unix-common/4.2.15.Final/efb6943b4de9e0226a5ac35330f232605424af02/netty-transport-native-unix-common-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-transport/4.2.15.Final/a000c3a6196ee40207b73ac619dcb339409dd62f/netty-transport-4.2.15.Final.jar:/modules-2/files-2.1/it.unimi.dsi/fastutil/8.5.18/a6cff377eecc19c2037bf31568a6d7106b50ba1f/fastutil-8.5.18.jar:/modules-2/files-2.1/net.java.dev.jna/jna-platform/5.17.0/a4934c44d25a9d8c2ddf4203affd20330cb3426f/jna-platform-5.17.0.jar:/modules-2/files-2.1/net.java.dev.jna/jna/5.17.0/33d12735bef894440780fce64f9758d420c7bae2/jna-5.17.0.jar:/modules-2/files-2.1/org.apache.commons/commons-compress/1.28.0/e482f2c7a88dac3c497e96aa420b6a769f59c8d7/commons-compress-1.28.0.jar:/modules-2/files-2.1/org.apache.commons/commons-lang3/3.20.0/65897b3e5731220962e659e001904af3c3cbeba9/commons-lang3-3.20.0.jar:/modules-2/files-2.1/org.apache.logging.log4j/log4j-api/2.26.0/ad52af0ecf054a7e3f275a2e180ee06d9c490951/log4j-api-2.26.0.jar:/modules-2/files-2.1/org.apache.logging.log4j/log4j-core/2.26.0/d267ca60b27ddb075e0b4e75e7875859717bf85f/log4j-core-2.26.0.jar:/modules-2/files-2.1/org.apache.logging.log4j/log4j-slf4j2-impl/2.26.0/668c0f0e813d83f00a7182533aa658ec7e7a0a0d/log4j-slf4j2-impl-2.26.0.jar:/modules-2/files-2.1/org.jcraft/jorbis/0.0.17/8872d22b293e8f5d7d56ff92be966e6dc28ebdc6/jorbis-0.0.17.jar:/modules-2/files-2.1/org.joml/joml/1.10.8/fc0a71dad90a2cf41d82a76156a0e700af8e4f8d/joml-1.10.8.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-freetype/3.4.1/caa75a37e857efc9b0686e434d708d6420c5b6ea/lwjgl-freetype-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-freetype/3.4.1/61cb2d85e1838bca1a0b664f54e818bc68deb2ef/lwjgl-freetype-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-freetype/3.4.1/cce5a86b4a7d17817fe8ea0296302a4353acf2d5/lwjgl-freetype-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-glfw/3.4.1/a782b1ddd175c9107bf300fd92920579ea65e2a4/lwjgl-glfw-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-glfw/3.4.1/3c8538942f58377d59cd7be2dc164ba71a53868a/lwjgl-glfw-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-glfw/3.4.1/ef1f8efca5a60ba3512bc4982b88e446ecc43378/lwjgl-glfw-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-jemalloc/3.4.1/16b663092854fc6adfe0a941e61cae2bb2e437b6/lwjgl-jemalloc-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-jemalloc/3.4.1/581b4d542e841015ce3265eed0495e2cde15b1d0/lwjgl-jemalloc-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-jemalloc/3.4.1/dcd7e3f9a2ca386e8c5b8f508a8511d9dd63bab0/lwjgl-jemalloc-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-openal/3.4.1/8508bd60589de0539aa465b78fcf838efd07ae9a/lwjgl-openal-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-openal/3.4.1/a4dc57b7b0880d3fffb4d0b61649f45712bccc93/lwjgl-openal-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-openal/3.4.1/1c709a38c4a0e86aae96db7b8c78432307f2322a/lwjgl-openal-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-opengl/3.4.1/830412cab823c029cda6b9729f9d2ed36cf79959/lwjgl-opengl-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-opengl/3.4.1/ba18fc6012b88494ee893506934b92b01c4ef14b/lwjgl-opengl-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-opengl/3.4.1/35b5550058de4960525f465243bd01805f04fd8b/lwjgl-opengl-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-shaderc/3.4.1/5c02c88f0d879529014c78463b76f43fdecfd272/lwjgl-shaderc-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-shaderc/3.4.1/1d7bbdba70cf29c42978f6c0c1bdef945b922072/lwjgl-shaderc-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-shaderc/3.4.1/48aa2727e8616154d399d4dab0d8e8479741fa4f/lwjgl-shaderc-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-spvc/3.4.1/188553592e97b5ab2dba54a1b403ee80b48dad4c/lwjgl-spvc-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-spvc/3.4.1/2eeebd6d5bae966bfffda9747eba744cfe839ae1/lwjgl-spvc-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-spvc/3.4.1/a4f66638d28129eba0babd8fdc4385427a5ea83e/lwjgl-spvc-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-stb/3.4.1/f077c3dafc31924fbe8acb0b913f08977ba27f8e/lwjgl-stb-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-stb/3.4.1/fd1ea36b717b0832babca09324a6cfc43906e2aa/lwjgl-stb-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-stb/3.4.1/da554e04f819f09b0f3473bd931628ebf557965e/lwjgl-stb-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-tinyfd/3.4.1/562697d40dbd2ed0424bf24dcf65d51170f81adf/lwjgl-tinyfd-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-tinyfd/3.4.1/211ae9e8720e8f10f2ce85a118fa7bd5ee71584b/lwjgl-tinyfd-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-tinyfd/3.4.1/7bcde70f6164b2e72f84cac5257b7e9877b88510/lwjgl-tinyfd-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vma/3.4.1/2c54ce10154feb1ede4d23c5947438cdbfdcc003/lwjgl-vma-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vma/3.4.1/a130a9e4f96c83063f749e1dcc7065e0dffb3936/lwjgl-vma-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vma/3.4.1/9451dc1067716bc4125cdba65a7096e465f4d0e5/lwjgl-vma-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vulkan/3.4.1/d0601fdc38890755e5638048c14cc0f7b990964b/lwjgl-vulkan-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vulkan/3.4.1/140c7fd3e0fdbcc625c92be9328301c555035905/lwjgl-vulkan-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vulkan/3.4.1/2c933bf617cb8a174af26585efda4778b59e6d44/lwjgl-vulkan-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl/3.4.1/129e06a04f93992cb2a45172435b21fc4b60dd7d/lwjgl-3.4.1-unsafe.jar:/modules-2/files-2.1/org.lwjgl/lwjgl/3.4.1/b034fd9a67cb8646c01af7efcefcb93be835542b/lwjgl-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl/3.4.1/b4cbdef4818abd714ee66985344c0949fd1cd6d6/lwjgl-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.slf4j/slf4j-api/2.0.17/d9e58ac9c7779ba3bf8142aff6c830617a7fe60f/slf4j-api-2.0.17.jar:/modules-2/files-2.1/org.ow2.asm/asm-util/9.5/64b5a1fc8c1b15ed2efd6a063e976bc8d3dc5ffe/asm-util-9.5.jar:/modules-2/files-2.1/org.ow2.asm/asm-analysis/9.5/490bacc77de7cbc0be1a30bb3471072d705be4a4/asm-analysis-9.5.jar:/modules-2/files-2.1/org.ow2.asm/asm-tree/9.5/fd33c8b6373abaa675be407082fdfda35021254a/asm-tree-9.5.jar:/modules-2/files-2.1/org.ow2.asm/asm/9.5/dc6ea1875f4d64fbc85e1691c95b96a3d8569c90/asm-9.5.jar:/modules-2/files-2.1/net.neoforged/srgutils/1.0.10/abb471237b33b19f040ada00bfbad1ec45b949b6/srgutils-1.0.10.jar:/modules-2/files-2.1/io.netty/netty-transport-native-kqueue/4.2.15.Final/8ea0ef3eb716d821332e4b4926825a4b7c1a6d38/netty-transport-native-kqueue-4.2.15.Final-osx-aarch_64.jar:/modules-2/files-2.1/io.netty/netty-transport-native-kqueue/4.2.15.Final/4245380831515fb4eca18d32477a27fbb8f7b8f4/netty-transport-native-kqueue-4.2.15.Final-osx-x86_64.jar:/build/classes/java/main:/build/resources/main org.openjdk.jmh.Main .*net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix -p itemCount=100000 -p implementation=abahgat-suffix-tree -f 1 -wi 1 -i 4 -w 100ms -r 100ms -rf json -rff /build/reports/jmh/adaptive-jmh-passes/pass-01-group-007.json -o /build/reports/jmh/adaptive-jmh-passes/pass-01-group-007.txt -foe true -p typedCharacterCount=1,2,3,4,5,6,7,8,9,10,11 -prof gc # JMH version: 1.37 # VM version: JDK 25, OpenJDK 64-Bit Server VM, 25+36-b176.4 # VM invoker: java # VM options: # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 1 iterations, 100 ms each # Measurement: 4 iterations, 100 ms each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix # Parameters: (implementation = abahgat-suffix-tree, itemCount = 100000, typedCharacterCount = 1) # Run progress: 0.00% complete, ETA 00:00:05 # Fork: 1 of 1 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::objectFieldOffset has been called by org.openjdk.jmh.util.Utils (file:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar) WARNING: Please consider reporting this to the maintainers of class org.openjdk.jmh.util.Utils WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release # Warmup Iteration 1: 152.805 ms/op Iteration 1: 50.237 ms/op gc.alloc.rate: 1379.322 MB/sec gc.alloc.rate.norm: 72853116.000 B/op gc.count: ≈ 0 counts Iteration 2: 57.335 ms/op gc.alloc.rate: 1166.105 MB/sec gc.alloc.rate.norm: 70216836.000 B/op gc.count: 1.000 counts gc.time: 22.000 ms Iteration 3: 72.508 ms/op gc.alloc.rate: 1432.233 MB/sec gc.alloc.rate.norm: 109065644.000 B/op gc.count: ≈ 0 counts Iteration 4: 136.408 ms/op gc.alloc.rate: 1103.909 MB/sec gc.alloc.rate.norm: 158170624.000 B/op gc.count: ≈ 0 counts Result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix": 79.122 ±(99.9%) 253.985 ms/op [Average] (min, avg, max) = (50.237, 79.122, 136.408), stdev = 39.304 CI (99.9%): [≈ 0, 333.106] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate": 1270.392 ±(99.9%) 1032.913 MB/sec [Average] (min, avg, max) = (1103.909, 1270.392, 1432.233), stdev = 159.844 CI (99.9%): [237.479, 2303.305] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm": 102576555.000 ±(99.9%) 265478021.379 B/op [Average] (min, avg, max) = (70216836.000, 102576555.000, 158170624.000), stdev = 41083017.675 CI (99.9%): [≈ 0, 368054576.379] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count": 1.000 ±(99.9%) 0.001 counts [Sum] (min, avg, max) = (≈ 0, 0.250, 1.000), stdev = 0.500 CI (99.9%): [1.000, 1.000] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time": 22.000 ±(99.9%) 0.001 ms [Sum] (min, avg, max) = (≈ 0, 5.500, 22.000), stdev = 11.000 CI (99.9%): [22.000, 22.000] (assumes normal distribution) # JMH version: 1.37 # VM version: JDK 25, OpenJDK 64-Bit Server VM, 25+36-b176.4 # VM invoker: java # VM options: # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 1 iterations, 100 ms each # Measurement: 4 iterations, 100 ms each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix # Parameters: (implementation = abahgat-suffix-tree, itemCount = 100000, typedCharacterCount = 2) # Run progress: 9.09% complete, ETA 00:00:21 # Fork: 1 of 1 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::objectFieldOffset has been called by org.openjdk.jmh.util.Utils (file:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar) WARNING: Please consider reporting this to the maintainers of class org.openjdk.jmh.util.Utils WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release # Warmup Iteration 1: 8.582 ms/op Iteration 1: 11.247 ms/op gc.alloc.rate: 1068.322 MB/sec gc.alloc.rate.norm: 12624708.444 B/op gc.count: ≈ 0 counts Iteration 2: 4.565 ms/op gc.alloc.rate: 1470.881 MB/sec gc.alloc.rate.norm: 7050939.478 B/op gc.count: 1.000 counts gc.time: 10.000 ms Iteration 3: 6.053 ms/op gc.alloc.rate: 1443.435 MB/sec gc.alloc.rate.norm: 9173606.222 B/op gc.count: ≈ 0 counts Iteration 4: 6.069 ms/op gc.alloc.rate: 1571.100 MB/sec gc.alloc.rate.norm: 10013532.889 B/op gc.count: ≈ 0 counts Result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix": 6.983 ±(99.9%) 18.923 ms/op [Average] (min, avg, max) = (4.565, 6.983, 11.247), stdev = 2.928 CI (99.9%): [≈ 0, 25.907] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate": 1388.435 ±(99.9%) 1423.894 MB/sec [Average] (min, avg, max) = (1068.322, 1388.435, 1571.100), stdev = 220.349 CI (99.9%): [≈ 0, 2812.328] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm": 9715696.758 ±(99.9%) 14898050.091 B/op [Average] (min, avg, max) = (7050939.478, 9715696.758, 12624708.444), stdev = 2305489.743 CI (99.9%): [≈ 0, 24613746.850] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count": 1.000 ±(99.9%) 0.001 counts [Sum] (min, avg, max) = (≈ 0, 0.250, 1.000), stdev = 0.500 CI (99.9%): [1.000, 1.000] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time": 10.000 ±(99.9%) 0.001 ms [Sum] (min, avg, max) = (≈ 0, 2.500, 10.000), stdev = 5.000 CI (99.9%): [10.000, 10.000] (assumes normal distribution) # JMH version: 1.37 # VM version: JDK 25, OpenJDK 64-Bit Server VM, 25+36-b176.4 # VM invoker: java # VM options: # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 1 iterations, 100 ms each # Measurement: 4 iterations, 100 ms each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix # Parameters: (implementation = abahgat-suffix-tree, itemCount = 100000, typedCharacterCount = 3) # Run progress: 18.18% complete, ETA 00:00:18 # Fork: 1 of 1 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::objectFieldOffset has been called by org.openjdk.jmh.util.Utils (file:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar) WARNING: Please consider reporting this to the maintainers of class org.openjdk.jmh.util.Utils WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release # Warmup Iteration 1: 6.377 ms/op Iteration 1: 3.659 ms/op gc.alloc.rate: 1033.422 MB/sec gc.alloc.rate.norm: 3970575.200 B/op gc.count: ≈ 0 counts Iteration 2: 3.008 ms/op gc.alloc.rate: 1245.032 MB/sec gc.alloc.rate.norm: 3932504.200 B/op gc.count: 1.000 counts gc.time: 26.000 ms Iteration 3: 1.920 ms/op gc.alloc.rate: 1849.607 MB/sec gc.alloc.rate.norm: 3729065.600 B/op gc.count: ≈ 0 counts Iteration 4: 2.094 ms/op gc.alloc.rate: 1798.955 MB/sec gc.alloc.rate.norm: 3957451.102 B/op gc.count: ≈ 0 counts Result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix": 2.670 ±(99.9%) 5.257 ms/op [Average] (min, avg, max) = (1.920, 2.670, 3.659), stdev = 0.814 CI (99.9%): [≈ 0, 7.927] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate": 1481.754 ±(99.9%) 2619.487 MB/sec [Average] (min, avg, max) = (1033.422, 1481.754, 1849.607), stdev = 405.369 CI (99.9%): [≈ 0, 4101.241] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm": 3897399.026 ±(99.9%) 732322.549 B/op [Average] (min, avg, max) = (3729065.600, 3897399.026, 3970575.200), stdev = 113327.725 CI (99.9%): [3165076.476, 4629721.575] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count": 1.000 ±(99.9%) 0.001 counts [Sum] (min, avg, max) = (≈ 0, 0.250, 1.000), stdev = 0.500 CI (99.9%): [1.000, 1.000] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time": 26.000 ±(99.9%) 0.001 ms [Sum] (min, avg, max) = (≈ 0, 6.500, 26.000), stdev = 13.000 CI (99.9%): [26.000, 26.000] (assumes normal distribution) # JMH version: 1.37 # VM version: JDK 25, OpenJDK 64-Bit Server VM, 25+36-b176.4 # VM invoker: java # VM options: # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 1 iterations, 100 ms each # Measurement: 4 iterations, 100 ms each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix # Parameters: (implementation = abahgat-suffix-tree, itemCount = 100000, typedCharacterCount = 4) # Run progress: 27.27% complete, ETA 00:00:15 # Fork: 1 of 1 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::objectFieldOffset has been called by org.openjdk.jmh.util.Utils (file:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar) WARNING: Please consider reporting this to the maintainers of class org.openjdk.jmh.util.Utils WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release # Warmup Iteration 1: 3.013 ms/op Iteration 1: 1.710 ms/op gc.alloc.rate: 1642.334 MB/sec gc.alloc.rate.norm: 2949644.774 B/op gc.count: ≈ 0 counts Iteration 2: 2.342 ms/op gc.alloc.rate: 1217.600 MB/sec gc.alloc.rate.norm: 2994327.467 B/op gc.count: 1.000 counts gc.time: 9.000 ms Iteration 3: 1.538 ms/op gc.alloc.rate: 1854.926 MB/sec gc.alloc.rate.norm: 2996570.824 B/op gc.count: ≈ 0 counts Iteration 4: 1.554 ms/op gc.alloc.rate: 1864.823 MB/sec gc.alloc.rate.norm: 3042998.706 B/op gc.count: ≈ 0 counts Result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix": 1.786 ±(99.9%) 2.446 ms/op [Average] (min, avg, max) = (1.538, 1.786, 2.342), stdev = 0.378 CI (99.9%): [≈ 0, 4.232] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate": 1644.921 ±(99.9%) 1956.709 MB/sec [Average] (min, avg, max) = (1217.600, 1644.921, 1864.823), stdev = 302.803 CI (99.9%): [≈ 0, 3601.629] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm": 2995885.443 ±(99.9%) 246369.251 B/op [Average] (min, avg, max) = (2949644.774, 2995885.443, 3042998.706), stdev = 38125.914 CI (99.9%): [2749516.191, 3242254.694] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count": 1.000 ±(99.9%) 0.001 counts [Sum] (min, avg, max) = (≈ 0, 0.250, 1.000), stdev = 0.500 CI (99.9%): [1.000, 1.000] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time": 9.000 ±(99.9%) 0.001 ms [Sum] (min, avg, max) = (≈ 0, 2.250, 9.000), stdev = 4.500 CI (99.9%): [9.000, 9.000] (assumes normal distribution) # JMH version: 1.37 # VM version: JDK 25, OpenJDK 64-Bit Server VM, 25+36-b176.4 # VM invoker: java # VM options: # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 1 iterations, 100 ms each # Measurement: 4 iterations, 100 ms each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix # Parameters: (implementation = abahgat-suffix-tree, itemCount = 100000, typedCharacterCount = 5) # Run progress: 36.36% complete, ETA 00:00:13 # Fork: 1 of 1 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::objectFieldOffset has been called by org.openjdk.jmh.util.Utils (file:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar) WARNING: Please consider reporting this to the maintainers of class org.openjdk.jmh.util.Utils WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release # Warmup Iteration 1: 2.394 ms/op Iteration 1: 1.900 ms/op gc.alloc.rate: 1343.222 MB/sec gc.alloc.rate.norm: 2681138.473 B/op gc.count: ≈ 0 counts Iteration 2: 1.391 ms/op gc.alloc.rate: 1678.924 MB/sec gc.alloc.rate.norm: 2452900.865 B/op gc.count: 1.000 counts gc.time: 11.000 ms Iteration 3: 1.288 ms/op gc.alloc.rate: 1877.428 MB/sec gc.alloc.rate.norm: 2538475.952 B/op gc.count: ≈ 0 counts Iteration 4: 1.290 ms/op gc.alloc.rate: 1893.778 MB/sec gc.alloc.rate.norm: 2564950.927 B/op gc.count: ≈ 0 counts Result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix": 1.467 ±(99.9%) 1.891 ms/op [Average] (min, avg, max) = (1.288, 1.467, 1.900), stdev = 0.293 CI (99.9%): [≈ 0, 3.358] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate": 1698.338 ±(99.9%) 1654.883 MB/sec [Average] (min, avg, max) = (1343.222, 1698.338, 1893.778), stdev = 256.095 CI (99.9%): [43.455, 3353.221] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm": 2559366.554 ±(99.9%) 608834.007 B/op [Average] (min, avg, max) = (2452900.865, 2559366.554, 2681138.473), stdev = 94217.737 CI (99.9%): [1950532.547, 3168200.561] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count": 1.000 ±(99.9%) 0.001 counts [Sum] (min, avg, max) = (≈ 0, 0.250, 1.000), stdev = 0.500 CI (99.9%): [1.000, 1.000] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time": 11.000 ±(99.9%) 0.001 ms [Sum] (min, avg, max) = (≈ 0, 2.750, 11.000), stdev = 5.500 CI (99.9%): [11.000, 11.000] (assumes normal distribution) # JMH version: 1.37 # VM version: JDK 25, OpenJDK 64-Bit Server VM, 25+36-b176.4 # VM invoker: java # VM options: # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 1 iterations, 100 ms each # Measurement: 4 iterations, 100 ms each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix # Parameters: (implementation = abahgat-suffix-tree, itemCount = 100000, typedCharacterCount = 6) # Run progress: 45.45% complete, ETA 00:00:11 # Fork: 1 of 1 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::objectFieldOffset has been called by org.openjdk.jmh.util.Utils (file:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar) WARNING: Please consider reporting this to the maintainers of class org.openjdk.jmh.util.Utils WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release # Warmup Iteration 1: 3.212 ms/op Iteration 1: 1.496 ms/op gc.alloc.rate: 1632.803 MB/sec gc.alloc.rate.norm: 2565407.059 B/op gc.count: ≈ 0 counts Iteration 2: 1.452 ms/op gc.alloc.rate: 1547.532 MB/sec gc.alloc.rate.norm: 2358831.342 B/op gc.count: 1.000 counts gc.time: 10.000 ms Iteration 3: 1.247 ms/op gc.alloc.rate: 1924.523 MB/sec gc.alloc.rate.norm: 2519198.952 B/op gc.count: ≈ 0 counts Iteration 4: 1.248 ms/op gc.alloc.rate: 1918.730 MB/sec gc.alloc.rate.norm: 2513726.146 B/op gc.count: ≈ 0 counts Result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix": 1.360 ±(99.9%) 0.853 ms/op [Average] (min, avg, max) = (1.247, 1.360, 1.496), stdev = 0.132 CI (99.9%): [0.508, 2.213] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate": 1755.897 ±(99.9%) 1257.005 MB/sec [Average] (min, avg, max) = (1547.532, 1755.897, 1924.523), stdev = 194.523 CI (99.9%): [498.892, 3012.902] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm": 2489290.875 ±(99.9%) 581638.135 B/op [Average] (min, avg, max) = (2358831.342, 2489290.875, 2565407.059), stdev = 90009.145 CI (99.9%): [1907652.740, 3070929.010] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count": 1.000 ±(99.9%) 0.001 counts [Sum] (min, avg, max) = (≈ 0, 0.250, 1.000), stdev = 0.500 CI (99.9%): [1.000, 1.000] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time": 10.000 ±(99.9%) 0.001 ms [Sum] (min, avg, max) = (≈ 0, 2.500, 10.000), stdev = 5.000 CI (99.9%): [10.000, 10.000] (assumes normal distribution) # JMH version: 1.37 # VM version: JDK 25, OpenJDK 64-Bit Server VM, 25+36-b176.4 # VM invoker: java # VM options: # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 1 iterations, 100 ms each # Measurement: 4 iterations, 100 ms each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix # Parameters: (implementation = abahgat-suffix-tree, itemCount = 100000, typedCharacterCount = 7) # Run progress: 54.55% complete, ETA 00:00:09 # Fork: 1 of 1 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::objectFieldOffset has been called by org.openjdk.jmh.util.Utils (file:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar) WARNING: Please consider reporting this to the maintainers of class org.openjdk.jmh.util.Utils WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release # Warmup Iteration 1: 1.599 ms/op Iteration 1: 1.045 ms/op gc.alloc.rate: 1466.211 MB/sec gc.alloc.rate.norm: 1609101.228 B/op gc.count: 1.000 counts gc.time: 10.000 ms Iteration 2: 0.861 ms/op gc.alloc.rate: 1716.930 MB/sec gc.alloc.rate.norm: 1553023.677 B/op gc.count: ≈ 0 counts Iteration 3: 0.844 ms/op gc.alloc.rate: 1747.269 MB/sec gc.alloc.rate.norm: 1547571.087 B/op gc.count: ≈ 0 counts Iteration 4: 0.919 ms/op gc.alloc.rate: 1661.407 MB/sec gc.alloc.rate.norm: 1603352.615 B/op gc.count: 1.000 counts gc.time: 6.000 ms Result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix": 0.917 ±(99.9%) 0.588 ms/op [Average] (min, avg, max) = (0.844, 0.917, 1.045), stdev = 0.091 CI (99.9%): [0.329, 1.505] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate": 1647.954 ±(99.9%) 815.958 MB/sec [Average] (min, avg, max) = (1466.211, 1647.954, 1747.269), stdev = 126.270 CI (99.9%): [831.996, 2463.913] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm": 1578262.152 ±(99.9%) 209707.966 B/op [Average] (min, avg, max) = (1547571.087, 1578262.152, 1609101.228), stdev = 32452.540 CI (99.9%): [1368554.186, 1787970.118] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count": 2.000 ±(99.9%) 0.001 counts [Sum] (min, avg, max) = (≈ 0, 0.500, 1.000), stdev = 0.577 CI (99.9%): [2.000, 2.000] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time": 16.000 ±(99.9%) 0.001 ms [Sum] (min, avg, max) = (≈ 0, 4.000, 10.000), stdev = 4.899 CI (99.9%): [16.000, 16.000] (assumes normal distribution) # JMH version: 1.37 # VM version: JDK 25, OpenJDK 64-Bit Server VM, 25+36-b176.4 # VM invoker: java # VM options: # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 1 iterations, 100 ms each # Measurement: 4 iterations, 100 ms each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix # Parameters: (implementation = abahgat-suffix-tree, itemCount = 100000, typedCharacterCount = 8) # Run progress: 63.64% complete, ETA 00:00:07 # Fork: 1 of 1 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::objectFieldOffset has been called by org.openjdk.jmh.util.Utils (file:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar) WARNING: Please consider reporting this to the maintainers of class org.openjdk.jmh.util.Utils WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release # Warmup Iteration 1: 0.929 ms/op Iteration 1: 0.587 ms/op gc.alloc.rate: 1382.759 MB/sec gc.alloc.rate.norm: 852759.223 B/op gc.count: 1.000 counts gc.time: 13.000 ms Iteration 2: 0.473 ms/op gc.alloc.rate: 1748.090 MB/sec gc.alloc.rate.norm: 870138.692 B/op gc.count: ≈ 0 counts Iteration 3: 0.511 ms/op gc.alloc.rate: 1633.010 MB/sec gc.alloc.rate.norm: 876470.252 B/op gc.count: ≈ 0 counts Iteration 4: 0.467 ms/op gc.alloc.rate: 1736.860 MB/sec gc.alloc.rate.norm: 851564.128 B/op gc.count: ≈ 0 counts Result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix": 0.510 ±(99.9%) 0.356 ms/op [Average] (min, avg, max) = (0.467, 0.510, 0.587), stdev = 0.055 CI (99.9%): [0.153, 0.866] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate": 1625.180 ±(99.9%) 1096.690 MB/sec [Average] (min, avg, max) = (1382.759, 1625.180, 1748.090), stdev = 169.714 CI (99.9%): [528.489, 2721.870] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm": 862733.074 ±(99.9%) 80690.930 B/op [Average] (min, avg, max) = (851564.128, 862733.074, 876470.252), stdev = 12487.011 CI (99.9%): [782042.144, 943424.003] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count": 1.000 ±(99.9%) 0.001 counts [Sum] (min, avg, max) = (≈ 0, 0.250, 1.000), stdev = 0.500 CI (99.9%): [1.000, 1.000] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time": 13.000 ±(99.9%) 0.001 ms [Sum] (min, avg, max) = (≈ 0, 3.250, 13.000), stdev = 6.500 CI (99.9%): [13.000, 13.000] (assumes normal distribution) # JMH version: 1.37 # VM version: JDK 25, OpenJDK 64-Bit Server VM, 25+36-b176.4 # VM invoker: java # VM options: # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 1 iterations, 100 ms each # Measurement: 4 iterations, 100 ms each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix # Parameters: (implementation = abahgat-suffix-tree, itemCount = 100000, typedCharacterCount = 9) # Run progress: 72.73% complete, ETA 00:00:05 # Fork: 1 of 1 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::objectFieldOffset has been called by org.openjdk.jmh.util.Utils (file:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar) WARNING: Please consider reporting this to the maintainers of class org.openjdk.jmh.util.Utils WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release # Warmup Iteration 1: 0.948 ms/op Iteration 1: 0.509 ms/op gc.alloc.rate: 1546.015 MB/sec gc.alloc.rate.norm: 826469.836 B/op gc.count: ≈ 0 counts Iteration 2: 0.590 ms/op gc.alloc.rate: 1356.953 MB/sec gc.alloc.rate.norm: 842397.955 B/op gc.count: 1.000 counts gc.time: 11.000 ms Iteration 3: 0.491 ms/op gc.alloc.rate: 1664.588 MB/sec gc.alloc.rate.norm: 858163.943 B/op gc.count: ≈ 0 counts Iteration 4: 0.476 ms/op gc.alloc.rate: 1654.459 MB/sec gc.alloc.rate.norm: 827606.493 B/op gc.count: ≈ 0 counts Result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix": 0.517 ±(99.9%) 0.328 ms/op [Average] (min, avg, max) = (0.476, 0.517, 0.590), stdev = 0.051 CI (99.9%): [0.189, 0.844] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate": 1555.504 ±(99.9%) 922.985 MB/sec [Average] (min, avg, max) = (1356.953, 1555.504, 1664.588), stdev = 142.833 CI (99.9%): [632.519, 2478.489] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm": 838659.557 ±(99.9%) 96220.460 B/op [Average] (min, avg, max) = (826469.836, 838659.557, 858163.943), stdev = 14890.223 CI (99.9%): [742439.097, 934880.016] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count": 1.000 ±(99.9%) 0.001 counts [Sum] (min, avg, max) = (≈ 0, 0.250, 1.000), stdev = 0.500 CI (99.9%): [1.000, 1.000] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time": 11.000 ±(99.9%) 0.001 ms [Sum] (min, avg, max) = (≈ 0, 2.750, 11.000), stdev = 5.500 CI (99.9%): [11.000, 11.000] (assumes normal distribution) # JMH version: 1.37 # VM version: JDK 25, OpenJDK 64-Bit Server VM, 25+36-b176.4 # VM invoker: java # VM options: # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 1 iterations, 100 ms each # Measurement: 4 iterations, 100 ms each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix # Parameters: (implementation = abahgat-suffix-tree, itemCount = 100000, typedCharacterCount = 10) # Run progress: 81.82% complete, ETA 00:00:03 # Fork: 1 of 1 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::objectFieldOffset has been called by org.openjdk.jmh.util.Utils (file:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar) WARNING: Please consider reporting this to the maintainers of class org.openjdk.jmh.util.Utils WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release # Warmup Iteration 1: 0.489 ms/op Iteration 1: 0.244 ms/op gc.alloc.rate: 1444.755 MB/sec gc.alloc.rate.norm: 371054.028 B/op gc.count: 1.000 counts gc.time: 12.000 ms Iteration 2: 0.189 ms/op gc.alloc.rate: 1873.535 MB/sec gc.alloc.rate.norm: 371431.655 B/op gc.count: ≈ 0 counts Iteration 3: 0.190 ms/op gc.alloc.rate: 1859.469 MB/sec gc.alloc.rate.norm: 370136.373 B/op gc.count: ≈ 0 counts Iteration 4: 0.246 ms/op gc.alloc.rate: 1434.309 MB/sec gc.alloc.rate.norm: 369947.704 B/op gc.count: 1.000 counts gc.time: 5.000 ms Result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix": 0.217 ±(99.9%) 0.209 ms/op [Average] (min, avg, max) = (0.189, 0.217, 0.246), stdev = 0.032 CI (99.9%): [0.009, 0.426] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate": 1653.017 ±(99.9%) 1593.622 MB/sec [Average] (min, avg, max) = (1434.309, 1653.017, 1873.535), stdev = 246.615 CI (99.9%): [59.395, 3246.639] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm": 370642.440 ±(99.9%) 4616.333 B/op [Average] (min, avg, max) = (369947.704, 370642.440, 371431.655), stdev = 714.383 CI (99.9%): [366026.106, 375258.773] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count": 2.000 ±(99.9%) 0.001 counts [Sum] (min, avg, max) = (≈ 0, 0.500, 1.000), stdev = 0.577 CI (99.9%): [2.000, 2.000] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time": 17.000 ±(99.9%) 0.001 ms [Sum] (min, avg, max) = (≈ 0, 4.250, 12.000), stdev = 5.679 CI (99.9%): [17.000, 17.000] (assumes normal distribution) # JMH version: 1.37 # VM version: JDK 25, OpenJDK 64-Bit Server VM, 25+36-b176.4 # VM invoker: java # VM options: # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 1 iterations, 100 ms each # Measurement: 4 iterations, 100 ms each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix # Parameters: (implementation = abahgat-suffix-tree, itemCount = 100000, typedCharacterCount = 11) # Run progress: 90.91% complete, ETA 00:00:01 # Fork: 1 of 1 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::objectFieldOffset has been called by org.openjdk.jmh.util.Utils (file:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar) WARNING: Please consider reporting this to the maintainers of class org.openjdk.jmh.util.Utils WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release # Warmup Iteration 1: 0.329 ms/op Iteration 1: 0.183 ms/op gc.alloc.rate: 1714.959 MB/sec gc.alloc.rate.norm: 329913.208 B/op gc.count: ≈ 0 counts Iteration 2: 0.186 ms/op gc.alloc.rate: 1659.650 MB/sec gc.alloc.rate.norm: 324277.171 B/op gc.count: 1.000 counts gc.time: 9.000 ms Iteration 3: 0.203 ms/op gc.alloc.rate: 1576.668 MB/sec gc.alloc.rate.norm: 336201.154 B/op gc.count: ≈ 0 counts Iteration 4: 0.163 ms/op gc.alloc.rate: 1922.778 MB/sec gc.alloc.rate.norm: 329909.085 B/op gc.count: ≈ 0 counts Result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix": 0.184 ±(99.9%) 0.105 ms/op [Average] (min, avg, max) = (0.163, 0.184, 0.203), stdev = 0.016 CI (99.9%): [0.079, 0.289] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate": 1718.514 ±(99.9%) 953.531 MB/sec [Average] (min, avg, max) = (1576.668, 1718.514, 1922.778), stdev = 147.560 CI (99.9%): [764.983, 2672.044] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm": 330075.155 ±(99.9%) 31480.412 B/op [Average] (min, avg, max) = (324277.171, 330075.155, 336201.154), stdev = 4871.629 CI (99.9%): [298594.742, 361555.567] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count": 1.000 ±(99.9%) 0.001 counts [Sum] (min, avg, max) = (≈ 0, 0.250, 1.000), stdev = 0.500 CI (99.9%): [1.000, 1.000] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time": 9.000 ±(99.9%) 0.001 ms [Sum] (min, avg, max) = (≈ 0, 2.250, 9.000), stdev = 4.500 CI (99.9%): [9.000, 9.000] (assumes normal distribution) # Run complete. Total time: 00:00:20 REMEMBER: The numbers below are just data. To gain reusable insights, you need to follow up on why the numbers are the way they are. Use profilers (see -prof, -lprof), design factorial experiments, perform baseline and negative tests that provide experimental control, make sure the benchmarking environment is safe on JVM/OS/HW level, ask for reviews from the domain experts. Do not assume the numbers tell you what you want them to tell. NOTE: Current JVM experimentally supports Compiler Blackholes, and they are in use. Please exercise extra caution when trusting the results, look into the generated code to check the benchmark still works, and factor in a small probability of new VM bugs. Additionally, while comparisons between different JVMs are already problematic, the performance difference caused by different Blackhole modes can be very significant. Please make sure you use the consistent Blackhole mode for comparisons. Benchmark (implementation) (itemCount) (typedCharacterCount) Mode Cnt Score Error Units LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix abahgat-suffix-tree 100000 1 avgt 4 79.122 ± 253.985 ms/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate abahgat-suffix-tree 100000 1 avgt 4 1270.392 ± 1032.913 MB/sec LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm abahgat-suffix-tree 100000 1 avgt 4 102576555.000 ± 265478021.379 B/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count abahgat-suffix-tree 100000 1 avgt 4 1.000 counts LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time abahgat-suffix-tree 100000 1 avgt 4 22.000 ms LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix abahgat-suffix-tree 100000 2 avgt 4 6.983 ± 18.923 ms/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate abahgat-suffix-tree 100000 2 avgt 4 1388.435 ± 1423.894 MB/sec LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm abahgat-suffix-tree 100000 2 avgt 4 9715696.758 ± 14898050.091 B/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count abahgat-suffix-tree 100000 2 avgt 4 1.000 counts LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time abahgat-suffix-tree 100000 2 avgt 4 10.000 ms LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix abahgat-suffix-tree 100000 3 avgt 4 2.670 ± 5.257 ms/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate abahgat-suffix-tree 100000 3 avgt 4 1481.754 ± 2619.487 MB/sec LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm abahgat-suffix-tree 100000 3 avgt 4 3897399.026 ± 732322.549 B/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count abahgat-suffix-tree 100000 3 avgt 4 1.000 counts LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time abahgat-suffix-tree 100000 3 avgt 4 26.000 ms LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix abahgat-suffix-tree 100000 4 avgt 4 1.786 ± 2.446 ms/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate abahgat-suffix-tree 100000 4 avgt 4 1644.921 ± 1956.709 MB/sec LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm abahgat-suffix-tree 100000 4 avgt 4 2995885.443 ± 246369.251 B/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count abahgat-suffix-tree 100000 4 avgt 4 1.000 counts LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time abahgat-suffix-tree 100000 4 avgt 4 9.000 ms LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix abahgat-suffix-tree 100000 5 avgt 4 1.467 ± 1.891 ms/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate abahgat-suffix-tree 100000 5 avgt 4 1698.338 ± 1654.883 MB/sec LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm abahgat-suffix-tree 100000 5 avgt 4 2559366.554 ± 608834.007 B/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count abahgat-suffix-tree 100000 5 avgt 4 1.000 counts LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time abahgat-suffix-tree 100000 5 avgt 4 11.000 ms LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix abahgat-suffix-tree 100000 6 avgt 4 1.360 ± 0.853 ms/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate abahgat-suffix-tree 100000 6 avgt 4 1755.897 ± 1257.005 MB/sec LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm abahgat-suffix-tree 100000 6 avgt 4 2489290.875 ± 581638.135 B/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count abahgat-suffix-tree 100000 6 avgt 4 1.000 counts LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time abahgat-suffix-tree 100000 6 avgt 4 10.000 ms LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix abahgat-suffix-tree 100000 7 avgt 4 0.917 ± 0.588 ms/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate abahgat-suffix-tree 100000 7 avgt 4 1647.954 ± 815.958 MB/sec LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm abahgat-suffix-tree 100000 7 avgt 4 1578262.152 ± 209707.966 B/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count abahgat-suffix-tree 100000 7 avgt 4 2.000 counts LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time abahgat-suffix-tree 100000 7 avgt 4 16.000 ms LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix abahgat-suffix-tree 100000 8 avgt 4 0.510 ± 0.356 ms/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate abahgat-suffix-tree 100000 8 avgt 4 1625.180 ± 1096.690 MB/sec LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm abahgat-suffix-tree 100000 8 avgt 4 862733.074 ± 80690.930 B/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count abahgat-suffix-tree 100000 8 avgt 4 1.000 counts LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time abahgat-suffix-tree 100000 8 avgt 4 13.000 ms LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix abahgat-suffix-tree 100000 9 avgt 4 0.517 ± 0.328 ms/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate abahgat-suffix-tree 100000 9 avgt 4 1555.504 ± 922.985 MB/sec LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm abahgat-suffix-tree 100000 9 avgt 4 838659.557 ± 96220.460 B/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count abahgat-suffix-tree 100000 9 avgt 4 1.000 counts LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time abahgat-suffix-tree 100000 9 avgt 4 11.000 ms LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix abahgat-suffix-tree 100000 10 avgt 4 0.217 ± 0.209 ms/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate abahgat-suffix-tree 100000 10 avgt 4 1653.017 ± 1593.622 MB/sec LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm abahgat-suffix-tree 100000 10 avgt 4 370642.440 ± 4616.333 B/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count abahgat-suffix-tree 100000 10 avgt 4 2.000 counts LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time abahgat-suffix-tree 100000 10 avgt 4 17.000 ms LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix abahgat-suffix-tree 100000 11 avgt 4 0.184 ± 0.105 ms/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate abahgat-suffix-tree 100000 11 avgt 4 1718.514 ± 953.531 MB/sec LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm abahgat-suffix-tree 100000 11 avgt 4 330075.155 ± 31480.412 B/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count abahgat-suffix-tree 100000 11 avgt 4 1.000 counts LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time abahgat-suffix-tree 100000 11 avgt 4 9.000 ms Benchmark result is saved to /build/reports/jmh/adaptive-jmh-passes/pass-01-group-007.json # Adaptive pass 1, group 8 # Command: java -cp /build/classes/java/benchmark:/build/resources/benchmark:/build/moddev/artifacts/vanilla-26.2-2.jar:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar:/modules-2/files-2.1/com.abahgat/suffixtree/2.0.0/ffe2c29796add2624d2e0b9f33e72421eb5c5ea5/suffixtree-2.0.0.jar:/modules-2/files-2.1/net.mezzdev/suffixtree/1.3.0/1a1b87af70a1631ff6d6c9d49c63564aadecb176/suffixtree-1.3.0.jar:/modules-2/files-2.1/net.mezzdev/baked-substring-index/0.1.0/4f9fbd9eb54fdb1b8ec40a83297f4e8f4479eb7c/baked-substring-index-0.1.0.jar:/modules-2/files-2.1/net.mezzdev/baked-suffix-array-index/0.1.0/cd5e5ffbcee030d149e7a5a70e151a06158bd643/baked-suffix-array-index-0.1.0.jar:/modules-2/files-2.1/net.neoforged/mergetool/2.0.7/793b18456e92c4a7f66d9b5d8bf7a9c1c7a20b20/mergetool-2.0.7-api.jar:/modules-2/files-2.1/net.sf.jopt-simple/jopt-simple/5.0.4/4fdac2fbe92dfad86aa6e9301736f6b4342a3f5c/jopt-simple-5.0.4.jar:/modules-2/files-2.1/org.apache.commons/commons-math3/3.6.1/e4ba98f1d4b3c80ec46392f25e094a6a2e58fcbf/commons-math3-3.6.1.jar:/modules-2/files-2.1/com.google.code.findbugs/jsr305/3.0.2/25ea2e8b0c338a877313bd4672d3fe056ea78f0d/jsr305-3.0.2.jar:/modules-2/files-2.1/org.jspecify/jspecify/1.0.0/7425a601c1c7ec76645a78d22b8c6a627edee507/jspecify-1.0.0.jar:/modules-2/files-2.1/org.jetbrains/annotations/26.0.2-1/c7ce3cdeda3d18909368dfe5977332dfad326c6d/annotations-26.0.2-1.jar:/modules-2/files-2.1/ca.weblite/java-objc-bridge/1.1/1227f9e0666314f9de41477e3ec277e542ed7f7b/java-objc-bridge-1.1.jar:/modules-2/files-2.1/at.yawk.lz4/lz4-java/1.10.1/f541d7f910fe3d76f38f799c507c48cc81b12ecb/lz4-java-1.10.1.jar:/modules-2/files-2.1/com.azure/azure-json/1.4.0/fcc1d354dbc3e0300e5276b1bf124d0247799cd8/azure-json-1.4.0.jar:/modules-2/files-2.1/com.github.oshi/oshi-core/6.9.0/3224870731860cfcd7744581a05b559e94291e7/oshi-core-6.9.0.jar:/modules-2/files-2.1/com.google.code.gson/gson/2.14.0/efc0e34ede4e3204eaefb84a00e55e8c86634382/gson-2.14.0.jar:/modules-2/files-2.1/com.google.guava/failureaccess/1.0.3/aeaffd00d57023a2c947393ed251f0354f0985fc/failureaccess-1.0.3.jar:/modules-2/files-2.1/com.google.guava/guava/33.6.0-jre/c376b13067cc99a5774403530953f7b05a91e218/guava-33.6.0-jre.jar:/modules-2/files-2.1/com.ibm.icu/icu4j/78.3/6a851a53bb1f25689fc418dcc8935b0d93580adf/icu4j-78.3.jar:/modules-2/files-2.1/com.microsoft.azure/msal4j/1.24.1/c233f2d047b9755f7041adf21a858c680e4c9242/msal4j-1.24.1.jar:/modules-2/files-2.1/com.mojang/authlib/9.0.75/d61056a234d5e4b272e09d59b0713f80d6c0b6af/authlib-9.0.75.jar:/modules-2/files-2.1/com.mojang/blocklist/1.0.10/5c685c5ffa94c4cd39496c7184c1d122e515ecef/blocklist-1.0.10.jar:/modules-2/files-2.1/com.mojang/brigadier/1.3.10/d15b53a14cf20fdcaa98f731af5dda654452c010/brigadier-1.3.10.jar:/modules-2/files-2.1/com.mojang/datafixerupper/10.0.21/b6b2ae770c02e0c1eb90f9985b151e9085a38d0b/datafixerupper-10.0.21.jar:/modules-2/files-2.1/com.mojang/jtracy/1.0.37/a3fb649b2e2b2288d2978f0b0bc3d83f62809d1e/jtracy-1.0.37.jar:/modules-2/files-2.1/com.mojang/jtracy/1.0.37/a99fcb63b72fb623534d0ceb71bda4bed9b55b4c/jtracy-1.0.37-natives-macos.jar:/modules-2/files-2.1/com.mojang/jtracy/1.0.37/c8e971da5150aa33283c5bf4097154c0da554fb9/jtracy-1.0.37-natives-macos-arm64.jar:/modules-2/files-2.1/com.mojang/logging/1.7.12/351cea64a5233361327d8d54c44277041beed97f/logging-1.7.12.jar:/modules-2/files-2.1/com.mojang/patchy/2.2.10/da05971b07cbb379d002cf7eaec6a2048211fefc/patchy-2.2.10.jar:/modules-2/files-2.1/com.mojang/text2speech/1.19.12/2e517a75c79d34d32de2b5d68422150836c2133e/text2speech-1.19.12.jar:/modules-2/files-2.1/commons-codec/commons-codec/1.22.0/6b3eb4beb7058c2a638f5f17bcb388649fd339dd/commons-codec-1.22.0.jar:/modules-2/files-2.1/commons-io/commons-io/2.20.0/36f3474daec2849c149e877614e7f979b2082cd2/commons-io-2.20.0.jar:/modules-2/files-2.1/io.netty/netty-buffer/4.2.15.Final/2beb620803bf871cda2dd5d46b8f831e8015dd34/netty-buffer-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-codec-base/4.2.15.Final/e97149fdd5fb04858efa90e314651c8d700dc68b/netty-codec-base-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-codec-compression/4.2.15.Final/89fc4a20b7ae6af974304b1695405e62c4f9b16d/netty-codec-compression-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-codec-http/4.2.15.Final/e611826aa054371bb9a17f27bdb05755a4cac5f0/netty-codec-http-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-common/4.2.15.Final/7222492c1af9c2d4d78d521eea340a619e242fda/netty-common-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-handler/4.2.15.Final/d5344afd1148e3b9927a74be019605ebb0937a93/netty-handler-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-resolver/4.2.15.Final/b961a16d379b508b473e064ba06842bba280f4e3/netty-resolver-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-transport-classes-epoll/4.2.15.Final/44bafba9c9993800e955b365bba4981326f3f3b1/netty-transport-classes-epoll-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-transport-classes-kqueue/4.2.15.Final/f248656bb907607c5a41c7b61fd918a97db79250/netty-transport-classes-kqueue-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-transport-native-unix-common/4.2.15.Final/efb6943b4de9e0226a5ac35330f232605424af02/netty-transport-native-unix-common-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-transport/4.2.15.Final/a000c3a6196ee40207b73ac619dcb339409dd62f/netty-transport-4.2.15.Final.jar:/modules-2/files-2.1/it.unimi.dsi/fastutil/8.5.18/a6cff377eecc19c2037bf31568a6d7106b50ba1f/fastutil-8.5.18.jar:/modules-2/files-2.1/net.java.dev.jna/jna-platform/5.17.0/a4934c44d25a9d8c2ddf4203affd20330cb3426f/jna-platform-5.17.0.jar:/modules-2/files-2.1/net.java.dev.jna/jna/5.17.0/33d12735bef894440780fce64f9758d420c7bae2/jna-5.17.0.jar:/modules-2/files-2.1/org.apache.commons/commons-compress/1.28.0/e482f2c7a88dac3c497e96aa420b6a769f59c8d7/commons-compress-1.28.0.jar:/modules-2/files-2.1/org.apache.commons/commons-lang3/3.20.0/65897b3e5731220962e659e001904af3c3cbeba9/commons-lang3-3.20.0.jar:/modules-2/files-2.1/org.apache.logging.log4j/log4j-api/2.26.0/ad52af0ecf054a7e3f275a2e180ee06d9c490951/log4j-api-2.26.0.jar:/modules-2/files-2.1/org.apache.logging.log4j/log4j-core/2.26.0/d267ca60b27ddb075e0b4e75e7875859717bf85f/log4j-core-2.26.0.jar:/modules-2/files-2.1/org.apache.logging.log4j/log4j-slf4j2-impl/2.26.0/668c0f0e813d83f00a7182533aa658ec7e7a0a0d/log4j-slf4j2-impl-2.26.0.jar:/modules-2/files-2.1/org.jcraft/jorbis/0.0.17/8872d22b293e8f5d7d56ff92be966e6dc28ebdc6/jorbis-0.0.17.jar:/modules-2/files-2.1/org.joml/joml/1.10.8/fc0a71dad90a2cf41d82a76156a0e700af8e4f8d/joml-1.10.8.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-freetype/3.4.1/caa75a37e857efc9b0686e434d708d6420c5b6ea/lwjgl-freetype-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-freetype/3.4.1/61cb2d85e1838bca1a0b664f54e818bc68deb2ef/lwjgl-freetype-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-freetype/3.4.1/cce5a86b4a7d17817fe8ea0296302a4353acf2d5/lwjgl-freetype-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-glfw/3.4.1/a782b1ddd175c9107bf300fd92920579ea65e2a4/lwjgl-glfw-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-glfw/3.4.1/3c8538942f58377d59cd7be2dc164ba71a53868a/lwjgl-glfw-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-glfw/3.4.1/ef1f8efca5a60ba3512bc4982b88e446ecc43378/lwjgl-glfw-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-jemalloc/3.4.1/16b663092854fc6adfe0a941e61cae2bb2e437b6/lwjgl-jemalloc-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-jemalloc/3.4.1/581b4d542e841015ce3265eed0495e2cde15b1d0/lwjgl-jemalloc-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-jemalloc/3.4.1/dcd7e3f9a2ca386e8c5b8f508a8511d9dd63bab0/lwjgl-jemalloc-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-openal/3.4.1/8508bd60589de0539aa465b78fcf838efd07ae9a/lwjgl-openal-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-openal/3.4.1/a4dc57b7b0880d3fffb4d0b61649f45712bccc93/lwjgl-openal-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-openal/3.4.1/1c709a38c4a0e86aae96db7b8c78432307f2322a/lwjgl-openal-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-opengl/3.4.1/830412cab823c029cda6b9729f9d2ed36cf79959/lwjgl-opengl-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-opengl/3.4.1/ba18fc6012b88494ee893506934b92b01c4ef14b/lwjgl-opengl-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-opengl/3.4.1/35b5550058de4960525f465243bd01805f04fd8b/lwjgl-opengl-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-shaderc/3.4.1/5c02c88f0d879529014c78463b76f43fdecfd272/lwjgl-shaderc-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-shaderc/3.4.1/1d7bbdba70cf29c42978f6c0c1bdef945b922072/lwjgl-shaderc-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-shaderc/3.4.1/48aa2727e8616154d399d4dab0d8e8479741fa4f/lwjgl-shaderc-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-spvc/3.4.1/188553592e97b5ab2dba54a1b403ee80b48dad4c/lwjgl-spvc-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-spvc/3.4.1/2eeebd6d5bae966bfffda9747eba744cfe839ae1/lwjgl-spvc-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-spvc/3.4.1/a4f66638d28129eba0babd8fdc4385427a5ea83e/lwjgl-spvc-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-stb/3.4.1/f077c3dafc31924fbe8acb0b913f08977ba27f8e/lwjgl-stb-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-stb/3.4.1/fd1ea36b717b0832babca09324a6cfc43906e2aa/lwjgl-stb-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-stb/3.4.1/da554e04f819f09b0f3473bd931628ebf557965e/lwjgl-stb-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-tinyfd/3.4.1/562697d40dbd2ed0424bf24dcf65d51170f81adf/lwjgl-tinyfd-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-tinyfd/3.4.1/211ae9e8720e8f10f2ce85a118fa7bd5ee71584b/lwjgl-tinyfd-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-tinyfd/3.4.1/7bcde70f6164b2e72f84cac5257b7e9877b88510/lwjgl-tinyfd-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vma/3.4.1/2c54ce10154feb1ede4d23c5947438cdbfdcc003/lwjgl-vma-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vma/3.4.1/a130a9e4f96c83063f749e1dcc7065e0dffb3936/lwjgl-vma-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vma/3.4.1/9451dc1067716bc4125cdba65a7096e465f4d0e5/lwjgl-vma-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vulkan/3.4.1/d0601fdc38890755e5638048c14cc0f7b990964b/lwjgl-vulkan-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vulkan/3.4.1/140c7fd3e0fdbcc625c92be9328301c555035905/lwjgl-vulkan-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vulkan/3.4.1/2c933bf617cb8a174af26585efda4778b59e6d44/lwjgl-vulkan-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl/3.4.1/129e06a04f93992cb2a45172435b21fc4b60dd7d/lwjgl-3.4.1-unsafe.jar:/modules-2/files-2.1/org.lwjgl/lwjgl/3.4.1/b034fd9a67cb8646c01af7efcefcb93be835542b/lwjgl-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl/3.4.1/b4cbdef4818abd714ee66985344c0949fd1cd6d6/lwjgl-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.slf4j/slf4j-api/2.0.17/d9e58ac9c7779ba3bf8142aff6c830617a7fe60f/slf4j-api-2.0.17.jar:/modules-2/files-2.1/org.ow2.asm/asm-util/9.5/64b5a1fc8c1b15ed2efd6a063e976bc8d3dc5ffe/asm-util-9.5.jar:/modules-2/files-2.1/org.ow2.asm/asm-analysis/9.5/490bacc77de7cbc0be1a30bb3471072d705be4a4/asm-analysis-9.5.jar:/modules-2/files-2.1/org.ow2.asm/asm-tree/9.5/fd33c8b6373abaa675be407082fdfda35021254a/asm-tree-9.5.jar:/modules-2/files-2.1/org.ow2.asm/asm/9.5/dc6ea1875f4d64fbc85e1691c95b96a3d8569c90/asm-9.5.jar:/modules-2/files-2.1/net.neoforged/srgutils/1.0.10/abb471237b33b19f040ada00bfbad1ec45b949b6/srgutils-1.0.10.jar:/modules-2/files-2.1/io.netty/netty-transport-native-kqueue/4.2.15.Final/8ea0ef3eb716d821332e4b4926825a4b7c1a6d38/netty-transport-native-kqueue-4.2.15.Final-osx-aarch_64.jar:/modules-2/files-2.1/io.netty/netty-transport-native-kqueue/4.2.15.Final/4245380831515fb4eca18d32477a27fbb8f7b8f4/netty-transport-native-kqueue-4.2.15.Final-osx-x86_64.jar:/build/classes/java/main:/build/resources/main org.openjdk.jmh.Main .*net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix -p itemCount=100000 -p implementation=baked-substring-index -f 1 -wi 1 -i 4 -w 100ms -r 100ms -rf json -rff /build/reports/jmh/adaptive-jmh-passes/pass-01-group-008.json -o /build/reports/jmh/adaptive-jmh-passes/pass-01-group-008.txt -foe true -p typedCharacterCount=1,2,3,4,5,6,7,8,9,10,11 -prof gc # JMH version: 1.37 # VM version: JDK 25, OpenJDK 64-Bit Server VM, 25+36-b176.4 # VM invoker: java # VM options: # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 1 iterations, 100 ms each # Measurement: 4 iterations, 100 ms each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix # Parameters: (implementation = baked-substring-index, itemCount = 100000, typedCharacterCount = 1) # Run progress: 0.00% complete, ETA 00:00:05 # Fork: 1 of 1 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::objectFieldOffset has been called by org.openjdk.jmh.util.Utils (file:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar) WARNING: Please consider reporting this to the maintainers of class org.openjdk.jmh.util.Utils WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release # Warmup Iteration 1: 0.743 ms/op Iteration 1: 0.624 ms/op gc.alloc.rate: 0.186 MB/sec gc.alloc.rate.norm: 121.893 B/op gc.count: ≈ 0 counts Iteration 2: 0.603 ms/op gc.alloc.rate: 0.188 MB/sec gc.alloc.rate.norm: 119.273 B/op gc.count: ≈ 0 counts Iteration 3: 0.746 ms/op gc.alloc.rate: 0.165 MB/sec gc.alloc.rate.norm: 129.248 B/op gc.count: ≈ 0 counts Iteration 4: 0.599 ms/op gc.alloc.rate: 0.190 MB/sec gc.alloc.rate.norm: 119.455 B/op gc.count: ≈ 0 counts Result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix": 0.643 ±(99.9%) 0.449 ms/op [Average] (min, avg, max) = (0.599, 0.643, 0.746), stdev = 0.070 CI (99.9%): [0.194, 1.092] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate": 0.182 ±(99.9%) 0.076 MB/sec [Average] (min, avg, max) = (0.165, 0.182, 0.190), stdev = 0.012 CI (99.9%): [0.107, 0.258] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm": 122.467 ±(99.9%) 30.216 B/op [Average] (min, avg, max) = (119.273, 122.467, 129.248), stdev = 4.676 CI (99.9%): [92.252, 152.683] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count": ≈ 0 counts # JMH version: 1.37 # VM version: JDK 25, OpenJDK 64-Bit Server VM, 25+36-b176.4 # VM invoker: java # VM options: # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 1 iterations, 100 ms each # Measurement: 4 iterations, 100 ms each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix # Parameters: (implementation = baked-substring-index, itemCount = 100000, typedCharacterCount = 2) # Run progress: 9.09% complete, ETA 00:00:14 # Fork: 1 of 1 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::objectFieldOffset has been called by org.openjdk.jmh.util.Utils (file:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar) WARNING: Please consider reporting this to the maintainers of class org.openjdk.jmh.util.Utils WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release # Warmup Iteration 1: 0.139 ms/op Iteration 1: 0.114 ms/op gc.alloc.rate: 0.735 MB/sec gc.alloc.rate.norm: 87.741 B/op gc.count: ≈ 0 counts Iteration 2: 0.112 ms/op gc.alloc.rate: 0.741 MB/sec gc.alloc.rate.norm: 87.505 B/op gc.count: ≈ 0 counts Iteration 3: 0.114 ms/op gc.alloc.rate: 0.729 MB/sec gc.alloc.rate.norm: 87.523 B/op gc.count: ≈ 0 counts Iteration 4: 0.112 ms/op gc.alloc.rate: 0.742 MB/sec gc.alloc.rate.norm: 87.408 B/op gc.count: ≈ 0 counts Result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix": 0.113 ±(99.9%) 0.006 ms/op [Average] (min, avg, max) = (0.112, 0.113, 0.114), stdev = 0.001 CI (99.9%): [0.107, 0.119] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate": 0.737 ±(99.9%) 0.039 MB/sec [Average] (min, avg, max) = (0.729, 0.737, 0.742), stdev = 0.006 CI (99.9%): [0.698, 0.775] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm": 87.544 ±(99.9%) 0.907 B/op [Average] (min, avg, max) = (87.408, 87.544, 87.741), stdev = 0.140 CI (99.9%): [86.638, 88.451] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count": ≈ 0 counts # JMH version: 1.37 # VM version: JDK 25, OpenJDK 64-Bit Server VM, 25+36-b176.4 # VM invoker: java # VM options: # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 1 iterations, 100 ms each # Measurement: 4 iterations, 100 ms each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix # Parameters: (implementation = baked-substring-index, itemCount = 100000, typedCharacterCount = 3) # Run progress: 18.18% complete, ETA 00:00:13 # Fork: 1 of 1 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::objectFieldOffset has been called by org.openjdk.jmh.util.Utils (file:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar) WARNING: Please consider reporting this to the maintainers of class org.openjdk.jmh.util.Utils WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release # Warmup Iteration 1: 0.036 ms/op Iteration 1: 0.026 ms/op gc.alloc.rate: 2.729 MB/sec gc.alloc.rate.norm: 73.602 B/op gc.count: ≈ 0 counts Iteration 2: 0.021 ms/op gc.alloc.rate: 1.482 MB/sec gc.alloc.rate.norm: 33.419 B/op gc.count: ≈ 0 counts Iteration 3: 0.023 ms/op gc.alloc.rate: 1.417 MB/sec gc.alloc.rate.norm: 33.480 B/op gc.count: ≈ 0 counts Iteration 4: 0.021 ms/op gc.alloc.rate: 1.492 MB/sec gc.alloc.rate.norm: 33.401 B/op gc.count: ≈ 0 counts Result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix": 0.023 ±(99.9%) 0.013 ms/op [Average] (min, avg, max) = (0.021, 0.023, 0.026), stdev = 0.002 CI (99.9%): [0.010, 0.036] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate": 1.780 ±(99.9%) 4.094 MB/sec [Average] (min, avg, max) = (1.417, 1.780, 2.729), stdev = 0.633 CI (99.9%): [≈ 0, 5.873] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm": 43.476 ±(99.9%) 129.784 B/op [Average] (min, avg, max) = (33.401, 43.476, 73.602), stdev = 20.084 CI (99.9%): [≈ 0, 173.260] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count": ≈ 0 counts # JMH version: 1.37 # VM version: JDK 25, OpenJDK 64-Bit Server VM, 25+36-b176.4 # VM invoker: java # VM options: # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 1 iterations, 100 ms each # Measurement: 4 iterations, 100 ms each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix # Parameters: (implementation = baked-substring-index, itemCount = 100000, typedCharacterCount = 4) # Run progress: 27.27% complete, ETA 00:00:11 # Fork: 1 of 1 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::objectFieldOffset has been called by org.openjdk.jmh.util.Utils (file:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar) WARNING: Please consider reporting this to the maintainers of class org.openjdk.jmh.util.Utils WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release # Warmup Iteration 1: 0.120 ms/op Iteration 1: 0.083 ms/op gc.alloc.rate: 230.406 MB/sec gc.alloc.rate.norm: 20058.991 B/op gc.count: ≈ 0 counts Iteration 2: 0.085 ms/op gc.alloc.rate: 223.671 MB/sec gc.alloc.rate.norm: 20030.496 B/op gc.count: 3.000 counts gc.time: 1.000 ms Iteration 3: 0.096 ms/op gc.alloc.rate: 198.164 MB/sec gc.alloc.rate.norm: 19979.798 B/op gc.count: ≈ 0 counts Iteration 4: 0.084 ms/op gc.alloc.rate: 223.146 MB/sec gc.alloc.rate.norm: 20066.743 B/op gc.count: ≈ 0 counts Result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix": 0.087 ±(99.9%) 0.038 ms/op [Average] (min, avg, max) = (0.083, 0.087, 0.096), stdev = 0.006 CI (99.9%): [0.049, 0.125] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate": 218.847 ±(99.9%) 91.627 MB/sec [Average] (min, avg, max) = (198.164, 218.847, 230.406), stdev = 14.179 CI (99.9%): [127.220, 310.474] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm": 20034.007 ±(99.9%) 254.319 B/op [Average] (min, avg, max) = (19979.798, 20034.007, 20066.743), stdev = 39.356 CI (99.9%): [19779.688, 20288.327] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count": 3.000 ±(99.9%) 0.001 counts [Sum] (min, avg, max) = (≈ 0, 0.750, 3.000), stdev = 1.500 CI (99.9%): [3.000, 3.000] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time": 1.000 ±(99.9%) 0.001 ms [Sum] (min, avg, max) = (≈ 0, 0.250, 1.000), stdev = 0.500 CI (99.9%): [1.000, 1.000] (assumes normal distribution) # JMH version: 1.37 # VM version: JDK 25, OpenJDK 64-Bit Server VM, 25+36-b176.4 # VM invoker: java # VM options: # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 1 iterations, 100 ms each # Measurement: 4 iterations, 100 ms each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix # Parameters: (implementation = baked-substring-index, itemCount = 100000, typedCharacterCount = 5) # Run progress: 36.36% complete, ETA 00:00:10 # Fork: 1 of 1 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::objectFieldOffset has been called by org.openjdk.jmh.util.Utils (file:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar) WARNING: Please consider reporting this to the maintainers of class org.openjdk.jmh.util.Utils WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release # Warmup Iteration 1: 0.103 ms/op Iteration 1: 0.094 ms/op gc.alloc.rate: 325.186 MB/sec gc.alloc.rate.norm: 31962.930 B/op gc.count: 3.000 counts gc.time: 1.000 ms Iteration 2: 0.087 ms/op gc.alloc.rate: 347.284 MB/sec gc.alloc.rate.norm: 31925.928 B/op gc.count: ≈ 0 counts Iteration 3: 0.090 ms/op gc.alloc.rate: 337.804 MB/sec gc.alloc.rate.norm: 31954.395 B/op gc.count: 1.000 counts gc.time: 1.000 ms Iteration 4: 0.088 ms/op gc.alloc.rate: 344.520 MB/sec gc.alloc.rate.norm: 31973.983 B/op gc.count: ≈ 0 counts Result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix": 0.090 ±(99.9%) 0.017 ms/op [Average] (min, avg, max) = (0.087, 0.090, 0.094), stdev = 0.003 CI (99.9%): [0.073, 0.107] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate": 338.699 ±(99.9%) 63.641 MB/sec [Average] (min, avg, max) = (325.186, 338.699, 347.284), stdev = 9.849 CI (99.9%): [275.057, 402.340] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm": 31954.309 ±(99.9%) 132.791 B/op [Average] (min, avg, max) = (31925.928, 31954.309, 31973.983), stdev = 20.550 CI (99.9%): [31821.518, 32087.100] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count": 4.000 ±(99.9%) 0.001 counts [Sum] (min, avg, max) = (≈ 0, 1.000, 3.000), stdev = 1.414 CI (99.9%): [4.000, 4.000] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time": 2.000 ±(99.9%) 0.001 ms [Sum] (min, avg, max) = (≈ 0, 0.500, 1.000), stdev = 0.577 CI (99.9%): [2.000, 2.000] (assumes normal distribution) # JMH version: 1.37 # VM version: JDK 25, OpenJDK 64-Bit Server VM, 25+36-b176.4 # VM invoker: java # VM options: # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 1 iterations, 100 ms each # Measurement: 4 iterations, 100 ms each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix # Parameters: (implementation = baked-substring-index, itemCount = 100000, typedCharacterCount = 6) # Run progress: 45.45% complete, ETA 00:00:08 # Fork: 1 of 1 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::objectFieldOffset has been called by org.openjdk.jmh.util.Utils (file:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar) WARNING: Please consider reporting this to the maintainers of class org.openjdk.jmh.util.Utils WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release # Warmup Iteration 1: 0.116 ms/op Iteration 1: 0.099 ms/op gc.alloc.rate: 435.877 MB/sec gc.alloc.rate.norm: 45419.570 B/op gc.count: 3.000 counts gc.time: 2.000 ms Iteration 2: 0.124 ms/op gc.alloc.rate: 347.625 MB/sec gc.alloc.rate.norm: 45477.018 B/op gc.count: 1.000 counts gc.time: 1.000 ms Iteration 3: 0.090 ms/op gc.alloc.rate: 478.500 MB/sec gc.alloc.rate.norm: 45356.436 B/op gc.count: ≈ 0 counts Iteration 4: 0.098 ms/op gc.alloc.rate: 440.408 MB/sec gc.alloc.rate.norm: 45402.674 B/op gc.count: ≈ 0 counts Result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix": 0.103 ±(99.9%) 0.096 ms/op [Average] (min, avg, max) = (0.090, 0.103, 0.124), stdev = 0.015 CI (99.9%): [0.007, 0.199] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate": 425.602 ±(99.9%) 357.915 MB/sec [Average] (min, avg, max) = (347.625, 425.602, 478.500), stdev = 55.388 CI (99.9%): [67.687, 783.517] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm": 45413.924 ±(99.9%) 321.894 B/op [Average] (min, avg, max) = (45356.436, 45413.924, 45477.018), stdev = 49.813 CI (99.9%): [45092.031, 45735.818] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count": 4.000 ±(99.9%) 0.001 counts [Sum] (min, avg, max) = (≈ 0, 1.000, 3.000), stdev = 1.414 CI (99.9%): [4.000, 4.000] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time": 3.000 ±(99.9%) 0.001 ms [Sum] (min, avg, max) = (≈ 0, 0.750, 2.000), stdev = 0.957 CI (99.9%): [3.000, 3.000] (assumes normal distribution) # JMH version: 1.37 # VM version: JDK 25, OpenJDK 64-Bit Server VM, 25+36-b176.4 # VM invoker: java # VM options: # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 1 iterations, 100 ms each # Measurement: 4 iterations, 100 ms each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix # Parameters: (implementation = baked-substring-index, itemCount = 100000, typedCharacterCount = 7) # Run progress: 54.55% complete, ETA 00:00:07 # Fork: 1 of 1 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::objectFieldOffset has been called by org.openjdk.jmh.util.Utils (file:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar) WARNING: Please consider reporting this to the maintainers of class org.openjdk.jmh.util.Utils WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release # Warmup Iteration 1: 0.118 ms/op Iteration 1: 0.097 ms/op gc.alloc.rate: 396.410 MB/sec gc.alloc.rate.norm: 40480.545 B/op gc.count: 3.000 counts gc.time: 1.000 ms Iteration 2: 0.095 ms/op gc.alloc.rate: 407.308 MB/sec gc.alloc.rate.norm: 40637.868 B/op gc.count: 1.000 counts gc.time: 1.000 ms Iteration 3: 0.096 ms/op gc.alloc.rate: 400.982 MB/sec gc.alloc.rate.norm: 40503.414 B/op gc.count: ≈ 0 counts Iteration 4: 0.090 ms/op gc.alloc.rate: 425.533 MB/sec gc.alloc.rate.norm: 40411.091 B/op gc.count: ≈ 0 counts Result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix": 0.095 ±(99.9%) 0.019 ms/op [Average] (min, avg, max) = (0.090, 0.095, 0.097), stdev = 0.003 CI (99.9%): [0.075, 0.114] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate": 407.558 ±(99.9%) 82.642 MB/sec [Average] (min, avg, max) = (396.410, 407.558, 425.533), stdev = 12.789 CI (99.9%): [324.916, 490.200] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm": 40508.230 ±(99.9%) 613.397 B/op [Average] (min, avg, max) = (40411.091, 40508.230, 40637.868), stdev = 94.924 CI (99.9%): [39894.832, 41121.627] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count": 4.000 ±(99.9%) 0.001 counts [Sum] (min, avg, max) = (≈ 0, 1.000, 3.000), stdev = 1.414 CI (99.9%): [4.000, 4.000] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time": 2.000 ±(99.9%) 0.001 ms [Sum] (min, avg, max) = (≈ 0, 0.500, 1.000), stdev = 0.577 CI (99.9%): [2.000, 2.000] (assumes normal distribution) # JMH version: 1.37 # VM version: JDK 25, OpenJDK 64-Bit Server VM, 25+36-b176.4 # VM invoker: java # VM options: # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 1 iterations, 100 ms each # Measurement: 4 iterations, 100 ms each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix # Parameters: (implementation = baked-substring-index, itemCount = 100000, typedCharacterCount = 8) # Run progress: 63.64% complete, ETA 00:00:05 # Fork: 1 of 1 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::objectFieldOffset has been called by org.openjdk.jmh.util.Utils (file:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar) WARNING: Please consider reporting this to the maintainers of class org.openjdk.jmh.util.Utils WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release # Warmup Iteration 1: 0.111 ms/op Iteration 1: 0.077 ms/op gc.alloc.rate: 376.350 MB/sec gc.alloc.rate.norm: 30573.659 B/op gc.count: 3.000 counts gc.time: 1.000 ms Iteration 2: 0.075 ms/op gc.alloc.rate: 386.139 MB/sec gc.alloc.rate.norm: 30435.715 B/op gc.count: ≈ 0 counts Iteration 3: 0.074 ms/op gc.alloc.rate: 395.507 MB/sec gc.alloc.rate.norm: 30639.865 B/op gc.count: 1.000 counts gc.time: 1.000 ms Iteration 4: 0.070 ms/op gc.alloc.rate: 417.555 MB/sec gc.alloc.rate.norm: 30619.094 B/op gc.count: ≈ 0 counts Result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix": 0.074 ±(99.9%) 0.020 ms/op [Average] (min, avg, max) = (0.070, 0.074, 0.077), stdev = 0.003 CI (99.9%): [0.054, 0.094] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate": 393.888 ±(99.9%) 113.797 MB/sec [Average] (min, avg, max) = (376.350, 393.888, 417.555), stdev = 17.610 CI (99.9%): [280.091, 507.685] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm": 30567.083 ±(99.9%) 593.463 B/op [Average] (min, avg, max) = (30435.715, 30567.083, 30639.865), stdev = 91.839 CI (99.9%): [29973.620, 31160.546] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count": 4.000 ±(99.9%) 0.001 counts [Sum] (min, avg, max) = (≈ 0, 1.000, 3.000), stdev = 1.414 CI (99.9%): [4.000, 4.000] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time": 2.000 ±(99.9%) 0.001 ms [Sum] (min, avg, max) = (≈ 0, 0.500, 1.000), stdev = 0.577 CI (99.9%): [2.000, 2.000] (assumes normal distribution) # JMH version: 1.37 # VM version: JDK 25, OpenJDK 64-Bit Server VM, 25+36-b176.4 # VM invoker: java # VM options: # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 1 iterations, 100 ms each # Measurement: 4 iterations, 100 ms each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix # Parameters: (implementation = baked-substring-index, itemCount = 100000, typedCharacterCount = 9) # Run progress: 72.73% complete, ETA 00:00:04 # Fork: 1 of 1 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::objectFieldOffset has been called by org.openjdk.jmh.util.Utils (file:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar) WARNING: Please consider reporting this to the maintainers of class org.openjdk.jmh.util.Utils WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release # Warmup Iteration 1: 0.107 ms/op Iteration 1: 0.102 ms/op gc.alloc.rate: 335.716 MB/sec gc.alloc.rate.norm: 35997.230 B/op gc.count: 3.000 counts gc.time: 1.000 ms Iteration 2: 0.108 ms/op gc.alloc.rate: 311.671 MB/sec gc.alloc.rate.norm: 35480.618 B/op gc.count: ≈ 0 counts Iteration 3: 0.089 ms/op gc.alloc.rate: 385.693 MB/sec gc.alloc.rate.norm: 35905.130 B/op gc.count: 1.000 counts gc.time: 1.000 ms Iteration 4: 0.086 ms/op gc.alloc.rate: 394.323 MB/sec gc.alloc.rate.norm: 35642.817 B/op gc.count: ≈ 0 counts Result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix": 0.096 ±(99.9%) 0.069 ms/op [Average] (min, avg, max) = (0.086, 0.096, 0.108), stdev = 0.011 CI (99.9%): [0.027, 0.165] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate": 356.851 ±(99.9%) 256.422 MB/sec [Average] (min, avg, max) = (311.671, 356.851, 394.323), stdev = 39.682 CI (99.9%): [100.428, 613.273] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm": 35756.449 ±(99.9%) 1534.077 B/op [Average] (min, avg, max) = (35480.618, 35756.449, 35997.230), stdev = 237.400 CI (99.9%): [34222.372, 37290.525] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count": 4.000 ±(99.9%) 0.001 counts [Sum] (min, avg, max) = (≈ 0, 1.000, 3.000), stdev = 1.414 CI (99.9%): [4.000, 4.000] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time": 2.000 ±(99.9%) 0.001 ms [Sum] (min, avg, max) = (≈ 0, 0.500, 1.000), stdev = 0.577 CI (99.9%): [2.000, 2.000] (assumes normal distribution) # JMH version: 1.37 # VM version: JDK 25, OpenJDK 64-Bit Server VM, 25+36-b176.4 # VM invoker: java # VM options: # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 1 iterations, 100 ms each # Measurement: 4 iterations, 100 ms each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix # Parameters: (implementation = baked-substring-index, itemCount = 100000, typedCharacterCount = 10) # Run progress: 81.82% complete, ETA 00:00:02 # Fork: 1 of 1 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::objectFieldOffset has been called by org.openjdk.jmh.util.Utils (file:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar) WARNING: Please consider reporting this to the maintainers of class org.openjdk.jmh.util.Utils WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release # Warmup Iteration 1: 0.090 ms/op Iteration 1: 0.072 ms/op gc.alloc.rate: 350.772 MB/sec gc.alloc.rate.norm: 26622.345 B/op gc.count: 3.000 counts gc.time: 1.000 ms Iteration 2: 0.079 ms/op gc.alloc.rate: 321.577 MB/sec gc.alloc.rate.norm: 26645.451 B/op gc.count: ≈ 0 counts Iteration 3: 0.099 ms/op gc.alloc.rate: 253.694 MB/sec gc.alloc.rate.norm: 26605.132 B/op gc.count: 1.000 counts gc.time: 1.000 ms Iteration 4: 0.103 ms/op gc.alloc.rate: 246.085 MB/sec gc.alloc.rate.norm: 26663.352 B/op gc.count: ≈ 0 counts Result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix": 0.088 ±(99.9%) 0.097 ms/op [Average] (min, avg, max) = (0.072, 0.088, 0.103), stdev = 0.015 CI (99.9%): [≈ 0, 0.186] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate": 293.032 ±(99.9%) 331.610 MB/sec [Average] (min, avg, max) = (246.085, 293.032, 350.772), stdev = 51.317 CI (99.9%): [≈ 0, 624.642] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm": 26634.070 ±(99.9%) 165.248 B/op [Average] (min, avg, max) = (26605.132, 26634.070, 26663.352), stdev = 25.572 CI (99.9%): [26468.822, 26799.318] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count": 4.000 ±(99.9%) 0.001 counts [Sum] (min, avg, max) = (≈ 0, 1.000, 3.000), stdev = 1.414 CI (99.9%): [4.000, 4.000] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time": 2.000 ±(99.9%) 0.001 ms [Sum] (min, avg, max) = (≈ 0, 0.500, 1.000), stdev = 0.577 CI (99.9%): [2.000, 2.000] (assumes normal distribution) # JMH version: 1.37 # VM version: JDK 25, OpenJDK 64-Bit Server VM, 25+36-b176.4 # VM invoker: java # VM options: # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 1 iterations, 100 ms each # Measurement: 4 iterations, 100 ms each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix # Parameters: (implementation = baked-substring-index, itemCount = 100000, typedCharacterCount = 11) # Run progress: 90.91% complete, ETA 00:00:01 # Fork: 1 of 1 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::objectFieldOffset has been called by org.openjdk.jmh.util.Utils (file:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar) WARNING: Please consider reporting this to the maintainers of class org.openjdk.jmh.util.Utils WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release # Warmup Iteration 1: 0.101 ms/op Iteration 1: 0.073 ms/op gc.alloc.rate: 350.220 MB/sec gc.alloc.rate.norm: 26939.118 B/op gc.count: 2.000 counts gc.time: 1.000 ms Iteration 2: 0.074 ms/op gc.alloc.rate: 343.609 MB/sec gc.alloc.rate.norm: 26738.013 B/op gc.count: 1.000 counts gc.time: ≈ 0 ms Iteration 3: 0.071 ms/op gc.alloc.rate: 357.579 MB/sec gc.alloc.rate.norm: 26814.255 B/op gc.count: 1.000 counts gc.time: 1.000 ms Iteration 4: 0.074 ms/op gc.alloc.rate: 347.665 MB/sec gc.alloc.rate.norm: 26848.096 B/op gc.count: ≈ 0 counts Result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix": 0.073 ±(99.9%) 0.007 ms/op [Average] (min, avg, max) = (0.071, 0.073, 0.074), stdev = 0.001 CI (99.9%): [0.066, 0.080] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate": 349.768 ±(99.9%) 37.968 MB/sec [Average] (min, avg, max) = (343.609, 349.768, 357.579), stdev = 5.876 CI (99.9%): [311.800, 387.736] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm": 26834.871 ±(99.9%) 538.701 B/op [Average] (min, avg, max) = (26738.013, 26834.871, 26939.118), stdev = 83.365 CI (99.9%): [26296.170, 27373.572] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count": 4.000 ±(99.9%) 0.001 counts [Sum] (min, avg, max) = (≈ 0, 1.000, 2.000), stdev = 0.816 CI (99.9%): [4.000, 4.000] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time": 2.000 ±(99.9%) 0.001 ms [Sum] (min, avg, max) = (≈ 0, 0.500, 1.000), stdev = 0.577 CI (99.9%): [2.000, 2.000] (assumes normal distribution) # Run complete. Total time: 00:00:16 REMEMBER: The numbers below are just data. To gain reusable insights, you need to follow up on why the numbers are the way they are. Use profilers (see -prof, -lprof), design factorial experiments, perform baseline and negative tests that provide experimental control, make sure the benchmarking environment is safe on JVM/OS/HW level, ask for reviews from the domain experts. Do not assume the numbers tell you what you want them to tell. NOTE: Current JVM experimentally supports Compiler Blackholes, and they are in use. Please exercise extra caution when trusting the results, look into the generated code to check the benchmark still works, and factor in a small probability of new VM bugs. Additionally, while comparisons between different JVMs are already problematic, the performance difference caused by different Blackhole modes can be very significant. Please make sure you use the consistent Blackhole mode for comparisons. Benchmark (implementation) (itemCount) (typedCharacterCount) Mode Cnt Score Error Units LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix baked-substring-index 100000 1 avgt 4 0.643 ± 0.449 ms/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate baked-substring-index 100000 1 avgt 4 0.182 ± 0.076 MB/sec LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm baked-substring-index 100000 1 avgt 4 122.467 ± 30.216 B/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count baked-substring-index 100000 1 avgt 4 ≈ 0 counts LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix baked-substring-index 100000 2 avgt 4 0.113 ± 0.006 ms/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate baked-substring-index 100000 2 avgt 4 0.737 ± 0.039 MB/sec LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm baked-substring-index 100000 2 avgt 4 87.544 ± 0.907 B/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count baked-substring-index 100000 2 avgt 4 ≈ 0 counts LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix baked-substring-index 100000 3 avgt 4 0.023 ± 0.013 ms/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate baked-substring-index 100000 3 avgt 4 1.780 ± 4.094 MB/sec LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm baked-substring-index 100000 3 avgt 4 43.476 ± 129.784 B/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count baked-substring-index 100000 3 avgt 4 ≈ 0 counts LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix baked-substring-index 100000 4 avgt 4 0.087 ± 0.038 ms/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate baked-substring-index 100000 4 avgt 4 218.847 ± 91.627 MB/sec LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm baked-substring-index 100000 4 avgt 4 20034.007 ± 254.319 B/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count baked-substring-index 100000 4 avgt 4 3.000 counts LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time baked-substring-index 100000 4 avgt 4 1.000 ms LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix baked-substring-index 100000 5 avgt 4 0.090 ± 0.017 ms/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate baked-substring-index 100000 5 avgt 4 338.699 ± 63.641 MB/sec LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm baked-substring-index 100000 5 avgt 4 31954.309 ± 132.791 B/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count baked-substring-index 100000 5 avgt 4 4.000 counts LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time baked-substring-index 100000 5 avgt 4 2.000 ms LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix baked-substring-index 100000 6 avgt 4 0.103 ± 0.096 ms/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate baked-substring-index 100000 6 avgt 4 425.602 ± 357.915 MB/sec LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm baked-substring-index 100000 6 avgt 4 45413.924 ± 321.894 B/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count baked-substring-index 100000 6 avgt 4 4.000 counts LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time baked-substring-index 100000 6 avgt 4 3.000 ms LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix baked-substring-index 100000 7 avgt 4 0.095 ± 0.019 ms/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate baked-substring-index 100000 7 avgt 4 407.558 ± 82.642 MB/sec LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm baked-substring-index 100000 7 avgt 4 40508.230 ± 613.397 B/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count baked-substring-index 100000 7 avgt 4 4.000 counts LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time baked-substring-index 100000 7 avgt 4 2.000 ms LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix baked-substring-index 100000 8 avgt 4 0.074 ± 0.020 ms/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate baked-substring-index 100000 8 avgt 4 393.888 ± 113.797 MB/sec LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm baked-substring-index 100000 8 avgt 4 30567.083 ± 593.463 B/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count baked-substring-index 100000 8 avgt 4 4.000 counts LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time baked-substring-index 100000 8 avgt 4 2.000 ms LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix baked-substring-index 100000 9 avgt 4 0.096 ± 0.069 ms/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate baked-substring-index 100000 9 avgt 4 356.851 ± 256.422 MB/sec LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm baked-substring-index 100000 9 avgt 4 35756.449 ± 1534.077 B/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count baked-substring-index 100000 9 avgt 4 4.000 counts LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time baked-substring-index 100000 9 avgt 4 2.000 ms LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix baked-substring-index 100000 10 avgt 4 0.088 ± 0.097 ms/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate baked-substring-index 100000 10 avgt 4 293.032 ± 331.610 MB/sec LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm baked-substring-index 100000 10 avgt 4 26634.070 ± 165.248 B/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count baked-substring-index 100000 10 avgt 4 4.000 counts LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time baked-substring-index 100000 10 avgt 4 2.000 ms LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix baked-substring-index 100000 11 avgt 4 0.073 ± 0.007 ms/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate baked-substring-index 100000 11 avgt 4 349.768 ± 37.968 MB/sec LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm baked-substring-index 100000 11 avgt 4 26834.871 ± 538.701 B/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count baked-substring-index 100000 11 avgt 4 4.000 counts LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time baked-substring-index 100000 11 avgt 4 2.000 ms Benchmark result is saved to /build/reports/jmh/adaptive-jmh-passes/pass-01-group-008.json # Adaptive pass 1, group 9 # Command: java -cp /build/classes/java/benchmark:/build/resources/benchmark:/build/moddev/artifacts/vanilla-26.2-2.jar:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar:/modules-2/files-2.1/com.abahgat/suffixtree/2.0.0/ffe2c29796add2624d2e0b9f33e72421eb5c5ea5/suffixtree-2.0.0.jar:/modules-2/files-2.1/net.mezzdev/suffixtree/1.3.0/1a1b87af70a1631ff6d6c9d49c63564aadecb176/suffixtree-1.3.0.jar:/modules-2/files-2.1/net.mezzdev/baked-substring-index/0.1.0/4f9fbd9eb54fdb1b8ec40a83297f4e8f4479eb7c/baked-substring-index-0.1.0.jar:/modules-2/files-2.1/net.mezzdev/baked-suffix-array-index/0.1.0/cd5e5ffbcee030d149e7a5a70e151a06158bd643/baked-suffix-array-index-0.1.0.jar:/modules-2/files-2.1/net.neoforged/mergetool/2.0.7/793b18456e92c4a7f66d9b5d8bf7a9c1c7a20b20/mergetool-2.0.7-api.jar:/modules-2/files-2.1/net.sf.jopt-simple/jopt-simple/5.0.4/4fdac2fbe92dfad86aa6e9301736f6b4342a3f5c/jopt-simple-5.0.4.jar:/modules-2/files-2.1/org.apache.commons/commons-math3/3.6.1/e4ba98f1d4b3c80ec46392f25e094a6a2e58fcbf/commons-math3-3.6.1.jar:/modules-2/files-2.1/com.google.code.findbugs/jsr305/3.0.2/25ea2e8b0c338a877313bd4672d3fe056ea78f0d/jsr305-3.0.2.jar:/modules-2/files-2.1/org.jspecify/jspecify/1.0.0/7425a601c1c7ec76645a78d22b8c6a627edee507/jspecify-1.0.0.jar:/modules-2/files-2.1/org.jetbrains/annotations/26.0.2-1/c7ce3cdeda3d18909368dfe5977332dfad326c6d/annotations-26.0.2-1.jar:/modules-2/files-2.1/ca.weblite/java-objc-bridge/1.1/1227f9e0666314f9de41477e3ec277e542ed7f7b/java-objc-bridge-1.1.jar:/modules-2/files-2.1/at.yawk.lz4/lz4-java/1.10.1/f541d7f910fe3d76f38f799c507c48cc81b12ecb/lz4-java-1.10.1.jar:/modules-2/files-2.1/com.azure/azure-json/1.4.0/fcc1d354dbc3e0300e5276b1bf124d0247799cd8/azure-json-1.4.0.jar:/modules-2/files-2.1/com.github.oshi/oshi-core/6.9.0/3224870731860cfcd7744581a05b559e94291e7/oshi-core-6.9.0.jar:/modules-2/files-2.1/com.google.code.gson/gson/2.14.0/efc0e34ede4e3204eaefb84a00e55e8c86634382/gson-2.14.0.jar:/modules-2/files-2.1/com.google.guava/failureaccess/1.0.3/aeaffd00d57023a2c947393ed251f0354f0985fc/failureaccess-1.0.3.jar:/modules-2/files-2.1/com.google.guava/guava/33.6.0-jre/c376b13067cc99a5774403530953f7b05a91e218/guava-33.6.0-jre.jar:/modules-2/files-2.1/com.ibm.icu/icu4j/78.3/6a851a53bb1f25689fc418dcc8935b0d93580adf/icu4j-78.3.jar:/modules-2/files-2.1/com.microsoft.azure/msal4j/1.24.1/c233f2d047b9755f7041adf21a858c680e4c9242/msal4j-1.24.1.jar:/modules-2/files-2.1/com.mojang/authlib/9.0.75/d61056a234d5e4b272e09d59b0713f80d6c0b6af/authlib-9.0.75.jar:/modules-2/files-2.1/com.mojang/blocklist/1.0.10/5c685c5ffa94c4cd39496c7184c1d122e515ecef/blocklist-1.0.10.jar:/modules-2/files-2.1/com.mojang/brigadier/1.3.10/d15b53a14cf20fdcaa98f731af5dda654452c010/brigadier-1.3.10.jar:/modules-2/files-2.1/com.mojang/datafixerupper/10.0.21/b6b2ae770c02e0c1eb90f9985b151e9085a38d0b/datafixerupper-10.0.21.jar:/modules-2/files-2.1/com.mojang/jtracy/1.0.37/a3fb649b2e2b2288d2978f0b0bc3d83f62809d1e/jtracy-1.0.37.jar:/modules-2/files-2.1/com.mojang/jtracy/1.0.37/a99fcb63b72fb623534d0ceb71bda4bed9b55b4c/jtracy-1.0.37-natives-macos.jar:/modules-2/files-2.1/com.mojang/jtracy/1.0.37/c8e971da5150aa33283c5bf4097154c0da554fb9/jtracy-1.0.37-natives-macos-arm64.jar:/modules-2/files-2.1/com.mojang/logging/1.7.12/351cea64a5233361327d8d54c44277041beed97f/logging-1.7.12.jar:/modules-2/files-2.1/com.mojang/patchy/2.2.10/da05971b07cbb379d002cf7eaec6a2048211fefc/patchy-2.2.10.jar:/modules-2/files-2.1/com.mojang/text2speech/1.19.12/2e517a75c79d34d32de2b5d68422150836c2133e/text2speech-1.19.12.jar:/modules-2/files-2.1/commons-codec/commons-codec/1.22.0/6b3eb4beb7058c2a638f5f17bcb388649fd339dd/commons-codec-1.22.0.jar:/modules-2/files-2.1/commons-io/commons-io/2.20.0/36f3474daec2849c149e877614e7f979b2082cd2/commons-io-2.20.0.jar:/modules-2/files-2.1/io.netty/netty-buffer/4.2.15.Final/2beb620803bf871cda2dd5d46b8f831e8015dd34/netty-buffer-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-codec-base/4.2.15.Final/e97149fdd5fb04858efa90e314651c8d700dc68b/netty-codec-base-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-codec-compression/4.2.15.Final/89fc4a20b7ae6af974304b1695405e62c4f9b16d/netty-codec-compression-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-codec-http/4.2.15.Final/e611826aa054371bb9a17f27bdb05755a4cac5f0/netty-codec-http-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-common/4.2.15.Final/7222492c1af9c2d4d78d521eea340a619e242fda/netty-common-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-handler/4.2.15.Final/d5344afd1148e3b9927a74be019605ebb0937a93/netty-handler-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-resolver/4.2.15.Final/b961a16d379b508b473e064ba06842bba280f4e3/netty-resolver-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-transport-classes-epoll/4.2.15.Final/44bafba9c9993800e955b365bba4981326f3f3b1/netty-transport-classes-epoll-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-transport-classes-kqueue/4.2.15.Final/f248656bb907607c5a41c7b61fd918a97db79250/netty-transport-classes-kqueue-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-transport-native-unix-common/4.2.15.Final/efb6943b4de9e0226a5ac35330f232605424af02/netty-transport-native-unix-common-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-transport/4.2.15.Final/a000c3a6196ee40207b73ac619dcb339409dd62f/netty-transport-4.2.15.Final.jar:/modules-2/files-2.1/it.unimi.dsi/fastutil/8.5.18/a6cff377eecc19c2037bf31568a6d7106b50ba1f/fastutil-8.5.18.jar:/modules-2/files-2.1/net.java.dev.jna/jna-platform/5.17.0/a4934c44d25a9d8c2ddf4203affd20330cb3426f/jna-platform-5.17.0.jar:/modules-2/files-2.1/net.java.dev.jna/jna/5.17.0/33d12735bef894440780fce64f9758d420c7bae2/jna-5.17.0.jar:/modules-2/files-2.1/org.apache.commons/commons-compress/1.28.0/e482f2c7a88dac3c497e96aa420b6a769f59c8d7/commons-compress-1.28.0.jar:/modules-2/files-2.1/org.apache.commons/commons-lang3/3.20.0/65897b3e5731220962e659e001904af3c3cbeba9/commons-lang3-3.20.0.jar:/modules-2/files-2.1/org.apache.logging.log4j/log4j-api/2.26.0/ad52af0ecf054a7e3f275a2e180ee06d9c490951/log4j-api-2.26.0.jar:/modules-2/files-2.1/org.apache.logging.log4j/log4j-core/2.26.0/d267ca60b27ddb075e0b4e75e7875859717bf85f/log4j-core-2.26.0.jar:/modules-2/files-2.1/org.apache.logging.log4j/log4j-slf4j2-impl/2.26.0/668c0f0e813d83f00a7182533aa658ec7e7a0a0d/log4j-slf4j2-impl-2.26.0.jar:/modules-2/files-2.1/org.jcraft/jorbis/0.0.17/8872d22b293e8f5d7d56ff92be966e6dc28ebdc6/jorbis-0.0.17.jar:/modules-2/files-2.1/org.joml/joml/1.10.8/fc0a71dad90a2cf41d82a76156a0e700af8e4f8d/joml-1.10.8.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-freetype/3.4.1/caa75a37e857efc9b0686e434d708d6420c5b6ea/lwjgl-freetype-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-freetype/3.4.1/61cb2d85e1838bca1a0b664f54e818bc68deb2ef/lwjgl-freetype-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-freetype/3.4.1/cce5a86b4a7d17817fe8ea0296302a4353acf2d5/lwjgl-freetype-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-glfw/3.4.1/a782b1ddd175c9107bf300fd92920579ea65e2a4/lwjgl-glfw-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-glfw/3.4.1/3c8538942f58377d59cd7be2dc164ba71a53868a/lwjgl-glfw-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-glfw/3.4.1/ef1f8efca5a60ba3512bc4982b88e446ecc43378/lwjgl-glfw-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-jemalloc/3.4.1/16b663092854fc6adfe0a941e61cae2bb2e437b6/lwjgl-jemalloc-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-jemalloc/3.4.1/581b4d542e841015ce3265eed0495e2cde15b1d0/lwjgl-jemalloc-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-jemalloc/3.4.1/dcd7e3f9a2ca386e8c5b8f508a8511d9dd63bab0/lwjgl-jemalloc-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-openal/3.4.1/8508bd60589de0539aa465b78fcf838efd07ae9a/lwjgl-openal-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-openal/3.4.1/a4dc57b7b0880d3fffb4d0b61649f45712bccc93/lwjgl-openal-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-openal/3.4.1/1c709a38c4a0e86aae96db7b8c78432307f2322a/lwjgl-openal-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-opengl/3.4.1/830412cab823c029cda6b9729f9d2ed36cf79959/lwjgl-opengl-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-opengl/3.4.1/ba18fc6012b88494ee893506934b92b01c4ef14b/lwjgl-opengl-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-opengl/3.4.1/35b5550058de4960525f465243bd01805f04fd8b/lwjgl-opengl-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-shaderc/3.4.1/5c02c88f0d879529014c78463b76f43fdecfd272/lwjgl-shaderc-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-shaderc/3.4.1/1d7bbdba70cf29c42978f6c0c1bdef945b922072/lwjgl-shaderc-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-shaderc/3.4.1/48aa2727e8616154d399d4dab0d8e8479741fa4f/lwjgl-shaderc-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-spvc/3.4.1/188553592e97b5ab2dba54a1b403ee80b48dad4c/lwjgl-spvc-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-spvc/3.4.1/2eeebd6d5bae966bfffda9747eba744cfe839ae1/lwjgl-spvc-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-spvc/3.4.1/a4f66638d28129eba0babd8fdc4385427a5ea83e/lwjgl-spvc-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-stb/3.4.1/f077c3dafc31924fbe8acb0b913f08977ba27f8e/lwjgl-stb-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-stb/3.4.1/fd1ea36b717b0832babca09324a6cfc43906e2aa/lwjgl-stb-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-stb/3.4.1/da554e04f819f09b0f3473bd931628ebf557965e/lwjgl-stb-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-tinyfd/3.4.1/562697d40dbd2ed0424bf24dcf65d51170f81adf/lwjgl-tinyfd-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-tinyfd/3.4.1/211ae9e8720e8f10f2ce85a118fa7bd5ee71584b/lwjgl-tinyfd-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-tinyfd/3.4.1/7bcde70f6164b2e72f84cac5257b7e9877b88510/lwjgl-tinyfd-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vma/3.4.1/2c54ce10154feb1ede4d23c5947438cdbfdcc003/lwjgl-vma-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vma/3.4.1/a130a9e4f96c83063f749e1dcc7065e0dffb3936/lwjgl-vma-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vma/3.4.1/9451dc1067716bc4125cdba65a7096e465f4d0e5/lwjgl-vma-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vulkan/3.4.1/d0601fdc38890755e5638048c14cc0f7b990964b/lwjgl-vulkan-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vulkan/3.4.1/140c7fd3e0fdbcc625c92be9328301c555035905/lwjgl-vulkan-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vulkan/3.4.1/2c933bf617cb8a174af26585efda4778b59e6d44/lwjgl-vulkan-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl/3.4.1/129e06a04f93992cb2a45172435b21fc4b60dd7d/lwjgl-3.4.1-unsafe.jar:/modules-2/files-2.1/org.lwjgl/lwjgl/3.4.1/b034fd9a67cb8646c01af7efcefcb93be835542b/lwjgl-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl/3.4.1/b4cbdef4818abd714ee66985344c0949fd1cd6d6/lwjgl-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.slf4j/slf4j-api/2.0.17/d9e58ac9c7779ba3bf8142aff6c830617a7fe60f/slf4j-api-2.0.17.jar:/modules-2/files-2.1/org.ow2.asm/asm-util/9.5/64b5a1fc8c1b15ed2efd6a063e976bc8d3dc5ffe/asm-util-9.5.jar:/modules-2/files-2.1/org.ow2.asm/asm-analysis/9.5/490bacc77de7cbc0be1a30bb3471072d705be4a4/asm-analysis-9.5.jar:/modules-2/files-2.1/org.ow2.asm/asm-tree/9.5/fd33c8b6373abaa675be407082fdfda35021254a/asm-tree-9.5.jar:/modules-2/files-2.1/org.ow2.asm/asm/9.5/dc6ea1875f4d64fbc85e1691c95b96a3d8569c90/asm-9.5.jar:/modules-2/files-2.1/net.neoforged/srgutils/1.0.10/abb471237b33b19f040ada00bfbad1ec45b949b6/srgutils-1.0.10.jar:/modules-2/files-2.1/io.netty/netty-transport-native-kqueue/4.2.15.Final/8ea0ef3eb716d821332e4b4926825a4b7c1a6d38/netty-transport-native-kqueue-4.2.15.Final-osx-aarch_64.jar:/modules-2/files-2.1/io.netty/netty-transport-native-kqueue/4.2.15.Final/4245380831515fb4eca18d32477a27fbb8f7b8f4/netty-transport-native-kqueue-4.2.15.Final-osx-x86_64.jar:/build/classes/java/main:/build/resources/main org.openjdk.jmh.Main .*net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix -p itemCount=100000 -p implementation=baked-suffix-array-index -f 1 -wi 1 -i 4 -w 100ms -r 100ms -rf json -rff /build/reports/jmh/adaptive-jmh-passes/pass-01-group-009.json -o /build/reports/jmh/adaptive-jmh-passes/pass-01-group-009.txt -foe true -p typedCharacterCount=1,2,3,4,5,6,7,8,9,10,11 -prof gc # JMH version: 1.37 # VM version: JDK 25, OpenJDK 64-Bit Server VM, 25+36-b176.4 # VM invoker: java # VM options: # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 1 iterations, 100 ms each # Measurement: 4 iterations, 100 ms each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix # Parameters: (implementation = baked-suffix-array-index, itemCount = 100000, typedCharacterCount = 1) # Run progress: 0.00% complete, ETA 00:00:05 # Fork: 1 of 1 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::objectFieldOffset has been called by org.openjdk.jmh.util.Utils (file:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar) WARNING: Please consider reporting this to the maintainers of class org.openjdk.jmh.util.Utils WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release # Warmup Iteration 1: 150.735 ms/op Iteration 1: 64.088 ms/op gc.alloc.rate: 93.336 MB/sec gc.alloc.rate.norm: 6295080.000 B/op gc.count: ≈ 0 counts Iteration 2: 36.760 ms/op gc.alloc.rate: 144.976 MB/sec gc.alloc.rate.norm: 5594850.667 B/op gc.count: ≈ 0 counts Iteration 3: 153.698 ms/op gc.alloc.rate: 104.032 MB/sec gc.alloc.rate.norm: 16784328.000 B/op gc.count: ≈ 0 counts Iteration 4: 110.959 ms/op gc.alloc.rate: 144.067 MB/sec gc.alloc.rate.norm: 16784328.000 B/op gc.count: ≈ 0 counts Result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix": 91.377 ±(99.9%) 333.593 ms/op [Average] (min, avg, max) = (36.760, 91.377, 153.698), stdev = 51.624 CI (99.9%): [≈ 0, 424.969] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate": 121.603 ±(99.9%) 173.340 MB/sec [Average] (min, avg, max) = (93.336, 121.603, 144.976), stdev = 26.825 CI (99.9%): [≈ 0, 294.943] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm": 11364646.667 ±(99.9%) 40482002.481 B/op [Average] (min, avg, max) = (5594850.667, 11364646.667, 16784328.000), stdev = 6264634.695 CI (99.9%): [≈ 0, 51846649.148] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count": ≈ 0 counts # JMH version: 1.37 # VM version: JDK 25, OpenJDK 64-Bit Server VM, 25+36-b176.4 # VM invoker: java # VM options: # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 1 iterations, 100 ms each # Measurement: 4 iterations, 100 ms each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix # Parameters: (implementation = baked-suffix-array-index, itemCount = 100000, typedCharacterCount = 2) # Run progress: 9.09% complete, ETA 00:00:33 # Fork: 1 of 1 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::objectFieldOffset has been called by org.openjdk.jmh.util.Utils (file:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar) WARNING: Please consider reporting this to the maintainers of class org.openjdk.jmh.util.Utils WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release # Warmup Iteration 1: 7.739 ms/op Iteration 1: 3.565 ms/op gc.alloc.rate: 271.717 MB/sec gc.alloc.rate.norm: 1017258.424 B/op gc.count: ≈ 0 counts Iteration 2: 3.126 ms/op gc.alloc.rate: 274.760 MB/sec gc.alloc.rate.norm: 902527.529 B/op gc.count: ≈ 0 counts Iteration 3: 3.971 ms/op gc.alloc.rate: 224.363 MB/sec gc.alloc.rate.norm: 935471.467 B/op gc.count: ≈ 0 counts Iteration 4: 3.466 ms/op gc.alloc.rate: 252.219 MB/sec gc.alloc.rate.norm: 917971.750 B/op gc.count: 1.000 counts gc.time: 10.000 ms Result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix": 3.532 ±(99.9%) 2.247 ms/op [Average] (min, avg, max) = (3.126, 3.532, 3.971), stdev = 0.348 CI (99.9%): [1.285, 5.779] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate": 255.765 ±(99.9%) 149.883 MB/sec [Average] (min, avg, max) = (224.363, 255.765, 274.760), stdev = 23.195 CI (99.9%): [105.882, 405.648] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm": 943307.293 ±(99.9%) 330237.557 B/op [Average] (min, avg, max) = (902527.529, 943307.293, 1017258.424), stdev = 51104.627 CI (99.9%): [613069.736, 1273544.849] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count": 1.000 ±(99.9%) 0.001 counts [Sum] (min, avg, max) = (≈ 0, 0.250, 1.000), stdev = 0.500 CI (99.9%): [1.000, 1.000] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time": 10.000 ±(99.9%) 0.001 ms [Sum] (min, avg, max) = (≈ 0, 2.500, 10.000), stdev = 5.000 CI (99.9%): [10.000, 10.000] (assumes normal distribution) # JMH version: 1.37 # VM version: JDK 25, OpenJDK 64-Bit Server VM, 25+36-b176.4 # VM invoker: java # VM options: # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 1 iterations, 100 ms each # Measurement: 4 iterations, 100 ms each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix # Parameters: (implementation = baked-suffix-array-index, itemCount = 100000, typedCharacterCount = 3) # Run progress: 18.18% complete, ETA 00:00:28 # Fork: 1 of 1 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::objectFieldOffset has been called by org.openjdk.jmh.util.Utils (file:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar) WARNING: Please consider reporting this to the maintainers of class org.openjdk.jmh.util.Utils WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release # Warmup Iteration 1: 1.704 ms/op Iteration 1: 0.881 ms/op gc.alloc.rate: 345.194 MB/sec gc.alloc.rate.norm: 319359.235 B/op gc.count: ≈ 0 counts Iteration 2: 0.919 ms/op gc.alloc.rate: 321.254 MB/sec gc.alloc.rate.norm: 309843.402 B/op gc.count: 1.000 counts gc.time: 8.000 ms Iteration 3: 0.927 ms/op gc.alloc.rate: 313.272 MB/sec gc.alloc.rate.norm: 304885.982 B/op gc.count: ≈ 0 counts Iteration 4: 0.877 ms/op gc.alloc.rate: 344.060 MB/sec gc.alloc.rate.norm: 316977.867 B/op gc.count: ≈ 0 counts Result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix": 0.901 ±(99.9%) 0.164 ms/op [Average] (min, avg, max) = (0.877, 0.901, 0.927), stdev = 0.025 CI (99.9%): [0.737, 1.065] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate": 330.945 ±(99.9%) 104.283 MB/sec [Average] (min, avg, max) = (313.272, 330.945, 345.194), stdev = 16.138 CI (99.9%): [226.662, 435.228] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm": 312766.621 ±(99.9%) 42839.111 B/op [Average] (min, avg, max) = (304885.982, 312766.621, 319359.235), stdev = 6629.400 CI (99.9%): [269927.510, 355605.733] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count": 1.000 ±(99.9%) 0.001 counts [Sum] (min, avg, max) = (≈ 0, 0.250, 1.000), stdev = 0.500 CI (99.9%): [1.000, 1.000] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time": 8.000 ±(99.9%) 0.001 ms [Sum] (min, avg, max) = (≈ 0, 2.000, 8.000), stdev = 4.000 CI (99.9%): [8.000, 8.000] (assumes normal distribution) # JMH version: 1.37 # VM version: JDK 25, OpenJDK 64-Bit Server VM, 25+36-b176.4 # VM invoker: java # VM options: # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 1 iterations, 100 ms each # Measurement: 4 iterations, 100 ms each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix # Parameters: (implementation = baked-suffix-array-index, itemCount = 100000, typedCharacterCount = 4) # Run progress: 27.27% complete, ETA 00:00:25 # Fork: 1 of 1 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::objectFieldOffset has been called by org.openjdk.jmh.util.Utils (file:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar) WARNING: Please consider reporting this to the maintainers of class org.openjdk.jmh.util.Utils WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release # Warmup Iteration 1: 0.550 ms/op Iteration 1: 0.388 ms/op gc.alloc.rate: 451.946 MB/sec gc.alloc.rate.norm: 184220.841 B/op gc.count: ≈ 0 counts Iteration 2: 0.443 ms/op gc.alloc.rate: 397.300 MB/sec gc.alloc.rate.norm: 184684.403 B/op gc.count: 1.000 counts gc.time: 8.000 ms Iteration 3: 0.396 ms/op gc.alloc.rate: 447.137 MB/sec gc.alloc.rate.norm: 185829.688 B/op gc.count: ≈ 0 counts Iteration 4: 0.387 ms/op gc.alloc.rate: 454.233 MB/sec gc.alloc.rate.norm: 184507.529 B/op gc.count: ≈ 0 counts Result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix": 0.403 ±(99.9%) 0.171 ms/op [Average] (min, avg, max) = (0.387, 0.403, 0.443), stdev = 0.026 CI (99.9%): [0.232, 0.574] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate": 437.654 ±(99.9%) 174.892 MB/sec [Average] (min, avg, max) = (397.300, 437.654, 454.233), stdev = 27.065 CI (99.9%): [262.762, 612.546] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm": 184810.616 ±(99.9%) 4560.372 B/op [Average] (min, avg, max) = (184220.841, 184810.616, 185829.688), stdev = 705.723 CI (99.9%): [180250.243, 189370.988] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count": 1.000 ±(99.9%) 0.001 counts [Sum] (min, avg, max) = (≈ 0, 0.250, 1.000), stdev = 0.500 CI (99.9%): [1.000, 1.000] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time": 8.000 ±(99.9%) 0.001 ms [Sum] (min, avg, max) = (≈ 0, 2.000, 8.000), stdev = 4.000 CI (99.9%): [8.000, 8.000] (assumes normal distribution) # JMH version: 1.37 # VM version: JDK 25, OpenJDK 64-Bit Server VM, 25+36-b176.4 # VM invoker: java # VM options: # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 1 iterations, 100 ms each # Measurement: 4 iterations, 100 ms each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix # Parameters: (implementation = baked-suffix-array-index, itemCount = 100000, typedCharacterCount = 5) # Run progress: 36.36% complete, ETA 00:00:21 # Fork: 1 of 1 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::objectFieldOffset has been called by org.openjdk.jmh.util.Utils (file:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar) WARNING: Please consider reporting this to the maintainers of class org.openjdk.jmh.util.Utils WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release # Warmup Iteration 1: 0.456 ms/op Iteration 1: 0.315 ms/op gc.alloc.rate: 463.036 MB/sec gc.alloc.rate.norm: 153395.988 B/op gc.count: ≈ 0 counts Iteration 2: 0.295 ms/op gc.alloc.rate: 502.468 MB/sec gc.alloc.rate.norm: 155545.587 B/op gc.count: 1.000 counts gc.time: 7.000 ms Iteration 3: 0.403 ms/op gc.alloc.rate: 359.351 MB/sec gc.alloc.rate.norm: 152143.267 B/op gc.count: ≈ 0 counts Iteration 4: 0.379 ms/op gc.alloc.rate: 388.918 MB/sec gc.alloc.rate.norm: 154686.857 B/op gc.count: ≈ 0 counts Result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix": 0.348 ±(99.9%) 0.330 ms/op [Average] (min, avg, max) = (0.295, 0.348, 0.403), stdev = 0.051 CI (99.9%): [0.018, 0.678] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate": 428.443 ±(99.9%) 425.581 MB/sec [Average] (min, avg, max) = (359.351, 428.443, 502.468), stdev = 65.859 CI (99.9%): [2.862, 854.024] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm": 153942.925 ±(99.9%) 9628.052 B/op [Average] (min, avg, max) = (152143.267, 153942.925, 155545.587), stdev = 1489.952 CI (99.9%): [144314.872, 163570.977] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count": 1.000 ±(99.9%) 0.001 counts [Sum] (min, avg, max) = (≈ 0, 0.250, 1.000), stdev = 0.500 CI (99.9%): [1.000, 1.000] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time": 7.000 ±(99.9%) 0.001 ms [Sum] (min, avg, max) = (≈ 0, 1.750, 7.000), stdev = 3.500 CI (99.9%): [7.000, 7.000] (assumes normal distribution) # JMH version: 1.37 # VM version: JDK 25, OpenJDK 64-Bit Server VM, 25+36-b176.4 # VM invoker: java # VM options: # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 1 iterations, 100 ms each # Measurement: 4 iterations, 100 ms each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix # Parameters: (implementation = baked-suffix-array-index, itemCount = 100000, typedCharacterCount = 6) # Run progress: 45.45% complete, ETA 00:00:18 # Fork: 1 of 1 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::objectFieldOffset has been called by org.openjdk.jmh.util.Utils (file:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar) WARNING: Please consider reporting this to the maintainers of class org.openjdk.jmh.util.Utils WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release # Warmup Iteration 1: 0.330 ms/op Iteration 1: 0.365 ms/op gc.alloc.rate: 391.789 MB/sec gc.alloc.rate.norm: 150154.571 B/op gc.count: 1.000 counts gc.time: 10.000 ms Iteration 2: 0.257 ms/op gc.alloc.rate: 548.838 MB/sec gc.alloc.rate.norm: 148258.958 B/op gc.count: ≈ 0 counts Iteration 3: 0.300 ms/op gc.alloc.rate: 472.420 MB/sec gc.alloc.rate.norm: 148676.727 B/op gc.count: ≈ 0 counts Iteration 4: 0.279 ms/op gc.alloc.rate: 504.713 MB/sec gc.alloc.rate.norm: 147914.695 B/op gc.count: 1.000 counts gc.time: 1.000 ms Result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix": 0.300 ±(99.9%) 0.301 ms/op [Average] (min, avg, max) = (0.257, 0.300, 0.365), stdev = 0.047 CI (99.9%): [≈ 0, 0.601] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate": 479.440 ±(99.9%) 428.425 MB/sec [Average] (min, avg, max) = (391.789, 479.440, 548.838), stdev = 66.299 CI (99.9%): [51.015, 907.865] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm": 148751.238 ±(99.9%) 6372.016 B/op [Average] (min, avg, max) = (147914.695, 148751.238, 150154.571), stdev = 986.077 CI (99.9%): [142379.222, 155123.254] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count": 2.000 ±(99.9%) 0.001 counts [Sum] (min, avg, max) = (≈ 0, 0.500, 1.000), stdev = 0.577 CI (99.9%): [2.000, 2.000] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time": 11.000 ±(99.9%) 0.001 ms [Sum] (min, avg, max) = (≈ 0, 2.750, 10.000), stdev = 4.856 CI (99.9%): [11.000, 11.000] (assumes normal distribution) # JMH version: 1.37 # VM version: JDK 25, OpenJDK 64-Bit Server VM, 25+36-b176.4 # VM invoker: java # VM options: # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 1 iterations, 100 ms each # Measurement: 4 iterations, 100 ms each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix # Parameters: (implementation = baked-suffix-array-index, itemCount = 100000, typedCharacterCount = 7) # Run progress: 54.55% complete, ETA 00:00:15 # Fork: 1 of 1 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::objectFieldOffset has been called by org.openjdk.jmh.util.Utils (file:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar) WARNING: Please consider reporting this to the maintainers of class org.openjdk.jmh.util.Utils WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release # Warmup Iteration 1: 0.260 ms/op Iteration 1: 0.213 ms/op gc.alloc.rate: 454.909 MB/sec gc.alloc.rate.norm: 101804.803 B/op gc.count: 1.000 counts gc.time: 7.000 ms Iteration 2: 0.163 ms/op gc.alloc.rate: 596.931 MB/sec gc.alloc.rate.norm: 102312.749 B/op gc.count: ≈ 0 counts Iteration 3: 0.182 ms/op gc.alloc.rate: 530.759 MB/sec gc.alloc.rate.norm: 102015.361 B/op gc.count: ≈ 0 counts Iteration 4: 0.211 ms/op gc.alloc.rate: 457.931 MB/sec gc.alloc.rate.norm: 101470.012 B/op gc.count: 1.000 counts gc.time: 2.000 ms Result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix": 0.192 ±(99.9%) 0.155 ms/op [Average] (min, avg, max) = (0.163, 0.192, 0.213), stdev = 0.024 CI (99.9%): [0.037, 0.347] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate": 510.133 ±(99.9%) 437.223 MB/sec [Average] (min, avg, max) = (454.909, 510.133, 596.931), stdev = 67.661 CI (99.9%): [72.910, 947.355] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm": 101900.731 ±(99.9%) 2292.624 B/op [Average] (min, avg, max) = (101470.012, 101900.731, 102312.749), stdev = 354.786 CI (99.9%): [99608.107, 104193.355] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count": 2.000 ±(99.9%) 0.001 counts [Sum] (min, avg, max) = (≈ 0, 0.500, 1.000), stdev = 0.577 CI (99.9%): [2.000, 2.000] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time": 9.000 ±(99.9%) 0.001 ms [Sum] (min, avg, max) = (≈ 0, 2.250, 7.000), stdev = 3.304 CI (99.9%): [9.000, 9.000] (assumes normal distribution) # JMH version: 1.37 # VM version: JDK 25, OpenJDK 64-Bit Server VM, 25+36-b176.4 # VM invoker: java # VM options: # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 1 iterations, 100 ms each # Measurement: 4 iterations, 100 ms each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix # Parameters: (implementation = baked-suffix-array-index, itemCount = 100000, typedCharacterCount = 8) # Run progress: 63.64% complete, ETA 00:00:12 # Fork: 1 of 1 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::objectFieldOffset has been called by org.openjdk.jmh.util.Utils (file:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar) WARNING: Please consider reporting this to the maintainers of class org.openjdk.jmh.util.Utils WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release # Warmup Iteration 1: 0.104 ms/op Iteration 1: 0.099 ms/op gc.alloc.rate: 547.714 MB/sec gc.alloc.rate.norm: 56797.088 B/op gc.count: 1.000 counts gc.time: 11.000 ms Iteration 2: 0.084 ms/op gc.alloc.rate: 647.337 MB/sec gc.alloc.rate.norm: 57318.925 B/op gc.count: ≈ 0 counts Iteration 3: 0.081 ms/op gc.alloc.rate: 669.311 MB/sec gc.alloc.rate.norm: 56669.302 B/op gc.count: 1.000 counts gc.time: 1.000 ms Iteration 4: 0.117 ms/op gc.alloc.rate: 462.189 MB/sec gc.alloc.rate.norm: 56992.045 B/op gc.count: ≈ 0 counts Result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix": 0.095 ±(99.9%) 0.108 ms/op [Average] (min, avg, max) = (0.081, 0.095, 0.117), stdev = 0.017 CI (99.9%): [≈ 0, 0.203] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate": 581.638 ±(99.9%) 617.807 MB/sec [Average] (min, avg, max) = (462.189, 581.638, 669.311), stdev = 95.606 CI (99.9%): [≈ 0, 1199.445] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm": 56944.340 ±(99.9%) 1827.416 B/op [Average] (min, avg, max) = (56669.302, 56944.340, 57318.925), stdev = 282.795 CI (99.9%): [55116.924, 58771.756] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count": 2.000 ±(99.9%) 0.001 counts [Sum] (min, avg, max) = (≈ 0, 0.500, 1.000), stdev = 0.577 CI (99.9%): [2.000, 2.000] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time": 12.000 ±(99.9%) 0.001 ms [Sum] (min, avg, max) = (≈ 0, 3.000, 11.000), stdev = 5.354 CI (99.9%): [12.000, 12.000] (assumes normal distribution) # JMH version: 1.37 # VM version: JDK 25, OpenJDK 64-Bit Server VM, 25+36-b176.4 # VM invoker: java # VM options: # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 1 iterations, 100 ms each # Measurement: 4 iterations, 100 ms each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix # Parameters: (implementation = baked-suffix-array-index, itemCount = 100000, typedCharacterCount = 9) # Run progress: 72.73% complete, ETA 00:00:09 # Fork: 1 of 1 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::objectFieldOffset has been called by org.openjdk.jmh.util.Utils (file:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar) WARNING: Please consider reporting this to the maintainers of class org.openjdk.jmh.util.Utils WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release # Warmup Iteration 1: 0.108 ms/op Iteration 1: 0.098 ms/op gc.alloc.rate: 527.702 MB/sec gc.alloc.rate.norm: 54553.114 B/op gc.count: 1.000 counts gc.time: 8.000 ms Iteration 2: 0.094 ms/op gc.alloc.rate: 555.801 MB/sec gc.alloc.rate.norm: 54940.200 B/op gc.count: ≈ 0 counts Iteration 3: 0.085 ms/op gc.alloc.rate: 617.444 MB/sec gc.alloc.rate.norm: 54939.757 B/op gc.count: 1.000 counts gc.time: 1.000 ms Iteration 4: 0.076 ms/op gc.alloc.rate: 693.335 MB/sec gc.alloc.rate.norm: 55236.933 B/op gc.count: ≈ 0 counts Result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix": 0.088 ±(99.9%) 0.065 ms/op [Average] (min, avg, max) = (0.076, 0.088, 0.098), stdev = 0.010 CI (99.9%): [0.023, 0.153] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate": 598.570 ±(99.9%) 474.682 MB/sec [Average] (min, avg, max) = (527.702, 598.570, 693.335), stdev = 73.458 CI (99.9%): [123.889, 1073.252] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm": 54917.501 ±(99.9%) 1811.761 B/op [Average] (min, avg, max) = (54553.114, 54917.501, 55236.933), stdev = 280.372 CI (99.9%): [53105.740, 56729.262] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count": 2.000 ±(99.9%) 0.001 counts [Sum] (min, avg, max) = (≈ 0, 0.500, 1.000), stdev = 0.577 CI (99.9%): [2.000, 2.000] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time": 9.000 ±(99.9%) 0.001 ms [Sum] (min, avg, max) = (≈ 0, 2.250, 8.000), stdev = 3.862 CI (99.9%): [9.000, 9.000] (assumes normal distribution) # JMH version: 1.37 # VM version: JDK 25, OpenJDK 64-Bit Server VM, 25+36-b176.4 # VM invoker: java # VM options: # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 1 iterations, 100 ms each # Measurement: 4 iterations, 100 ms each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix # Parameters: (implementation = baked-suffix-array-index, itemCount = 100000, typedCharacterCount = 10) # Run progress: 81.82% complete, ETA 00:00:06 # Fork: 1 of 1 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::objectFieldOffset has been called by org.openjdk.jmh.util.Utils (file:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar) WARNING: Please consider reporting this to the maintainers of class org.openjdk.jmh.util.Utils WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release # Warmup Iteration 1: 0.051 ms/op Iteration 1: 0.051 ms/op gc.alloc.rate: 470.764 MB/sec gc.alloc.rate.norm: 25234.373 B/op gc.count: 1.000 counts gc.time: 16.000 ms Iteration 2: 0.039 ms/op gc.alloc.rate: 617.732 MB/sec gc.alloc.rate.norm: 25188.853 B/op gc.count: ≈ 0 counts Iteration 3: 0.039 ms/op gc.alloc.rate: 614.363 MB/sec gc.alloc.rate.norm: 25208.299 B/op gc.count: 1.000 counts gc.time: 2.000 ms Iteration 4: 0.038 ms/op gc.alloc.rate: 638.670 MB/sec gc.alloc.rate.norm: 25185.082 B/op gc.count: ≈ 0 counts Result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix": 0.042 ±(99.9%) 0.041 ms/op [Average] (min, avg, max) = (0.038, 0.042, 0.051), stdev = 0.006 CI (99.9%): [0.001, 0.082] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate": 585.382 ±(99.9%) 498.641 MB/sec [Average] (min, avg, max) = (470.764, 585.382, 638.670), stdev = 77.165 CI (99.9%): [86.741, 1084.023] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm": 25204.152 ±(99.9%) 145.849 B/op [Average] (min, avg, max) = (25185.082, 25204.152, 25234.373), stdev = 22.570 CI (99.9%): [25058.303, 25350.001] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count": 2.000 ±(99.9%) 0.001 counts [Sum] (min, avg, max) = (≈ 0, 0.500, 1.000), stdev = 0.577 CI (99.9%): [2.000, 2.000] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time": 18.000 ±(99.9%) 0.001 ms [Sum] (min, avg, max) = (≈ 0, 4.500, 16.000), stdev = 7.724 CI (99.9%): [18.000, 18.000] (assumes normal distribution) # JMH version: 1.37 # VM version: JDK 25, OpenJDK 64-Bit Server VM, 25+36-b176.4 # VM invoker: java # VM options: # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 1 iterations, 100 ms each # Measurement: 4 iterations, 100 ms each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix # Parameters: (implementation = baked-suffix-array-index, itemCount = 100000, typedCharacterCount = 11) # Run progress: 90.91% complete, ETA 00:00:03 # Fork: 1 of 1 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::objectFieldOffset has been called by org.openjdk.jmh.util.Utils (file:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar) WARNING: Please consider reporting this to the maintainers of class org.openjdk.jmh.util.Utils WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release # Warmup Iteration 1: 0.038 ms/op Iteration 1: 0.040 ms/op gc.alloc.rate: 534.610 MB/sec gc.alloc.rate.norm: 22309.061 B/op gc.count: 1.000 counts gc.time: 11.000 ms Iteration 2: 0.031 ms/op gc.alloc.rate: 674.248 MB/sec gc.alloc.rate.norm: 22168.617 B/op gc.count: ≈ 0 counts Iteration 3: 0.038 ms/op gc.alloc.rate: 560.051 MB/sec gc.alloc.rate.norm: 22166.589 B/op gc.count: 1.000 counts gc.time: 6.000 ms Iteration 4: 0.029 ms/op gc.alloc.rate: 739.485 MB/sec gc.alloc.rate.norm: 22141.074 B/op gc.count: ≈ 0 counts Result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix": 0.034 ±(99.9%) 0.034 ms/op [Average] (min, avg, max) = (0.029, 0.034, 0.040), stdev = 0.005 CI (99.9%): [≈ 10⁻⁴, 0.068] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate": 627.098 ±(99.9%) 623.207 MB/sec [Average] (min, avg, max) = (534.610, 627.098, 739.485), stdev = 96.442 CI (99.9%): [3.891, 1250.306] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm": 22196.335 ±(99.9%) 492.328 B/op [Average] (min, avg, max) = (22141.074, 22196.335, 22309.061), stdev = 76.188 CI (99.9%): [21704.007, 22688.664] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count": 2.000 ±(99.9%) 0.001 counts [Sum] (min, avg, max) = (≈ 0, 0.500, 1.000), stdev = 0.577 CI (99.9%): [2.000, 2.000] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time": 17.000 ±(99.9%) 0.001 ms [Sum] (min, avg, max) = (≈ 0, 4.250, 11.000), stdev = 5.315 CI (99.9%): [17.000, 17.000] (assumes normal distribution) # Run complete. Total time: 00:00:33 REMEMBER: The numbers below are just data. To gain reusable insights, you need to follow up on why the numbers are the way they are. Use profilers (see -prof, -lprof), design factorial experiments, perform baseline and negative tests that provide experimental control, make sure the benchmarking environment is safe on JVM/OS/HW level, ask for reviews from the domain experts. Do not assume the numbers tell you what you want them to tell. NOTE: Current JVM experimentally supports Compiler Blackholes, and they are in use. Please exercise extra caution when trusting the results, look into the generated code to check the benchmark still works, and factor in a small probability of new VM bugs. Additionally, while comparisons between different JVMs are already problematic, the performance difference caused by different Blackhole modes can be very significant. Please make sure you use the consistent Blackhole mode for comparisons. Benchmark (implementation) (itemCount) (typedCharacterCount) Mode Cnt Score Error Units LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix baked-suffix-array-index 100000 1 avgt 4 91.377 ± 333.593 ms/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate baked-suffix-array-index 100000 1 avgt 4 121.603 ± 173.340 MB/sec LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm baked-suffix-array-index 100000 1 avgt 4 11364646.667 ± 40482002.481 B/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count baked-suffix-array-index 100000 1 avgt 4 ≈ 0 counts LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix baked-suffix-array-index 100000 2 avgt 4 3.532 ± 2.247 ms/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate baked-suffix-array-index 100000 2 avgt 4 255.765 ± 149.883 MB/sec LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm baked-suffix-array-index 100000 2 avgt 4 943307.293 ± 330237.557 B/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count baked-suffix-array-index 100000 2 avgt 4 1.000 counts LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time baked-suffix-array-index 100000 2 avgt 4 10.000 ms LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix baked-suffix-array-index 100000 3 avgt 4 0.901 ± 0.164 ms/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate baked-suffix-array-index 100000 3 avgt 4 330.945 ± 104.283 MB/sec LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm baked-suffix-array-index 100000 3 avgt 4 312766.621 ± 42839.111 B/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count baked-suffix-array-index 100000 3 avgt 4 1.000 counts LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time baked-suffix-array-index 100000 3 avgt 4 8.000 ms LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix baked-suffix-array-index 100000 4 avgt 4 0.403 ± 0.171 ms/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate baked-suffix-array-index 100000 4 avgt 4 437.654 ± 174.892 MB/sec LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm baked-suffix-array-index 100000 4 avgt 4 184810.616 ± 4560.372 B/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count baked-suffix-array-index 100000 4 avgt 4 1.000 counts LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time baked-suffix-array-index 100000 4 avgt 4 8.000 ms LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix baked-suffix-array-index 100000 5 avgt 4 0.348 ± 0.330 ms/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate baked-suffix-array-index 100000 5 avgt 4 428.443 ± 425.581 MB/sec LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm baked-suffix-array-index 100000 5 avgt 4 153942.925 ± 9628.052 B/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count baked-suffix-array-index 100000 5 avgt 4 1.000 counts LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time baked-suffix-array-index 100000 5 avgt 4 7.000 ms LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix baked-suffix-array-index 100000 6 avgt 4 0.300 ± 0.301 ms/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate baked-suffix-array-index 100000 6 avgt 4 479.440 ± 428.425 MB/sec LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm baked-suffix-array-index 100000 6 avgt 4 148751.238 ± 6372.016 B/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count baked-suffix-array-index 100000 6 avgt 4 2.000 counts LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time baked-suffix-array-index 100000 6 avgt 4 11.000 ms LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix baked-suffix-array-index 100000 7 avgt 4 0.192 ± 0.155 ms/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate baked-suffix-array-index 100000 7 avgt 4 510.133 ± 437.223 MB/sec LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm baked-suffix-array-index 100000 7 avgt 4 101900.731 ± 2292.624 B/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count baked-suffix-array-index 100000 7 avgt 4 2.000 counts LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time baked-suffix-array-index 100000 7 avgt 4 9.000 ms LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix baked-suffix-array-index 100000 8 avgt 4 0.095 ± 0.108 ms/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate baked-suffix-array-index 100000 8 avgt 4 581.638 ± 617.807 MB/sec LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm baked-suffix-array-index 100000 8 avgt 4 56944.340 ± 1827.416 B/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count baked-suffix-array-index 100000 8 avgt 4 2.000 counts LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time baked-suffix-array-index 100000 8 avgt 4 12.000 ms LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix baked-suffix-array-index 100000 9 avgt 4 0.088 ± 0.065 ms/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate baked-suffix-array-index 100000 9 avgt 4 598.570 ± 474.682 MB/sec LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm baked-suffix-array-index 100000 9 avgt 4 54917.501 ± 1811.761 B/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count baked-suffix-array-index 100000 9 avgt 4 2.000 counts LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time baked-suffix-array-index 100000 9 avgt 4 9.000 ms LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix baked-suffix-array-index 100000 10 avgt 4 0.042 ± 0.041 ms/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate baked-suffix-array-index 100000 10 avgt 4 585.382 ± 498.641 MB/sec LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm baked-suffix-array-index 100000 10 avgt 4 25204.152 ± 145.849 B/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count baked-suffix-array-index 100000 10 avgt 4 2.000 counts LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time baked-suffix-array-index 100000 10 avgt 4 18.000 ms LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix baked-suffix-array-index 100000 11 avgt 4 0.034 ± 0.034 ms/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate baked-suffix-array-index 100000 11 avgt 4 627.098 ± 623.207 MB/sec LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm baked-suffix-array-index 100000 11 avgt 4 22196.335 ± 492.328 B/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count baked-suffix-array-index 100000 11 avgt 4 2.000 counts LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time baked-suffix-array-index 100000 11 avgt 4 17.000 ms Benchmark result is saved to /build/reports/jmh/adaptive-jmh-passes/pass-01-group-009.json # Adaptive pass 1, group 10 # Command: java -cp /build/classes/java/benchmark:/build/resources/benchmark:/build/moddev/artifacts/vanilla-26.2-2.jar:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar:/modules-2/files-2.1/com.abahgat/suffixtree/2.0.0/ffe2c29796add2624d2e0b9f33e72421eb5c5ea5/suffixtree-2.0.0.jar:/modules-2/files-2.1/net.mezzdev/suffixtree/1.3.0/1a1b87af70a1631ff6d6c9d49c63564aadecb176/suffixtree-1.3.0.jar:/modules-2/files-2.1/net.mezzdev/baked-substring-index/0.1.0/4f9fbd9eb54fdb1b8ec40a83297f4e8f4479eb7c/baked-substring-index-0.1.0.jar:/modules-2/files-2.1/net.mezzdev/baked-suffix-array-index/0.1.0/cd5e5ffbcee030d149e7a5a70e151a06158bd643/baked-suffix-array-index-0.1.0.jar:/modules-2/files-2.1/net.neoforged/mergetool/2.0.7/793b18456e92c4a7f66d9b5d8bf7a9c1c7a20b20/mergetool-2.0.7-api.jar:/modules-2/files-2.1/net.sf.jopt-simple/jopt-simple/5.0.4/4fdac2fbe92dfad86aa6e9301736f6b4342a3f5c/jopt-simple-5.0.4.jar:/modules-2/files-2.1/org.apache.commons/commons-math3/3.6.1/e4ba98f1d4b3c80ec46392f25e094a6a2e58fcbf/commons-math3-3.6.1.jar:/modules-2/files-2.1/com.google.code.findbugs/jsr305/3.0.2/25ea2e8b0c338a877313bd4672d3fe056ea78f0d/jsr305-3.0.2.jar:/modules-2/files-2.1/org.jspecify/jspecify/1.0.0/7425a601c1c7ec76645a78d22b8c6a627edee507/jspecify-1.0.0.jar:/modules-2/files-2.1/org.jetbrains/annotations/26.0.2-1/c7ce3cdeda3d18909368dfe5977332dfad326c6d/annotations-26.0.2-1.jar:/modules-2/files-2.1/ca.weblite/java-objc-bridge/1.1/1227f9e0666314f9de41477e3ec277e542ed7f7b/java-objc-bridge-1.1.jar:/modules-2/files-2.1/at.yawk.lz4/lz4-java/1.10.1/f541d7f910fe3d76f38f799c507c48cc81b12ecb/lz4-java-1.10.1.jar:/modules-2/files-2.1/com.azure/azure-json/1.4.0/fcc1d354dbc3e0300e5276b1bf124d0247799cd8/azure-json-1.4.0.jar:/modules-2/files-2.1/com.github.oshi/oshi-core/6.9.0/3224870731860cfcd7744581a05b559e94291e7/oshi-core-6.9.0.jar:/modules-2/files-2.1/com.google.code.gson/gson/2.14.0/efc0e34ede4e3204eaefb84a00e55e8c86634382/gson-2.14.0.jar:/modules-2/files-2.1/com.google.guava/failureaccess/1.0.3/aeaffd00d57023a2c947393ed251f0354f0985fc/failureaccess-1.0.3.jar:/modules-2/files-2.1/com.google.guava/guava/33.6.0-jre/c376b13067cc99a5774403530953f7b05a91e218/guava-33.6.0-jre.jar:/modules-2/files-2.1/com.ibm.icu/icu4j/78.3/6a851a53bb1f25689fc418dcc8935b0d93580adf/icu4j-78.3.jar:/modules-2/files-2.1/com.microsoft.azure/msal4j/1.24.1/c233f2d047b9755f7041adf21a858c680e4c9242/msal4j-1.24.1.jar:/modules-2/files-2.1/com.mojang/authlib/9.0.75/d61056a234d5e4b272e09d59b0713f80d6c0b6af/authlib-9.0.75.jar:/modules-2/files-2.1/com.mojang/blocklist/1.0.10/5c685c5ffa94c4cd39496c7184c1d122e515ecef/blocklist-1.0.10.jar:/modules-2/files-2.1/com.mojang/brigadier/1.3.10/d15b53a14cf20fdcaa98f731af5dda654452c010/brigadier-1.3.10.jar:/modules-2/files-2.1/com.mojang/datafixerupper/10.0.21/b6b2ae770c02e0c1eb90f9985b151e9085a38d0b/datafixerupper-10.0.21.jar:/modules-2/files-2.1/com.mojang/jtracy/1.0.37/a3fb649b2e2b2288d2978f0b0bc3d83f62809d1e/jtracy-1.0.37.jar:/modules-2/files-2.1/com.mojang/jtracy/1.0.37/a99fcb63b72fb623534d0ceb71bda4bed9b55b4c/jtracy-1.0.37-natives-macos.jar:/modules-2/files-2.1/com.mojang/jtracy/1.0.37/c8e971da5150aa33283c5bf4097154c0da554fb9/jtracy-1.0.37-natives-macos-arm64.jar:/modules-2/files-2.1/com.mojang/logging/1.7.12/351cea64a5233361327d8d54c44277041beed97f/logging-1.7.12.jar:/modules-2/files-2.1/com.mojang/patchy/2.2.10/da05971b07cbb379d002cf7eaec6a2048211fefc/patchy-2.2.10.jar:/modules-2/files-2.1/com.mojang/text2speech/1.19.12/2e517a75c79d34d32de2b5d68422150836c2133e/text2speech-1.19.12.jar:/modules-2/files-2.1/commons-codec/commons-codec/1.22.0/6b3eb4beb7058c2a638f5f17bcb388649fd339dd/commons-codec-1.22.0.jar:/modules-2/files-2.1/commons-io/commons-io/2.20.0/36f3474daec2849c149e877614e7f979b2082cd2/commons-io-2.20.0.jar:/modules-2/files-2.1/io.netty/netty-buffer/4.2.15.Final/2beb620803bf871cda2dd5d46b8f831e8015dd34/netty-buffer-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-codec-base/4.2.15.Final/e97149fdd5fb04858efa90e314651c8d700dc68b/netty-codec-base-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-codec-compression/4.2.15.Final/89fc4a20b7ae6af974304b1695405e62c4f9b16d/netty-codec-compression-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-codec-http/4.2.15.Final/e611826aa054371bb9a17f27bdb05755a4cac5f0/netty-codec-http-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-common/4.2.15.Final/7222492c1af9c2d4d78d521eea340a619e242fda/netty-common-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-handler/4.2.15.Final/d5344afd1148e3b9927a74be019605ebb0937a93/netty-handler-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-resolver/4.2.15.Final/b961a16d379b508b473e064ba06842bba280f4e3/netty-resolver-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-transport-classes-epoll/4.2.15.Final/44bafba9c9993800e955b365bba4981326f3f3b1/netty-transport-classes-epoll-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-transport-classes-kqueue/4.2.15.Final/f248656bb907607c5a41c7b61fd918a97db79250/netty-transport-classes-kqueue-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-transport-native-unix-common/4.2.15.Final/efb6943b4de9e0226a5ac35330f232605424af02/netty-transport-native-unix-common-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-transport/4.2.15.Final/a000c3a6196ee40207b73ac619dcb339409dd62f/netty-transport-4.2.15.Final.jar:/modules-2/files-2.1/it.unimi.dsi/fastutil/8.5.18/a6cff377eecc19c2037bf31568a6d7106b50ba1f/fastutil-8.5.18.jar:/modules-2/files-2.1/net.java.dev.jna/jna-platform/5.17.0/a4934c44d25a9d8c2ddf4203affd20330cb3426f/jna-platform-5.17.0.jar:/modules-2/files-2.1/net.java.dev.jna/jna/5.17.0/33d12735bef894440780fce64f9758d420c7bae2/jna-5.17.0.jar:/modules-2/files-2.1/org.apache.commons/commons-compress/1.28.0/e482f2c7a88dac3c497e96aa420b6a769f59c8d7/commons-compress-1.28.0.jar:/modules-2/files-2.1/org.apache.commons/commons-lang3/3.20.0/65897b3e5731220962e659e001904af3c3cbeba9/commons-lang3-3.20.0.jar:/modules-2/files-2.1/org.apache.logging.log4j/log4j-api/2.26.0/ad52af0ecf054a7e3f275a2e180ee06d9c490951/log4j-api-2.26.0.jar:/modules-2/files-2.1/org.apache.logging.log4j/log4j-core/2.26.0/d267ca60b27ddb075e0b4e75e7875859717bf85f/log4j-core-2.26.0.jar:/modules-2/files-2.1/org.apache.logging.log4j/log4j-slf4j2-impl/2.26.0/668c0f0e813d83f00a7182533aa658ec7e7a0a0d/log4j-slf4j2-impl-2.26.0.jar:/modules-2/files-2.1/org.jcraft/jorbis/0.0.17/8872d22b293e8f5d7d56ff92be966e6dc28ebdc6/jorbis-0.0.17.jar:/modules-2/files-2.1/org.joml/joml/1.10.8/fc0a71dad90a2cf41d82a76156a0e700af8e4f8d/joml-1.10.8.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-freetype/3.4.1/caa75a37e857efc9b0686e434d708d6420c5b6ea/lwjgl-freetype-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-freetype/3.4.1/61cb2d85e1838bca1a0b664f54e818bc68deb2ef/lwjgl-freetype-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-freetype/3.4.1/cce5a86b4a7d17817fe8ea0296302a4353acf2d5/lwjgl-freetype-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-glfw/3.4.1/a782b1ddd175c9107bf300fd92920579ea65e2a4/lwjgl-glfw-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-glfw/3.4.1/3c8538942f58377d59cd7be2dc164ba71a53868a/lwjgl-glfw-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-glfw/3.4.1/ef1f8efca5a60ba3512bc4982b88e446ecc43378/lwjgl-glfw-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-jemalloc/3.4.1/16b663092854fc6adfe0a941e61cae2bb2e437b6/lwjgl-jemalloc-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-jemalloc/3.4.1/581b4d542e841015ce3265eed0495e2cde15b1d0/lwjgl-jemalloc-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-jemalloc/3.4.1/dcd7e3f9a2ca386e8c5b8f508a8511d9dd63bab0/lwjgl-jemalloc-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-openal/3.4.1/8508bd60589de0539aa465b78fcf838efd07ae9a/lwjgl-openal-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-openal/3.4.1/a4dc57b7b0880d3fffb4d0b61649f45712bccc93/lwjgl-openal-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-openal/3.4.1/1c709a38c4a0e86aae96db7b8c78432307f2322a/lwjgl-openal-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-opengl/3.4.1/830412cab823c029cda6b9729f9d2ed36cf79959/lwjgl-opengl-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-opengl/3.4.1/ba18fc6012b88494ee893506934b92b01c4ef14b/lwjgl-opengl-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-opengl/3.4.1/35b5550058de4960525f465243bd01805f04fd8b/lwjgl-opengl-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-shaderc/3.4.1/5c02c88f0d879529014c78463b76f43fdecfd272/lwjgl-shaderc-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-shaderc/3.4.1/1d7bbdba70cf29c42978f6c0c1bdef945b922072/lwjgl-shaderc-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-shaderc/3.4.1/48aa2727e8616154d399d4dab0d8e8479741fa4f/lwjgl-shaderc-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-spvc/3.4.1/188553592e97b5ab2dba54a1b403ee80b48dad4c/lwjgl-spvc-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-spvc/3.4.1/2eeebd6d5bae966bfffda9747eba744cfe839ae1/lwjgl-spvc-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-spvc/3.4.1/a4f66638d28129eba0babd8fdc4385427a5ea83e/lwjgl-spvc-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-stb/3.4.1/f077c3dafc31924fbe8acb0b913f08977ba27f8e/lwjgl-stb-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-stb/3.4.1/fd1ea36b717b0832babca09324a6cfc43906e2aa/lwjgl-stb-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-stb/3.4.1/da554e04f819f09b0f3473bd931628ebf557965e/lwjgl-stb-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-tinyfd/3.4.1/562697d40dbd2ed0424bf24dcf65d51170f81adf/lwjgl-tinyfd-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-tinyfd/3.4.1/211ae9e8720e8f10f2ce85a118fa7bd5ee71584b/lwjgl-tinyfd-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-tinyfd/3.4.1/7bcde70f6164b2e72f84cac5257b7e9877b88510/lwjgl-tinyfd-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vma/3.4.1/2c54ce10154feb1ede4d23c5947438cdbfdcc003/lwjgl-vma-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vma/3.4.1/a130a9e4f96c83063f749e1dcc7065e0dffb3936/lwjgl-vma-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vma/3.4.1/9451dc1067716bc4125cdba65a7096e465f4d0e5/lwjgl-vma-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vulkan/3.4.1/d0601fdc38890755e5638048c14cc0f7b990964b/lwjgl-vulkan-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vulkan/3.4.1/140c7fd3e0fdbcc625c92be9328301c555035905/lwjgl-vulkan-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vulkan/3.4.1/2c933bf617cb8a174af26585efda4778b59e6d44/lwjgl-vulkan-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl/3.4.1/129e06a04f93992cb2a45172435b21fc4b60dd7d/lwjgl-3.4.1-unsafe.jar:/modules-2/files-2.1/org.lwjgl/lwjgl/3.4.1/b034fd9a67cb8646c01af7efcefcb93be835542b/lwjgl-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl/3.4.1/b4cbdef4818abd714ee66985344c0949fd1cd6d6/lwjgl-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.slf4j/slf4j-api/2.0.17/d9e58ac9c7779ba3bf8142aff6c830617a7fe60f/slf4j-api-2.0.17.jar:/modules-2/files-2.1/org.ow2.asm/asm-util/9.5/64b5a1fc8c1b15ed2efd6a063e976bc8d3dc5ffe/asm-util-9.5.jar:/modules-2/files-2.1/org.ow2.asm/asm-analysis/9.5/490bacc77de7cbc0be1a30bb3471072d705be4a4/asm-analysis-9.5.jar:/modules-2/files-2.1/org.ow2.asm/asm-tree/9.5/fd33c8b6373abaa675be407082fdfda35021254a/asm-tree-9.5.jar:/modules-2/files-2.1/org.ow2.asm/asm/9.5/dc6ea1875f4d64fbc85e1691c95b96a3d8569c90/asm-9.5.jar:/modules-2/files-2.1/net.neoforged/srgutils/1.0.10/abb471237b33b19f040ada00bfbad1ec45b949b6/srgutils-1.0.10.jar:/modules-2/files-2.1/io.netty/netty-transport-native-kqueue/4.2.15.Final/8ea0ef3eb716d821332e4b4926825a4b7c1a6d38/netty-transport-native-kqueue-4.2.15.Final-osx-aarch_64.jar:/modules-2/files-2.1/io.netty/netty-transport-native-kqueue/4.2.15.Final/4245380831515fb4eca18d32477a27fbb8f7b8f4/netty-transport-native-kqueue-4.2.15.Final-osx-x86_64.jar:/build/classes/java/main:/build/resources/main org.openjdk.jmh.Main .*net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix -p itemCount=100000 -p implementation=minecraft-suffix-array -f 1 -wi 1 -i 4 -w 100ms -r 100ms -rf json -rff /build/reports/jmh/adaptive-jmh-passes/pass-01-group-010.json -o /build/reports/jmh/adaptive-jmh-passes/pass-01-group-010.txt -foe true -p typedCharacterCount=1,2,3,4,5,6,7,8,9,10,11 -prof gc # JMH version: 1.37 # VM version: JDK 25, OpenJDK 64-Bit Server VM, 25+36-b176.4 # VM invoker: java # VM options: # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 1 iterations, 100 ms each # Measurement: 4 iterations, 100 ms each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix # Parameters: (implementation = minecraft-suffix-array, itemCount = 100000, typedCharacterCount = 1) # Run progress: 0.00% complete, ETA 00:00:05 # Fork: 1 of 1 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::objectFieldOffset has been called by org.openjdk.jmh.util.Utils (file:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar) WARNING: Please consider reporting this to the maintainers of class org.openjdk.jmh.util.Utils WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release # Warmup Iteration 1: 43.358 ms/op Iteration 1: 30.434 ms/op gc.alloc.rate: 645.975 MB/sec gc.alloc.rate.norm: 20663634.000 B/op gc.count: ≈ 0 counts Iteration 2: 17.353 ms/op gc.alloc.rate: 664.500 MB/sec gc.alloc.rate.norm: 12108301.000 B/op gc.count: ≈ 0 counts Iteration 3: 33.466 ms/op gc.alloc.rate: 545.138 MB/sec gc.alloc.rate.norm: 19178928.000 B/op gc.count: 1.000 counts gc.time: 19.000 ms Iteration 4: 29.266 ms/op gc.alloc.rate: 671.839 MB/sec gc.alloc.rate.norm: 20663622.000 B/op gc.count: ≈ 0 counts Result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix": 27.630 ±(99.9%) 45.726 ms/op [Average] (min, avg, max) = (17.353, 27.630, 33.466), stdev = 7.076 CI (99.9%): [≈ 0, 73.356] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate": 631.863 ±(99.9%) 380.171 MB/sec [Average] (min, avg, max) = (545.138, 631.863, 671.839), stdev = 58.832 CI (99.9%): [251.691, 1012.034] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm": 18153621.250 ±(99.9%) 26432990.545 B/op [Average] (min, avg, max) = (12108301.000, 18153621.250, 20663634.000), stdev = 4090534.546 CI (99.9%): [≈ 0, 44586611.795] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count": 1.000 ±(99.9%) 0.001 counts [Sum] (min, avg, max) = (≈ 0, 0.250, 1.000), stdev = 0.500 CI (99.9%): [1.000, 1.000] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time": 19.000 ±(99.9%) 0.001 ms [Sum] (min, avg, max) = (≈ 0, 4.750, 19.000), stdev = 9.500 CI (99.9%): [19.000, 19.000] (assumes normal distribution) # JMH version: 1.37 # VM version: JDK 25, OpenJDK 64-Bit Server VM, 25+36-b176.4 # VM invoker: java # VM options: # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 1 iterations, 100 ms each # Measurement: 4 iterations, 100 ms each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix # Parameters: (implementation = minecraft-suffix-array, itemCount = 100000, typedCharacterCount = 2) # Run progress: 9.09% complete, ETA 00:00:49 # Fork: 1 of 1 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::objectFieldOffset has been called by org.openjdk.jmh.util.Utils (file:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar) WARNING: Please consider reporting this to the maintainers of class org.openjdk.jmh.util.Utils WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release # Warmup Iteration 1: 6.691 ms/op Iteration 1: 3.275 ms/op gc.alloc.rate: 650.704 MB/sec gc.alloc.rate.norm: 2240540.848 B/op gc.count: ≈ 0 counts Iteration 2: 2.944 ms/op gc.alloc.rate: 664.759 MB/sec gc.alloc.rate.norm: 2055498.889 B/op gc.count: ≈ 0 counts Iteration 3: 2.609 ms/op gc.alloc.rate: 682.254 MB/sec gc.alloc.rate.norm: 1868612.098 B/op gc.count: ≈ 0 counts Iteration 4: 3.296 ms/op gc.alloc.rate: 660.130 MB/sec gc.alloc.rate.norm: 2285257.176 B/op gc.count: ≈ 0 counts Result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix": 3.031 ±(99.9%) 2.096 ms/op [Average] (min, avg, max) = (2.609, 3.031, 3.296), stdev = 0.324 CI (99.9%): [0.936, 5.127] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate": 664.462 ±(99.9%) 85.459 MB/sec [Average] (min, avg, max) = (650.704, 664.462, 682.254), stdev = 13.225 CI (99.9%): [579.003, 749.921] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm": 2112477.253 ±(99.9%) 1231569.580 B/op [Average] (min, avg, max) = (1868612.098, 2112477.253, 2285257.176), stdev = 190586.756 CI (99.9%): [880907.673, 3344046.833] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count": ≈ 0 counts # JMH version: 1.37 # VM version: JDK 25, OpenJDK 64-Bit Server VM, 25+36-b176.4 # VM invoker: java # VM options: # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 1 iterations, 100 ms each # Measurement: 4 iterations, 100 ms each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix # Parameters: (implementation = minecraft-suffix-array, itemCount = 100000, typedCharacterCount = 3) # Run progress: 18.18% complete, ETA 00:00:44 # Fork: 1 of 1 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::objectFieldOffset has been called by org.openjdk.jmh.util.Utils (file:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar) WARNING: Please consider reporting this to the maintainers of class org.openjdk.jmh.util.Utils WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release # Warmup Iteration 1: 1.635 ms/op Iteration 1: 1.046 ms/op gc.alloc.rate: 912.949 MB/sec gc.alloc.rate.norm: 1002861.782 B/op gc.count: ≈ 0 counts Iteration 2: 0.994 ms/op gc.alloc.rate: 922.079 MB/sec gc.alloc.rate.norm: 962514.415 B/op gc.count: ≈ 0 counts Iteration 3: 1.076 ms/op gc.alloc.rate: 888.894 MB/sec gc.alloc.rate.norm: 1004771.299 B/op gc.count: ≈ 0 counts Iteration 4: 1.265 ms/op gc.alloc.rate: 754.091 MB/sec gc.alloc.rate.norm: 1002154.173 B/op gc.count: ≈ 0 counts Result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix": 1.095 ±(99.9%) 0.765 ms/op [Average] (min, avg, max) = (0.994, 1.095, 1.265), stdev = 0.118 CI (99.9%): [0.330, 1.860] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate": 869.503 ±(99.9%) 505.354 MB/sec [Average] (min, avg, max) = (754.091, 869.503, 922.079), stdev = 78.204 CI (99.9%): [364.149, 1374.858] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm": 993075.417 ±(99.9%) 131850.198 B/op [Average] (min, avg, max) = (962514.415, 993075.417, 1004771.299), stdev = 20403.964 CI (99.9%): [861225.220, 1124925.615] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count": ≈ 0 counts # JMH version: 1.37 # VM version: JDK 25, OpenJDK 64-Bit Server VM, 25+36-b176.4 # VM invoker: java # VM options: # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 1 iterations, 100 ms each # Measurement: 4 iterations, 100 ms each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix # Parameters: (implementation = minecraft-suffix-array, itemCount = 100000, typedCharacterCount = 4) # Run progress: 27.27% complete, ETA 00:00:39 # Fork: 1 of 1 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::objectFieldOffset has been called by org.openjdk.jmh.util.Utils (file:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar) WARNING: Please consider reporting this to the maintainers of class org.openjdk.jmh.util.Utils WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release # Warmup Iteration 1: 0.992 ms/op Iteration 1: 0.599 ms/op gc.alloc.rate: 1102.036 MB/sec gc.alloc.rate.norm: 693860.471 B/op gc.count: ≈ 0 counts Iteration 2: 0.609 ms/op gc.alloc.rate: 1128.884 MB/sec gc.alloc.rate.norm: 723053.030 B/op gc.count: ≈ 0 counts Iteration 3: 0.594 ms/op gc.alloc.rate: 1126.589 MB/sec gc.alloc.rate.norm: 702530.621 B/op gc.count: 1.000 counts gc.time: 2.000 ms Iteration 4: 0.543 ms/op gc.alloc.rate: 1246.609 MB/sec gc.alloc.rate.norm: 711263.546 B/op gc.count: ≈ 0 counts Result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix": 0.586 ±(99.9%) 0.191 ms/op [Average] (min, avg, max) = (0.543, 0.586, 0.609), stdev = 0.030 CI (99.9%): [0.396, 0.777] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate": 1151.030 ±(99.9%) 419.176 MB/sec [Average] (min, avg, max) = (1102.036, 1151.030, 1246.609), stdev = 64.868 CI (99.9%): [731.854, 1570.205] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm": 707676.917 ±(99.9%) 80595.223 B/op [Average] (min, avg, max) = (693860.471, 707676.917, 723053.030), stdev = 12472.200 CI (99.9%): [627081.694, 788272.140] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count": 1.000 ±(99.9%) 0.001 counts [Sum] (min, avg, max) = (≈ 0, 0.250, 1.000), stdev = 0.500 CI (99.9%): [1.000, 1.000] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time": 2.000 ±(99.9%) 0.001 ms [Sum] (min, avg, max) = (≈ 0, 0.500, 2.000), stdev = 1.000 CI (99.9%): [2.000, 2.000] (assumes normal distribution) # JMH version: 1.37 # VM version: JDK 25, OpenJDK 64-Bit Server VM, 25+36-b176.4 # VM invoker: java # VM options: # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 1 iterations, 100 ms each # Measurement: 4 iterations, 100 ms each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix # Parameters: (implementation = minecraft-suffix-array, itemCount = 100000, typedCharacterCount = 5) # Run progress: 36.36% complete, ETA 00:00:34 # Fork: 1 of 1 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::objectFieldOffset has been called by org.openjdk.jmh.util.Utils (file:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar) WARNING: Please consider reporting this to the maintainers of class org.openjdk.jmh.util.Utils WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release # Warmup Iteration 1: 0.742 ms/op Iteration 1: 0.608 ms/op gc.alloc.rate: 905.461 MB/sec gc.alloc.rate.norm: 578313.070 B/op gc.count: ≈ 0 counts Iteration 2: 0.496 ms/op gc.alloc.rate: 1107.102 MB/sec gc.alloc.rate.norm: 576818.589 B/op gc.count: ≈ 0 counts Iteration 3: 0.497 ms/op gc.alloc.rate: 1106.398 MB/sec gc.alloc.rate.norm: 578256.491 B/op gc.count: ≈ 0 counts Iteration 4: 0.482 ms/op gc.alloc.rate: 1127.067 MB/sec gc.alloc.rate.norm: 571039.516 B/op gc.count: ≈ 0 counts Result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix": 0.521 ±(99.9%) 0.378 ms/op [Average] (min, avg, max) = (0.482, 0.521, 0.608), stdev = 0.058 CI (99.9%): [0.143, 0.899] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate": 1061.507 ±(99.9%) 675.091 MB/sec [Average] (min, avg, max) = (905.461, 1061.507, 1127.067), stdev = 104.471 CI (99.9%): [386.416, 1736.598] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm": 576106.916 ±(99.9%) 22283.029 B/op [Average] (min, avg, max) = (571039.516, 576106.916, 578313.070), stdev = 3448.323 CI (99.9%): [553823.887, 598389.946] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count": ≈ 0 counts # JMH version: 1.37 # VM version: JDK 25, OpenJDK 64-Bit Server VM, 25+36-b176.4 # VM invoker: java # VM options: # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 1 iterations, 100 ms each # Measurement: 4 iterations, 100 ms each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix # Parameters: (implementation = minecraft-suffix-array, itemCount = 100000, typedCharacterCount = 6) # Run progress: 45.45% complete, ETA 00:00:29 # Fork: 1 of 1 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::objectFieldOffset has been called by org.openjdk.jmh.util.Utils (file:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar) WARNING: Please consider reporting this to the maintainers of class org.openjdk.jmh.util.Utils WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release # Warmup Iteration 1: 0.703 ms/op Iteration 1: 0.461 ms/op gc.alloc.rate: 1154.857 MB/sec gc.alloc.rate.norm: 559711.368 B/op gc.count: ≈ 0 counts Iteration 2: 0.438 ms/op gc.alloc.rate: 1195.456 MB/sec gc.alloc.rate.norm: 550738.483 B/op gc.count: ≈ 0 counts Iteration 3: 0.463 ms/op gc.alloc.rate: 1168.704 MB/sec gc.alloc.rate.norm: 568604.702 B/op gc.count: 1.000 counts gc.time: 2.000 ms Iteration 4: 0.485 ms/op gc.alloc.rate: 1077.665 MB/sec gc.alloc.rate.norm: 549841.659 B/op gc.count: ≈ 0 counts Result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix": 0.462 ±(99.9%) 0.123 ms/op [Average] (min, avg, max) = (0.438, 0.462, 0.485), stdev = 0.019 CI (99.9%): [0.339, 0.585] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate": 1149.170 ±(99.9%) 326.726 MB/sec [Average] (min, avg, max) = (1077.665, 1149.170, 1195.456), stdev = 50.561 CI (99.9%): [822.444, 1475.896] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm": 557224.053 ±(99.9%) 56859.174 B/op [Average] (min, avg, max) = (549841.659, 557224.053, 568604.702), stdev = 8799.020 CI (99.9%): [500364.879, 614083.227] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count": 1.000 ±(99.9%) 0.001 counts [Sum] (min, avg, max) = (≈ 0, 0.250, 1.000), stdev = 0.500 CI (99.9%): [1.000, 1.000] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time": 2.000 ±(99.9%) 0.001 ms [Sum] (min, avg, max) = (≈ 0, 0.500, 2.000), stdev = 1.000 CI (99.9%): [2.000, 2.000] (assumes normal distribution) # JMH version: 1.37 # VM version: JDK 25, OpenJDK 64-Bit Server VM, 25+36-b176.4 # VM invoker: java # VM options: # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 1 iterations, 100 ms each # Measurement: 4 iterations, 100 ms each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix # Parameters: (implementation = minecraft-suffix-array, itemCount = 100000, typedCharacterCount = 7) # Run progress: 54.55% complete, ETA 00:00:24 # Fork: 1 of 1 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::objectFieldOffset has been called by org.openjdk.jmh.util.Utils (file:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar) WARNING: Please consider reporting this to the maintainers of class org.openjdk.jmh.util.Utils WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release # Warmup Iteration 1: 0.503 ms/op Iteration 1: 0.318 ms/op gc.alloc.rate: 1273.594 MB/sec gc.alloc.rate.norm: 426153.206 B/op gc.count: ≈ 0 counts Iteration 2: 0.324 ms/op gc.alloc.rate: 1238.124 MB/sec gc.alloc.rate.norm: 420970.886 B/op gc.count: ≈ 0 counts Iteration 3: 0.313 ms/op gc.alloc.rate: 1272.460 MB/sec gc.alloc.rate.norm: 419097.964 B/op gc.count: 1.000 counts gc.time: 1.000 ms Iteration 4: 0.295 ms/op gc.alloc.rate: 1378.033 MB/sec gc.alloc.rate.norm: 427752.067 B/op gc.count: ≈ 0 counts Result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix": 0.313 ±(99.9%) 0.079 ms/op [Average] (min, avg, max) = (0.295, 0.313, 0.324), stdev = 0.012 CI (99.9%): [0.233, 0.392] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate": 1290.553 ±(99.9%) 391.585 MB/sec [Average] (min, avg, max) = (1238.124, 1290.553, 1378.033), stdev = 60.598 CI (99.9%): [898.967, 1682.138] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm": 423493.531 ±(99.9%) 26615.696 B/op [Average] (min, avg, max) = (419097.964, 423493.531, 427752.067), stdev = 4118.808 CI (99.9%): [396877.835, 450109.227] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count": 1.000 ±(99.9%) 0.001 counts [Sum] (min, avg, max) = (≈ 0, 0.250, 1.000), stdev = 0.500 CI (99.9%): [1.000, 1.000] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time": 1.000 ±(99.9%) 0.001 ms [Sum] (min, avg, max) = (≈ 0, 0.250, 1.000), stdev = 0.500 CI (99.9%): [1.000, 1.000] (assumes normal distribution) # JMH version: 1.37 # VM version: JDK 25, OpenJDK 64-Bit Server VM, 25+36-b176.4 # VM invoker: java # VM options: # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 1 iterations, 100 ms each # Measurement: 4 iterations, 100 ms each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix # Parameters: (implementation = minecraft-suffix-array, itemCount = 100000, typedCharacterCount = 8) # Run progress: 63.64% complete, ETA 00:00:19 # Fork: 1 of 1 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::objectFieldOffset has been called by org.openjdk.jmh.util.Utils (file:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar) WARNING: Please consider reporting this to the maintainers of class org.openjdk.jmh.util.Utils WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release # Warmup Iteration 1: 0.328 ms/op Iteration 1: 0.193 ms/op gc.alloc.rate: 1170.962 MB/sec gc.alloc.rate.norm: 237743.750 B/op gc.count: ≈ 0 counts Iteration 2: 0.228 ms/op gc.alloc.rate: 976.223 MB/sec gc.alloc.rate.norm: 234263.741 B/op gc.count: ≈ 0 counts Iteration 3: 0.182 ms/op gc.alloc.rate: 1226.279 MB/sec gc.alloc.rate.norm: 234584.601 B/op gc.count: 1.000 counts gc.time: 1.000 ms Iteration 4: 0.182 ms/op gc.alloc.rate: 1232.758 MB/sec gc.alloc.rate.norm: 236143.900 B/op gc.count: ≈ 0 counts Result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix": 0.196 ±(99.9%) 0.141 ms/op [Average] (min, avg, max) = (0.182, 0.196, 0.228), stdev = 0.022 CI (99.9%): [0.055, 0.337] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate": 1151.556 ±(99.9%) 776.297 MB/sec [Average] (min, avg, max) = (976.223, 1151.556, 1232.758), stdev = 120.133 CI (99.9%): [375.259, 1927.852] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm": 235683.998 ±(99.9%) 10339.112 B/op [Average] (min, avg, max) = (234263.741, 235683.998, 237743.750), stdev = 1599.989 CI (99.9%): [225344.886, 246023.110] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count": 1.000 ±(99.9%) 0.001 counts [Sum] (min, avg, max) = (≈ 0, 0.250, 1.000), stdev = 0.500 CI (99.9%): [1.000, 1.000] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time": 1.000 ±(99.9%) 0.001 ms [Sum] (min, avg, max) = (≈ 0, 0.250, 1.000), stdev = 0.500 CI (99.9%): [1.000, 1.000] (assumes normal distribution) # JMH version: 1.37 # VM version: JDK 25, OpenJDK 64-Bit Server VM, 25+36-b176.4 # VM invoker: java # VM options: # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 1 iterations, 100 ms each # Measurement: 4 iterations, 100 ms each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix # Parameters: (implementation = minecraft-suffix-array, itemCount = 100000, typedCharacterCount = 9) # Run progress: 72.73% complete, ETA 00:00:14 # Fork: 1 of 1 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::objectFieldOffset has been called by org.openjdk.jmh.util.Utils (file:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar) WARNING: Please consider reporting this to the maintainers of class org.openjdk.jmh.util.Utils WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release # Warmup Iteration 1: 0.317 ms/op Iteration 1: 0.184 ms/op gc.alloc.rate: 1189.817 MB/sec gc.alloc.rate.norm: 230024.028 B/op gc.count: ≈ 0 counts Iteration 2: 0.176 ms/op gc.alloc.rate: 1230.499 MB/sec gc.alloc.rate.norm: 227668.102 B/op gc.count: ≈ 0 counts Iteration 3: 0.178 ms/op gc.alloc.rate: 1245.964 MB/sec gc.alloc.rate.norm: 232542.438 B/op gc.count: 1.000 counts gc.time: 1.000 ms Iteration 4: 0.195 ms/op gc.alloc.rate: 1101.239 MB/sec gc.alloc.rate.norm: 225515.963 B/op gc.count: ≈ 0 counts Result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix": 0.183 ±(99.9%) 0.055 ms/op [Average] (min, avg, max) = (0.176, 0.183, 0.195), stdev = 0.009 CI (99.9%): [0.128, 0.239] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate": 1191.880 ±(99.9%) 419.393 MB/sec [Average] (min, avg, max) = (1101.239, 1191.880, 1245.964), stdev = 64.902 CI (99.9%): [772.487, 1611.273] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm": 228937.633 ±(99.9%) 19562.654 B/op [Average] (min, avg, max) = (225515.963, 228937.633, 232542.438), stdev = 3027.342 CI (99.9%): [209374.978, 248500.287] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count": 1.000 ±(99.9%) 0.001 counts [Sum] (min, avg, max) = (≈ 0, 0.250, 1.000), stdev = 0.500 CI (99.9%): [1.000, 1.000] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time": 1.000 ±(99.9%) 0.001 ms [Sum] (min, avg, max) = (≈ 0, 0.250, 1.000), stdev = 0.500 CI (99.9%): [1.000, 1.000] (assumes normal distribution) # JMH version: 1.37 # VM version: JDK 25, OpenJDK 64-Bit Server VM, 25+36-b176.4 # VM invoker: java # VM options: # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 1 iterations, 100 ms each # Measurement: 4 iterations, 100 ms each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix # Parameters: (implementation = minecraft-suffix-array, itemCount = 100000, typedCharacterCount = 10) # Run progress: 81.82% complete, ETA 00:00:09 # Fork: 1 of 1 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::objectFieldOffset has been called by org.openjdk.jmh.util.Utils (file:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar) WARNING: Please consider reporting this to the maintainers of class org.openjdk.jmh.util.Utils WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release # Warmup Iteration 1: 0.212 ms/op Iteration 1: 0.078 ms/op gc.alloc.rate: 1223.957 MB/sec gc.alloc.rate.norm: 99774.118 B/op gc.count: ≈ 0 counts Iteration 2: 0.077 ms/op gc.alloc.rate: 1238.093 MB/sec gc.alloc.rate.norm: 99774.047 B/op gc.count: ≈ 0 counts Iteration 3: 0.078 ms/op gc.alloc.rate: 1209.919 MB/sec gc.alloc.rate.norm: 99774.208 B/op gc.count: 1.000 counts gc.time: 1.000 ms Iteration 4: 0.073 ms/op gc.alloc.rate: 1302.320 MB/sec gc.alloc.rate.norm: 99727.550 B/op gc.count: ≈ 0 counts Result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix": 0.076 ±(99.9%) 0.016 ms/op [Average] (min, avg, max) = (0.073, 0.076, 0.078), stdev = 0.002 CI (99.9%): [0.061, 0.092] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate": 1243.572 ±(99.9%) 263.775 MB/sec [Average] (min, avg, max) = (1209.919, 1243.572, 1302.320), stdev = 40.819 CI (99.9%): [979.797, 1507.347] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm": 99762.481 ±(99.9%) 150.480 B/op [Average] (min, avg, max) = (99727.550, 99762.481, 99774.208), stdev = 23.287 CI (99.9%): [99612.000, 99912.961] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count": 1.000 ±(99.9%) 0.001 counts [Sum] (min, avg, max) = (≈ 0, 0.250, 1.000), stdev = 0.500 CI (99.9%): [1.000, 1.000] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time": 1.000 ±(99.9%) 0.001 ms [Sum] (min, avg, max) = (≈ 0, 0.250, 1.000), stdev = 0.500 CI (99.9%): [1.000, 1.000] (assumes normal distribution) # JMH version: 1.37 # VM version: JDK 25, OpenJDK 64-Bit Server VM, 25+36-b176.4 # VM invoker: java # VM options: # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 1 iterations, 100 ms each # Measurement: 4 iterations, 100 ms each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix # Parameters: (implementation = minecraft-suffix-array, itemCount = 100000, typedCharacterCount = 11) # Run progress: 90.91% complete, ETA 00:00:04 # Fork: 1 of 1 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::objectFieldOffset has been called by org.openjdk.jmh.util.Utils (file:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar) WARNING: Please consider reporting this to the maintainers of class org.openjdk.jmh.util.Utils WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release # Warmup Iteration 1: 0.105 ms/op Iteration 1: 0.069 ms/op gc.alloc.rate: 1248.765 MB/sec gc.alloc.rate.norm: 90780.693 B/op gc.count: ≈ 0 counts Iteration 2: 0.070 ms/op gc.alloc.rate: 1234.416 MB/sec gc.alloc.rate.norm: 91316.083 B/op gc.count: ≈ 0 counts Iteration 3: 0.065 ms/op gc.alloc.rate: 1323.984 MB/sec gc.alloc.rate.norm: 90832.817 B/op gc.count: 1.000 counts gc.time: 1.000 ms Iteration 4: 0.067 ms/op gc.alloc.rate: 1283.685 MB/sec gc.alloc.rate.norm: 90488.920 B/op gc.count: ≈ 0 counts Result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix": 0.068 ±(99.9%) 0.015 ms/op [Average] (min, avg, max) = (0.065, 0.068, 0.070), stdev = 0.002 CI (99.9%): [0.053, 0.083] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate": 1272.713 ±(99.9%) 258.192 MB/sec [Average] (min, avg, max) = (1234.416, 1272.713, 1323.984), stdev = 39.955 CI (99.9%): [1014.521, 1530.905] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm": 90854.628 ±(99.9%) 2215.452 B/op [Average] (min, avg, max) = (90488.920, 90854.628, 91316.083), stdev = 342.844 CI (99.9%): [88639.176, 93070.080] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count": 1.000 ±(99.9%) 0.001 counts [Sum] (min, avg, max) = (≈ 0, 0.250, 1.000), stdev = 0.500 CI (99.9%): [1.000, 1.000] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time": 1.000 ±(99.9%) 0.001 ms [Sum] (min, avg, max) = (≈ 0, 0.250, 1.000), stdev = 0.500 CI (99.9%): [1.000, 1.000] (assumes normal distribution) # Run complete. Total time: 00:00:54 REMEMBER: The numbers below are just data. To gain reusable insights, you need to follow up on why the numbers are the way they are. Use profilers (see -prof, -lprof), design factorial experiments, perform baseline and negative tests that provide experimental control, make sure the benchmarking environment is safe on JVM/OS/HW level, ask for reviews from the domain experts. Do not assume the numbers tell you what you want them to tell. NOTE: Current JVM experimentally supports Compiler Blackholes, and they are in use. Please exercise extra caution when trusting the results, look into the generated code to check the benchmark still works, and factor in a small probability of new VM bugs. Additionally, while comparisons between different JVMs are already problematic, the performance difference caused by different Blackhole modes can be very significant. Please make sure you use the consistent Blackhole mode for comparisons. Benchmark (implementation) (itemCount) (typedCharacterCount) Mode Cnt Score Error Units LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix minecraft-suffix-array 100000 1 avgt 4 27.630 ± 45.726 ms/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate minecraft-suffix-array 100000 1 avgt 4 631.863 ± 380.171 MB/sec LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm minecraft-suffix-array 100000 1 avgt 4 18153621.250 ± 26432990.545 B/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count minecraft-suffix-array 100000 1 avgt 4 1.000 counts LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time minecraft-suffix-array 100000 1 avgt 4 19.000 ms LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix minecraft-suffix-array 100000 2 avgt 4 3.031 ± 2.096 ms/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate minecraft-suffix-array 100000 2 avgt 4 664.462 ± 85.459 MB/sec LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm minecraft-suffix-array 100000 2 avgt 4 2112477.253 ± 1231569.580 B/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count minecraft-suffix-array 100000 2 avgt 4 ≈ 0 counts LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix minecraft-suffix-array 100000 3 avgt 4 1.095 ± 0.765 ms/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate minecraft-suffix-array 100000 3 avgt 4 869.503 ± 505.354 MB/sec LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm minecraft-suffix-array 100000 3 avgt 4 993075.417 ± 131850.198 B/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count minecraft-suffix-array 100000 3 avgt 4 ≈ 0 counts LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix minecraft-suffix-array 100000 4 avgt 4 0.586 ± 0.191 ms/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate minecraft-suffix-array 100000 4 avgt 4 1151.030 ± 419.176 MB/sec LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm minecraft-suffix-array 100000 4 avgt 4 707676.917 ± 80595.223 B/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count minecraft-suffix-array 100000 4 avgt 4 1.000 counts LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time minecraft-suffix-array 100000 4 avgt 4 2.000 ms LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix minecraft-suffix-array 100000 5 avgt 4 0.521 ± 0.378 ms/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate minecraft-suffix-array 100000 5 avgt 4 1061.507 ± 675.091 MB/sec LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm minecraft-suffix-array 100000 5 avgt 4 576106.916 ± 22283.029 B/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count minecraft-suffix-array 100000 5 avgt 4 ≈ 0 counts LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix minecraft-suffix-array 100000 6 avgt 4 0.462 ± 0.123 ms/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate minecraft-suffix-array 100000 6 avgt 4 1149.170 ± 326.726 MB/sec LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm minecraft-suffix-array 100000 6 avgt 4 557224.053 ± 56859.174 B/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count minecraft-suffix-array 100000 6 avgt 4 1.000 counts LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time minecraft-suffix-array 100000 6 avgt 4 2.000 ms LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix minecraft-suffix-array 100000 7 avgt 4 0.313 ± 0.079 ms/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate minecraft-suffix-array 100000 7 avgt 4 1290.553 ± 391.585 MB/sec LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm minecraft-suffix-array 100000 7 avgt 4 423493.531 ± 26615.696 B/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count minecraft-suffix-array 100000 7 avgt 4 1.000 counts LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time minecraft-suffix-array 100000 7 avgt 4 1.000 ms LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix minecraft-suffix-array 100000 8 avgt 4 0.196 ± 0.141 ms/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate minecraft-suffix-array 100000 8 avgt 4 1151.556 ± 776.297 MB/sec LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm minecraft-suffix-array 100000 8 avgt 4 235683.998 ± 10339.112 B/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count minecraft-suffix-array 100000 8 avgt 4 1.000 counts LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time minecraft-suffix-array 100000 8 avgt 4 1.000 ms LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix minecraft-suffix-array 100000 9 avgt 4 0.183 ± 0.055 ms/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate minecraft-suffix-array 100000 9 avgt 4 1191.880 ± 419.393 MB/sec LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm minecraft-suffix-array 100000 9 avgt 4 228937.633 ± 19562.654 B/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count minecraft-suffix-array 100000 9 avgt 4 1.000 counts LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time minecraft-suffix-array 100000 9 avgt 4 1.000 ms LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix minecraft-suffix-array 100000 10 avgt 4 0.076 ± 0.016 ms/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate minecraft-suffix-array 100000 10 avgt 4 1243.572 ± 263.775 MB/sec LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm minecraft-suffix-array 100000 10 avgt 4 99762.481 ± 150.480 B/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count minecraft-suffix-array 100000 10 avgt 4 1.000 counts LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time minecraft-suffix-array 100000 10 avgt 4 1.000 ms LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix minecraft-suffix-array 100000 11 avgt 4 0.068 ± 0.015 ms/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate minecraft-suffix-array 100000 11 avgt 4 1272.713 ± 258.192 MB/sec LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm minecraft-suffix-array 100000 11 avgt 4 90854.628 ± 2215.452 B/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count minecraft-suffix-array 100000 11 avgt 4 1.000 counts LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time minecraft-suffix-array 100000 11 avgt 4 1.000 ms Benchmark result is saved to /build/reports/jmh/adaptive-jmh-passes/pass-01-group-010.json # Adaptive pass 1, group 11 # Command: java -cp /build/classes/java/benchmark:/build/resources/benchmark:/build/moddev/artifacts/vanilla-26.2-2.jar:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar:/modules-2/files-2.1/com.abahgat/suffixtree/2.0.0/ffe2c29796add2624d2e0b9f33e72421eb5c5ea5/suffixtree-2.0.0.jar:/modules-2/files-2.1/net.mezzdev/suffixtree/1.3.0/1a1b87af70a1631ff6d6c9d49c63564aadecb176/suffixtree-1.3.0.jar:/modules-2/files-2.1/net.mezzdev/baked-substring-index/0.1.0/4f9fbd9eb54fdb1b8ec40a83297f4e8f4479eb7c/baked-substring-index-0.1.0.jar:/modules-2/files-2.1/net.mezzdev/baked-suffix-array-index/0.1.0/cd5e5ffbcee030d149e7a5a70e151a06158bd643/baked-suffix-array-index-0.1.0.jar:/modules-2/files-2.1/net.neoforged/mergetool/2.0.7/793b18456e92c4a7f66d9b5d8bf7a9c1c7a20b20/mergetool-2.0.7-api.jar:/modules-2/files-2.1/net.sf.jopt-simple/jopt-simple/5.0.4/4fdac2fbe92dfad86aa6e9301736f6b4342a3f5c/jopt-simple-5.0.4.jar:/modules-2/files-2.1/org.apache.commons/commons-math3/3.6.1/e4ba98f1d4b3c80ec46392f25e094a6a2e58fcbf/commons-math3-3.6.1.jar:/modules-2/files-2.1/com.google.code.findbugs/jsr305/3.0.2/25ea2e8b0c338a877313bd4672d3fe056ea78f0d/jsr305-3.0.2.jar:/modules-2/files-2.1/org.jspecify/jspecify/1.0.0/7425a601c1c7ec76645a78d22b8c6a627edee507/jspecify-1.0.0.jar:/modules-2/files-2.1/org.jetbrains/annotations/26.0.2-1/c7ce3cdeda3d18909368dfe5977332dfad326c6d/annotations-26.0.2-1.jar:/modules-2/files-2.1/ca.weblite/java-objc-bridge/1.1/1227f9e0666314f9de41477e3ec277e542ed7f7b/java-objc-bridge-1.1.jar:/modules-2/files-2.1/at.yawk.lz4/lz4-java/1.10.1/f541d7f910fe3d76f38f799c507c48cc81b12ecb/lz4-java-1.10.1.jar:/modules-2/files-2.1/com.azure/azure-json/1.4.0/fcc1d354dbc3e0300e5276b1bf124d0247799cd8/azure-json-1.4.0.jar:/modules-2/files-2.1/com.github.oshi/oshi-core/6.9.0/3224870731860cfcd7744581a05b559e94291e7/oshi-core-6.9.0.jar:/modules-2/files-2.1/com.google.code.gson/gson/2.14.0/efc0e34ede4e3204eaefb84a00e55e8c86634382/gson-2.14.0.jar:/modules-2/files-2.1/com.google.guava/failureaccess/1.0.3/aeaffd00d57023a2c947393ed251f0354f0985fc/failureaccess-1.0.3.jar:/modules-2/files-2.1/com.google.guava/guava/33.6.0-jre/c376b13067cc99a5774403530953f7b05a91e218/guava-33.6.0-jre.jar:/modules-2/files-2.1/com.ibm.icu/icu4j/78.3/6a851a53bb1f25689fc418dcc8935b0d93580adf/icu4j-78.3.jar:/modules-2/files-2.1/com.microsoft.azure/msal4j/1.24.1/c233f2d047b9755f7041adf21a858c680e4c9242/msal4j-1.24.1.jar:/modules-2/files-2.1/com.mojang/authlib/9.0.75/d61056a234d5e4b272e09d59b0713f80d6c0b6af/authlib-9.0.75.jar:/modules-2/files-2.1/com.mojang/blocklist/1.0.10/5c685c5ffa94c4cd39496c7184c1d122e515ecef/blocklist-1.0.10.jar:/modules-2/files-2.1/com.mojang/brigadier/1.3.10/d15b53a14cf20fdcaa98f731af5dda654452c010/brigadier-1.3.10.jar:/modules-2/files-2.1/com.mojang/datafixerupper/10.0.21/b6b2ae770c02e0c1eb90f9985b151e9085a38d0b/datafixerupper-10.0.21.jar:/modules-2/files-2.1/com.mojang/jtracy/1.0.37/a3fb649b2e2b2288d2978f0b0bc3d83f62809d1e/jtracy-1.0.37.jar:/modules-2/files-2.1/com.mojang/jtracy/1.0.37/a99fcb63b72fb623534d0ceb71bda4bed9b55b4c/jtracy-1.0.37-natives-macos.jar:/modules-2/files-2.1/com.mojang/jtracy/1.0.37/c8e971da5150aa33283c5bf4097154c0da554fb9/jtracy-1.0.37-natives-macos-arm64.jar:/modules-2/files-2.1/com.mojang/logging/1.7.12/351cea64a5233361327d8d54c44277041beed97f/logging-1.7.12.jar:/modules-2/files-2.1/com.mojang/patchy/2.2.10/da05971b07cbb379d002cf7eaec6a2048211fefc/patchy-2.2.10.jar:/modules-2/files-2.1/com.mojang/text2speech/1.19.12/2e517a75c79d34d32de2b5d68422150836c2133e/text2speech-1.19.12.jar:/modules-2/files-2.1/commons-codec/commons-codec/1.22.0/6b3eb4beb7058c2a638f5f17bcb388649fd339dd/commons-codec-1.22.0.jar:/modules-2/files-2.1/commons-io/commons-io/2.20.0/36f3474daec2849c149e877614e7f979b2082cd2/commons-io-2.20.0.jar:/modules-2/files-2.1/io.netty/netty-buffer/4.2.15.Final/2beb620803bf871cda2dd5d46b8f831e8015dd34/netty-buffer-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-codec-base/4.2.15.Final/e97149fdd5fb04858efa90e314651c8d700dc68b/netty-codec-base-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-codec-compression/4.2.15.Final/89fc4a20b7ae6af974304b1695405e62c4f9b16d/netty-codec-compression-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-codec-http/4.2.15.Final/e611826aa054371bb9a17f27bdb05755a4cac5f0/netty-codec-http-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-common/4.2.15.Final/7222492c1af9c2d4d78d521eea340a619e242fda/netty-common-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-handler/4.2.15.Final/d5344afd1148e3b9927a74be019605ebb0937a93/netty-handler-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-resolver/4.2.15.Final/b961a16d379b508b473e064ba06842bba280f4e3/netty-resolver-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-transport-classes-epoll/4.2.15.Final/44bafba9c9993800e955b365bba4981326f3f3b1/netty-transport-classes-epoll-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-transport-classes-kqueue/4.2.15.Final/f248656bb907607c5a41c7b61fd918a97db79250/netty-transport-classes-kqueue-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-transport-native-unix-common/4.2.15.Final/efb6943b4de9e0226a5ac35330f232605424af02/netty-transport-native-unix-common-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-transport/4.2.15.Final/a000c3a6196ee40207b73ac619dcb339409dd62f/netty-transport-4.2.15.Final.jar:/modules-2/files-2.1/it.unimi.dsi/fastutil/8.5.18/a6cff377eecc19c2037bf31568a6d7106b50ba1f/fastutil-8.5.18.jar:/modules-2/files-2.1/net.java.dev.jna/jna-platform/5.17.0/a4934c44d25a9d8c2ddf4203affd20330cb3426f/jna-platform-5.17.0.jar:/modules-2/files-2.1/net.java.dev.jna/jna/5.17.0/33d12735bef894440780fce64f9758d420c7bae2/jna-5.17.0.jar:/modules-2/files-2.1/org.apache.commons/commons-compress/1.28.0/e482f2c7a88dac3c497e96aa420b6a769f59c8d7/commons-compress-1.28.0.jar:/modules-2/files-2.1/org.apache.commons/commons-lang3/3.20.0/65897b3e5731220962e659e001904af3c3cbeba9/commons-lang3-3.20.0.jar:/modules-2/files-2.1/org.apache.logging.log4j/log4j-api/2.26.0/ad52af0ecf054a7e3f275a2e180ee06d9c490951/log4j-api-2.26.0.jar:/modules-2/files-2.1/org.apache.logging.log4j/log4j-core/2.26.0/d267ca60b27ddb075e0b4e75e7875859717bf85f/log4j-core-2.26.0.jar:/modules-2/files-2.1/org.apache.logging.log4j/log4j-slf4j2-impl/2.26.0/668c0f0e813d83f00a7182533aa658ec7e7a0a0d/log4j-slf4j2-impl-2.26.0.jar:/modules-2/files-2.1/org.jcraft/jorbis/0.0.17/8872d22b293e8f5d7d56ff92be966e6dc28ebdc6/jorbis-0.0.17.jar:/modules-2/files-2.1/org.joml/joml/1.10.8/fc0a71dad90a2cf41d82a76156a0e700af8e4f8d/joml-1.10.8.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-freetype/3.4.1/caa75a37e857efc9b0686e434d708d6420c5b6ea/lwjgl-freetype-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-freetype/3.4.1/61cb2d85e1838bca1a0b664f54e818bc68deb2ef/lwjgl-freetype-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-freetype/3.4.1/cce5a86b4a7d17817fe8ea0296302a4353acf2d5/lwjgl-freetype-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-glfw/3.4.1/a782b1ddd175c9107bf300fd92920579ea65e2a4/lwjgl-glfw-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-glfw/3.4.1/3c8538942f58377d59cd7be2dc164ba71a53868a/lwjgl-glfw-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-glfw/3.4.1/ef1f8efca5a60ba3512bc4982b88e446ecc43378/lwjgl-glfw-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-jemalloc/3.4.1/16b663092854fc6adfe0a941e61cae2bb2e437b6/lwjgl-jemalloc-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-jemalloc/3.4.1/581b4d542e841015ce3265eed0495e2cde15b1d0/lwjgl-jemalloc-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-jemalloc/3.4.1/dcd7e3f9a2ca386e8c5b8f508a8511d9dd63bab0/lwjgl-jemalloc-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-openal/3.4.1/8508bd60589de0539aa465b78fcf838efd07ae9a/lwjgl-openal-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-openal/3.4.1/a4dc57b7b0880d3fffb4d0b61649f45712bccc93/lwjgl-openal-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-openal/3.4.1/1c709a38c4a0e86aae96db7b8c78432307f2322a/lwjgl-openal-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-opengl/3.4.1/830412cab823c029cda6b9729f9d2ed36cf79959/lwjgl-opengl-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-opengl/3.4.1/ba18fc6012b88494ee893506934b92b01c4ef14b/lwjgl-opengl-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-opengl/3.4.1/35b5550058de4960525f465243bd01805f04fd8b/lwjgl-opengl-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-shaderc/3.4.1/5c02c88f0d879529014c78463b76f43fdecfd272/lwjgl-shaderc-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-shaderc/3.4.1/1d7bbdba70cf29c42978f6c0c1bdef945b922072/lwjgl-shaderc-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-shaderc/3.4.1/48aa2727e8616154d399d4dab0d8e8479741fa4f/lwjgl-shaderc-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-spvc/3.4.1/188553592e97b5ab2dba54a1b403ee80b48dad4c/lwjgl-spvc-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-spvc/3.4.1/2eeebd6d5bae966bfffda9747eba744cfe839ae1/lwjgl-spvc-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-spvc/3.4.1/a4f66638d28129eba0babd8fdc4385427a5ea83e/lwjgl-spvc-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-stb/3.4.1/f077c3dafc31924fbe8acb0b913f08977ba27f8e/lwjgl-stb-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-stb/3.4.1/fd1ea36b717b0832babca09324a6cfc43906e2aa/lwjgl-stb-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-stb/3.4.1/da554e04f819f09b0f3473bd931628ebf557965e/lwjgl-stb-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-tinyfd/3.4.1/562697d40dbd2ed0424bf24dcf65d51170f81adf/lwjgl-tinyfd-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-tinyfd/3.4.1/211ae9e8720e8f10f2ce85a118fa7bd5ee71584b/lwjgl-tinyfd-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-tinyfd/3.4.1/7bcde70f6164b2e72f84cac5257b7e9877b88510/lwjgl-tinyfd-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vma/3.4.1/2c54ce10154feb1ede4d23c5947438cdbfdcc003/lwjgl-vma-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vma/3.4.1/a130a9e4f96c83063f749e1dcc7065e0dffb3936/lwjgl-vma-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vma/3.4.1/9451dc1067716bc4125cdba65a7096e465f4d0e5/lwjgl-vma-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vulkan/3.4.1/d0601fdc38890755e5638048c14cc0f7b990964b/lwjgl-vulkan-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vulkan/3.4.1/140c7fd3e0fdbcc625c92be9328301c555035905/lwjgl-vulkan-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vulkan/3.4.1/2c933bf617cb8a174af26585efda4778b59e6d44/lwjgl-vulkan-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl/3.4.1/129e06a04f93992cb2a45172435b21fc4b60dd7d/lwjgl-3.4.1-unsafe.jar:/modules-2/files-2.1/org.lwjgl/lwjgl/3.4.1/b034fd9a67cb8646c01af7efcefcb93be835542b/lwjgl-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl/3.4.1/b4cbdef4818abd714ee66985344c0949fd1cd6d6/lwjgl-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.slf4j/slf4j-api/2.0.17/d9e58ac9c7779ba3bf8142aff6c830617a7fe60f/slf4j-api-2.0.17.jar:/modules-2/files-2.1/org.ow2.asm/asm-util/9.5/64b5a1fc8c1b15ed2efd6a063e976bc8d3dc5ffe/asm-util-9.5.jar:/modules-2/files-2.1/org.ow2.asm/asm-analysis/9.5/490bacc77de7cbc0be1a30bb3471072d705be4a4/asm-analysis-9.5.jar:/modules-2/files-2.1/org.ow2.asm/asm-tree/9.5/fd33c8b6373abaa675be407082fdfda35021254a/asm-tree-9.5.jar:/modules-2/files-2.1/org.ow2.asm/asm/9.5/dc6ea1875f4d64fbc85e1691c95b96a3d8569c90/asm-9.5.jar:/modules-2/files-2.1/net.neoforged/srgutils/1.0.10/abb471237b33b19f040ada00bfbad1ec45b949b6/srgutils-1.0.10.jar:/modules-2/files-2.1/io.netty/netty-transport-native-kqueue/4.2.15.Final/8ea0ef3eb716d821332e4b4926825a4b7c1a6d38/netty-transport-native-kqueue-4.2.15.Final-osx-aarch_64.jar:/modules-2/files-2.1/io.netty/netty-transport-native-kqueue/4.2.15.Final/4245380831515fb4eca18d32477a27fbb8f7b8f4/netty-transport-native-kqueue-4.2.15.Final-osx-x86_64.jar:/build/classes/java/main:/build/resources/main org.openjdk.jmh.Main .*net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.retainedApproxAllDefaultsIndexBytes -p itemCount=100000 -p implementation=generalized-suffix-tree -f 1 -wi 1 -i 4 -w 100ms -r 100ms -rf json -rff /build/reports/jmh/adaptive-jmh-passes/pass-01-group-011.json -o /build/reports/jmh/adaptive-jmh-passes/pass-01-group-011.txt -foe true -prof gc # JMH version: 1.37 # VM version: JDK 25, OpenJDK 64-Bit Server VM, 25+36-b176.4 # VM invoker: java # VM options: # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 1 iterations, 100 ms each # Measurement: 4 iterations, 100 ms each # Timeout: 10 min per iteration # Threads: 1 thread # Benchmark mode: Single shot invocation time # Benchmark: net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.retainedApproxAllDefaultsIndexBytes # Parameters: (implementation = generalized-suffix-tree, itemCount = 100000) # Run progress: 0.00% complete, ETA 00:00:00 # Fork: 1 of 1 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::objectFieldOffset has been called by org.openjdk.jmh.util.Utils (file:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar) WARNING: Please consider reporting this to the maintainers of class org.openjdk.jmh.util.Utils WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release # Warmup Iteration 1: 2479.028 ms/op Iteration 1: 2431.018 ms/op gc.alloc.rate: 117.068 MB/sec gc.alloc.rate.norm: 298445632.000 B/op gc.count: 14.000 counts gc.time: 489.000 ms retainedBytes: 111281040.000 # Iteration 2: 2372.267 ms/op gc.alloc.rate: 119.969 MB/sec gc.alloc.rate.norm: 298445616.000 B/op gc.count: 14.000 counts gc.time: 442.000 ms retainedBytes: 111771256.000 # Iteration 3: 2356.232 ms/op gc.alloc.rate: 120.784 MB/sec gc.alloc.rate.norm: 298445616.000 B/op gc.count: 14.000 counts gc.time: 451.000 ms retainedBytes: 111520272.000 # Iteration 4: 2288.410 ms/op gc.alloc.rate: 124.361 MB/sec gc.alloc.rate.norm: 298445616.000 B/op gc.count: 14.000 counts gc.time: 401.000 ms retainedBytes: 112132808.000 # Result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.retainedApproxAllDefaultsIndexBytes": N = 4 mean = 2361.982 ±(99.9%) 378.963 ms/op Histogram, ms/op: [2200.000, 2225.000) = 0 [2225.000, 2250.000) = 0 [2250.000, 2275.000) = 0 [2275.000, 2300.000) = 1 [2300.000, 2325.000) = 0 [2325.000, 2350.000) = 0 [2350.000, 2375.000) = 2 [2375.000, 2400.000) = 0 [2400.000, 2425.000) = 0 [2425.000, 2450.000) = 1 [2450.000, 2475.000) = 0 Percentiles, ms/op: p(0.0000) = 2288.410 ms/op p(50.0000) = 2364.250 ms/op p(90.0000) = 2431.018 ms/op p(95.0000) = 2431.018 ms/op p(99.0000) = 2431.018 ms/op p(99.9000) = 2431.018 ms/op p(99.9900) = 2431.018 ms/op p(99.9990) = 2431.018 ms/op p(99.9999) = 2431.018 ms/op p(100.0000) = 2431.018 ms/op Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.retainedApproxAllDefaultsIndexBytes:gc.alloc.rate": 120.546 ±(99.9%) 19.400 MB/sec [Average] (min, avg, max) = (117.068, 120.546, 124.361), stdev = 3.002 CI (99.9%): [101.145, 139.946] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.retainedApproxAllDefaultsIndexBytes:gc.alloc.rate.norm": 298445620.000 ±(99.9%) 51.696 B/op [Average] (min, avg, max) = (298445616.000, 298445620.000, 298445632.000), stdev = 8.000 CI (99.9%): [298445568.304, 298445671.696] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.retainedApproxAllDefaultsIndexBytes:gc.count": 56.000 ±(99.9%) 0.001 counts [Sum] (min, avg, max) = (14.000, 14.000, 14.000), stdev = 0.001 CI (99.9%): [56.000, 56.000] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.retainedApproxAllDefaultsIndexBytes:gc.time": 1783.000 ±(99.9%) 0.001 ms [Sum] (min, avg, max) = (401.000, 445.750, 489.000), stdev = 36.124 CI (99.9%): [1783.000, 1783.000] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.retainedApproxAllDefaultsIndexBytes:retainedBytes": 446705376.000 ±(99.9%) 0.001 # [Sum] (min, avg, max) = (111281040.000, 111676344.000, 112132808.000), stdev = 364230.418 CI (99.9%): [446705376.000, 446705376.000] (assumes normal distribution) # Run complete. Total time: 00:00:12 REMEMBER: The numbers below are just data. To gain reusable insights, you need to follow up on why the numbers are the way they are. Use profilers (see -prof, -lprof), design factorial experiments, perform baseline and negative tests that provide experimental control, make sure the benchmarking environment is safe on JVM/OS/HW level, ask for reviews from the domain experts. Do not assume the numbers tell you what you want them to tell. NOTE: Current JVM experimentally supports Compiler Blackholes, and they are in use. Please exercise extra caution when trusting the results, look into the generated code to check the benchmark still works, and factor in a small probability of new VM bugs. Additionally, while comparisons between different JVMs are already problematic, the performance difference caused by different Blackhole modes can be very significant. Please make sure you use the consistent Blackhole mode for comparisons. Benchmark (implementation) (itemCount) Mode Cnt Score Error Units LargeCatalogSearchBenchmark.retainedApproxAllDefaultsIndexBytes generalized-suffix-tree 100000 ss 4 2361.982 ± 378.963 ms/op LargeCatalogSearchBenchmark.retainedApproxAllDefaultsIndexBytes:gc.alloc.rate generalized-suffix-tree 100000 ss 4 120.546 ± 19.400 MB/sec LargeCatalogSearchBenchmark.retainedApproxAllDefaultsIndexBytes:gc.alloc.rate.norm generalized-suffix-tree 100000 ss 4 298445620.000 ± 51.696 B/op LargeCatalogSearchBenchmark.retainedApproxAllDefaultsIndexBytes:gc.count generalized-suffix-tree 100000 ss 4 56.000 counts LargeCatalogSearchBenchmark.retainedApproxAllDefaultsIndexBytes:gc.time generalized-suffix-tree 100000 ss 4 1783.000 ms LargeCatalogSearchBenchmark.retainedApproxAllDefaultsIndexBytes:retainedBytes generalized-suffix-tree 100000 ss 4 446705376.000 # Benchmark result is saved to /build/reports/jmh/adaptive-jmh-passes/pass-01-group-011.json # Adaptive pass 1, group 12 # Command: java -cp /build/classes/java/benchmark:/build/resources/benchmark:/build/moddev/artifacts/vanilla-26.2-2.jar:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar:/modules-2/files-2.1/com.abahgat/suffixtree/2.0.0/ffe2c29796add2624d2e0b9f33e72421eb5c5ea5/suffixtree-2.0.0.jar:/modules-2/files-2.1/net.mezzdev/suffixtree/1.3.0/1a1b87af70a1631ff6d6c9d49c63564aadecb176/suffixtree-1.3.0.jar:/modules-2/files-2.1/net.mezzdev/baked-substring-index/0.1.0/4f9fbd9eb54fdb1b8ec40a83297f4e8f4479eb7c/baked-substring-index-0.1.0.jar:/modules-2/files-2.1/net.mezzdev/baked-suffix-array-index/0.1.0/cd5e5ffbcee030d149e7a5a70e151a06158bd643/baked-suffix-array-index-0.1.0.jar:/modules-2/files-2.1/net.neoforged/mergetool/2.0.7/793b18456e92c4a7f66d9b5d8bf7a9c1c7a20b20/mergetool-2.0.7-api.jar:/modules-2/files-2.1/net.sf.jopt-simple/jopt-simple/5.0.4/4fdac2fbe92dfad86aa6e9301736f6b4342a3f5c/jopt-simple-5.0.4.jar:/modules-2/files-2.1/org.apache.commons/commons-math3/3.6.1/e4ba98f1d4b3c80ec46392f25e094a6a2e58fcbf/commons-math3-3.6.1.jar:/modules-2/files-2.1/com.google.code.findbugs/jsr305/3.0.2/25ea2e8b0c338a877313bd4672d3fe056ea78f0d/jsr305-3.0.2.jar:/modules-2/files-2.1/org.jspecify/jspecify/1.0.0/7425a601c1c7ec76645a78d22b8c6a627edee507/jspecify-1.0.0.jar:/modules-2/files-2.1/org.jetbrains/annotations/26.0.2-1/c7ce3cdeda3d18909368dfe5977332dfad326c6d/annotations-26.0.2-1.jar:/modules-2/files-2.1/ca.weblite/java-objc-bridge/1.1/1227f9e0666314f9de41477e3ec277e542ed7f7b/java-objc-bridge-1.1.jar:/modules-2/files-2.1/at.yawk.lz4/lz4-java/1.10.1/f541d7f910fe3d76f38f799c507c48cc81b12ecb/lz4-java-1.10.1.jar:/modules-2/files-2.1/com.azure/azure-json/1.4.0/fcc1d354dbc3e0300e5276b1bf124d0247799cd8/azure-json-1.4.0.jar:/modules-2/files-2.1/com.github.oshi/oshi-core/6.9.0/3224870731860cfcd7744581a05b559e94291e7/oshi-core-6.9.0.jar:/modules-2/files-2.1/com.google.code.gson/gson/2.14.0/efc0e34ede4e3204eaefb84a00e55e8c86634382/gson-2.14.0.jar:/modules-2/files-2.1/com.google.guava/failureaccess/1.0.3/aeaffd00d57023a2c947393ed251f0354f0985fc/failureaccess-1.0.3.jar:/modules-2/files-2.1/com.google.guava/guava/33.6.0-jre/c376b13067cc99a5774403530953f7b05a91e218/guava-33.6.0-jre.jar:/modules-2/files-2.1/com.ibm.icu/icu4j/78.3/6a851a53bb1f25689fc418dcc8935b0d93580adf/icu4j-78.3.jar:/modules-2/files-2.1/com.microsoft.azure/msal4j/1.24.1/c233f2d047b9755f7041adf21a858c680e4c9242/msal4j-1.24.1.jar:/modules-2/files-2.1/com.mojang/authlib/9.0.75/d61056a234d5e4b272e09d59b0713f80d6c0b6af/authlib-9.0.75.jar:/modules-2/files-2.1/com.mojang/blocklist/1.0.10/5c685c5ffa94c4cd39496c7184c1d122e515ecef/blocklist-1.0.10.jar:/modules-2/files-2.1/com.mojang/brigadier/1.3.10/d15b53a14cf20fdcaa98f731af5dda654452c010/brigadier-1.3.10.jar:/modules-2/files-2.1/com.mojang/datafixerupper/10.0.21/b6b2ae770c02e0c1eb90f9985b151e9085a38d0b/datafixerupper-10.0.21.jar:/modules-2/files-2.1/com.mojang/jtracy/1.0.37/a3fb649b2e2b2288d2978f0b0bc3d83f62809d1e/jtracy-1.0.37.jar:/modules-2/files-2.1/com.mojang/jtracy/1.0.37/a99fcb63b72fb623534d0ceb71bda4bed9b55b4c/jtracy-1.0.37-natives-macos.jar:/modules-2/files-2.1/com.mojang/jtracy/1.0.37/c8e971da5150aa33283c5bf4097154c0da554fb9/jtracy-1.0.37-natives-macos-arm64.jar:/modules-2/files-2.1/com.mojang/logging/1.7.12/351cea64a5233361327d8d54c44277041beed97f/logging-1.7.12.jar:/modules-2/files-2.1/com.mojang/patchy/2.2.10/da05971b07cbb379d002cf7eaec6a2048211fefc/patchy-2.2.10.jar:/modules-2/files-2.1/com.mojang/text2speech/1.19.12/2e517a75c79d34d32de2b5d68422150836c2133e/text2speech-1.19.12.jar:/modules-2/files-2.1/commons-codec/commons-codec/1.22.0/6b3eb4beb7058c2a638f5f17bcb388649fd339dd/commons-codec-1.22.0.jar:/modules-2/files-2.1/commons-io/commons-io/2.20.0/36f3474daec2849c149e877614e7f979b2082cd2/commons-io-2.20.0.jar:/modules-2/files-2.1/io.netty/netty-buffer/4.2.15.Final/2beb620803bf871cda2dd5d46b8f831e8015dd34/netty-buffer-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-codec-base/4.2.15.Final/e97149fdd5fb04858efa90e314651c8d700dc68b/netty-codec-base-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-codec-compression/4.2.15.Final/89fc4a20b7ae6af974304b1695405e62c4f9b16d/netty-codec-compression-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-codec-http/4.2.15.Final/e611826aa054371bb9a17f27bdb05755a4cac5f0/netty-codec-http-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-common/4.2.15.Final/7222492c1af9c2d4d78d521eea340a619e242fda/netty-common-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-handler/4.2.15.Final/d5344afd1148e3b9927a74be019605ebb0937a93/netty-handler-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-resolver/4.2.15.Final/b961a16d379b508b473e064ba06842bba280f4e3/netty-resolver-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-transport-classes-epoll/4.2.15.Final/44bafba9c9993800e955b365bba4981326f3f3b1/netty-transport-classes-epoll-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-transport-classes-kqueue/4.2.15.Final/f248656bb907607c5a41c7b61fd918a97db79250/netty-transport-classes-kqueue-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-transport-native-unix-common/4.2.15.Final/efb6943b4de9e0226a5ac35330f232605424af02/netty-transport-native-unix-common-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-transport/4.2.15.Final/a000c3a6196ee40207b73ac619dcb339409dd62f/netty-transport-4.2.15.Final.jar:/modules-2/files-2.1/it.unimi.dsi/fastutil/8.5.18/a6cff377eecc19c2037bf31568a6d7106b50ba1f/fastutil-8.5.18.jar:/modules-2/files-2.1/net.java.dev.jna/jna-platform/5.17.0/a4934c44d25a9d8c2ddf4203affd20330cb3426f/jna-platform-5.17.0.jar:/modules-2/files-2.1/net.java.dev.jna/jna/5.17.0/33d12735bef894440780fce64f9758d420c7bae2/jna-5.17.0.jar:/modules-2/files-2.1/org.apache.commons/commons-compress/1.28.0/e482f2c7a88dac3c497e96aa420b6a769f59c8d7/commons-compress-1.28.0.jar:/modules-2/files-2.1/org.apache.commons/commons-lang3/3.20.0/65897b3e5731220962e659e001904af3c3cbeba9/commons-lang3-3.20.0.jar:/modules-2/files-2.1/org.apache.logging.log4j/log4j-api/2.26.0/ad52af0ecf054a7e3f275a2e180ee06d9c490951/log4j-api-2.26.0.jar:/modules-2/files-2.1/org.apache.logging.log4j/log4j-core/2.26.0/d267ca60b27ddb075e0b4e75e7875859717bf85f/log4j-core-2.26.0.jar:/modules-2/files-2.1/org.apache.logging.log4j/log4j-slf4j2-impl/2.26.0/668c0f0e813d83f00a7182533aa658ec7e7a0a0d/log4j-slf4j2-impl-2.26.0.jar:/modules-2/files-2.1/org.jcraft/jorbis/0.0.17/8872d22b293e8f5d7d56ff92be966e6dc28ebdc6/jorbis-0.0.17.jar:/modules-2/files-2.1/org.joml/joml/1.10.8/fc0a71dad90a2cf41d82a76156a0e700af8e4f8d/joml-1.10.8.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-freetype/3.4.1/caa75a37e857efc9b0686e434d708d6420c5b6ea/lwjgl-freetype-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-freetype/3.4.1/61cb2d85e1838bca1a0b664f54e818bc68deb2ef/lwjgl-freetype-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-freetype/3.4.1/cce5a86b4a7d17817fe8ea0296302a4353acf2d5/lwjgl-freetype-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-glfw/3.4.1/a782b1ddd175c9107bf300fd92920579ea65e2a4/lwjgl-glfw-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-glfw/3.4.1/3c8538942f58377d59cd7be2dc164ba71a53868a/lwjgl-glfw-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-glfw/3.4.1/ef1f8efca5a60ba3512bc4982b88e446ecc43378/lwjgl-glfw-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-jemalloc/3.4.1/16b663092854fc6adfe0a941e61cae2bb2e437b6/lwjgl-jemalloc-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-jemalloc/3.4.1/581b4d542e841015ce3265eed0495e2cde15b1d0/lwjgl-jemalloc-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-jemalloc/3.4.1/dcd7e3f9a2ca386e8c5b8f508a8511d9dd63bab0/lwjgl-jemalloc-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-openal/3.4.1/8508bd60589de0539aa465b78fcf838efd07ae9a/lwjgl-openal-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-openal/3.4.1/a4dc57b7b0880d3fffb4d0b61649f45712bccc93/lwjgl-openal-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-openal/3.4.1/1c709a38c4a0e86aae96db7b8c78432307f2322a/lwjgl-openal-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-opengl/3.4.1/830412cab823c029cda6b9729f9d2ed36cf79959/lwjgl-opengl-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-opengl/3.4.1/ba18fc6012b88494ee893506934b92b01c4ef14b/lwjgl-opengl-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-opengl/3.4.1/35b5550058de4960525f465243bd01805f04fd8b/lwjgl-opengl-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-shaderc/3.4.1/5c02c88f0d879529014c78463b76f43fdecfd272/lwjgl-shaderc-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-shaderc/3.4.1/1d7bbdba70cf29c42978f6c0c1bdef945b922072/lwjgl-shaderc-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-shaderc/3.4.1/48aa2727e8616154d399d4dab0d8e8479741fa4f/lwjgl-shaderc-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-spvc/3.4.1/188553592e97b5ab2dba54a1b403ee80b48dad4c/lwjgl-spvc-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-spvc/3.4.1/2eeebd6d5bae966bfffda9747eba744cfe839ae1/lwjgl-spvc-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-spvc/3.4.1/a4f66638d28129eba0babd8fdc4385427a5ea83e/lwjgl-spvc-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-stb/3.4.1/f077c3dafc31924fbe8acb0b913f08977ba27f8e/lwjgl-stb-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-stb/3.4.1/fd1ea36b717b0832babca09324a6cfc43906e2aa/lwjgl-stb-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-stb/3.4.1/da554e04f819f09b0f3473bd931628ebf557965e/lwjgl-stb-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-tinyfd/3.4.1/562697d40dbd2ed0424bf24dcf65d51170f81adf/lwjgl-tinyfd-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-tinyfd/3.4.1/211ae9e8720e8f10f2ce85a118fa7bd5ee71584b/lwjgl-tinyfd-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-tinyfd/3.4.1/7bcde70f6164b2e72f84cac5257b7e9877b88510/lwjgl-tinyfd-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vma/3.4.1/2c54ce10154feb1ede4d23c5947438cdbfdcc003/lwjgl-vma-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vma/3.4.1/a130a9e4f96c83063f749e1dcc7065e0dffb3936/lwjgl-vma-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vma/3.4.1/9451dc1067716bc4125cdba65a7096e465f4d0e5/lwjgl-vma-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vulkan/3.4.1/d0601fdc38890755e5638048c14cc0f7b990964b/lwjgl-vulkan-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vulkan/3.4.1/140c7fd3e0fdbcc625c92be9328301c555035905/lwjgl-vulkan-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vulkan/3.4.1/2c933bf617cb8a174af26585efda4778b59e6d44/lwjgl-vulkan-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl/3.4.1/129e06a04f93992cb2a45172435b21fc4b60dd7d/lwjgl-3.4.1-unsafe.jar:/modules-2/files-2.1/org.lwjgl/lwjgl/3.4.1/b034fd9a67cb8646c01af7efcefcb93be835542b/lwjgl-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl/3.4.1/b4cbdef4818abd714ee66985344c0949fd1cd6d6/lwjgl-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.slf4j/slf4j-api/2.0.17/d9e58ac9c7779ba3bf8142aff6c830617a7fe60f/slf4j-api-2.0.17.jar:/modules-2/files-2.1/org.ow2.asm/asm-util/9.5/64b5a1fc8c1b15ed2efd6a063e976bc8d3dc5ffe/asm-util-9.5.jar:/modules-2/files-2.1/org.ow2.asm/asm-analysis/9.5/490bacc77de7cbc0be1a30bb3471072d705be4a4/asm-analysis-9.5.jar:/modules-2/files-2.1/org.ow2.asm/asm-tree/9.5/fd33c8b6373abaa675be407082fdfda35021254a/asm-tree-9.5.jar:/modules-2/files-2.1/org.ow2.asm/asm/9.5/dc6ea1875f4d64fbc85e1691c95b96a3d8569c90/asm-9.5.jar:/modules-2/files-2.1/net.neoforged/srgutils/1.0.10/abb471237b33b19f040ada00bfbad1ec45b949b6/srgutils-1.0.10.jar:/modules-2/files-2.1/io.netty/netty-transport-native-kqueue/4.2.15.Final/8ea0ef3eb716d821332e4b4926825a4b7c1a6d38/netty-transport-native-kqueue-4.2.15.Final-osx-aarch_64.jar:/modules-2/files-2.1/io.netty/netty-transport-native-kqueue/4.2.15.Final/4245380831515fb4eca18d32477a27fbb8f7b8f4/netty-transport-native-kqueue-4.2.15.Final-osx-x86_64.jar:/build/classes/java/main:/build/resources/main org.openjdk.jmh.Main .*net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.retainedApproxAllDefaultsIndexBytes -p itemCount=100000 -p implementation=abahgat-suffix-tree -f 1 -wi 1 -i 4 -w 100ms -r 100ms -rf json -rff /build/reports/jmh/adaptive-jmh-passes/pass-01-group-012.json -o /build/reports/jmh/adaptive-jmh-passes/pass-01-group-012.txt -foe true -prof gc # JMH version: 1.37 # VM version: JDK 25, OpenJDK 64-Bit Server VM, 25+36-b176.4 # VM invoker: java # VM options: # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 1 iterations, 100 ms each # Measurement: 4 iterations, 100 ms each # Timeout: 10 min per iteration # Threads: 1 thread # Benchmark mode: Single shot invocation time # Benchmark: net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.retainedApproxAllDefaultsIndexBytes # Parameters: (implementation = abahgat-suffix-tree, itemCount = 100000) # Run progress: 0.00% complete, ETA 00:00:00 # Fork: 1 of 1 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::objectFieldOffset has been called by org.openjdk.jmh.util.Utils (file:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar) WARNING: Please consider reporting this to the maintainers of class org.openjdk.jmh.util.Utils WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release # Warmup Iteration 1: 2702.592 ms/op Iteration 1: 2554.827 ms/op gc.alloc.rate: 509.329 MB/sec gc.alloc.rate.norm: 1364563448.000 B/op gc.count: 16.000 counts gc.time: 436.000 ms retainedBytes: 154371000.000 # Iteration 2: 2547.031 ms/op gc.alloc.rate: 510.887 MB/sec gc.alloc.rate.norm: 1364563432.000 B/op gc.count: 16.000 counts gc.time: 421.000 ms retainedBytes: 155041632.000 # Iteration 3: 2547.208 ms/op gc.alloc.rate: 510.846 MB/sec gc.alloc.rate.norm: 1364563432.000 B/op gc.count: 16.000 counts gc.time: 439.000 ms retainedBytes: 154986968.000 # Iteration 4: 2752.930 ms/op gc.alloc.rate: 472.668 MB/sec gc.alloc.rate.norm: 1364563432.000 B/op gc.count: 16.000 counts gc.time: 544.000 ms retainedBytes: 154695504.000 # Result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.retainedApproxAllDefaultsIndexBytes": N = 4 mean = 2600.499 ±(99.9%) 657.092 ms/op Histogram, ms/op: [2500.000, 2525.000) = 0 [2525.000, 2550.000) = 2 [2550.000, 2575.000) = 1 [2575.000, 2600.000) = 0 [2600.000, 2625.000) = 0 [2625.000, 2650.000) = 0 [2650.000, 2675.000) = 0 [2675.000, 2700.000) = 0 [2700.000, 2725.000) = 0 [2725.000, 2750.000) = 0 [2750.000, 2775.000) = 1 Percentiles, ms/op: p(0.0000) = 2547.031 ms/op p(50.0000) = 2551.017 ms/op p(90.0000) = 2752.930 ms/op p(95.0000) = 2752.930 ms/op p(99.0000) = 2752.930 ms/op p(99.9000) = 2752.930 ms/op p(99.9900) = 2752.930 ms/op p(99.9990) = 2752.930 ms/op p(99.9999) = 2752.930 ms/op p(100.0000) = 2752.930 ms/op Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.retainedApproxAllDefaultsIndexBytes:gc.alloc.rate": 500.932 ±(99.9%) 121.855 MB/sec [Average] (min, avg, max) = (472.668, 500.932, 510.887), stdev = 18.857 CI (99.9%): [379.078, 622.787] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.retainedApproxAllDefaultsIndexBytes:gc.alloc.rate.norm": 1364563436.000 ±(99.9%) 51.696 B/op [Average] (min, avg, max) = (1364563432.000, 1364563436.000, 1364563448.000), stdev = 8.000 CI (99.9%): [1364563384.304, 1364563487.696] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.retainedApproxAllDefaultsIndexBytes:gc.count": 64.000 ±(99.9%) 0.001 counts [Sum] (min, avg, max) = (16.000, 16.000, 16.000), stdev = 0.001 CI (99.9%): [64.000, 64.000] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.retainedApproxAllDefaultsIndexBytes:gc.time": 1840.000 ±(99.9%) 0.001 ms [Sum] (min, avg, max) = (421.000, 460.000, 544.000), stdev = 56.551 CI (99.9%): [1840.000, 1840.000] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.retainedApproxAllDefaultsIndexBytes:retainedBytes": 619095104.000 ±(99.9%) 0.001 # [Sum] (min, avg, max) = (154371000.000, 154773776.000, 155041632.000), stdev = 308519.409 CI (99.9%): [619095104.000, 619095104.000] (assumes normal distribution) # Run complete. Total time: 00:00:13 REMEMBER: The numbers below are just data. To gain reusable insights, you need to follow up on why the numbers are the way they are. Use profilers (see -prof, -lprof), design factorial experiments, perform baseline and negative tests that provide experimental control, make sure the benchmarking environment is safe on JVM/OS/HW level, ask for reviews from the domain experts. Do not assume the numbers tell you what you want them to tell. NOTE: Current JVM experimentally supports Compiler Blackholes, and they are in use. Please exercise extra caution when trusting the results, look into the generated code to check the benchmark still works, and factor in a small probability of new VM bugs. Additionally, while comparisons between different JVMs are already problematic, the performance difference caused by different Blackhole modes can be very significant. Please make sure you use the consistent Blackhole mode for comparisons. Benchmark (implementation) (itemCount) Mode Cnt Score Error Units LargeCatalogSearchBenchmark.retainedApproxAllDefaultsIndexBytes abahgat-suffix-tree 100000 ss 4 2600.499 ± 657.092 ms/op LargeCatalogSearchBenchmark.retainedApproxAllDefaultsIndexBytes:gc.alloc.rate abahgat-suffix-tree 100000 ss 4 500.932 ± 121.855 MB/sec LargeCatalogSearchBenchmark.retainedApproxAllDefaultsIndexBytes:gc.alloc.rate.norm abahgat-suffix-tree 100000 ss 4 1364563436.000 ± 51.696 B/op LargeCatalogSearchBenchmark.retainedApproxAllDefaultsIndexBytes:gc.count abahgat-suffix-tree 100000 ss 4 64.000 counts LargeCatalogSearchBenchmark.retainedApproxAllDefaultsIndexBytes:gc.time abahgat-suffix-tree 100000 ss 4 1840.000 ms LargeCatalogSearchBenchmark.retainedApproxAllDefaultsIndexBytes:retainedBytes abahgat-suffix-tree 100000 ss 4 619095104.000 # Benchmark result is saved to /build/reports/jmh/adaptive-jmh-passes/pass-01-group-012.json # Adaptive pass 1, group 13 # Command: java -cp /build/classes/java/benchmark:/build/resources/benchmark:/build/moddev/artifacts/vanilla-26.2-2.jar:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar:/modules-2/files-2.1/com.abahgat/suffixtree/2.0.0/ffe2c29796add2624d2e0b9f33e72421eb5c5ea5/suffixtree-2.0.0.jar:/modules-2/files-2.1/net.mezzdev/suffixtree/1.3.0/1a1b87af70a1631ff6d6c9d49c63564aadecb176/suffixtree-1.3.0.jar:/modules-2/files-2.1/net.mezzdev/baked-substring-index/0.1.0/4f9fbd9eb54fdb1b8ec40a83297f4e8f4479eb7c/baked-substring-index-0.1.0.jar:/modules-2/files-2.1/net.mezzdev/baked-suffix-array-index/0.1.0/cd5e5ffbcee030d149e7a5a70e151a06158bd643/baked-suffix-array-index-0.1.0.jar:/modules-2/files-2.1/net.neoforged/mergetool/2.0.7/793b18456e92c4a7f66d9b5d8bf7a9c1c7a20b20/mergetool-2.0.7-api.jar:/modules-2/files-2.1/net.sf.jopt-simple/jopt-simple/5.0.4/4fdac2fbe92dfad86aa6e9301736f6b4342a3f5c/jopt-simple-5.0.4.jar:/modules-2/files-2.1/org.apache.commons/commons-math3/3.6.1/e4ba98f1d4b3c80ec46392f25e094a6a2e58fcbf/commons-math3-3.6.1.jar:/modules-2/files-2.1/com.google.code.findbugs/jsr305/3.0.2/25ea2e8b0c338a877313bd4672d3fe056ea78f0d/jsr305-3.0.2.jar:/modules-2/files-2.1/org.jspecify/jspecify/1.0.0/7425a601c1c7ec76645a78d22b8c6a627edee507/jspecify-1.0.0.jar:/modules-2/files-2.1/org.jetbrains/annotations/26.0.2-1/c7ce3cdeda3d18909368dfe5977332dfad326c6d/annotations-26.0.2-1.jar:/modules-2/files-2.1/ca.weblite/java-objc-bridge/1.1/1227f9e0666314f9de41477e3ec277e542ed7f7b/java-objc-bridge-1.1.jar:/modules-2/files-2.1/at.yawk.lz4/lz4-java/1.10.1/f541d7f910fe3d76f38f799c507c48cc81b12ecb/lz4-java-1.10.1.jar:/modules-2/files-2.1/com.azure/azure-json/1.4.0/fcc1d354dbc3e0300e5276b1bf124d0247799cd8/azure-json-1.4.0.jar:/modules-2/files-2.1/com.github.oshi/oshi-core/6.9.0/3224870731860cfcd7744581a05b559e94291e7/oshi-core-6.9.0.jar:/modules-2/files-2.1/com.google.code.gson/gson/2.14.0/efc0e34ede4e3204eaefb84a00e55e8c86634382/gson-2.14.0.jar:/modules-2/files-2.1/com.google.guava/failureaccess/1.0.3/aeaffd00d57023a2c947393ed251f0354f0985fc/failureaccess-1.0.3.jar:/modules-2/files-2.1/com.google.guava/guava/33.6.0-jre/c376b13067cc99a5774403530953f7b05a91e218/guava-33.6.0-jre.jar:/modules-2/files-2.1/com.ibm.icu/icu4j/78.3/6a851a53bb1f25689fc418dcc8935b0d93580adf/icu4j-78.3.jar:/modules-2/files-2.1/com.microsoft.azure/msal4j/1.24.1/c233f2d047b9755f7041adf21a858c680e4c9242/msal4j-1.24.1.jar:/modules-2/files-2.1/com.mojang/authlib/9.0.75/d61056a234d5e4b272e09d59b0713f80d6c0b6af/authlib-9.0.75.jar:/modules-2/files-2.1/com.mojang/blocklist/1.0.10/5c685c5ffa94c4cd39496c7184c1d122e515ecef/blocklist-1.0.10.jar:/modules-2/files-2.1/com.mojang/brigadier/1.3.10/d15b53a14cf20fdcaa98f731af5dda654452c010/brigadier-1.3.10.jar:/modules-2/files-2.1/com.mojang/datafixerupper/10.0.21/b6b2ae770c02e0c1eb90f9985b151e9085a38d0b/datafixerupper-10.0.21.jar:/modules-2/files-2.1/com.mojang/jtracy/1.0.37/a3fb649b2e2b2288d2978f0b0bc3d83f62809d1e/jtracy-1.0.37.jar:/modules-2/files-2.1/com.mojang/jtracy/1.0.37/a99fcb63b72fb623534d0ceb71bda4bed9b55b4c/jtracy-1.0.37-natives-macos.jar:/modules-2/files-2.1/com.mojang/jtracy/1.0.37/c8e971da5150aa33283c5bf4097154c0da554fb9/jtracy-1.0.37-natives-macos-arm64.jar:/modules-2/files-2.1/com.mojang/logging/1.7.12/351cea64a5233361327d8d54c44277041beed97f/logging-1.7.12.jar:/modules-2/files-2.1/com.mojang/patchy/2.2.10/da05971b07cbb379d002cf7eaec6a2048211fefc/patchy-2.2.10.jar:/modules-2/files-2.1/com.mojang/text2speech/1.19.12/2e517a75c79d34d32de2b5d68422150836c2133e/text2speech-1.19.12.jar:/modules-2/files-2.1/commons-codec/commons-codec/1.22.0/6b3eb4beb7058c2a638f5f17bcb388649fd339dd/commons-codec-1.22.0.jar:/modules-2/files-2.1/commons-io/commons-io/2.20.0/36f3474daec2849c149e877614e7f979b2082cd2/commons-io-2.20.0.jar:/modules-2/files-2.1/io.netty/netty-buffer/4.2.15.Final/2beb620803bf871cda2dd5d46b8f831e8015dd34/netty-buffer-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-codec-base/4.2.15.Final/e97149fdd5fb04858efa90e314651c8d700dc68b/netty-codec-base-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-codec-compression/4.2.15.Final/89fc4a20b7ae6af974304b1695405e62c4f9b16d/netty-codec-compression-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-codec-http/4.2.15.Final/e611826aa054371bb9a17f27bdb05755a4cac5f0/netty-codec-http-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-common/4.2.15.Final/7222492c1af9c2d4d78d521eea340a619e242fda/netty-common-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-handler/4.2.15.Final/d5344afd1148e3b9927a74be019605ebb0937a93/netty-handler-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-resolver/4.2.15.Final/b961a16d379b508b473e064ba06842bba280f4e3/netty-resolver-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-transport-classes-epoll/4.2.15.Final/44bafba9c9993800e955b365bba4981326f3f3b1/netty-transport-classes-epoll-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-transport-classes-kqueue/4.2.15.Final/f248656bb907607c5a41c7b61fd918a97db79250/netty-transport-classes-kqueue-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-transport-native-unix-common/4.2.15.Final/efb6943b4de9e0226a5ac35330f232605424af02/netty-transport-native-unix-common-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-transport/4.2.15.Final/a000c3a6196ee40207b73ac619dcb339409dd62f/netty-transport-4.2.15.Final.jar:/modules-2/files-2.1/it.unimi.dsi/fastutil/8.5.18/a6cff377eecc19c2037bf31568a6d7106b50ba1f/fastutil-8.5.18.jar:/modules-2/files-2.1/net.java.dev.jna/jna-platform/5.17.0/a4934c44d25a9d8c2ddf4203affd20330cb3426f/jna-platform-5.17.0.jar:/modules-2/files-2.1/net.java.dev.jna/jna/5.17.0/33d12735bef894440780fce64f9758d420c7bae2/jna-5.17.0.jar:/modules-2/files-2.1/org.apache.commons/commons-compress/1.28.0/e482f2c7a88dac3c497e96aa420b6a769f59c8d7/commons-compress-1.28.0.jar:/modules-2/files-2.1/org.apache.commons/commons-lang3/3.20.0/65897b3e5731220962e659e001904af3c3cbeba9/commons-lang3-3.20.0.jar:/modules-2/files-2.1/org.apache.logging.log4j/log4j-api/2.26.0/ad52af0ecf054a7e3f275a2e180ee06d9c490951/log4j-api-2.26.0.jar:/modules-2/files-2.1/org.apache.logging.log4j/log4j-core/2.26.0/d267ca60b27ddb075e0b4e75e7875859717bf85f/log4j-core-2.26.0.jar:/modules-2/files-2.1/org.apache.logging.log4j/log4j-slf4j2-impl/2.26.0/668c0f0e813d83f00a7182533aa658ec7e7a0a0d/log4j-slf4j2-impl-2.26.0.jar:/modules-2/files-2.1/org.jcraft/jorbis/0.0.17/8872d22b293e8f5d7d56ff92be966e6dc28ebdc6/jorbis-0.0.17.jar:/modules-2/files-2.1/org.joml/joml/1.10.8/fc0a71dad90a2cf41d82a76156a0e700af8e4f8d/joml-1.10.8.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-freetype/3.4.1/caa75a37e857efc9b0686e434d708d6420c5b6ea/lwjgl-freetype-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-freetype/3.4.1/61cb2d85e1838bca1a0b664f54e818bc68deb2ef/lwjgl-freetype-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-freetype/3.4.1/cce5a86b4a7d17817fe8ea0296302a4353acf2d5/lwjgl-freetype-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-glfw/3.4.1/a782b1ddd175c9107bf300fd92920579ea65e2a4/lwjgl-glfw-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-glfw/3.4.1/3c8538942f58377d59cd7be2dc164ba71a53868a/lwjgl-glfw-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-glfw/3.4.1/ef1f8efca5a60ba3512bc4982b88e446ecc43378/lwjgl-glfw-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-jemalloc/3.4.1/16b663092854fc6adfe0a941e61cae2bb2e437b6/lwjgl-jemalloc-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-jemalloc/3.4.1/581b4d542e841015ce3265eed0495e2cde15b1d0/lwjgl-jemalloc-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-jemalloc/3.4.1/dcd7e3f9a2ca386e8c5b8f508a8511d9dd63bab0/lwjgl-jemalloc-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-openal/3.4.1/8508bd60589de0539aa465b78fcf838efd07ae9a/lwjgl-openal-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-openal/3.4.1/a4dc57b7b0880d3fffb4d0b61649f45712bccc93/lwjgl-openal-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-openal/3.4.1/1c709a38c4a0e86aae96db7b8c78432307f2322a/lwjgl-openal-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-opengl/3.4.1/830412cab823c029cda6b9729f9d2ed36cf79959/lwjgl-opengl-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-opengl/3.4.1/ba18fc6012b88494ee893506934b92b01c4ef14b/lwjgl-opengl-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-opengl/3.4.1/35b5550058de4960525f465243bd01805f04fd8b/lwjgl-opengl-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-shaderc/3.4.1/5c02c88f0d879529014c78463b76f43fdecfd272/lwjgl-shaderc-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-shaderc/3.4.1/1d7bbdba70cf29c42978f6c0c1bdef945b922072/lwjgl-shaderc-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-shaderc/3.4.1/48aa2727e8616154d399d4dab0d8e8479741fa4f/lwjgl-shaderc-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-spvc/3.4.1/188553592e97b5ab2dba54a1b403ee80b48dad4c/lwjgl-spvc-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-spvc/3.4.1/2eeebd6d5bae966bfffda9747eba744cfe839ae1/lwjgl-spvc-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-spvc/3.4.1/a4f66638d28129eba0babd8fdc4385427a5ea83e/lwjgl-spvc-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-stb/3.4.1/f077c3dafc31924fbe8acb0b913f08977ba27f8e/lwjgl-stb-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-stb/3.4.1/fd1ea36b717b0832babca09324a6cfc43906e2aa/lwjgl-stb-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-stb/3.4.1/da554e04f819f09b0f3473bd931628ebf557965e/lwjgl-stb-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-tinyfd/3.4.1/562697d40dbd2ed0424bf24dcf65d51170f81adf/lwjgl-tinyfd-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-tinyfd/3.4.1/211ae9e8720e8f10f2ce85a118fa7bd5ee71584b/lwjgl-tinyfd-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-tinyfd/3.4.1/7bcde70f6164b2e72f84cac5257b7e9877b88510/lwjgl-tinyfd-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vma/3.4.1/2c54ce10154feb1ede4d23c5947438cdbfdcc003/lwjgl-vma-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vma/3.4.1/a130a9e4f96c83063f749e1dcc7065e0dffb3936/lwjgl-vma-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vma/3.4.1/9451dc1067716bc4125cdba65a7096e465f4d0e5/lwjgl-vma-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vulkan/3.4.1/d0601fdc38890755e5638048c14cc0f7b990964b/lwjgl-vulkan-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vulkan/3.4.1/140c7fd3e0fdbcc625c92be9328301c555035905/lwjgl-vulkan-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vulkan/3.4.1/2c933bf617cb8a174af26585efda4778b59e6d44/lwjgl-vulkan-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl/3.4.1/129e06a04f93992cb2a45172435b21fc4b60dd7d/lwjgl-3.4.1-unsafe.jar:/modules-2/files-2.1/org.lwjgl/lwjgl/3.4.1/b034fd9a67cb8646c01af7efcefcb93be835542b/lwjgl-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl/3.4.1/b4cbdef4818abd714ee66985344c0949fd1cd6d6/lwjgl-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.slf4j/slf4j-api/2.0.17/d9e58ac9c7779ba3bf8142aff6c830617a7fe60f/slf4j-api-2.0.17.jar:/modules-2/files-2.1/org.ow2.asm/asm-util/9.5/64b5a1fc8c1b15ed2efd6a063e976bc8d3dc5ffe/asm-util-9.5.jar:/modules-2/files-2.1/org.ow2.asm/asm-analysis/9.5/490bacc77de7cbc0be1a30bb3471072d705be4a4/asm-analysis-9.5.jar:/modules-2/files-2.1/org.ow2.asm/asm-tree/9.5/fd33c8b6373abaa675be407082fdfda35021254a/asm-tree-9.5.jar:/modules-2/files-2.1/org.ow2.asm/asm/9.5/dc6ea1875f4d64fbc85e1691c95b96a3d8569c90/asm-9.5.jar:/modules-2/files-2.1/net.neoforged/srgutils/1.0.10/abb471237b33b19f040ada00bfbad1ec45b949b6/srgutils-1.0.10.jar:/modules-2/files-2.1/io.netty/netty-transport-native-kqueue/4.2.15.Final/8ea0ef3eb716d821332e4b4926825a4b7c1a6d38/netty-transport-native-kqueue-4.2.15.Final-osx-aarch_64.jar:/modules-2/files-2.1/io.netty/netty-transport-native-kqueue/4.2.15.Final/4245380831515fb4eca18d32477a27fbb8f7b8f4/netty-transport-native-kqueue-4.2.15.Final-osx-x86_64.jar:/build/classes/java/main:/build/resources/main org.openjdk.jmh.Main .*net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.retainedApproxAllDefaultsIndexBytes -p itemCount=100000 -p implementation=baked-substring-index -f 1 -wi 1 -i 4 -w 100ms -r 100ms -rf json -rff /build/reports/jmh/adaptive-jmh-passes/pass-01-group-013.json -o /build/reports/jmh/adaptive-jmh-passes/pass-01-group-013.txt -foe true -prof gc # JMH version: 1.37 # VM version: JDK 25, OpenJDK 64-Bit Server VM, 25+36-b176.4 # VM invoker: java # VM options: # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 1 iterations, 100 ms each # Measurement: 4 iterations, 100 ms each # Timeout: 10 min per iteration # Threads: 1 thread # Benchmark mode: Single shot invocation time # Benchmark: net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.retainedApproxAllDefaultsIndexBytes # Parameters: (implementation = baked-substring-index, itemCount = 100000) # Run progress: 0.00% complete, ETA 00:00:00 # Fork: 1 of 1 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::objectFieldOffset has been called by org.openjdk.jmh.util.Utils (file:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar) WARNING: Please consider reporting this to the maintainers of class org.openjdk.jmh.util.Utils WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release # Warmup Iteration 1: 2206.068 ms/op Iteration 1: 1971.100 ms/op gc.alloc.rate: 165.966 MB/sec gc.alloc.rate.norm: 343063808.000 B/op gc.count: 19.000 counts gc.time: 314.000 ms retainedBytes: 67703024.000 # Iteration 2: 1918.847 ms/op gc.alloc.rate: 170.487 MB/sec gc.alloc.rate.norm: 343063768.000 B/op gc.count: 19.000 counts gc.time: 323.000 ms retainedBytes: 67924352.000 # Iteration 3: 1913.558 ms/op gc.alloc.rate: 170.959 MB/sec gc.alloc.rate.norm: 343063768.000 B/op gc.count: 20.000 counts gc.time: 294.000 ms retainedBytes: 67920440.000 # Iteration 4: 2333.733 ms/op gc.alloc.rate: 140.177 MB/sec gc.alloc.rate.norm: 343063768.000 B/op gc.count: 22.000 counts gc.time: 377.000 ms retainedBytes: 68115888.000 # Result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.retainedApproxAllDefaultsIndexBytes": N = 4 mean = 2034.309 ±(99.9%) 1300.784 ms/op Histogram, ms/op: [1900.000, 1950.000) = 2 [1950.000, 2000.000) = 1 [2000.000, 2050.000) = 0 [2050.000, 2100.000) = 0 [2100.000, 2150.000) = 0 [2150.000, 2200.000) = 0 [2200.000, 2250.000) = 0 [2250.000, 2300.000) = 0 [2300.000, 2350.000) = 1 Percentiles, ms/op: p(0.0000) = 1913.558 ms/op p(50.0000) = 1944.973 ms/op p(90.0000) = 2333.733 ms/op p(95.0000) = 2333.733 ms/op p(99.0000) = 2333.733 ms/op p(99.9000) = 2333.733 ms/op p(99.9900) = 2333.733 ms/op p(99.9990) = 2333.733 ms/op p(99.9999) = 2333.733 ms/op p(100.0000) = 2333.733 ms/op Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.retainedApproxAllDefaultsIndexBytes:gc.alloc.rate": 161.897 ±(99.9%) 94.694 MB/sec [Average] (min, avg, max) = (140.177, 161.897, 170.959), stdev = 14.654 CI (99.9%): [67.203, 256.592] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.retainedApproxAllDefaultsIndexBytes:gc.alloc.rate.norm": 343063778.000 ±(99.9%) 129.240 B/op [Average] (min, avg, max) = (343063768.000, 343063778.000, 343063808.000), stdev = 20.000 CI (99.9%): [343063648.760, 343063907.240] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.retainedApproxAllDefaultsIndexBytes:gc.count": 80.000 ±(99.9%) 0.001 counts [Sum] (min, avg, max) = (19.000, 20.000, 22.000), stdev = 1.414 CI (99.9%): [80.000, 80.000] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.retainedApproxAllDefaultsIndexBytes:gc.time": 1308.000 ±(99.9%) 0.001 ms [Sum] (min, avg, max) = (294.000, 327.000, 377.000), stdev = 35.468 CI (99.9%): [1308.000, 1308.000] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.retainedApproxAllDefaultsIndexBytes:retainedBytes": 271663704.000 ±(99.9%) 0.001 # [Sum] (min, avg, max) = (67703024.000, 67915926.000, 68115888.000), stdev = 168724.071 CI (99.9%): [271663704.000, 271663704.000] (assumes normal distribution) # Run complete. Total time: 00:00:10 REMEMBER: The numbers below are just data. To gain reusable insights, you need to follow up on why the numbers are the way they are. Use profilers (see -prof, -lprof), design factorial experiments, perform baseline and negative tests that provide experimental control, make sure the benchmarking environment is safe on JVM/OS/HW level, ask for reviews from the domain experts. Do not assume the numbers tell you what you want them to tell. NOTE: Current JVM experimentally supports Compiler Blackholes, and they are in use. Please exercise extra caution when trusting the results, look into the generated code to check the benchmark still works, and factor in a small probability of new VM bugs. Additionally, while comparisons between different JVMs are already problematic, the performance difference caused by different Blackhole modes can be very significant. Please make sure you use the consistent Blackhole mode for comparisons. Benchmark (implementation) (itemCount) Mode Cnt Score Error Units LargeCatalogSearchBenchmark.retainedApproxAllDefaultsIndexBytes baked-substring-index 100000 ss 4 2034.309 ± 1300.784 ms/op LargeCatalogSearchBenchmark.retainedApproxAllDefaultsIndexBytes:gc.alloc.rate baked-substring-index 100000 ss 4 161.897 ± 94.694 MB/sec LargeCatalogSearchBenchmark.retainedApproxAllDefaultsIndexBytes:gc.alloc.rate.norm baked-substring-index 100000 ss 4 343063778.000 ± 129.240 B/op LargeCatalogSearchBenchmark.retainedApproxAllDefaultsIndexBytes:gc.count baked-substring-index 100000 ss 4 80.000 counts LargeCatalogSearchBenchmark.retainedApproxAllDefaultsIndexBytes:gc.time baked-substring-index 100000 ss 4 1308.000 ms LargeCatalogSearchBenchmark.retainedApproxAllDefaultsIndexBytes:retainedBytes baked-substring-index 100000 ss 4 271663704.000 # Benchmark result is saved to /build/reports/jmh/adaptive-jmh-passes/pass-01-group-013.json # Adaptive pass 1, group 14 # Command: java -cp /build/classes/java/benchmark:/build/resources/benchmark:/build/moddev/artifacts/vanilla-26.2-2.jar:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar:/modules-2/files-2.1/com.abahgat/suffixtree/2.0.0/ffe2c29796add2624d2e0b9f33e72421eb5c5ea5/suffixtree-2.0.0.jar:/modules-2/files-2.1/net.mezzdev/suffixtree/1.3.0/1a1b87af70a1631ff6d6c9d49c63564aadecb176/suffixtree-1.3.0.jar:/modules-2/files-2.1/net.mezzdev/baked-substring-index/0.1.0/4f9fbd9eb54fdb1b8ec40a83297f4e8f4479eb7c/baked-substring-index-0.1.0.jar:/modules-2/files-2.1/net.mezzdev/baked-suffix-array-index/0.1.0/cd5e5ffbcee030d149e7a5a70e151a06158bd643/baked-suffix-array-index-0.1.0.jar:/modules-2/files-2.1/net.neoforged/mergetool/2.0.7/793b18456e92c4a7f66d9b5d8bf7a9c1c7a20b20/mergetool-2.0.7-api.jar:/modules-2/files-2.1/net.sf.jopt-simple/jopt-simple/5.0.4/4fdac2fbe92dfad86aa6e9301736f6b4342a3f5c/jopt-simple-5.0.4.jar:/modules-2/files-2.1/org.apache.commons/commons-math3/3.6.1/e4ba98f1d4b3c80ec46392f25e094a6a2e58fcbf/commons-math3-3.6.1.jar:/modules-2/files-2.1/com.google.code.findbugs/jsr305/3.0.2/25ea2e8b0c338a877313bd4672d3fe056ea78f0d/jsr305-3.0.2.jar:/modules-2/files-2.1/org.jspecify/jspecify/1.0.0/7425a601c1c7ec76645a78d22b8c6a627edee507/jspecify-1.0.0.jar:/modules-2/files-2.1/org.jetbrains/annotations/26.0.2-1/c7ce3cdeda3d18909368dfe5977332dfad326c6d/annotations-26.0.2-1.jar:/modules-2/files-2.1/ca.weblite/java-objc-bridge/1.1/1227f9e0666314f9de41477e3ec277e542ed7f7b/java-objc-bridge-1.1.jar:/modules-2/files-2.1/at.yawk.lz4/lz4-java/1.10.1/f541d7f910fe3d76f38f799c507c48cc81b12ecb/lz4-java-1.10.1.jar:/modules-2/files-2.1/com.azure/azure-json/1.4.0/fcc1d354dbc3e0300e5276b1bf124d0247799cd8/azure-json-1.4.0.jar:/modules-2/files-2.1/com.github.oshi/oshi-core/6.9.0/3224870731860cfcd7744581a05b559e94291e7/oshi-core-6.9.0.jar:/modules-2/files-2.1/com.google.code.gson/gson/2.14.0/efc0e34ede4e3204eaefb84a00e55e8c86634382/gson-2.14.0.jar:/modules-2/files-2.1/com.google.guava/failureaccess/1.0.3/aeaffd00d57023a2c947393ed251f0354f0985fc/failureaccess-1.0.3.jar:/modules-2/files-2.1/com.google.guava/guava/33.6.0-jre/c376b13067cc99a5774403530953f7b05a91e218/guava-33.6.0-jre.jar:/modules-2/files-2.1/com.ibm.icu/icu4j/78.3/6a851a53bb1f25689fc418dcc8935b0d93580adf/icu4j-78.3.jar:/modules-2/files-2.1/com.microsoft.azure/msal4j/1.24.1/c233f2d047b9755f7041adf21a858c680e4c9242/msal4j-1.24.1.jar:/modules-2/files-2.1/com.mojang/authlib/9.0.75/d61056a234d5e4b272e09d59b0713f80d6c0b6af/authlib-9.0.75.jar:/modules-2/files-2.1/com.mojang/blocklist/1.0.10/5c685c5ffa94c4cd39496c7184c1d122e515ecef/blocklist-1.0.10.jar:/modules-2/files-2.1/com.mojang/brigadier/1.3.10/d15b53a14cf20fdcaa98f731af5dda654452c010/brigadier-1.3.10.jar:/modules-2/files-2.1/com.mojang/datafixerupper/10.0.21/b6b2ae770c02e0c1eb90f9985b151e9085a38d0b/datafixerupper-10.0.21.jar:/modules-2/files-2.1/com.mojang/jtracy/1.0.37/a3fb649b2e2b2288d2978f0b0bc3d83f62809d1e/jtracy-1.0.37.jar:/modules-2/files-2.1/com.mojang/jtracy/1.0.37/a99fcb63b72fb623534d0ceb71bda4bed9b55b4c/jtracy-1.0.37-natives-macos.jar:/modules-2/files-2.1/com.mojang/jtracy/1.0.37/c8e971da5150aa33283c5bf4097154c0da554fb9/jtracy-1.0.37-natives-macos-arm64.jar:/modules-2/files-2.1/com.mojang/logging/1.7.12/351cea64a5233361327d8d54c44277041beed97f/logging-1.7.12.jar:/modules-2/files-2.1/com.mojang/patchy/2.2.10/da05971b07cbb379d002cf7eaec6a2048211fefc/patchy-2.2.10.jar:/modules-2/files-2.1/com.mojang/text2speech/1.19.12/2e517a75c79d34d32de2b5d68422150836c2133e/text2speech-1.19.12.jar:/modules-2/files-2.1/commons-codec/commons-codec/1.22.0/6b3eb4beb7058c2a638f5f17bcb388649fd339dd/commons-codec-1.22.0.jar:/modules-2/files-2.1/commons-io/commons-io/2.20.0/36f3474daec2849c149e877614e7f979b2082cd2/commons-io-2.20.0.jar:/modules-2/files-2.1/io.netty/netty-buffer/4.2.15.Final/2beb620803bf871cda2dd5d46b8f831e8015dd34/netty-buffer-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-codec-base/4.2.15.Final/e97149fdd5fb04858efa90e314651c8d700dc68b/netty-codec-base-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-codec-compression/4.2.15.Final/89fc4a20b7ae6af974304b1695405e62c4f9b16d/netty-codec-compression-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-codec-http/4.2.15.Final/e611826aa054371bb9a17f27bdb05755a4cac5f0/netty-codec-http-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-common/4.2.15.Final/7222492c1af9c2d4d78d521eea340a619e242fda/netty-common-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-handler/4.2.15.Final/d5344afd1148e3b9927a74be019605ebb0937a93/netty-handler-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-resolver/4.2.15.Final/b961a16d379b508b473e064ba06842bba280f4e3/netty-resolver-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-transport-classes-epoll/4.2.15.Final/44bafba9c9993800e955b365bba4981326f3f3b1/netty-transport-classes-epoll-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-transport-classes-kqueue/4.2.15.Final/f248656bb907607c5a41c7b61fd918a97db79250/netty-transport-classes-kqueue-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-transport-native-unix-common/4.2.15.Final/efb6943b4de9e0226a5ac35330f232605424af02/netty-transport-native-unix-common-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-transport/4.2.15.Final/a000c3a6196ee40207b73ac619dcb339409dd62f/netty-transport-4.2.15.Final.jar:/modules-2/files-2.1/it.unimi.dsi/fastutil/8.5.18/a6cff377eecc19c2037bf31568a6d7106b50ba1f/fastutil-8.5.18.jar:/modules-2/files-2.1/net.java.dev.jna/jna-platform/5.17.0/a4934c44d25a9d8c2ddf4203affd20330cb3426f/jna-platform-5.17.0.jar:/modules-2/files-2.1/net.java.dev.jna/jna/5.17.0/33d12735bef894440780fce64f9758d420c7bae2/jna-5.17.0.jar:/modules-2/files-2.1/org.apache.commons/commons-compress/1.28.0/e482f2c7a88dac3c497e96aa420b6a769f59c8d7/commons-compress-1.28.0.jar:/modules-2/files-2.1/org.apache.commons/commons-lang3/3.20.0/65897b3e5731220962e659e001904af3c3cbeba9/commons-lang3-3.20.0.jar:/modules-2/files-2.1/org.apache.logging.log4j/log4j-api/2.26.0/ad52af0ecf054a7e3f275a2e180ee06d9c490951/log4j-api-2.26.0.jar:/modules-2/files-2.1/org.apache.logging.log4j/log4j-core/2.26.0/d267ca60b27ddb075e0b4e75e7875859717bf85f/log4j-core-2.26.0.jar:/modules-2/files-2.1/org.apache.logging.log4j/log4j-slf4j2-impl/2.26.0/668c0f0e813d83f00a7182533aa658ec7e7a0a0d/log4j-slf4j2-impl-2.26.0.jar:/modules-2/files-2.1/org.jcraft/jorbis/0.0.17/8872d22b293e8f5d7d56ff92be966e6dc28ebdc6/jorbis-0.0.17.jar:/modules-2/files-2.1/org.joml/joml/1.10.8/fc0a71dad90a2cf41d82a76156a0e700af8e4f8d/joml-1.10.8.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-freetype/3.4.1/caa75a37e857efc9b0686e434d708d6420c5b6ea/lwjgl-freetype-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-freetype/3.4.1/61cb2d85e1838bca1a0b664f54e818bc68deb2ef/lwjgl-freetype-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-freetype/3.4.1/cce5a86b4a7d17817fe8ea0296302a4353acf2d5/lwjgl-freetype-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-glfw/3.4.1/a782b1ddd175c9107bf300fd92920579ea65e2a4/lwjgl-glfw-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-glfw/3.4.1/3c8538942f58377d59cd7be2dc164ba71a53868a/lwjgl-glfw-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-glfw/3.4.1/ef1f8efca5a60ba3512bc4982b88e446ecc43378/lwjgl-glfw-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-jemalloc/3.4.1/16b663092854fc6adfe0a941e61cae2bb2e437b6/lwjgl-jemalloc-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-jemalloc/3.4.1/581b4d542e841015ce3265eed0495e2cde15b1d0/lwjgl-jemalloc-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-jemalloc/3.4.1/dcd7e3f9a2ca386e8c5b8f508a8511d9dd63bab0/lwjgl-jemalloc-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-openal/3.4.1/8508bd60589de0539aa465b78fcf838efd07ae9a/lwjgl-openal-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-openal/3.4.1/a4dc57b7b0880d3fffb4d0b61649f45712bccc93/lwjgl-openal-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-openal/3.4.1/1c709a38c4a0e86aae96db7b8c78432307f2322a/lwjgl-openal-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-opengl/3.4.1/830412cab823c029cda6b9729f9d2ed36cf79959/lwjgl-opengl-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-opengl/3.4.1/ba18fc6012b88494ee893506934b92b01c4ef14b/lwjgl-opengl-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-opengl/3.4.1/35b5550058de4960525f465243bd01805f04fd8b/lwjgl-opengl-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-shaderc/3.4.1/5c02c88f0d879529014c78463b76f43fdecfd272/lwjgl-shaderc-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-shaderc/3.4.1/1d7bbdba70cf29c42978f6c0c1bdef945b922072/lwjgl-shaderc-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-shaderc/3.4.1/48aa2727e8616154d399d4dab0d8e8479741fa4f/lwjgl-shaderc-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-spvc/3.4.1/188553592e97b5ab2dba54a1b403ee80b48dad4c/lwjgl-spvc-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-spvc/3.4.1/2eeebd6d5bae966bfffda9747eba744cfe839ae1/lwjgl-spvc-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-spvc/3.4.1/a4f66638d28129eba0babd8fdc4385427a5ea83e/lwjgl-spvc-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-stb/3.4.1/f077c3dafc31924fbe8acb0b913f08977ba27f8e/lwjgl-stb-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-stb/3.4.1/fd1ea36b717b0832babca09324a6cfc43906e2aa/lwjgl-stb-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-stb/3.4.1/da554e04f819f09b0f3473bd931628ebf557965e/lwjgl-stb-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-tinyfd/3.4.1/562697d40dbd2ed0424bf24dcf65d51170f81adf/lwjgl-tinyfd-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-tinyfd/3.4.1/211ae9e8720e8f10f2ce85a118fa7bd5ee71584b/lwjgl-tinyfd-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-tinyfd/3.4.1/7bcde70f6164b2e72f84cac5257b7e9877b88510/lwjgl-tinyfd-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vma/3.4.1/2c54ce10154feb1ede4d23c5947438cdbfdcc003/lwjgl-vma-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vma/3.4.1/a130a9e4f96c83063f749e1dcc7065e0dffb3936/lwjgl-vma-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vma/3.4.1/9451dc1067716bc4125cdba65a7096e465f4d0e5/lwjgl-vma-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vulkan/3.4.1/d0601fdc38890755e5638048c14cc0f7b990964b/lwjgl-vulkan-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vulkan/3.4.1/140c7fd3e0fdbcc625c92be9328301c555035905/lwjgl-vulkan-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vulkan/3.4.1/2c933bf617cb8a174af26585efda4778b59e6d44/lwjgl-vulkan-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl/3.4.1/129e06a04f93992cb2a45172435b21fc4b60dd7d/lwjgl-3.4.1-unsafe.jar:/modules-2/files-2.1/org.lwjgl/lwjgl/3.4.1/b034fd9a67cb8646c01af7efcefcb93be835542b/lwjgl-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl/3.4.1/b4cbdef4818abd714ee66985344c0949fd1cd6d6/lwjgl-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.slf4j/slf4j-api/2.0.17/d9e58ac9c7779ba3bf8142aff6c830617a7fe60f/slf4j-api-2.0.17.jar:/modules-2/files-2.1/org.ow2.asm/asm-util/9.5/64b5a1fc8c1b15ed2efd6a063e976bc8d3dc5ffe/asm-util-9.5.jar:/modules-2/files-2.1/org.ow2.asm/asm-analysis/9.5/490bacc77de7cbc0be1a30bb3471072d705be4a4/asm-analysis-9.5.jar:/modules-2/files-2.1/org.ow2.asm/asm-tree/9.5/fd33c8b6373abaa675be407082fdfda35021254a/asm-tree-9.5.jar:/modules-2/files-2.1/org.ow2.asm/asm/9.5/dc6ea1875f4d64fbc85e1691c95b96a3d8569c90/asm-9.5.jar:/modules-2/files-2.1/net.neoforged/srgutils/1.0.10/abb471237b33b19f040ada00bfbad1ec45b949b6/srgutils-1.0.10.jar:/modules-2/files-2.1/io.netty/netty-transport-native-kqueue/4.2.15.Final/8ea0ef3eb716d821332e4b4926825a4b7c1a6d38/netty-transport-native-kqueue-4.2.15.Final-osx-aarch_64.jar:/modules-2/files-2.1/io.netty/netty-transport-native-kqueue/4.2.15.Final/4245380831515fb4eca18d32477a27fbb8f7b8f4/netty-transport-native-kqueue-4.2.15.Final-osx-x86_64.jar:/build/classes/java/main:/build/resources/main org.openjdk.jmh.Main .*net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.retainedApproxAllDefaultsIndexBytes -p itemCount=100000 -p implementation=baked-suffix-array-index -f 1 -wi 1 -i 4 -w 100ms -r 100ms -rf json -rff /build/reports/jmh/adaptive-jmh-passes/pass-01-group-014.json -o /build/reports/jmh/adaptive-jmh-passes/pass-01-group-014.txt -foe true -prof gc # JMH version: 1.37 # VM version: JDK 25, OpenJDK 64-Bit Server VM, 25+36-b176.4 # VM invoker: java # VM options: # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 1 iterations, 100 ms each # Measurement: 4 iterations, 100 ms each # Timeout: 10 min per iteration # Threads: 1 thread # Benchmark mode: Single shot invocation time # Benchmark: net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.retainedApproxAllDefaultsIndexBytes # Parameters: (implementation = baked-suffix-array-index, itemCount = 100000) # Run progress: 0.00% complete, ETA 00:00:00 # Fork: 1 of 1 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::objectFieldOffset has been called by org.openjdk.jmh.util.Utils (file:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar) WARNING: Please consider reporting this to the maintainers of class org.openjdk.jmh.util.Utils WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release # Warmup Iteration 1: 3675.055 ms/op Iteration 1: 3745.671 ms/op gc.alloc.rate: 58.105 MB/sec gc.alloc.rate.norm: 228228824.000 B/op gc.count: 14.000 counts gc.time: 282.000 ms retainedBytes: 92274736.000 # Iteration 2: 4101.721 ms/op gc.alloc.rate: 53.061 MB/sec gc.alloc.rate.norm: 228228808.000 B/op gc.count: 16.000 counts gc.time: 261.000 ms retainedBytes: 92274736.000 # Iteration 3: 4159.152 ms/op gc.alloc.rate: 52.329 MB/sec gc.alloc.rate.norm: 228228776.000 B/op gc.count: 14.000 counts gc.time: 273.000 ms retainedBytes: 92274736.000 # Iteration 4: 4071.902 ms/op gc.alloc.rate: 53.450 MB/sec gc.alloc.rate.norm: 228228776.000 B/op gc.count: 16.000 counts gc.time: 251.000 ms retainedBytes: 92274736.000 # Result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.retainedApproxAllDefaultsIndexBytes": N = 4 mean = 4019.612 ±(99.9%) 1203.106 ms/op Histogram, ms/op: [3700.000, 3750.000) = 1 [3750.000, 3800.000) = 0 [3800.000, 3850.000) = 0 [3850.000, 3900.000) = 0 [3900.000, 3950.000) = 0 [3950.000, 4000.000) = 0 [4000.000, 4050.000) = 0 [4050.000, 4100.000) = 1 [4100.000, 4150.000) = 1 Percentiles, ms/op: p(0.0000) = 3745.671 ms/op p(50.0000) = 4086.812 ms/op p(90.0000) = 4159.152 ms/op p(95.0000) = 4159.152 ms/op p(99.0000) = 4159.152 ms/op p(99.9000) = 4159.152 ms/op p(99.9900) = 4159.152 ms/op p(99.9990) = 4159.152 ms/op p(99.9999) = 4159.152 ms/op p(100.0000) = 4159.152 ms/op Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.retainedApproxAllDefaultsIndexBytes:gc.alloc.rate": 54.236 ±(99.9%) 16.935 MB/sec [Average] (min, avg, max) = (52.329, 54.236, 58.105), stdev = 2.621 CI (99.9%): [37.301, 71.171] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.retainedApproxAllDefaultsIndexBytes:gc.alloc.rate.norm": 228228796.000 ±(99.9%) 155.088 B/op [Average] (min, avg, max) = (228228776.000, 228228796.000, 228228824.000), stdev = 24.000 CI (99.9%): [228228640.912, 228228951.088] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.retainedApproxAllDefaultsIndexBytes:gc.count": 60.000 ±(99.9%) 0.001 counts [Sum] (min, avg, max) = (14.000, 15.000, 16.000), stdev = 1.155 CI (99.9%): [60.000, 60.000] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.retainedApproxAllDefaultsIndexBytes:gc.time": 1067.000 ±(99.9%) 0.001 ms [Sum] (min, avg, max) = (251.000, 266.750, 282.000), stdev = 13.574 CI (99.9%): [1067.000, 1067.000] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.retainedApproxAllDefaultsIndexBytes:retainedBytes": 369098944.000 ±(99.9%) 0.001 # [Sum] (min, avg, max) = (92274736.000, 92274736.000, 92274736.000), stdev = 0.001 CI (99.9%): [369098944.000, 369098944.000] (assumes normal distribution) # Run complete. Total time: 00:00:20 REMEMBER: The numbers below are just data. To gain reusable insights, you need to follow up on why the numbers are the way they are. Use profilers (see -prof, -lprof), design factorial experiments, perform baseline and negative tests that provide experimental control, make sure the benchmarking environment is safe on JVM/OS/HW level, ask for reviews from the domain experts. Do not assume the numbers tell you what you want them to tell. NOTE: Current JVM experimentally supports Compiler Blackholes, and they are in use. Please exercise extra caution when trusting the results, look into the generated code to check the benchmark still works, and factor in a small probability of new VM bugs. Additionally, while comparisons between different JVMs are already problematic, the performance difference caused by different Blackhole modes can be very significant. Please make sure you use the consistent Blackhole mode for comparisons. Benchmark (implementation) (itemCount) Mode Cnt Score Error Units LargeCatalogSearchBenchmark.retainedApproxAllDefaultsIndexBytes baked-suffix-array-index 100000 ss 4 4019.612 ± 1203.106 ms/op LargeCatalogSearchBenchmark.retainedApproxAllDefaultsIndexBytes:gc.alloc.rate baked-suffix-array-index 100000 ss 4 54.236 ± 16.935 MB/sec LargeCatalogSearchBenchmark.retainedApproxAllDefaultsIndexBytes:gc.alloc.rate.norm baked-suffix-array-index 100000 ss 4 228228796.000 ± 155.088 B/op LargeCatalogSearchBenchmark.retainedApproxAllDefaultsIndexBytes:gc.count baked-suffix-array-index 100000 ss 4 60.000 counts LargeCatalogSearchBenchmark.retainedApproxAllDefaultsIndexBytes:gc.time baked-suffix-array-index 100000 ss 4 1067.000 ms LargeCatalogSearchBenchmark.retainedApproxAllDefaultsIndexBytes:retainedBytes baked-suffix-array-index 100000 ss 4 369098944.000 # Benchmark result is saved to /build/reports/jmh/adaptive-jmh-passes/pass-01-group-014.json # Adaptive pass 1, group 15 # Command: java -cp /build/classes/java/benchmark:/build/resources/benchmark:/build/moddev/artifacts/vanilla-26.2-2.jar:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar:/modules-2/files-2.1/com.abahgat/suffixtree/2.0.0/ffe2c29796add2624d2e0b9f33e72421eb5c5ea5/suffixtree-2.0.0.jar:/modules-2/files-2.1/net.mezzdev/suffixtree/1.3.0/1a1b87af70a1631ff6d6c9d49c63564aadecb176/suffixtree-1.3.0.jar:/modules-2/files-2.1/net.mezzdev/baked-substring-index/0.1.0/4f9fbd9eb54fdb1b8ec40a83297f4e8f4479eb7c/baked-substring-index-0.1.0.jar:/modules-2/files-2.1/net.mezzdev/baked-suffix-array-index/0.1.0/cd5e5ffbcee030d149e7a5a70e151a06158bd643/baked-suffix-array-index-0.1.0.jar:/modules-2/files-2.1/net.neoforged/mergetool/2.0.7/793b18456e92c4a7f66d9b5d8bf7a9c1c7a20b20/mergetool-2.0.7-api.jar:/modules-2/files-2.1/net.sf.jopt-simple/jopt-simple/5.0.4/4fdac2fbe92dfad86aa6e9301736f6b4342a3f5c/jopt-simple-5.0.4.jar:/modules-2/files-2.1/org.apache.commons/commons-math3/3.6.1/e4ba98f1d4b3c80ec46392f25e094a6a2e58fcbf/commons-math3-3.6.1.jar:/modules-2/files-2.1/com.google.code.findbugs/jsr305/3.0.2/25ea2e8b0c338a877313bd4672d3fe056ea78f0d/jsr305-3.0.2.jar:/modules-2/files-2.1/org.jspecify/jspecify/1.0.0/7425a601c1c7ec76645a78d22b8c6a627edee507/jspecify-1.0.0.jar:/modules-2/files-2.1/org.jetbrains/annotations/26.0.2-1/c7ce3cdeda3d18909368dfe5977332dfad326c6d/annotations-26.0.2-1.jar:/modules-2/files-2.1/ca.weblite/java-objc-bridge/1.1/1227f9e0666314f9de41477e3ec277e542ed7f7b/java-objc-bridge-1.1.jar:/modules-2/files-2.1/at.yawk.lz4/lz4-java/1.10.1/f541d7f910fe3d76f38f799c507c48cc81b12ecb/lz4-java-1.10.1.jar:/modules-2/files-2.1/com.azure/azure-json/1.4.0/fcc1d354dbc3e0300e5276b1bf124d0247799cd8/azure-json-1.4.0.jar:/modules-2/files-2.1/com.github.oshi/oshi-core/6.9.0/3224870731860cfcd7744581a05b559e94291e7/oshi-core-6.9.0.jar:/modules-2/files-2.1/com.google.code.gson/gson/2.14.0/efc0e34ede4e3204eaefb84a00e55e8c86634382/gson-2.14.0.jar:/modules-2/files-2.1/com.google.guava/failureaccess/1.0.3/aeaffd00d57023a2c947393ed251f0354f0985fc/failureaccess-1.0.3.jar:/modules-2/files-2.1/com.google.guava/guava/33.6.0-jre/c376b13067cc99a5774403530953f7b05a91e218/guava-33.6.0-jre.jar:/modules-2/files-2.1/com.ibm.icu/icu4j/78.3/6a851a53bb1f25689fc418dcc8935b0d93580adf/icu4j-78.3.jar:/modules-2/files-2.1/com.microsoft.azure/msal4j/1.24.1/c233f2d047b9755f7041adf21a858c680e4c9242/msal4j-1.24.1.jar:/modules-2/files-2.1/com.mojang/authlib/9.0.75/d61056a234d5e4b272e09d59b0713f80d6c0b6af/authlib-9.0.75.jar:/modules-2/files-2.1/com.mojang/blocklist/1.0.10/5c685c5ffa94c4cd39496c7184c1d122e515ecef/blocklist-1.0.10.jar:/modules-2/files-2.1/com.mojang/brigadier/1.3.10/d15b53a14cf20fdcaa98f731af5dda654452c010/brigadier-1.3.10.jar:/modules-2/files-2.1/com.mojang/datafixerupper/10.0.21/b6b2ae770c02e0c1eb90f9985b151e9085a38d0b/datafixerupper-10.0.21.jar:/modules-2/files-2.1/com.mojang/jtracy/1.0.37/a3fb649b2e2b2288d2978f0b0bc3d83f62809d1e/jtracy-1.0.37.jar:/modules-2/files-2.1/com.mojang/jtracy/1.0.37/a99fcb63b72fb623534d0ceb71bda4bed9b55b4c/jtracy-1.0.37-natives-macos.jar:/modules-2/files-2.1/com.mojang/jtracy/1.0.37/c8e971da5150aa33283c5bf4097154c0da554fb9/jtracy-1.0.37-natives-macos-arm64.jar:/modules-2/files-2.1/com.mojang/logging/1.7.12/351cea64a5233361327d8d54c44277041beed97f/logging-1.7.12.jar:/modules-2/files-2.1/com.mojang/patchy/2.2.10/da05971b07cbb379d002cf7eaec6a2048211fefc/patchy-2.2.10.jar:/modules-2/files-2.1/com.mojang/text2speech/1.19.12/2e517a75c79d34d32de2b5d68422150836c2133e/text2speech-1.19.12.jar:/modules-2/files-2.1/commons-codec/commons-codec/1.22.0/6b3eb4beb7058c2a638f5f17bcb388649fd339dd/commons-codec-1.22.0.jar:/modules-2/files-2.1/commons-io/commons-io/2.20.0/36f3474daec2849c149e877614e7f979b2082cd2/commons-io-2.20.0.jar:/modules-2/files-2.1/io.netty/netty-buffer/4.2.15.Final/2beb620803bf871cda2dd5d46b8f831e8015dd34/netty-buffer-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-codec-base/4.2.15.Final/e97149fdd5fb04858efa90e314651c8d700dc68b/netty-codec-base-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-codec-compression/4.2.15.Final/89fc4a20b7ae6af974304b1695405e62c4f9b16d/netty-codec-compression-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-codec-http/4.2.15.Final/e611826aa054371bb9a17f27bdb05755a4cac5f0/netty-codec-http-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-common/4.2.15.Final/7222492c1af9c2d4d78d521eea340a619e242fda/netty-common-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-handler/4.2.15.Final/d5344afd1148e3b9927a74be019605ebb0937a93/netty-handler-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-resolver/4.2.15.Final/b961a16d379b508b473e064ba06842bba280f4e3/netty-resolver-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-transport-classes-epoll/4.2.15.Final/44bafba9c9993800e955b365bba4981326f3f3b1/netty-transport-classes-epoll-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-transport-classes-kqueue/4.2.15.Final/f248656bb907607c5a41c7b61fd918a97db79250/netty-transport-classes-kqueue-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-transport-native-unix-common/4.2.15.Final/efb6943b4de9e0226a5ac35330f232605424af02/netty-transport-native-unix-common-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-transport/4.2.15.Final/a000c3a6196ee40207b73ac619dcb339409dd62f/netty-transport-4.2.15.Final.jar:/modules-2/files-2.1/it.unimi.dsi/fastutil/8.5.18/a6cff377eecc19c2037bf31568a6d7106b50ba1f/fastutil-8.5.18.jar:/modules-2/files-2.1/net.java.dev.jna/jna-platform/5.17.0/a4934c44d25a9d8c2ddf4203affd20330cb3426f/jna-platform-5.17.0.jar:/modules-2/files-2.1/net.java.dev.jna/jna/5.17.0/33d12735bef894440780fce64f9758d420c7bae2/jna-5.17.0.jar:/modules-2/files-2.1/org.apache.commons/commons-compress/1.28.0/e482f2c7a88dac3c497e96aa420b6a769f59c8d7/commons-compress-1.28.0.jar:/modules-2/files-2.1/org.apache.commons/commons-lang3/3.20.0/65897b3e5731220962e659e001904af3c3cbeba9/commons-lang3-3.20.0.jar:/modules-2/files-2.1/org.apache.logging.log4j/log4j-api/2.26.0/ad52af0ecf054a7e3f275a2e180ee06d9c490951/log4j-api-2.26.0.jar:/modules-2/files-2.1/org.apache.logging.log4j/log4j-core/2.26.0/d267ca60b27ddb075e0b4e75e7875859717bf85f/log4j-core-2.26.0.jar:/modules-2/files-2.1/org.apache.logging.log4j/log4j-slf4j2-impl/2.26.0/668c0f0e813d83f00a7182533aa658ec7e7a0a0d/log4j-slf4j2-impl-2.26.0.jar:/modules-2/files-2.1/org.jcraft/jorbis/0.0.17/8872d22b293e8f5d7d56ff92be966e6dc28ebdc6/jorbis-0.0.17.jar:/modules-2/files-2.1/org.joml/joml/1.10.8/fc0a71dad90a2cf41d82a76156a0e700af8e4f8d/joml-1.10.8.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-freetype/3.4.1/caa75a37e857efc9b0686e434d708d6420c5b6ea/lwjgl-freetype-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-freetype/3.4.1/61cb2d85e1838bca1a0b664f54e818bc68deb2ef/lwjgl-freetype-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-freetype/3.4.1/cce5a86b4a7d17817fe8ea0296302a4353acf2d5/lwjgl-freetype-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-glfw/3.4.1/a782b1ddd175c9107bf300fd92920579ea65e2a4/lwjgl-glfw-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-glfw/3.4.1/3c8538942f58377d59cd7be2dc164ba71a53868a/lwjgl-glfw-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-glfw/3.4.1/ef1f8efca5a60ba3512bc4982b88e446ecc43378/lwjgl-glfw-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-jemalloc/3.4.1/16b663092854fc6adfe0a941e61cae2bb2e437b6/lwjgl-jemalloc-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-jemalloc/3.4.1/581b4d542e841015ce3265eed0495e2cde15b1d0/lwjgl-jemalloc-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-jemalloc/3.4.1/dcd7e3f9a2ca386e8c5b8f508a8511d9dd63bab0/lwjgl-jemalloc-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-openal/3.4.1/8508bd60589de0539aa465b78fcf838efd07ae9a/lwjgl-openal-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-openal/3.4.1/a4dc57b7b0880d3fffb4d0b61649f45712bccc93/lwjgl-openal-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-openal/3.4.1/1c709a38c4a0e86aae96db7b8c78432307f2322a/lwjgl-openal-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-opengl/3.4.1/830412cab823c029cda6b9729f9d2ed36cf79959/lwjgl-opengl-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-opengl/3.4.1/ba18fc6012b88494ee893506934b92b01c4ef14b/lwjgl-opengl-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-opengl/3.4.1/35b5550058de4960525f465243bd01805f04fd8b/lwjgl-opengl-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-shaderc/3.4.1/5c02c88f0d879529014c78463b76f43fdecfd272/lwjgl-shaderc-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-shaderc/3.4.1/1d7bbdba70cf29c42978f6c0c1bdef945b922072/lwjgl-shaderc-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-shaderc/3.4.1/48aa2727e8616154d399d4dab0d8e8479741fa4f/lwjgl-shaderc-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-spvc/3.4.1/188553592e97b5ab2dba54a1b403ee80b48dad4c/lwjgl-spvc-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-spvc/3.4.1/2eeebd6d5bae966bfffda9747eba744cfe839ae1/lwjgl-spvc-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-spvc/3.4.1/a4f66638d28129eba0babd8fdc4385427a5ea83e/lwjgl-spvc-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-stb/3.4.1/f077c3dafc31924fbe8acb0b913f08977ba27f8e/lwjgl-stb-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-stb/3.4.1/fd1ea36b717b0832babca09324a6cfc43906e2aa/lwjgl-stb-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-stb/3.4.1/da554e04f819f09b0f3473bd931628ebf557965e/lwjgl-stb-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-tinyfd/3.4.1/562697d40dbd2ed0424bf24dcf65d51170f81adf/lwjgl-tinyfd-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-tinyfd/3.4.1/211ae9e8720e8f10f2ce85a118fa7bd5ee71584b/lwjgl-tinyfd-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-tinyfd/3.4.1/7bcde70f6164b2e72f84cac5257b7e9877b88510/lwjgl-tinyfd-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vma/3.4.1/2c54ce10154feb1ede4d23c5947438cdbfdcc003/lwjgl-vma-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vma/3.4.1/a130a9e4f96c83063f749e1dcc7065e0dffb3936/lwjgl-vma-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vma/3.4.1/9451dc1067716bc4125cdba65a7096e465f4d0e5/lwjgl-vma-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vulkan/3.4.1/d0601fdc38890755e5638048c14cc0f7b990964b/lwjgl-vulkan-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vulkan/3.4.1/140c7fd3e0fdbcc625c92be9328301c555035905/lwjgl-vulkan-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vulkan/3.4.1/2c933bf617cb8a174af26585efda4778b59e6d44/lwjgl-vulkan-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl/3.4.1/129e06a04f93992cb2a45172435b21fc4b60dd7d/lwjgl-3.4.1-unsafe.jar:/modules-2/files-2.1/org.lwjgl/lwjgl/3.4.1/b034fd9a67cb8646c01af7efcefcb93be835542b/lwjgl-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl/3.4.1/b4cbdef4818abd714ee66985344c0949fd1cd6d6/lwjgl-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.slf4j/slf4j-api/2.0.17/d9e58ac9c7779ba3bf8142aff6c830617a7fe60f/slf4j-api-2.0.17.jar:/modules-2/files-2.1/org.ow2.asm/asm-util/9.5/64b5a1fc8c1b15ed2efd6a063e976bc8d3dc5ffe/asm-util-9.5.jar:/modules-2/files-2.1/org.ow2.asm/asm-analysis/9.5/490bacc77de7cbc0be1a30bb3471072d705be4a4/asm-analysis-9.5.jar:/modules-2/files-2.1/org.ow2.asm/asm-tree/9.5/fd33c8b6373abaa675be407082fdfda35021254a/asm-tree-9.5.jar:/modules-2/files-2.1/org.ow2.asm/asm/9.5/dc6ea1875f4d64fbc85e1691c95b96a3d8569c90/asm-9.5.jar:/modules-2/files-2.1/net.neoforged/srgutils/1.0.10/abb471237b33b19f040ada00bfbad1ec45b949b6/srgutils-1.0.10.jar:/modules-2/files-2.1/io.netty/netty-transport-native-kqueue/4.2.15.Final/8ea0ef3eb716d821332e4b4926825a4b7c1a6d38/netty-transport-native-kqueue-4.2.15.Final-osx-aarch_64.jar:/modules-2/files-2.1/io.netty/netty-transport-native-kqueue/4.2.15.Final/4245380831515fb4eca18d32477a27fbb8f7b8f4/netty-transport-native-kqueue-4.2.15.Final-osx-x86_64.jar:/build/classes/java/main:/build/resources/main org.openjdk.jmh.Main .*net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.retainedApproxAllDefaultsIndexBytes -p itemCount=100000 -p implementation=minecraft-suffix-array -f 1 -wi 1 -i 4 -w 100ms -r 100ms -rf json -rff /build/reports/jmh/adaptive-jmh-passes/pass-01-group-015.json -o /build/reports/jmh/adaptive-jmh-passes/pass-01-group-015.txt -foe true -prof gc # JMH version: 1.37 # VM version: JDK 25, OpenJDK 64-Bit Server VM, 25+36-b176.4 # VM invoker: java # VM options: # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 1 iterations, 100 ms each # Measurement: 4 iterations, 100 ms each # Timeout: 10 min per iteration # Threads: 1 thread # Benchmark mode: Single shot invocation time # Benchmark: net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.retainedApproxAllDefaultsIndexBytes # Parameters: (implementation = minecraft-suffix-array, itemCount = 100000) # Run progress: 0.00% complete, ETA 00:00:00 # Fork: 1 of 1 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::objectFieldOffset has been called by org.openjdk.jmh.util.Utils (file:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar) WARNING: Please consider reporting this to the maintainers of class org.openjdk.jmh.util.Utils WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release # Warmup Iteration 1: 5575.501 ms/op Iteration 1: 5406.162 ms/op gc.alloc.rate: 93.351 MB/sec gc.alloc.rate.norm: 529208240.000 B/op gc.count: 17.000 counts gc.time: 272.000 ms retainedBytes: 113246384.000 # Iteration 2: 5085.427 ms/op gc.alloc.rate: 99.238 MB/sec gc.alloc.rate.norm: 529208224.000 B/op gc.count: 17.000 counts gc.time: 280.000 ms retainedBytes: 113246384.000 # Iteration 3: 5125.838 ms/op gc.alloc.rate: 98.455 MB/sec gc.alloc.rate.norm: 529208224.000 B/op gc.count: 17.000 counts gc.time: 276.000 ms retainedBytes: 113246384.000 # Iteration 4: 5103.214 ms/op gc.alloc.rate: 98.891 MB/sec gc.alloc.rate.norm: 529208224.000 B/op gc.count: 17.000 counts gc.time: 294.000 ms retainedBytes: 113246384.000 # Result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.retainedApproxAllDefaultsIndexBytes": N = 4 mean = 5180.160 ±(99.9%) 979.461 ms/op Histogram, ms/op: [5000.000, 5050.000) = 0 [5050.000, 5100.000) = 1 [5100.000, 5150.000) = 2 [5150.000, 5200.000) = 0 [5200.000, 5250.000) = 0 [5250.000, 5300.000) = 0 [5300.000, 5350.000) = 0 [5350.000, 5400.000) = 0 [5400.000, 5450.000) = 1 Percentiles, ms/op: p(0.0000) = 5085.427 ms/op p(50.0000) = 5114.526 ms/op p(90.0000) = 5406.162 ms/op p(95.0000) = 5406.162 ms/op p(99.0000) = 5406.162 ms/op p(99.9000) = 5406.162 ms/op p(99.9900) = 5406.162 ms/op p(99.9990) = 5406.162 ms/op p(99.9999) = 5406.162 ms/op p(100.0000) = 5406.162 ms/op Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.retainedApproxAllDefaultsIndexBytes:gc.alloc.rate": 97.484 ±(99.9%) 17.924 MB/sec [Average] (min, avg, max) = (93.351, 97.484, 99.238), stdev = 2.774 CI (99.9%): [79.560, 115.408] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.retainedApproxAllDefaultsIndexBytes:gc.alloc.rate.norm": 529208228.000 ±(99.9%) 51.696 B/op [Average] (min, avg, max) = (529208224.000, 529208228.000, 529208240.000), stdev = 8.000 CI (99.9%): [529208176.304, 529208279.696] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.retainedApproxAllDefaultsIndexBytes:gc.count": 68.000 ±(99.9%) 0.001 counts [Sum] (min, avg, max) = (17.000, 17.000, 17.000), stdev = 0.001 CI (99.9%): [68.000, 68.000] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.retainedApproxAllDefaultsIndexBytes:gc.time": 1122.000 ±(99.9%) 0.001 ms [Sum] (min, avg, max) = (272.000, 280.500, 294.000), stdev = 9.574 CI (99.9%): [1122.000, 1122.000] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.retainedApproxAllDefaultsIndexBytes:retainedBytes": 452985536.000 ±(99.9%) 0.001 # [Sum] (min, avg, max) = (113246384.000, 113246384.000, 113246384.000), stdev = 0.001 CI (99.9%): [452985536.000, 452985536.000] (assumes normal distribution) # Run complete. Total time: 00:00:26 REMEMBER: The numbers below are just data. To gain reusable insights, you need to follow up on why the numbers are the way they are. Use profilers (see -prof, -lprof), design factorial experiments, perform baseline and negative tests that provide experimental control, make sure the benchmarking environment is safe on JVM/OS/HW level, ask for reviews from the domain experts. Do not assume the numbers tell you what you want them to tell. NOTE: Current JVM experimentally supports Compiler Blackholes, and they are in use. Please exercise extra caution when trusting the results, look into the generated code to check the benchmark still works, and factor in a small probability of new VM bugs. Additionally, while comparisons between different JVMs are already problematic, the performance difference caused by different Blackhole modes can be very significant. Please make sure you use the consistent Blackhole mode for comparisons. Benchmark (implementation) (itemCount) Mode Cnt Score Error Units LargeCatalogSearchBenchmark.retainedApproxAllDefaultsIndexBytes minecraft-suffix-array 100000 ss 4 5180.160 ± 979.461 ms/op LargeCatalogSearchBenchmark.retainedApproxAllDefaultsIndexBytes:gc.alloc.rate minecraft-suffix-array 100000 ss 4 97.484 ± 17.924 MB/sec LargeCatalogSearchBenchmark.retainedApproxAllDefaultsIndexBytes:gc.alloc.rate.norm minecraft-suffix-array 100000 ss 4 529208228.000 ± 51.696 B/op LargeCatalogSearchBenchmark.retainedApproxAllDefaultsIndexBytes:gc.count minecraft-suffix-array 100000 ss 4 68.000 counts LargeCatalogSearchBenchmark.retainedApproxAllDefaultsIndexBytes:gc.time minecraft-suffix-array 100000 ss 4 1122.000 ms LargeCatalogSearchBenchmark.retainedApproxAllDefaultsIndexBytes:retainedBytes minecraft-suffix-array 100000 ss 4 452985536.000 # Benchmark result is saved to /build/reports/jmh/adaptive-jmh-passes/pass-01-group-015.json # Adaptive pass 2, group 1 # Command: java -cp /build/classes/java/benchmark:/build/resources/benchmark:/build/moddev/artifacts/vanilla-26.2-2.jar:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar:/modules-2/files-2.1/com.abahgat/suffixtree/2.0.0/ffe2c29796add2624d2e0b9f33e72421eb5c5ea5/suffixtree-2.0.0.jar:/modules-2/files-2.1/net.mezzdev/suffixtree/1.3.0/1a1b87af70a1631ff6d6c9d49c63564aadecb176/suffixtree-1.3.0.jar:/modules-2/files-2.1/net.mezzdev/baked-substring-index/0.1.0/4f9fbd9eb54fdb1b8ec40a83297f4e8f4479eb7c/baked-substring-index-0.1.0.jar:/modules-2/files-2.1/net.mezzdev/baked-suffix-array-index/0.1.0/cd5e5ffbcee030d149e7a5a70e151a06158bd643/baked-suffix-array-index-0.1.0.jar:/modules-2/files-2.1/net.neoforged/mergetool/2.0.7/793b18456e92c4a7f66d9b5d8bf7a9c1c7a20b20/mergetool-2.0.7-api.jar:/modules-2/files-2.1/net.sf.jopt-simple/jopt-simple/5.0.4/4fdac2fbe92dfad86aa6e9301736f6b4342a3f5c/jopt-simple-5.0.4.jar:/modules-2/files-2.1/org.apache.commons/commons-math3/3.6.1/e4ba98f1d4b3c80ec46392f25e094a6a2e58fcbf/commons-math3-3.6.1.jar:/modules-2/files-2.1/com.google.code.findbugs/jsr305/3.0.2/25ea2e8b0c338a877313bd4672d3fe056ea78f0d/jsr305-3.0.2.jar:/modules-2/files-2.1/org.jspecify/jspecify/1.0.0/7425a601c1c7ec76645a78d22b8c6a627edee507/jspecify-1.0.0.jar:/modules-2/files-2.1/org.jetbrains/annotations/26.0.2-1/c7ce3cdeda3d18909368dfe5977332dfad326c6d/annotations-26.0.2-1.jar:/modules-2/files-2.1/ca.weblite/java-objc-bridge/1.1/1227f9e0666314f9de41477e3ec277e542ed7f7b/java-objc-bridge-1.1.jar:/modules-2/files-2.1/at.yawk.lz4/lz4-java/1.10.1/f541d7f910fe3d76f38f799c507c48cc81b12ecb/lz4-java-1.10.1.jar:/modules-2/files-2.1/com.azure/azure-json/1.4.0/fcc1d354dbc3e0300e5276b1bf124d0247799cd8/azure-json-1.4.0.jar:/modules-2/files-2.1/com.github.oshi/oshi-core/6.9.0/3224870731860cfcd7744581a05b559e94291e7/oshi-core-6.9.0.jar:/modules-2/files-2.1/com.google.code.gson/gson/2.14.0/efc0e34ede4e3204eaefb84a00e55e8c86634382/gson-2.14.0.jar:/modules-2/files-2.1/com.google.guava/failureaccess/1.0.3/aeaffd00d57023a2c947393ed251f0354f0985fc/failureaccess-1.0.3.jar:/modules-2/files-2.1/com.google.guava/guava/33.6.0-jre/c376b13067cc99a5774403530953f7b05a91e218/guava-33.6.0-jre.jar:/modules-2/files-2.1/com.ibm.icu/icu4j/78.3/6a851a53bb1f25689fc418dcc8935b0d93580adf/icu4j-78.3.jar:/modules-2/files-2.1/com.microsoft.azure/msal4j/1.24.1/c233f2d047b9755f7041adf21a858c680e4c9242/msal4j-1.24.1.jar:/modules-2/files-2.1/com.mojang/authlib/9.0.75/d61056a234d5e4b272e09d59b0713f80d6c0b6af/authlib-9.0.75.jar:/modules-2/files-2.1/com.mojang/blocklist/1.0.10/5c685c5ffa94c4cd39496c7184c1d122e515ecef/blocklist-1.0.10.jar:/modules-2/files-2.1/com.mojang/brigadier/1.3.10/d15b53a14cf20fdcaa98f731af5dda654452c010/brigadier-1.3.10.jar:/modules-2/files-2.1/com.mojang/datafixerupper/10.0.21/b6b2ae770c02e0c1eb90f9985b151e9085a38d0b/datafixerupper-10.0.21.jar:/modules-2/files-2.1/com.mojang/jtracy/1.0.37/a3fb649b2e2b2288d2978f0b0bc3d83f62809d1e/jtracy-1.0.37.jar:/modules-2/files-2.1/com.mojang/jtracy/1.0.37/a99fcb63b72fb623534d0ceb71bda4bed9b55b4c/jtracy-1.0.37-natives-macos.jar:/modules-2/files-2.1/com.mojang/jtracy/1.0.37/c8e971da5150aa33283c5bf4097154c0da554fb9/jtracy-1.0.37-natives-macos-arm64.jar:/modules-2/files-2.1/com.mojang/logging/1.7.12/351cea64a5233361327d8d54c44277041beed97f/logging-1.7.12.jar:/modules-2/files-2.1/com.mojang/patchy/2.2.10/da05971b07cbb379d002cf7eaec6a2048211fefc/patchy-2.2.10.jar:/modules-2/files-2.1/com.mojang/text2speech/1.19.12/2e517a75c79d34d32de2b5d68422150836c2133e/text2speech-1.19.12.jar:/modules-2/files-2.1/commons-codec/commons-codec/1.22.0/6b3eb4beb7058c2a638f5f17bcb388649fd339dd/commons-codec-1.22.0.jar:/modules-2/files-2.1/commons-io/commons-io/2.20.0/36f3474daec2849c149e877614e7f979b2082cd2/commons-io-2.20.0.jar:/modules-2/files-2.1/io.netty/netty-buffer/4.2.15.Final/2beb620803bf871cda2dd5d46b8f831e8015dd34/netty-buffer-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-codec-base/4.2.15.Final/e97149fdd5fb04858efa90e314651c8d700dc68b/netty-codec-base-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-codec-compression/4.2.15.Final/89fc4a20b7ae6af974304b1695405e62c4f9b16d/netty-codec-compression-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-codec-http/4.2.15.Final/e611826aa054371bb9a17f27bdb05755a4cac5f0/netty-codec-http-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-common/4.2.15.Final/7222492c1af9c2d4d78d521eea340a619e242fda/netty-common-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-handler/4.2.15.Final/d5344afd1148e3b9927a74be019605ebb0937a93/netty-handler-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-resolver/4.2.15.Final/b961a16d379b508b473e064ba06842bba280f4e3/netty-resolver-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-transport-classes-epoll/4.2.15.Final/44bafba9c9993800e955b365bba4981326f3f3b1/netty-transport-classes-epoll-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-transport-classes-kqueue/4.2.15.Final/f248656bb907607c5a41c7b61fd918a97db79250/netty-transport-classes-kqueue-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-transport-native-unix-common/4.2.15.Final/efb6943b4de9e0226a5ac35330f232605424af02/netty-transport-native-unix-common-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-transport/4.2.15.Final/a000c3a6196ee40207b73ac619dcb339409dd62f/netty-transport-4.2.15.Final.jar:/modules-2/files-2.1/it.unimi.dsi/fastutil/8.5.18/a6cff377eecc19c2037bf31568a6d7106b50ba1f/fastutil-8.5.18.jar:/modules-2/files-2.1/net.java.dev.jna/jna-platform/5.17.0/a4934c44d25a9d8c2ddf4203affd20330cb3426f/jna-platform-5.17.0.jar:/modules-2/files-2.1/net.java.dev.jna/jna/5.17.0/33d12735bef894440780fce64f9758d420c7bae2/jna-5.17.0.jar:/modules-2/files-2.1/org.apache.commons/commons-compress/1.28.0/e482f2c7a88dac3c497e96aa420b6a769f59c8d7/commons-compress-1.28.0.jar:/modules-2/files-2.1/org.apache.commons/commons-lang3/3.20.0/65897b3e5731220962e659e001904af3c3cbeba9/commons-lang3-3.20.0.jar:/modules-2/files-2.1/org.apache.logging.log4j/log4j-api/2.26.0/ad52af0ecf054a7e3f275a2e180ee06d9c490951/log4j-api-2.26.0.jar:/modules-2/files-2.1/org.apache.logging.log4j/log4j-core/2.26.0/d267ca60b27ddb075e0b4e75e7875859717bf85f/log4j-core-2.26.0.jar:/modules-2/files-2.1/org.apache.logging.log4j/log4j-slf4j2-impl/2.26.0/668c0f0e813d83f00a7182533aa658ec7e7a0a0d/log4j-slf4j2-impl-2.26.0.jar:/modules-2/files-2.1/org.jcraft/jorbis/0.0.17/8872d22b293e8f5d7d56ff92be966e6dc28ebdc6/jorbis-0.0.17.jar:/modules-2/files-2.1/org.joml/joml/1.10.8/fc0a71dad90a2cf41d82a76156a0e700af8e4f8d/joml-1.10.8.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-freetype/3.4.1/caa75a37e857efc9b0686e434d708d6420c5b6ea/lwjgl-freetype-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-freetype/3.4.1/61cb2d85e1838bca1a0b664f54e818bc68deb2ef/lwjgl-freetype-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-freetype/3.4.1/cce5a86b4a7d17817fe8ea0296302a4353acf2d5/lwjgl-freetype-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-glfw/3.4.1/a782b1ddd175c9107bf300fd92920579ea65e2a4/lwjgl-glfw-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-glfw/3.4.1/3c8538942f58377d59cd7be2dc164ba71a53868a/lwjgl-glfw-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-glfw/3.4.1/ef1f8efca5a60ba3512bc4982b88e446ecc43378/lwjgl-glfw-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-jemalloc/3.4.1/16b663092854fc6adfe0a941e61cae2bb2e437b6/lwjgl-jemalloc-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-jemalloc/3.4.1/581b4d542e841015ce3265eed0495e2cde15b1d0/lwjgl-jemalloc-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-jemalloc/3.4.1/dcd7e3f9a2ca386e8c5b8f508a8511d9dd63bab0/lwjgl-jemalloc-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-openal/3.4.1/8508bd60589de0539aa465b78fcf838efd07ae9a/lwjgl-openal-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-openal/3.4.1/a4dc57b7b0880d3fffb4d0b61649f45712bccc93/lwjgl-openal-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-openal/3.4.1/1c709a38c4a0e86aae96db7b8c78432307f2322a/lwjgl-openal-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-opengl/3.4.1/830412cab823c029cda6b9729f9d2ed36cf79959/lwjgl-opengl-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-opengl/3.4.1/ba18fc6012b88494ee893506934b92b01c4ef14b/lwjgl-opengl-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-opengl/3.4.1/35b5550058de4960525f465243bd01805f04fd8b/lwjgl-opengl-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-shaderc/3.4.1/5c02c88f0d879529014c78463b76f43fdecfd272/lwjgl-shaderc-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-shaderc/3.4.1/1d7bbdba70cf29c42978f6c0c1bdef945b922072/lwjgl-shaderc-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-shaderc/3.4.1/48aa2727e8616154d399d4dab0d8e8479741fa4f/lwjgl-shaderc-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-spvc/3.4.1/188553592e97b5ab2dba54a1b403ee80b48dad4c/lwjgl-spvc-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-spvc/3.4.1/2eeebd6d5bae966bfffda9747eba744cfe839ae1/lwjgl-spvc-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-spvc/3.4.1/a4f66638d28129eba0babd8fdc4385427a5ea83e/lwjgl-spvc-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-stb/3.4.1/f077c3dafc31924fbe8acb0b913f08977ba27f8e/lwjgl-stb-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-stb/3.4.1/fd1ea36b717b0832babca09324a6cfc43906e2aa/lwjgl-stb-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-stb/3.4.1/da554e04f819f09b0f3473bd931628ebf557965e/lwjgl-stb-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-tinyfd/3.4.1/562697d40dbd2ed0424bf24dcf65d51170f81adf/lwjgl-tinyfd-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-tinyfd/3.4.1/211ae9e8720e8f10f2ce85a118fa7bd5ee71584b/lwjgl-tinyfd-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-tinyfd/3.4.1/7bcde70f6164b2e72f84cac5257b7e9877b88510/lwjgl-tinyfd-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vma/3.4.1/2c54ce10154feb1ede4d23c5947438cdbfdcc003/lwjgl-vma-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vma/3.4.1/a130a9e4f96c83063f749e1dcc7065e0dffb3936/lwjgl-vma-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vma/3.4.1/9451dc1067716bc4125cdba65a7096e465f4d0e5/lwjgl-vma-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vulkan/3.4.1/d0601fdc38890755e5638048c14cc0f7b990964b/lwjgl-vulkan-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vulkan/3.4.1/140c7fd3e0fdbcc625c92be9328301c555035905/lwjgl-vulkan-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vulkan/3.4.1/2c933bf617cb8a174af26585efda4778b59e6d44/lwjgl-vulkan-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl/3.4.1/129e06a04f93992cb2a45172435b21fc4b60dd7d/lwjgl-3.4.1-unsafe.jar:/modules-2/files-2.1/org.lwjgl/lwjgl/3.4.1/b034fd9a67cb8646c01af7efcefcb93be835542b/lwjgl-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl/3.4.1/b4cbdef4818abd714ee66985344c0949fd1cd6d6/lwjgl-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.slf4j/slf4j-api/2.0.17/d9e58ac9c7779ba3bf8142aff6c830617a7fe60f/slf4j-api-2.0.17.jar:/modules-2/files-2.1/org.ow2.asm/asm-util/9.5/64b5a1fc8c1b15ed2efd6a063e976bc8d3dc5ffe/asm-util-9.5.jar:/modules-2/files-2.1/org.ow2.asm/asm-analysis/9.5/490bacc77de7cbc0be1a30bb3471072d705be4a4/asm-analysis-9.5.jar:/modules-2/files-2.1/org.ow2.asm/asm-tree/9.5/fd33c8b6373abaa675be407082fdfda35021254a/asm-tree-9.5.jar:/modules-2/files-2.1/org.ow2.asm/asm/9.5/dc6ea1875f4d64fbc85e1691c95b96a3d8569c90/asm-9.5.jar:/modules-2/files-2.1/net.neoforged/srgutils/1.0.10/abb471237b33b19f040ada00bfbad1ec45b949b6/srgutils-1.0.10.jar:/modules-2/files-2.1/io.netty/netty-transport-native-kqueue/4.2.15.Final/8ea0ef3eb716d821332e4b4926825a4b7c1a6d38/netty-transport-native-kqueue-4.2.15.Final-osx-aarch_64.jar:/modules-2/files-2.1/io.netty/netty-transport-native-kqueue/4.2.15.Final/4245380831515fb4eca18d32477a27fbb8f7b8f4/netty-transport-native-kqueue-4.2.15.Final-osx-x86_64.jar:/build/classes/java/main:/build/resources/main org.openjdk.jmh.Main .*net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.buildAllDefaultsIndex -p itemCount=100000 -p implementation=generalized-suffix-tree -f 1 -wi 1 -i 6 -w 200ms -r 200ms -rf json -rff /build/reports/jmh/adaptive-jmh-passes/pass-02-group-001.json -o /build/reports/jmh/adaptive-jmh-passes/pass-02-group-001.txt -foe true -prof gc # JMH version: 1.37 # VM version: JDK 25, OpenJDK 64-Bit Server VM, 25+36-b176.4 # VM invoker: java # VM options: # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 1 iterations, 200 ms each # Measurement: 6 iterations, 200 ms each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.buildAllDefaultsIndex # Parameters: (implementation = generalized-suffix-tree, itemCount = 100000) # Run progress: 0.00% complete, ETA 00:00:01 # Fork: 1 of 1 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::objectFieldOffset has been called by org.openjdk.jmh.util.Utils (file:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar) WARNING: Please consider reporting this to the maintainers of class org.openjdk.jmh.util.Utils WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release # Warmup Iteration 1: 916.096 ms/op Iteration 1: 675.184 ms/op gc.alloc.rate: 421.380 MB/sec gc.alloc.rate.norm: 298443360.000 B/op gc.count: 2.000 counts gc.time: 39.000 ms Iteration 2: 727.290 ms/op gc.alloc.rate: 391.038 MB/sec gc.alloc.rate.norm: 298443376.000 B/op gc.count: 2.000 counts gc.time: ≈ 0 ms Iteration 3: 672.210 ms/op gc.alloc.rate: 423.262 MB/sec gc.alloc.rate.norm: 298443344.000 B/op gc.count: 1.000 counts gc.time: 20.000 ms Iteration 4: 701.680 ms/op gc.alloc.rate: 405.530 MB/sec gc.alloc.rate.norm: 298443344.000 B/op gc.count: 1.000 counts gc.time: 46.000 ms Iteration 5: 667.468 ms/op gc.alloc.rate: 426.314 MB/sec gc.alloc.rate.norm: 298443376.000 B/op gc.count: 1.000 counts gc.time: 38.000 ms Iteration 6: 732.102 ms/op gc.alloc.rate: 388.662 MB/sec gc.alloc.rate.norm: 298443376.000 B/op gc.count: 4.000 counts gc.time: 65.000 ms Result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.buildAllDefaultsIndex": 695.989 ±(99.9%) 80.573 ms/op [Average] (min, avg, max) = (667.468, 695.989, 732.102), stdev = 28.733 CI (99.9%): [615.416, 776.562] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.buildAllDefaultsIndex:gc.alloc.rate": 409.364 ±(99.9%) 46.989 MB/sec [Average] (min, avg, max) = (388.662, 409.364, 426.314), stdev = 16.757 CI (99.9%): [362.375, 456.354] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.buildAllDefaultsIndex:gc.alloc.rate.norm": 298443362.667 ±(99.9%) 44.113 B/op [Average] (min, avg, max) = (298443344.000, 298443362.667, 298443376.000), stdev = 15.731 CI (99.9%): [298443318.554, 298443406.780] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.buildAllDefaultsIndex:gc.count": 11.000 ±(99.9%) 0.001 counts [Sum] (min, avg, max) = (1.000, 1.833, 4.000), stdev = 1.169 CI (99.9%): [11.000, 11.000] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.buildAllDefaultsIndex:gc.time": 208.000 ±(99.9%) 0.001 ms [Sum] (min, avg, max) = (≈ 0, 34.667, 65.000), stdev = 22.340 CI (99.9%): [208.000, 208.000] (assumes normal distribution) # Run complete. Total time: 00:00:05 REMEMBER: The numbers below are just data. To gain reusable insights, you need to follow up on why the numbers are the way they are. Use profilers (see -prof, -lprof), design factorial experiments, perform baseline and negative tests that provide experimental control, make sure the benchmarking environment is safe on JVM/OS/HW level, ask for reviews from the domain experts. Do not assume the numbers tell you what you want them to tell. NOTE: Current JVM experimentally supports Compiler Blackholes, and they are in use. Please exercise extra caution when trusting the results, look into the generated code to check the benchmark still works, and factor in a small probability of new VM bugs. Additionally, while comparisons between different JVMs are already problematic, the performance difference caused by different Blackhole modes can be very significant. Please make sure you use the consistent Blackhole mode for comparisons. Benchmark (implementation) (itemCount) Mode Cnt Score Error Units LargeCatalogSearchBenchmark.buildAllDefaultsIndex generalized-suffix-tree 100000 avgt 6 695.989 ± 80.573 ms/op LargeCatalogSearchBenchmark.buildAllDefaultsIndex:gc.alloc.rate generalized-suffix-tree 100000 avgt 6 409.364 ± 46.989 MB/sec LargeCatalogSearchBenchmark.buildAllDefaultsIndex:gc.alloc.rate.norm generalized-suffix-tree 100000 avgt 6 298443362.667 ± 44.113 B/op LargeCatalogSearchBenchmark.buildAllDefaultsIndex:gc.count generalized-suffix-tree 100000 avgt 6 11.000 counts LargeCatalogSearchBenchmark.buildAllDefaultsIndex:gc.time generalized-suffix-tree 100000 avgt 6 208.000 ms Benchmark result is saved to /build/reports/jmh/adaptive-jmh-passes/pass-02-group-001.json # Adaptive pass 2, group 2 # Command: java -cp /build/classes/java/benchmark:/build/resources/benchmark:/build/moddev/artifacts/vanilla-26.2-2.jar:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar:/modules-2/files-2.1/com.abahgat/suffixtree/2.0.0/ffe2c29796add2624d2e0b9f33e72421eb5c5ea5/suffixtree-2.0.0.jar:/modules-2/files-2.1/net.mezzdev/suffixtree/1.3.0/1a1b87af70a1631ff6d6c9d49c63564aadecb176/suffixtree-1.3.0.jar:/modules-2/files-2.1/net.mezzdev/baked-substring-index/0.1.0/4f9fbd9eb54fdb1b8ec40a83297f4e8f4479eb7c/baked-substring-index-0.1.0.jar:/modules-2/files-2.1/net.mezzdev/baked-suffix-array-index/0.1.0/cd5e5ffbcee030d149e7a5a70e151a06158bd643/baked-suffix-array-index-0.1.0.jar:/modules-2/files-2.1/net.neoforged/mergetool/2.0.7/793b18456e92c4a7f66d9b5d8bf7a9c1c7a20b20/mergetool-2.0.7-api.jar:/modules-2/files-2.1/net.sf.jopt-simple/jopt-simple/5.0.4/4fdac2fbe92dfad86aa6e9301736f6b4342a3f5c/jopt-simple-5.0.4.jar:/modules-2/files-2.1/org.apache.commons/commons-math3/3.6.1/e4ba98f1d4b3c80ec46392f25e094a6a2e58fcbf/commons-math3-3.6.1.jar:/modules-2/files-2.1/com.google.code.findbugs/jsr305/3.0.2/25ea2e8b0c338a877313bd4672d3fe056ea78f0d/jsr305-3.0.2.jar:/modules-2/files-2.1/org.jspecify/jspecify/1.0.0/7425a601c1c7ec76645a78d22b8c6a627edee507/jspecify-1.0.0.jar:/modules-2/files-2.1/org.jetbrains/annotations/26.0.2-1/c7ce3cdeda3d18909368dfe5977332dfad326c6d/annotations-26.0.2-1.jar:/modules-2/files-2.1/ca.weblite/java-objc-bridge/1.1/1227f9e0666314f9de41477e3ec277e542ed7f7b/java-objc-bridge-1.1.jar:/modules-2/files-2.1/at.yawk.lz4/lz4-java/1.10.1/f541d7f910fe3d76f38f799c507c48cc81b12ecb/lz4-java-1.10.1.jar:/modules-2/files-2.1/com.azure/azure-json/1.4.0/fcc1d354dbc3e0300e5276b1bf124d0247799cd8/azure-json-1.4.0.jar:/modules-2/files-2.1/com.github.oshi/oshi-core/6.9.0/3224870731860cfcd7744581a05b559e94291e7/oshi-core-6.9.0.jar:/modules-2/files-2.1/com.google.code.gson/gson/2.14.0/efc0e34ede4e3204eaefb84a00e55e8c86634382/gson-2.14.0.jar:/modules-2/files-2.1/com.google.guava/failureaccess/1.0.3/aeaffd00d57023a2c947393ed251f0354f0985fc/failureaccess-1.0.3.jar:/modules-2/files-2.1/com.google.guava/guava/33.6.0-jre/c376b13067cc99a5774403530953f7b05a91e218/guava-33.6.0-jre.jar:/modules-2/files-2.1/com.ibm.icu/icu4j/78.3/6a851a53bb1f25689fc418dcc8935b0d93580adf/icu4j-78.3.jar:/modules-2/files-2.1/com.microsoft.azure/msal4j/1.24.1/c233f2d047b9755f7041adf21a858c680e4c9242/msal4j-1.24.1.jar:/modules-2/files-2.1/com.mojang/authlib/9.0.75/d61056a234d5e4b272e09d59b0713f80d6c0b6af/authlib-9.0.75.jar:/modules-2/files-2.1/com.mojang/blocklist/1.0.10/5c685c5ffa94c4cd39496c7184c1d122e515ecef/blocklist-1.0.10.jar:/modules-2/files-2.1/com.mojang/brigadier/1.3.10/d15b53a14cf20fdcaa98f731af5dda654452c010/brigadier-1.3.10.jar:/modules-2/files-2.1/com.mojang/datafixerupper/10.0.21/b6b2ae770c02e0c1eb90f9985b151e9085a38d0b/datafixerupper-10.0.21.jar:/modules-2/files-2.1/com.mojang/jtracy/1.0.37/a3fb649b2e2b2288d2978f0b0bc3d83f62809d1e/jtracy-1.0.37.jar:/modules-2/files-2.1/com.mojang/jtracy/1.0.37/a99fcb63b72fb623534d0ceb71bda4bed9b55b4c/jtracy-1.0.37-natives-macos.jar:/modules-2/files-2.1/com.mojang/jtracy/1.0.37/c8e971da5150aa33283c5bf4097154c0da554fb9/jtracy-1.0.37-natives-macos-arm64.jar:/modules-2/files-2.1/com.mojang/logging/1.7.12/351cea64a5233361327d8d54c44277041beed97f/logging-1.7.12.jar:/modules-2/files-2.1/com.mojang/patchy/2.2.10/da05971b07cbb379d002cf7eaec6a2048211fefc/patchy-2.2.10.jar:/modules-2/files-2.1/com.mojang/text2speech/1.19.12/2e517a75c79d34d32de2b5d68422150836c2133e/text2speech-1.19.12.jar:/modules-2/files-2.1/commons-codec/commons-codec/1.22.0/6b3eb4beb7058c2a638f5f17bcb388649fd339dd/commons-codec-1.22.0.jar:/modules-2/files-2.1/commons-io/commons-io/2.20.0/36f3474daec2849c149e877614e7f979b2082cd2/commons-io-2.20.0.jar:/modules-2/files-2.1/io.netty/netty-buffer/4.2.15.Final/2beb620803bf871cda2dd5d46b8f831e8015dd34/netty-buffer-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-codec-base/4.2.15.Final/e97149fdd5fb04858efa90e314651c8d700dc68b/netty-codec-base-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-codec-compression/4.2.15.Final/89fc4a20b7ae6af974304b1695405e62c4f9b16d/netty-codec-compression-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-codec-http/4.2.15.Final/e611826aa054371bb9a17f27bdb05755a4cac5f0/netty-codec-http-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-common/4.2.15.Final/7222492c1af9c2d4d78d521eea340a619e242fda/netty-common-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-handler/4.2.15.Final/d5344afd1148e3b9927a74be019605ebb0937a93/netty-handler-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-resolver/4.2.15.Final/b961a16d379b508b473e064ba06842bba280f4e3/netty-resolver-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-transport-classes-epoll/4.2.15.Final/44bafba9c9993800e955b365bba4981326f3f3b1/netty-transport-classes-epoll-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-transport-classes-kqueue/4.2.15.Final/f248656bb907607c5a41c7b61fd918a97db79250/netty-transport-classes-kqueue-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-transport-native-unix-common/4.2.15.Final/efb6943b4de9e0226a5ac35330f232605424af02/netty-transport-native-unix-common-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-transport/4.2.15.Final/a000c3a6196ee40207b73ac619dcb339409dd62f/netty-transport-4.2.15.Final.jar:/modules-2/files-2.1/it.unimi.dsi/fastutil/8.5.18/a6cff377eecc19c2037bf31568a6d7106b50ba1f/fastutil-8.5.18.jar:/modules-2/files-2.1/net.java.dev.jna/jna-platform/5.17.0/a4934c44d25a9d8c2ddf4203affd20330cb3426f/jna-platform-5.17.0.jar:/modules-2/files-2.1/net.java.dev.jna/jna/5.17.0/33d12735bef894440780fce64f9758d420c7bae2/jna-5.17.0.jar:/modules-2/files-2.1/org.apache.commons/commons-compress/1.28.0/e482f2c7a88dac3c497e96aa420b6a769f59c8d7/commons-compress-1.28.0.jar:/modules-2/files-2.1/org.apache.commons/commons-lang3/3.20.0/65897b3e5731220962e659e001904af3c3cbeba9/commons-lang3-3.20.0.jar:/modules-2/files-2.1/org.apache.logging.log4j/log4j-api/2.26.0/ad52af0ecf054a7e3f275a2e180ee06d9c490951/log4j-api-2.26.0.jar:/modules-2/files-2.1/org.apache.logging.log4j/log4j-core/2.26.0/d267ca60b27ddb075e0b4e75e7875859717bf85f/log4j-core-2.26.0.jar:/modules-2/files-2.1/org.apache.logging.log4j/log4j-slf4j2-impl/2.26.0/668c0f0e813d83f00a7182533aa658ec7e7a0a0d/log4j-slf4j2-impl-2.26.0.jar:/modules-2/files-2.1/org.jcraft/jorbis/0.0.17/8872d22b293e8f5d7d56ff92be966e6dc28ebdc6/jorbis-0.0.17.jar:/modules-2/files-2.1/org.joml/joml/1.10.8/fc0a71dad90a2cf41d82a76156a0e700af8e4f8d/joml-1.10.8.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-freetype/3.4.1/caa75a37e857efc9b0686e434d708d6420c5b6ea/lwjgl-freetype-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-freetype/3.4.1/61cb2d85e1838bca1a0b664f54e818bc68deb2ef/lwjgl-freetype-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-freetype/3.4.1/cce5a86b4a7d17817fe8ea0296302a4353acf2d5/lwjgl-freetype-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-glfw/3.4.1/a782b1ddd175c9107bf300fd92920579ea65e2a4/lwjgl-glfw-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-glfw/3.4.1/3c8538942f58377d59cd7be2dc164ba71a53868a/lwjgl-glfw-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-glfw/3.4.1/ef1f8efca5a60ba3512bc4982b88e446ecc43378/lwjgl-glfw-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-jemalloc/3.4.1/16b663092854fc6adfe0a941e61cae2bb2e437b6/lwjgl-jemalloc-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-jemalloc/3.4.1/581b4d542e841015ce3265eed0495e2cde15b1d0/lwjgl-jemalloc-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-jemalloc/3.4.1/dcd7e3f9a2ca386e8c5b8f508a8511d9dd63bab0/lwjgl-jemalloc-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-openal/3.4.1/8508bd60589de0539aa465b78fcf838efd07ae9a/lwjgl-openal-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-openal/3.4.1/a4dc57b7b0880d3fffb4d0b61649f45712bccc93/lwjgl-openal-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-openal/3.4.1/1c709a38c4a0e86aae96db7b8c78432307f2322a/lwjgl-openal-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-opengl/3.4.1/830412cab823c029cda6b9729f9d2ed36cf79959/lwjgl-opengl-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-opengl/3.4.1/ba18fc6012b88494ee893506934b92b01c4ef14b/lwjgl-opengl-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-opengl/3.4.1/35b5550058de4960525f465243bd01805f04fd8b/lwjgl-opengl-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-shaderc/3.4.1/5c02c88f0d879529014c78463b76f43fdecfd272/lwjgl-shaderc-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-shaderc/3.4.1/1d7bbdba70cf29c42978f6c0c1bdef945b922072/lwjgl-shaderc-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-shaderc/3.4.1/48aa2727e8616154d399d4dab0d8e8479741fa4f/lwjgl-shaderc-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-spvc/3.4.1/188553592e97b5ab2dba54a1b403ee80b48dad4c/lwjgl-spvc-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-spvc/3.4.1/2eeebd6d5bae966bfffda9747eba744cfe839ae1/lwjgl-spvc-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-spvc/3.4.1/a4f66638d28129eba0babd8fdc4385427a5ea83e/lwjgl-spvc-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-stb/3.4.1/f077c3dafc31924fbe8acb0b913f08977ba27f8e/lwjgl-stb-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-stb/3.4.1/fd1ea36b717b0832babca09324a6cfc43906e2aa/lwjgl-stb-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-stb/3.4.1/da554e04f819f09b0f3473bd931628ebf557965e/lwjgl-stb-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-tinyfd/3.4.1/562697d40dbd2ed0424bf24dcf65d51170f81adf/lwjgl-tinyfd-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-tinyfd/3.4.1/211ae9e8720e8f10f2ce85a118fa7bd5ee71584b/lwjgl-tinyfd-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-tinyfd/3.4.1/7bcde70f6164b2e72f84cac5257b7e9877b88510/lwjgl-tinyfd-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vma/3.4.1/2c54ce10154feb1ede4d23c5947438cdbfdcc003/lwjgl-vma-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vma/3.4.1/a130a9e4f96c83063f749e1dcc7065e0dffb3936/lwjgl-vma-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vma/3.4.1/9451dc1067716bc4125cdba65a7096e465f4d0e5/lwjgl-vma-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vulkan/3.4.1/d0601fdc38890755e5638048c14cc0f7b990964b/lwjgl-vulkan-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vulkan/3.4.1/140c7fd3e0fdbcc625c92be9328301c555035905/lwjgl-vulkan-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vulkan/3.4.1/2c933bf617cb8a174af26585efda4778b59e6d44/lwjgl-vulkan-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl/3.4.1/129e06a04f93992cb2a45172435b21fc4b60dd7d/lwjgl-3.4.1-unsafe.jar:/modules-2/files-2.1/org.lwjgl/lwjgl/3.4.1/b034fd9a67cb8646c01af7efcefcb93be835542b/lwjgl-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl/3.4.1/b4cbdef4818abd714ee66985344c0949fd1cd6d6/lwjgl-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.slf4j/slf4j-api/2.0.17/d9e58ac9c7779ba3bf8142aff6c830617a7fe60f/slf4j-api-2.0.17.jar:/modules-2/files-2.1/org.ow2.asm/asm-util/9.5/64b5a1fc8c1b15ed2efd6a063e976bc8d3dc5ffe/asm-util-9.5.jar:/modules-2/files-2.1/org.ow2.asm/asm-analysis/9.5/490bacc77de7cbc0be1a30bb3471072d705be4a4/asm-analysis-9.5.jar:/modules-2/files-2.1/org.ow2.asm/asm-tree/9.5/fd33c8b6373abaa675be407082fdfda35021254a/asm-tree-9.5.jar:/modules-2/files-2.1/org.ow2.asm/asm/9.5/dc6ea1875f4d64fbc85e1691c95b96a3d8569c90/asm-9.5.jar:/modules-2/files-2.1/net.neoforged/srgutils/1.0.10/abb471237b33b19f040ada00bfbad1ec45b949b6/srgutils-1.0.10.jar:/modules-2/files-2.1/io.netty/netty-transport-native-kqueue/4.2.15.Final/8ea0ef3eb716d821332e4b4926825a4b7c1a6d38/netty-transport-native-kqueue-4.2.15.Final-osx-aarch_64.jar:/modules-2/files-2.1/io.netty/netty-transport-native-kqueue/4.2.15.Final/4245380831515fb4eca18d32477a27fbb8f7b8f4/netty-transport-native-kqueue-4.2.15.Final-osx-x86_64.jar:/build/classes/java/main:/build/resources/main org.openjdk.jmh.Main .*net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix -p itemCount=100000 -p implementation=generalized-suffix-tree -f 1 -wi 1 -i 6 -w 200ms -r 200ms -rf json -rff /build/reports/jmh/adaptive-jmh-passes/pass-02-group-002.json -o /build/reports/jmh/adaptive-jmh-passes/pass-02-group-002.txt -foe true -p typedCharacterCount=1,2,3,4,5,6,7,8,9,10,11 -prof gc # JMH version: 1.37 # VM version: JDK 25, OpenJDK 64-Bit Server VM, 25+36-b176.4 # VM invoker: java # VM options: # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 1 iterations, 200 ms each # Measurement: 6 iterations, 200 ms each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix # Parameters: (implementation = generalized-suffix-tree, itemCount = 100000, typedCharacterCount = 1) # Run progress: 0.00% complete, ETA 00:00:15 # Fork: 1 of 1 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::objectFieldOffset has been called by org.openjdk.jmh.util.Utils (file:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar) WARNING: Please consider reporting this to the maintainers of class org.openjdk.jmh.util.Utils WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release # Warmup Iteration 1: 9.742 ms/op Iteration 1: 6.190 ms/op gc.alloc.rate: 174.227 MB/sec gc.alloc.rate.norm: 1131791.765 B/op gc.count: ≈ 0 counts Iteration 2: 5.160 ms/op gc.alloc.rate: 189.808 MB/sec gc.alloc.rate.norm: 1027959.200 B/op gc.count: ≈ 0 counts Iteration 3: 5.722 ms/op gc.alloc.rate: 184.430 MB/sec gc.alloc.rate.norm: 1107359.556 B/op gc.count: 1.000 counts gc.time: 9.000 ms Iteration 4: 5.781 ms/op gc.alloc.rate: 194.741 MB/sec gc.alloc.rate.norm: 1181241.297 B/op gc.count: ≈ 0 counts Iteration 5: 5.349 ms/op gc.alloc.rate: 181.699 MB/sec gc.alloc.rate.norm: 1020055.220 B/op gc.count: ≈ 0 counts Iteration 6: 5.573 ms/op gc.alloc.rate: 195.318 MB/sec gc.alloc.rate.norm: 1143800.632 B/op gc.count: ≈ 0 counts Result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix": 5.629 ±(99.9%) 1.009 ms/op [Average] (min, avg, max) = (5.160, 5.629, 6.190), stdev = 0.360 CI (99.9%): [4.620, 6.638] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate": 186.704 ±(99.9%) 22.930 MB/sec [Average] (min, avg, max) = (174.227, 186.704, 195.318), stdev = 8.177 CI (99.9%): [163.774, 209.634] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm": 1102034.611 ±(99.9%) 182335.673 B/op [Average] (min, avg, max) = (1020055.220, 1102034.611, 1181241.297), stdev = 65022.658 CI (99.9%): [919698.938, 1284370.285] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count": 1.000 ±(99.9%) 0.001 counts [Sum] (min, avg, max) = (≈ 0, 0.167, 1.000), stdev = 0.408 CI (99.9%): [1.000, 1.000] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time": 9.000 ±(99.9%) 0.001 ms [Sum] (min, avg, max) = (≈ 0, 1.500, 9.000), stdev = 3.674 CI (99.9%): [9.000, 9.000] (assumes normal distribution) # JMH version: 1.37 # VM version: JDK 25, OpenJDK 64-Bit Server VM, 25+36-b176.4 # VM invoker: java # VM options: # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 1 iterations, 200 ms each # Measurement: 6 iterations, 200 ms each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix # Parameters: (implementation = generalized-suffix-tree, itemCount = 100000, typedCharacterCount = 2) # Run progress: 9.09% complete, ETA 00:00:27 # Fork: 1 of 1 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::objectFieldOffset has been called by org.openjdk.jmh.util.Utils (file:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar) WARNING: Please consider reporting this to the maintainers of class org.openjdk.jmh.util.Utils WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release # Warmup Iteration 1: 1.176 ms/op Iteration 1: 0.793 ms/op gc.alloc.rate: 271.155 MB/sec gc.alloc.rate.norm: 225628.732 B/op gc.count: ≈ 0 counts Iteration 2: 0.718 ms/op gc.alloc.rate: 294.250 MB/sec gc.alloc.rate.norm: 221775.441 B/op gc.count: 1.000 counts gc.time: 10.000 ms Iteration 3: 0.676 ms/op gc.alloc.rate: 316.437 MB/sec gc.alloc.rate.norm: 224594.334 B/op gc.count: ≈ 0 counts Iteration 4: 0.675 ms/op gc.alloc.rate: 318.363 MB/sec gc.alloc.rate.norm: 225362.020 B/op gc.count: 1.000 counts gc.time: 4.000 ms Iteration 5: 0.752 ms/op gc.alloc.rate: 284.016 MB/sec gc.alloc.rate.norm: 224043.328 B/op gc.count: ≈ 0 counts Iteration 6: 0.704 ms/op gc.alloc.rate: 303.105 MB/sec gc.alloc.rate.norm: 224037.746 B/op gc.count: ≈ 0 counts Result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix": 0.720 ±(99.9%) 0.129 ms/op [Average] (min, avg, max) = (0.675, 0.720, 0.793), stdev = 0.046 CI (99.9%): [0.591, 0.848] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate": 297.888 ±(99.9%) 51.871 MB/sec [Average] (min, avg, max) = (271.155, 297.888, 318.363), stdev = 18.498 CI (99.9%): [246.017, 349.759] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm": 224240.267 ±(99.9%) 3858.523 B/op [Average] (min, avg, max) = (221775.441, 224240.267, 225628.732), stdev = 1375.987 CI (99.9%): [220381.743, 228098.790] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count": 2.000 ±(99.9%) 0.001 counts [Sum] (min, avg, max) = (≈ 0, 0.333, 1.000), stdev = 0.516 CI (99.9%): [2.000, 2.000] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time": 14.000 ±(99.9%) 0.001 ms [Sum] (min, avg, max) = (≈ 0, 2.333, 10.000), stdev = 4.082 CI (99.9%): [14.000, 14.000] (assumes normal distribution) # JMH version: 1.37 # VM version: JDK 25, OpenJDK 64-Bit Server VM, 25+36-b176.4 # VM invoker: java # VM options: # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 1 iterations, 200 ms each # Measurement: 6 iterations, 200 ms each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix # Parameters: (implementation = generalized-suffix-tree, itemCount = 100000, typedCharacterCount = 3) # Run progress: 18.18% complete, ETA 00:00:24 # Fork: 1 of 1 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::objectFieldOffset has been called by org.openjdk.jmh.util.Utils (file:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar) WARNING: Please consider reporting this to the maintainers of class org.openjdk.jmh.util.Utils WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release # Warmup Iteration 1: 0.684 ms/op Iteration 1: 0.298 ms/op gc.alloc.rate: 537.212 MB/sec gc.alloc.rate.norm: 167859.373 B/op gc.count: 1.000 counts gc.time: 8.000 ms Iteration 2: 0.283 ms/op gc.alloc.rate: 560.854 MB/sec gc.alloc.rate.norm: 166753.634 B/op gc.count: 1.000 counts gc.time: 2.000 ms Iteration 3: 0.266 ms/op gc.alloc.rate: 598.885 MB/sec gc.alloc.rate.norm: 167362.970 B/op gc.count: ≈ 0 counts Iteration 4: 0.252 ms/op gc.alloc.rate: 632.245 MB/sec gc.alloc.rate.norm: 167005.546 B/op gc.count: ≈ 0 counts Iteration 5: 0.316 ms/op gc.alloc.rate: 503.234 MB/sec gc.alloc.rate.norm: 166694.400 B/op gc.count: 1.000 counts gc.time: 3.000 ms Iteration 6: 0.285 ms/op gc.alloc.rate: 558.641 MB/sec gc.alloc.rate.norm: 167314.610 B/op gc.count: ≈ 0 counts Result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix": 0.283 ±(99.9%) 0.063 ms/op [Average] (min, avg, max) = (0.252, 0.283, 0.316), stdev = 0.023 CI (99.9%): [0.220, 0.347] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate": 565.179 ±(99.9%) 127.365 MB/sec [Average] (min, avg, max) = (503.234, 565.179, 632.245), stdev = 45.420 CI (99.9%): [437.813, 692.544] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm": 167165.089 ±(99.9%) 1228.632 B/op [Average] (min, avg, max) = (166694.400, 167165.089, 167859.373), stdev = 438.142 CI (99.9%): [165936.457, 168393.721] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count": 3.000 ±(99.9%) 0.001 counts [Sum] (min, avg, max) = (≈ 0, 0.500, 1.000), stdev = 0.548 CI (99.9%): [3.000, 3.000] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time": 13.000 ±(99.9%) 0.001 ms [Sum] (min, avg, max) = (≈ 0, 2.167, 8.000), stdev = 3.125 CI (99.9%): [13.000, 13.000] (assumes normal distribution) # JMH version: 1.37 # VM version: JDK 25, OpenJDK 64-Bit Server VM, 25+36-b176.4 # VM invoker: java # VM options: # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 1 iterations, 200 ms each # Measurement: 6 iterations, 200 ms each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix # Parameters: (implementation = generalized-suffix-tree, itemCount = 100000, typedCharacterCount = 4) # Run progress: 27.27% complete, ETA 00:00:21 # Fork: 1 of 1 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::objectFieldOffset has been called by org.openjdk.jmh.util.Utils (file:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar) WARNING: Please consider reporting this to the maintainers of class org.openjdk.jmh.util.Utils WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release # Warmup Iteration 1: 0.439 ms/op Iteration 1: 0.188 ms/op gc.alloc.rate: 779.587 MB/sec gc.alloc.rate.norm: 153427.566 B/op gc.count: 1.000 counts gc.time: 9.000 ms Iteration 2: 0.163 ms/op gc.alloc.rate: 899.147 MB/sec gc.alloc.rate.norm: 153624.038 B/op gc.count: 1.000 counts gc.time: 2.000 ms Iteration 3: 0.159 ms/op gc.alloc.rate: 920.203 MB/sec gc.alloc.rate.norm: 153690.845 B/op gc.count: 1.000 counts gc.time: 3.000 ms Iteration 4: 0.179 ms/op gc.alloc.rate: 812.775 MB/sec gc.alloc.rate.norm: 153101.139 B/op gc.count: ≈ 0 counts Iteration 5: 0.206 ms/op gc.alloc.rate: 709.044 MB/sec gc.alloc.rate.norm: 153511.936 B/op gc.count: ≈ 0 counts Iteration 6: 0.177 ms/op gc.alloc.rate: 825.048 MB/sec gc.alloc.rate.norm: 153656.325 B/op gc.count: ≈ 0 counts Result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix": 0.179 ±(99.9%) 0.048 ms/op [Average] (min, avg, max) = (0.159, 0.179, 0.206), stdev = 0.017 CI (99.9%): [0.131, 0.227] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate": 824.301 ±(99.9%) 217.991 MB/sec [Average] (min, avg, max) = (709.044, 824.301, 920.203), stdev = 77.738 CI (99.9%): [606.309, 1042.292] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm": 153501.975 ±(99.9%) 615.263 B/op [Average] (min, avg, max) = (153101.139, 153501.975, 153690.845), stdev = 219.409 CI (99.9%): [152886.712, 154117.238] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count": 3.000 ±(99.9%) 0.001 counts [Sum] (min, avg, max) = (≈ 0, 0.500, 1.000), stdev = 0.548 CI (99.9%): [3.000, 3.000] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time": 14.000 ±(99.9%) 0.001 ms [Sum] (min, avg, max) = (≈ 0, 2.333, 9.000), stdev = 3.502 CI (99.9%): [14.000, 14.000] (assumes normal distribution) # JMH version: 1.37 # VM version: JDK 25, OpenJDK 64-Bit Server VM, 25+36-b176.4 # VM invoker: java # VM options: # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 1 iterations, 200 ms each # Measurement: 6 iterations, 200 ms each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix # Parameters: (implementation = generalized-suffix-tree, itemCount = 100000, typedCharacterCount = 5) # Run progress: 36.36% complete, ETA 00:00:18 # Fork: 1 of 1 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::objectFieldOffset has been called by org.openjdk.jmh.util.Utils (file:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar) WARNING: Please consider reporting this to the maintainers of class org.openjdk.jmh.util.Utils WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release # Warmup Iteration 1: 0.305 ms/op Iteration 1: 0.143 ms/op gc.alloc.rate: 856.337 MB/sec gc.alloc.rate.norm: 128586.268 B/op gc.count: 1.000 counts gc.time: 9.000 ms Iteration 2: 0.117 ms/op gc.alloc.rate: 1043.835 MB/sec gc.alloc.rate.norm: 128490.183 B/op gc.count: 1.000 counts gc.time: 3.000 ms Iteration 3: 0.126 ms/op gc.alloc.rate: 967.634 MB/sec gc.alloc.rate.norm: 128423.773 B/op gc.count: 1.000 counts gc.time: 4.000 ms Iteration 4: 0.139 ms/op gc.alloc.rate: 880.186 MB/sec gc.alloc.rate.norm: 128690.194 B/op gc.count: ≈ 0 counts Iteration 5: 0.153 ms/op gc.alloc.rate: 797.814 MB/sec gc.alloc.rate.norm: 128237.025 B/op gc.count: ≈ 0 counts Iteration 6: 0.135 ms/op gc.alloc.rate: 908.146 MB/sec gc.alloc.rate.norm: 128554.746 B/op gc.count: 1.000 counts gc.time: 3.000 ms Result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix": 0.136 ±(99.9%) 0.035 ms/op [Average] (min, avg, max) = (0.117, 0.136, 0.153), stdev = 0.013 CI (99.9%): [0.100, 0.171] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate": 908.992 ±(99.9%) 243.125 MB/sec [Average] (min, avg, max) = (797.814, 908.992, 1043.835), stdev = 86.701 CI (99.9%): [665.867, 1152.117] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm": 128497.031 ±(99.9%) 437.351 B/op [Average] (min, avg, max) = (128237.025, 128497.031, 128690.194), stdev = 155.964 CI (99.9%): [128059.680, 128934.382] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count": 4.000 ±(99.9%) 0.001 counts [Sum] (min, avg, max) = (≈ 0, 0.667, 1.000), stdev = 0.516 CI (99.9%): [4.000, 4.000] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time": 19.000 ±(99.9%) 0.001 ms [Sum] (min, avg, max) = (≈ 0, 3.167, 9.000), stdev = 3.312 CI (99.9%): [19.000, 19.000] (assumes normal distribution) # JMH version: 1.37 # VM version: JDK 25, OpenJDK 64-Bit Server VM, 25+36-b176.4 # VM invoker: java # VM options: # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 1 iterations, 200 ms each # Measurement: 6 iterations, 200 ms each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix # Parameters: (implementation = generalized-suffix-tree, itemCount = 100000, typedCharacterCount = 6) # Run progress: 45.45% complete, ETA 00:00:16 # Fork: 1 of 1 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::objectFieldOffset has been called by org.openjdk.jmh.util.Utils (file:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar) WARNING: Please consider reporting this to the maintainers of class org.openjdk.jmh.util.Utils WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release # Warmup Iteration 1: 0.291 ms/op Iteration 1: 0.158 ms/op gc.alloc.rate: 762.494 MB/sec gc.alloc.rate.norm: 126300.481 B/op gc.count: 1.000 counts gc.time: 8.000 ms Iteration 2: 0.129 ms/op gc.alloc.rate: 929.756 MB/sec gc.alloc.rate.norm: 126291.478 B/op gc.count: 1.000 counts gc.time: 2.000 ms Iteration 3: 0.124 ms/op gc.alloc.rate: 972.624 MB/sec gc.alloc.rate.norm: 126265.139 B/op gc.count: 1.000 counts gc.time: 4.000 ms Iteration 4: 0.138 ms/op gc.alloc.rate: 873.728 MB/sec gc.alloc.rate.norm: 126329.934 B/op gc.count: ≈ 0 counts Iteration 5: 0.160 ms/op gc.alloc.rate: 752.370 MB/sec gc.alloc.rate.norm: 126276.494 B/op gc.count: ≈ 0 counts Iteration 6: 0.147 ms/op gc.alloc.rate: 820.342 MB/sec gc.alloc.rate.norm: 126267.007 B/op gc.count: 1.000 counts gc.time: 2.000 ms Result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix": 0.143 ±(99.9%) 0.042 ms/op [Average] (min, avg, max) = (0.124, 0.143, 0.160), stdev = 0.015 CI (99.9%): [0.101, 0.184] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate": 851.886 ±(99.9%) 250.838 MB/sec [Average] (min, avg, max) = (752.370, 851.886, 972.624), stdev = 89.451 CI (99.9%): [601.048, 1102.724] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm": 126288.422 ±(99.9%) 68.929 B/op [Average] (min, avg, max) = (126265.139, 126288.422, 126329.934), stdev = 24.581 CI (99.9%): [126219.493, 126357.351] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count": 4.000 ±(99.9%) 0.001 counts [Sum] (min, avg, max) = (≈ 0, 0.667, 1.000), stdev = 0.516 CI (99.9%): [4.000, 4.000] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time": 16.000 ±(99.9%) 0.001 ms [Sum] (min, avg, max) = (≈ 0, 2.667, 8.000), stdev = 3.011 CI (99.9%): [16.000, 16.000] (assumes normal distribution) # JMH version: 1.37 # VM version: JDK 25, OpenJDK 64-Bit Server VM, 25+36-b176.4 # VM invoker: java # VM options: # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 1 iterations, 200 ms each # Measurement: 6 iterations, 200 ms each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix # Parameters: (implementation = generalized-suffix-tree, itemCount = 100000, typedCharacterCount = 7) # Run progress: 54.55% complete, ETA 00:00:13 # Fork: 1 of 1 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::objectFieldOffset has been called by org.openjdk.jmh.util.Utils (file:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar) WARNING: Please consider reporting this to the maintainers of class org.openjdk.jmh.util.Utils WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release # Warmup Iteration 1: 0.138 ms/op Iteration 1: 0.078 ms/op gc.alloc.rate: 968.005 MB/sec gc.alloc.rate.norm: 79405.377 B/op gc.count: 1.000 counts gc.time: 2.000 ms Iteration 2: 0.065 ms/op gc.alloc.rate: 1164.317 MB/sec gc.alloc.rate.norm: 79223.482 B/op gc.count: ≈ 0 counts Iteration 3: 0.076 ms/op gc.alloc.rate: 999.663 MB/sec gc.alloc.rate.norm: 79288.636 B/op gc.count: 1.000 counts gc.time: 2.000 ms Iteration 4: 0.077 ms/op gc.alloc.rate: 986.259 MB/sec gc.alloc.rate.norm: 79379.638 B/op gc.count: ≈ 0 counts Iteration 5: 0.082 ms/op gc.alloc.rate: 925.094 MB/sec gc.alloc.rate.norm: 79190.583 B/op gc.count: 1.000 counts gc.time: 3.000 ms Iteration 6: 0.072 ms/op gc.alloc.rate: 1055.801 MB/sec gc.alloc.rate.norm: 79330.912 B/op gc.count: ≈ 0 counts Result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix": 0.075 ±(99.9%) 0.016 ms/op [Average] (min, avg, max) = (0.065, 0.075, 0.082), stdev = 0.006 CI (99.9%): [0.058, 0.091] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate": 1016.523 ±(99.9%) 235.616 MB/sec [Average] (min, avg, max) = (925.094, 1016.523, 1164.317), stdev = 84.023 CI (99.9%): [780.907, 1252.139] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm": 79303.105 ±(99.9%) 238.934 B/op [Average] (min, avg, max) = (79190.583, 79303.105, 79405.377), stdev = 85.206 CI (99.9%): [79064.170, 79542.039] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count": 3.000 ±(99.9%) 0.001 counts [Sum] (min, avg, max) = (≈ 0, 0.500, 1.000), stdev = 0.548 CI (99.9%): [3.000, 3.000] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time": 7.000 ±(99.9%) 0.001 ms [Sum] (min, avg, max) = (≈ 0, 1.167, 3.000), stdev = 1.329 CI (99.9%): [7.000, 7.000] (assumes normal distribution) # JMH version: 1.37 # VM version: JDK 25, OpenJDK 64-Bit Server VM, 25+36-b176.4 # VM invoker: java # VM options: # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 1 iterations, 200 ms each # Measurement: 6 iterations, 200 ms each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix # Parameters: (implementation = generalized-suffix-tree, itemCount = 100000, typedCharacterCount = 8) # Run progress: 63.64% complete, ETA 00:00:10 # Fork: 1 of 1 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::objectFieldOffset has been called by org.openjdk.jmh.util.Utils (file:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar) WARNING: Please consider reporting this to the maintainers of class org.openjdk.jmh.util.Utils WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release # Warmup Iteration 1: 0.060 ms/op Iteration 1: 0.039 ms/op gc.alloc.rate: 1106.256 MB/sec gc.alloc.rate.norm: 44698.168 B/op gc.count: 1.000 counts gc.time: 2.000 ms Iteration 2: 0.033 ms/op gc.alloc.rate: 1290.054 MB/sec gc.alloc.rate.norm: 44687.143 B/op gc.count: 1.000 counts gc.time: 2.000 ms Iteration 3: 0.040 ms/op gc.alloc.rate: 1055.377 MB/sec gc.alloc.rate.norm: 44677.838 B/op gc.count: ≈ 0 counts Iteration 4: 0.040 ms/op gc.alloc.rate: 1058.097 MB/sec gc.alloc.rate.norm: 44727.581 B/op gc.count: 1.000 counts gc.time: 2.000 ms Iteration 5: 0.043 ms/op gc.alloc.rate: 990.388 MB/sec gc.alloc.rate.norm: 44687.466 B/op gc.count: ≈ 0 counts Iteration 6: 0.039 ms/op gc.alloc.rate: 1088.144 MB/sec gc.alloc.rate.norm: 44657.529 B/op gc.count: ≈ 0 counts Result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix": 0.039 ±(99.9%) 0.009 ms/op [Average] (min, avg, max) = (0.033, 0.039, 0.043), stdev = 0.003 CI (99.9%): [0.030, 0.048] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate": 1098.053 ±(99.9%) 286.080 MB/sec [Average] (min, avg, max) = (990.388, 1098.053, 1290.054), stdev = 102.019 CI (99.9%): [811.973, 1384.132] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm": 44689.288 ±(99.9%) 65.077 B/op [Average] (min, avg, max) = (44657.529, 44689.288, 44727.581), stdev = 23.207 CI (99.9%): [44624.211, 44754.364] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count": 3.000 ±(99.9%) 0.001 counts [Sum] (min, avg, max) = (≈ 0, 0.500, 1.000), stdev = 0.548 CI (99.9%): [3.000, 3.000] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time": 6.000 ±(99.9%) 0.001 ms [Sum] (min, avg, max) = (≈ 0, 1.000, 2.000), stdev = 1.095 CI (99.9%): [6.000, 6.000] (assumes normal distribution) # JMH version: 1.37 # VM version: JDK 25, OpenJDK 64-Bit Server VM, 25+36-b176.4 # VM invoker: java # VM options: # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 1 iterations, 200 ms each # Measurement: 6 iterations, 200 ms each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix # Parameters: (implementation = generalized-suffix-tree, itemCount = 100000, typedCharacterCount = 9) # Run progress: 72.73% complete, ETA 00:00:08 # Fork: 1 of 1 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::objectFieldOffset has been called by org.openjdk.jmh.util.Utils (file:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar) WARNING: Please consider reporting this to the maintainers of class org.openjdk.jmh.util.Utils WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release # Warmup Iteration 1: 0.059 ms/op Iteration 1: 0.037 ms/op gc.alloc.rate: 1099.278 MB/sec gc.alloc.rate.norm: 42895.124 B/op gc.count: 1.000 counts gc.time: 2.000 ms Iteration 2: 0.032 ms/op gc.alloc.rate: 1268.690 MB/sec gc.alloc.rate.norm: 42929.345 B/op gc.count: 1.000 counts gc.time: 3.000 ms Iteration 3: 0.038 ms/op gc.alloc.rate: 1064.356 MB/sec gc.alloc.rate.norm: 42895.299 B/op gc.count: ≈ 0 counts Iteration 4: 0.039 ms/op gc.alloc.rate: 1060.087 MB/sec gc.alloc.rate.norm: 42855.163 B/op gc.count: 1.000 counts gc.time: 3.000 ms Iteration 5: 0.041 ms/op gc.alloc.rate: 995.297 MB/sec gc.alloc.rate.norm: 42906.520 B/op gc.count: ≈ 0 counts Iteration 6: 0.038 ms/op gc.alloc.rate: 1073.219 MB/sec gc.alloc.rate.norm: 42954.097 B/op gc.count: ≈ 0 counts Result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix": 0.038 ±(99.9%) 0.008 ms/op [Average] (min, avg, max) = (0.032, 0.038, 0.041), stdev = 0.003 CI (99.9%): [0.029, 0.046] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate": 1093.488 ±(99.9%) 259.280 MB/sec [Average] (min, avg, max) = (995.297, 1093.488, 1268.690), stdev = 92.462 CI (99.9%): [834.208, 1352.768] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm": 42905.925 ±(99.9%) 94.479 B/op [Average] (min, avg, max) = (42855.163, 42905.925, 42954.097), stdev = 33.692 CI (99.9%): [42811.446, 43000.404] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count": 3.000 ±(99.9%) 0.001 counts [Sum] (min, avg, max) = (≈ 0, 0.500, 1.000), stdev = 0.548 CI (99.9%): [3.000, 3.000] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time": 8.000 ±(99.9%) 0.001 ms [Sum] (min, avg, max) = (≈ 0, 1.333, 3.000), stdev = 1.506 CI (99.9%): [8.000, 8.000] (assumes normal distribution) # JMH version: 1.37 # VM version: JDK 25, OpenJDK 64-Bit Server VM, 25+36-b176.4 # VM invoker: java # VM options: # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 1 iterations, 200 ms each # Measurement: 6 iterations, 200 ms each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix # Parameters: (implementation = generalized-suffix-tree, itemCount = 100000, typedCharacterCount = 10) # Run progress: 81.82% complete, ETA 00:00:05 # Fork: 1 of 1 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::objectFieldOffset has been called by org.openjdk.jmh.util.Utils (file:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar) WARNING: Please consider reporting this to the maintainers of class org.openjdk.jmh.util.Utils WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release # Warmup Iteration 1: 0.032 ms/op Iteration 1: 0.018 ms/op gc.alloc.rate: 1056.693 MB/sec gc.alloc.rate.norm: 20476.733 B/op gc.count: 1.000 counts gc.time: 3.000 ms Iteration 2: 0.014 ms/op gc.alloc.rate: 1369.848 MB/sec gc.alloc.rate.norm: 20471.522 B/op gc.count: 1.000 counts gc.time: 2.000 ms Iteration 3: 0.018 ms/op gc.alloc.rate: 1088.617 MB/sec gc.alloc.rate.norm: 20466.538 B/op gc.count: ≈ 0 counts Iteration 4: 0.018 ms/op gc.alloc.rate: 1074.037 MB/sec gc.alloc.rate.norm: 20488.156 B/op gc.count: 1.000 counts gc.time: 2.000 ms Iteration 5: 0.019 ms/op gc.alloc.rate: 1005.213 MB/sec gc.alloc.rate.norm: 20468.507 B/op gc.count: ≈ 0 counts Iteration 6: 0.018 ms/op gc.alloc.rate: 1105.579 MB/sec gc.alloc.rate.norm: 20510.925 B/op gc.count: ≈ 0 counts Result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix": 0.018 ±(99.9%) 0.005 ms/op [Average] (min, avg, max) = (0.014, 0.018, 0.019), stdev = 0.002 CI (99.9%): [0.013, 0.023] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate": 1116.665 ±(99.9%) 360.960 MB/sec [Average] (min, avg, max) = (1005.213, 1116.665, 1369.848), stdev = 128.722 CI (99.9%): [755.705, 1477.625] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm": 20480.397 ±(99.9%) 47.220 B/op [Average] (min, avg, max) = (20466.538, 20480.397, 20510.925), stdev = 16.839 CI (99.9%): [20433.177, 20527.617] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count": 3.000 ±(99.9%) 0.001 counts [Sum] (min, avg, max) = (≈ 0, 0.500, 1.000), stdev = 0.548 CI (99.9%): [3.000, 3.000] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time": 7.000 ±(99.9%) 0.001 ms [Sum] (min, avg, max) = (≈ 0, 1.167, 3.000), stdev = 1.329 CI (99.9%): [7.000, 7.000] (assumes normal distribution) # JMH version: 1.37 # VM version: JDK 25, OpenJDK 64-Bit Server VM, 25+36-b176.4 # VM invoker: java # VM options: # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 1 iterations, 200 ms each # Measurement: 6 iterations, 200 ms each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix # Parameters: (implementation = generalized-suffix-tree, itemCount = 100000, typedCharacterCount = 11) # Run progress: 90.91% complete, ETA 00:00:02 # Fork: 1 of 1 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::objectFieldOffset has been called by org.openjdk.jmh.util.Utils (file:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar) WARNING: Please consider reporting this to the maintainers of class org.openjdk.jmh.util.Utils WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release # Warmup Iteration 1: 0.046 ms/op Iteration 1: 0.018 ms/op gc.alloc.rate: 917.939 MB/sec gc.alloc.rate.norm: 17743.842 B/op gc.count: 1.000 counts gc.time: 13.000 ms Iteration 2: 0.013 ms/op gc.alloc.rate: 1328.409 MB/sec gc.alloc.rate.norm: 17749.455 B/op gc.count: 1.000 counts gc.time: 4.000 ms Iteration 3: 0.015 ms/op gc.alloc.rate: 1097.832 MB/sec gc.alloc.rate.norm: 17727.550 B/op gc.count: 1.000 counts gc.time: 3.000 ms Iteration 4: 0.016 ms/op gc.alloc.rate: 1043.306 MB/sec gc.alloc.rate.norm: 17739.637 B/op gc.count: ≈ 0 counts Iteration 5: 0.018 ms/op gc.alloc.rate: 947.084 MB/sec gc.alloc.rate.norm: 17768.070 B/op gc.count: 1.000 counts gc.time: 2.000 ms Iteration 6: 0.016 ms/op gc.alloc.rate: 1075.465 MB/sec gc.alloc.rate.norm: 17763.533 B/op gc.count: ≈ 0 counts Result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix": 0.016 ±(99.9%) 0.006 ms/op [Average] (min, avg, max) = (0.013, 0.016, 0.018), stdev = 0.002 CI (99.9%): [0.010, 0.022] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate": 1068.339 ±(99.9%) 409.270 MB/sec [Average] (min, avg, max) = (917.939, 1068.339, 1328.409), stdev = 145.950 CI (99.9%): [659.069, 1477.610] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm": 17748.681 ±(99.9%) 42.506 B/op [Average] (min, avg, max) = (17727.550, 17748.681, 17768.070), stdev = 15.158 CI (99.9%): [17706.175, 17791.187] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count": 4.000 ±(99.9%) 0.001 counts [Sum] (min, avg, max) = (≈ 0, 0.667, 1.000), stdev = 0.516 CI (99.9%): [4.000, 4.000] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time": 22.000 ±(99.9%) 0.001 ms [Sum] (min, avg, max) = (≈ 0, 3.667, 13.000), stdev = 4.844 CI (99.9%): [22.000, 22.000] (assumes normal distribution) # Run complete. Total time: 00:00:29 REMEMBER: The numbers below are just data. To gain reusable insights, you need to follow up on why the numbers are the way they are. Use profilers (see -prof, -lprof), design factorial experiments, perform baseline and negative tests that provide experimental control, make sure the benchmarking environment is safe on JVM/OS/HW level, ask for reviews from the domain experts. Do not assume the numbers tell you what you want them to tell. NOTE: Current JVM experimentally supports Compiler Blackholes, and they are in use. Please exercise extra caution when trusting the results, look into the generated code to check the benchmark still works, and factor in a small probability of new VM bugs. Additionally, while comparisons between different JVMs are already problematic, the performance difference caused by different Blackhole modes can be very significant. Please make sure you use the consistent Blackhole mode for comparisons. Benchmark (implementation) (itemCount) (typedCharacterCount) Mode Cnt Score Error Units LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix generalized-suffix-tree 100000 1 avgt 6 5.629 ± 1.009 ms/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate generalized-suffix-tree 100000 1 avgt 6 186.704 ± 22.930 MB/sec LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm generalized-suffix-tree 100000 1 avgt 6 1102034.611 ± 182335.673 B/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count generalized-suffix-tree 100000 1 avgt 6 1.000 counts LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time generalized-suffix-tree 100000 1 avgt 6 9.000 ms LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix generalized-suffix-tree 100000 2 avgt 6 0.720 ± 0.129 ms/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate generalized-suffix-tree 100000 2 avgt 6 297.888 ± 51.871 MB/sec LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm generalized-suffix-tree 100000 2 avgt 6 224240.267 ± 3858.523 B/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count generalized-suffix-tree 100000 2 avgt 6 2.000 counts LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time generalized-suffix-tree 100000 2 avgt 6 14.000 ms LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix generalized-suffix-tree 100000 3 avgt 6 0.283 ± 0.063 ms/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate generalized-suffix-tree 100000 3 avgt 6 565.179 ± 127.365 MB/sec LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm generalized-suffix-tree 100000 3 avgt 6 167165.089 ± 1228.632 B/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count generalized-suffix-tree 100000 3 avgt 6 3.000 counts LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time generalized-suffix-tree 100000 3 avgt 6 13.000 ms LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix generalized-suffix-tree 100000 4 avgt 6 0.179 ± 0.048 ms/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate generalized-suffix-tree 100000 4 avgt 6 824.301 ± 217.991 MB/sec LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm generalized-suffix-tree 100000 4 avgt 6 153501.975 ± 615.263 B/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count generalized-suffix-tree 100000 4 avgt 6 3.000 counts LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time generalized-suffix-tree 100000 4 avgt 6 14.000 ms LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix generalized-suffix-tree 100000 5 avgt 6 0.136 ± 0.035 ms/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate generalized-suffix-tree 100000 5 avgt 6 908.992 ± 243.125 MB/sec LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm generalized-suffix-tree 100000 5 avgt 6 128497.031 ± 437.351 B/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count generalized-suffix-tree 100000 5 avgt 6 4.000 counts LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time generalized-suffix-tree 100000 5 avgt 6 19.000 ms LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix generalized-suffix-tree 100000 6 avgt 6 0.143 ± 0.042 ms/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate generalized-suffix-tree 100000 6 avgt 6 851.886 ± 250.838 MB/sec LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm generalized-suffix-tree 100000 6 avgt 6 126288.422 ± 68.929 B/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count generalized-suffix-tree 100000 6 avgt 6 4.000 counts LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time generalized-suffix-tree 100000 6 avgt 6 16.000 ms LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix generalized-suffix-tree 100000 7 avgt 6 0.075 ± 0.016 ms/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate generalized-suffix-tree 100000 7 avgt 6 1016.523 ± 235.616 MB/sec LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm generalized-suffix-tree 100000 7 avgt 6 79303.105 ± 238.934 B/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count generalized-suffix-tree 100000 7 avgt 6 3.000 counts LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time generalized-suffix-tree 100000 7 avgt 6 7.000 ms LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix generalized-suffix-tree 100000 8 avgt 6 0.039 ± 0.009 ms/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate generalized-suffix-tree 100000 8 avgt 6 1098.053 ± 286.080 MB/sec LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm generalized-suffix-tree 100000 8 avgt 6 44689.288 ± 65.077 B/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count generalized-suffix-tree 100000 8 avgt 6 3.000 counts LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time generalized-suffix-tree 100000 8 avgt 6 6.000 ms LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix generalized-suffix-tree 100000 9 avgt 6 0.038 ± 0.008 ms/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate generalized-suffix-tree 100000 9 avgt 6 1093.488 ± 259.280 MB/sec LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm generalized-suffix-tree 100000 9 avgt 6 42905.925 ± 94.479 B/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count generalized-suffix-tree 100000 9 avgt 6 3.000 counts LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time generalized-suffix-tree 100000 9 avgt 6 8.000 ms LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix generalized-suffix-tree 100000 10 avgt 6 0.018 ± 0.005 ms/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate generalized-suffix-tree 100000 10 avgt 6 1116.665 ± 360.960 MB/sec LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm generalized-suffix-tree 100000 10 avgt 6 20480.397 ± 47.220 B/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count generalized-suffix-tree 100000 10 avgt 6 3.000 counts LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time generalized-suffix-tree 100000 10 avgt 6 7.000 ms LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix generalized-suffix-tree 100000 11 avgt 6 0.016 ± 0.006 ms/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate generalized-suffix-tree 100000 11 avgt 6 1068.339 ± 409.270 MB/sec LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm generalized-suffix-tree 100000 11 avgt 6 17748.681 ± 42.506 B/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count generalized-suffix-tree 100000 11 avgt 6 4.000 counts LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time generalized-suffix-tree 100000 11 avgt 6 22.000 ms Benchmark result is saved to /build/reports/jmh/adaptive-jmh-passes/pass-02-group-002.json # Adaptive pass 2, group 3 # Command: java -cp /build/classes/java/benchmark:/build/resources/benchmark:/build/moddev/artifacts/vanilla-26.2-2.jar:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar:/modules-2/files-2.1/com.abahgat/suffixtree/2.0.0/ffe2c29796add2624d2e0b9f33e72421eb5c5ea5/suffixtree-2.0.0.jar:/modules-2/files-2.1/net.mezzdev/suffixtree/1.3.0/1a1b87af70a1631ff6d6c9d49c63564aadecb176/suffixtree-1.3.0.jar:/modules-2/files-2.1/net.mezzdev/baked-substring-index/0.1.0/4f9fbd9eb54fdb1b8ec40a83297f4e8f4479eb7c/baked-substring-index-0.1.0.jar:/modules-2/files-2.1/net.mezzdev/baked-suffix-array-index/0.1.0/cd5e5ffbcee030d149e7a5a70e151a06158bd643/baked-suffix-array-index-0.1.0.jar:/modules-2/files-2.1/net.neoforged/mergetool/2.0.7/793b18456e92c4a7f66d9b5d8bf7a9c1c7a20b20/mergetool-2.0.7-api.jar:/modules-2/files-2.1/net.sf.jopt-simple/jopt-simple/5.0.4/4fdac2fbe92dfad86aa6e9301736f6b4342a3f5c/jopt-simple-5.0.4.jar:/modules-2/files-2.1/org.apache.commons/commons-math3/3.6.1/e4ba98f1d4b3c80ec46392f25e094a6a2e58fcbf/commons-math3-3.6.1.jar:/modules-2/files-2.1/com.google.code.findbugs/jsr305/3.0.2/25ea2e8b0c338a877313bd4672d3fe056ea78f0d/jsr305-3.0.2.jar:/modules-2/files-2.1/org.jspecify/jspecify/1.0.0/7425a601c1c7ec76645a78d22b8c6a627edee507/jspecify-1.0.0.jar:/modules-2/files-2.1/org.jetbrains/annotations/26.0.2-1/c7ce3cdeda3d18909368dfe5977332dfad326c6d/annotations-26.0.2-1.jar:/modules-2/files-2.1/ca.weblite/java-objc-bridge/1.1/1227f9e0666314f9de41477e3ec277e542ed7f7b/java-objc-bridge-1.1.jar:/modules-2/files-2.1/at.yawk.lz4/lz4-java/1.10.1/f541d7f910fe3d76f38f799c507c48cc81b12ecb/lz4-java-1.10.1.jar:/modules-2/files-2.1/com.azure/azure-json/1.4.0/fcc1d354dbc3e0300e5276b1bf124d0247799cd8/azure-json-1.4.0.jar:/modules-2/files-2.1/com.github.oshi/oshi-core/6.9.0/3224870731860cfcd7744581a05b559e94291e7/oshi-core-6.9.0.jar:/modules-2/files-2.1/com.google.code.gson/gson/2.14.0/efc0e34ede4e3204eaefb84a00e55e8c86634382/gson-2.14.0.jar:/modules-2/files-2.1/com.google.guava/failureaccess/1.0.3/aeaffd00d57023a2c947393ed251f0354f0985fc/failureaccess-1.0.3.jar:/modules-2/files-2.1/com.google.guava/guava/33.6.0-jre/c376b13067cc99a5774403530953f7b05a91e218/guava-33.6.0-jre.jar:/modules-2/files-2.1/com.ibm.icu/icu4j/78.3/6a851a53bb1f25689fc418dcc8935b0d93580adf/icu4j-78.3.jar:/modules-2/files-2.1/com.microsoft.azure/msal4j/1.24.1/c233f2d047b9755f7041adf21a858c680e4c9242/msal4j-1.24.1.jar:/modules-2/files-2.1/com.mojang/authlib/9.0.75/d61056a234d5e4b272e09d59b0713f80d6c0b6af/authlib-9.0.75.jar:/modules-2/files-2.1/com.mojang/blocklist/1.0.10/5c685c5ffa94c4cd39496c7184c1d122e515ecef/blocklist-1.0.10.jar:/modules-2/files-2.1/com.mojang/brigadier/1.3.10/d15b53a14cf20fdcaa98f731af5dda654452c010/brigadier-1.3.10.jar:/modules-2/files-2.1/com.mojang/datafixerupper/10.0.21/b6b2ae770c02e0c1eb90f9985b151e9085a38d0b/datafixerupper-10.0.21.jar:/modules-2/files-2.1/com.mojang/jtracy/1.0.37/a3fb649b2e2b2288d2978f0b0bc3d83f62809d1e/jtracy-1.0.37.jar:/modules-2/files-2.1/com.mojang/jtracy/1.0.37/a99fcb63b72fb623534d0ceb71bda4bed9b55b4c/jtracy-1.0.37-natives-macos.jar:/modules-2/files-2.1/com.mojang/jtracy/1.0.37/c8e971da5150aa33283c5bf4097154c0da554fb9/jtracy-1.0.37-natives-macos-arm64.jar:/modules-2/files-2.1/com.mojang/logging/1.7.12/351cea64a5233361327d8d54c44277041beed97f/logging-1.7.12.jar:/modules-2/files-2.1/com.mojang/patchy/2.2.10/da05971b07cbb379d002cf7eaec6a2048211fefc/patchy-2.2.10.jar:/modules-2/files-2.1/com.mojang/text2speech/1.19.12/2e517a75c79d34d32de2b5d68422150836c2133e/text2speech-1.19.12.jar:/modules-2/files-2.1/commons-codec/commons-codec/1.22.0/6b3eb4beb7058c2a638f5f17bcb388649fd339dd/commons-codec-1.22.0.jar:/modules-2/files-2.1/commons-io/commons-io/2.20.0/36f3474daec2849c149e877614e7f979b2082cd2/commons-io-2.20.0.jar:/modules-2/files-2.1/io.netty/netty-buffer/4.2.15.Final/2beb620803bf871cda2dd5d46b8f831e8015dd34/netty-buffer-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-codec-base/4.2.15.Final/e97149fdd5fb04858efa90e314651c8d700dc68b/netty-codec-base-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-codec-compression/4.2.15.Final/89fc4a20b7ae6af974304b1695405e62c4f9b16d/netty-codec-compression-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-codec-http/4.2.15.Final/e611826aa054371bb9a17f27bdb05755a4cac5f0/netty-codec-http-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-common/4.2.15.Final/7222492c1af9c2d4d78d521eea340a619e242fda/netty-common-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-handler/4.2.15.Final/d5344afd1148e3b9927a74be019605ebb0937a93/netty-handler-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-resolver/4.2.15.Final/b961a16d379b508b473e064ba06842bba280f4e3/netty-resolver-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-transport-classes-epoll/4.2.15.Final/44bafba9c9993800e955b365bba4981326f3f3b1/netty-transport-classes-epoll-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-transport-classes-kqueue/4.2.15.Final/f248656bb907607c5a41c7b61fd918a97db79250/netty-transport-classes-kqueue-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-transport-native-unix-common/4.2.15.Final/efb6943b4de9e0226a5ac35330f232605424af02/netty-transport-native-unix-common-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-transport/4.2.15.Final/a000c3a6196ee40207b73ac619dcb339409dd62f/netty-transport-4.2.15.Final.jar:/modules-2/files-2.1/it.unimi.dsi/fastutil/8.5.18/a6cff377eecc19c2037bf31568a6d7106b50ba1f/fastutil-8.5.18.jar:/modules-2/files-2.1/net.java.dev.jna/jna-platform/5.17.0/a4934c44d25a9d8c2ddf4203affd20330cb3426f/jna-platform-5.17.0.jar:/modules-2/files-2.1/net.java.dev.jna/jna/5.17.0/33d12735bef894440780fce64f9758d420c7bae2/jna-5.17.0.jar:/modules-2/files-2.1/org.apache.commons/commons-compress/1.28.0/e482f2c7a88dac3c497e96aa420b6a769f59c8d7/commons-compress-1.28.0.jar:/modules-2/files-2.1/org.apache.commons/commons-lang3/3.20.0/65897b3e5731220962e659e001904af3c3cbeba9/commons-lang3-3.20.0.jar:/modules-2/files-2.1/org.apache.logging.log4j/log4j-api/2.26.0/ad52af0ecf054a7e3f275a2e180ee06d9c490951/log4j-api-2.26.0.jar:/modules-2/files-2.1/org.apache.logging.log4j/log4j-core/2.26.0/d267ca60b27ddb075e0b4e75e7875859717bf85f/log4j-core-2.26.0.jar:/modules-2/files-2.1/org.apache.logging.log4j/log4j-slf4j2-impl/2.26.0/668c0f0e813d83f00a7182533aa658ec7e7a0a0d/log4j-slf4j2-impl-2.26.0.jar:/modules-2/files-2.1/org.jcraft/jorbis/0.0.17/8872d22b293e8f5d7d56ff92be966e6dc28ebdc6/jorbis-0.0.17.jar:/modules-2/files-2.1/org.joml/joml/1.10.8/fc0a71dad90a2cf41d82a76156a0e700af8e4f8d/joml-1.10.8.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-freetype/3.4.1/caa75a37e857efc9b0686e434d708d6420c5b6ea/lwjgl-freetype-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-freetype/3.4.1/61cb2d85e1838bca1a0b664f54e818bc68deb2ef/lwjgl-freetype-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-freetype/3.4.1/cce5a86b4a7d17817fe8ea0296302a4353acf2d5/lwjgl-freetype-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-glfw/3.4.1/a782b1ddd175c9107bf300fd92920579ea65e2a4/lwjgl-glfw-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-glfw/3.4.1/3c8538942f58377d59cd7be2dc164ba71a53868a/lwjgl-glfw-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-glfw/3.4.1/ef1f8efca5a60ba3512bc4982b88e446ecc43378/lwjgl-glfw-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-jemalloc/3.4.1/16b663092854fc6adfe0a941e61cae2bb2e437b6/lwjgl-jemalloc-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-jemalloc/3.4.1/581b4d542e841015ce3265eed0495e2cde15b1d0/lwjgl-jemalloc-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-jemalloc/3.4.1/dcd7e3f9a2ca386e8c5b8f508a8511d9dd63bab0/lwjgl-jemalloc-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-openal/3.4.1/8508bd60589de0539aa465b78fcf838efd07ae9a/lwjgl-openal-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-openal/3.4.1/a4dc57b7b0880d3fffb4d0b61649f45712bccc93/lwjgl-openal-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-openal/3.4.1/1c709a38c4a0e86aae96db7b8c78432307f2322a/lwjgl-openal-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-opengl/3.4.1/830412cab823c029cda6b9729f9d2ed36cf79959/lwjgl-opengl-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-opengl/3.4.1/ba18fc6012b88494ee893506934b92b01c4ef14b/lwjgl-opengl-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-opengl/3.4.1/35b5550058de4960525f465243bd01805f04fd8b/lwjgl-opengl-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-shaderc/3.4.1/5c02c88f0d879529014c78463b76f43fdecfd272/lwjgl-shaderc-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-shaderc/3.4.1/1d7bbdba70cf29c42978f6c0c1bdef945b922072/lwjgl-shaderc-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-shaderc/3.4.1/48aa2727e8616154d399d4dab0d8e8479741fa4f/lwjgl-shaderc-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-spvc/3.4.1/188553592e97b5ab2dba54a1b403ee80b48dad4c/lwjgl-spvc-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-spvc/3.4.1/2eeebd6d5bae966bfffda9747eba744cfe839ae1/lwjgl-spvc-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-spvc/3.4.1/a4f66638d28129eba0babd8fdc4385427a5ea83e/lwjgl-spvc-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-stb/3.4.1/f077c3dafc31924fbe8acb0b913f08977ba27f8e/lwjgl-stb-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-stb/3.4.1/fd1ea36b717b0832babca09324a6cfc43906e2aa/lwjgl-stb-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-stb/3.4.1/da554e04f819f09b0f3473bd931628ebf557965e/lwjgl-stb-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-tinyfd/3.4.1/562697d40dbd2ed0424bf24dcf65d51170f81adf/lwjgl-tinyfd-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-tinyfd/3.4.1/211ae9e8720e8f10f2ce85a118fa7bd5ee71584b/lwjgl-tinyfd-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-tinyfd/3.4.1/7bcde70f6164b2e72f84cac5257b7e9877b88510/lwjgl-tinyfd-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vma/3.4.1/2c54ce10154feb1ede4d23c5947438cdbfdcc003/lwjgl-vma-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vma/3.4.1/a130a9e4f96c83063f749e1dcc7065e0dffb3936/lwjgl-vma-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vma/3.4.1/9451dc1067716bc4125cdba65a7096e465f4d0e5/lwjgl-vma-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vulkan/3.4.1/d0601fdc38890755e5638048c14cc0f7b990964b/lwjgl-vulkan-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vulkan/3.4.1/140c7fd3e0fdbcc625c92be9328301c555035905/lwjgl-vulkan-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vulkan/3.4.1/2c933bf617cb8a174af26585efda4778b59e6d44/lwjgl-vulkan-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl/3.4.1/129e06a04f93992cb2a45172435b21fc4b60dd7d/lwjgl-3.4.1-unsafe.jar:/modules-2/files-2.1/org.lwjgl/lwjgl/3.4.1/b034fd9a67cb8646c01af7efcefcb93be835542b/lwjgl-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl/3.4.1/b4cbdef4818abd714ee66985344c0949fd1cd6d6/lwjgl-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.slf4j/slf4j-api/2.0.17/d9e58ac9c7779ba3bf8142aff6c830617a7fe60f/slf4j-api-2.0.17.jar:/modules-2/files-2.1/org.ow2.asm/asm-util/9.5/64b5a1fc8c1b15ed2efd6a063e976bc8d3dc5ffe/asm-util-9.5.jar:/modules-2/files-2.1/org.ow2.asm/asm-analysis/9.5/490bacc77de7cbc0be1a30bb3471072d705be4a4/asm-analysis-9.5.jar:/modules-2/files-2.1/org.ow2.asm/asm-tree/9.5/fd33c8b6373abaa675be407082fdfda35021254a/asm-tree-9.5.jar:/modules-2/files-2.1/org.ow2.asm/asm/9.5/dc6ea1875f4d64fbc85e1691c95b96a3d8569c90/asm-9.5.jar:/modules-2/files-2.1/net.neoforged/srgutils/1.0.10/abb471237b33b19f040ada00bfbad1ec45b949b6/srgutils-1.0.10.jar:/modules-2/files-2.1/io.netty/netty-transport-native-kqueue/4.2.15.Final/8ea0ef3eb716d821332e4b4926825a4b7c1a6d38/netty-transport-native-kqueue-4.2.15.Final-osx-aarch_64.jar:/modules-2/files-2.1/io.netty/netty-transport-native-kqueue/4.2.15.Final/4245380831515fb4eca18d32477a27fbb8f7b8f4/netty-transport-native-kqueue-4.2.15.Final-osx-x86_64.jar:/build/classes/java/main:/build/resources/main org.openjdk.jmh.Main .*net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix -p itemCount=100000 -p implementation=abahgat-suffix-tree -f 1 -wi 1 -i 6 -w 200ms -r 200ms -rf json -rff /build/reports/jmh/adaptive-jmh-passes/pass-02-group-003.json -o /build/reports/jmh/adaptive-jmh-passes/pass-02-group-003.txt -foe true -p typedCharacterCount=1,2,3,4,5,6,7,8,9,10,11 -prof gc # JMH version: 1.37 # VM version: JDK 25, OpenJDK 64-Bit Server VM, 25+36-b176.4 # VM invoker: java # VM options: # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 1 iterations, 200 ms each # Measurement: 6 iterations, 200 ms each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix # Parameters: (implementation = abahgat-suffix-tree, itemCount = 100000, typedCharacterCount = 1) # Run progress: 0.00% complete, ETA 00:00:15 # Fork: 1 of 1 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::objectFieldOffset has been called by org.openjdk.jmh.util.Utils (file:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar) WARNING: Please consider reporting this to the maintainers of class org.openjdk.jmh.util.Utils WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release # Warmup Iteration 1: 76.676 ms/op Iteration 1: 63.826 ms/op gc.alloc.rate: 1338.255 MB/sec gc.alloc.rate.norm: 89639492.000 B/op gc.count: 1.000 counts gc.time: 16.000 ms Iteration 2: 37.320 ms/op gc.alloc.rate: 1280.935 MB/sec gc.alloc.rate.norm: 50167131.000 B/op gc.count: 1.000 counts gc.time: 26.000 ms Iteration 3: 50.873 ms/op gc.alloc.rate: 1341.528 MB/sec gc.alloc.rate.norm: 71604868.800 B/op gc.count: 1.000 counts gc.time: 27.000 ms Iteration 4: 79.055 ms/op gc.alloc.rate: 1270.859 MB/sec gc.alloc.rate.norm: 105451384.000 B/op gc.count: 1.000 counts gc.time: 14.000 ms Iteration 5: 40.031 ms/op gc.alloc.rate: 1193.864 MB/sec gc.alloc.rate.norm: 50167120.000 B/op gc.count: ≈ 0 counts Iteration 6: 63.518 ms/op gc.alloc.rate: 1184.264 MB/sec gc.alloc.rate.norm: 78955136.000 B/op gc.count: 1.000 counts gc.time: 28.000 ms Result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix": 55.771 ±(99.9%) 44.853 ms/op [Average] (min, avg, max) = (37.320, 55.771, 79.055), stdev = 15.995 CI (99.9%): [10.918, 100.624] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate": 1268.284 ±(99.9%) 190.293 MB/sec [Average] (min, avg, max) = (1184.264, 1268.284, 1341.528), stdev = 67.860 CI (99.9%): [1077.991, 1458.577] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm": 74330855.300 ±(99.9%) 61429335.430 B/op [Average] (min, avg, max) = (50167120.000, 74330855.300, 105451384.000), stdev = 21906292.768 CI (99.9%): [12901519.870, 135760190.730] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count": 5.000 ±(99.9%) 0.001 counts [Sum] (min, avg, max) = (≈ 0, 0.833, 1.000), stdev = 0.408 CI (99.9%): [5.000, 5.000] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time": 111.000 ±(99.9%) 0.001 ms [Sum] (min, avg, max) = (≈ 0, 18.500, 28.000), stdev = 10.840 CI (99.9%): [111.000, 111.000] (assumes normal distribution) # JMH version: 1.37 # VM version: JDK 25, OpenJDK 64-Bit Server VM, 25+36-b176.4 # VM invoker: java # VM options: # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 1 iterations, 200 ms each # Measurement: 6 iterations, 200 ms each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix # Parameters: (implementation = abahgat-suffix-tree, itemCount = 100000, typedCharacterCount = 2) # Run progress: 9.09% complete, ETA 00:00:32 # Fork: 1 of 1 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::objectFieldOffset has been called by org.openjdk.jmh.util.Utils (file:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar) WARNING: Please consider reporting this to the maintainers of class org.openjdk.jmh.util.Utils WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release # Warmup Iteration 1: 6.639 ms/op Iteration 1: 4.493 ms/op gc.alloc.rate: 1697.209 MB/sec gc.alloc.rate.norm: 8003409.739 B/op gc.count: ≈ 0 counts Iteration 2: 5.717 ms/op gc.alloc.rate: 1586.572 MB/sec gc.alloc.rate.norm: 9518850.595 B/op gc.count: 1.000 counts gc.time: 6.000 ms Iteration 3: 5.144 ms/op gc.alloc.rate: 1570.708 MB/sec gc.alloc.rate.norm: 8477706.435 B/op gc.count: ≈ 0 counts Iteration 4: 4.633 ms/op gc.alloc.rate: 1660.842 MB/sec gc.alloc.rate.norm: 8127186.043 B/op gc.count: 1.000 counts gc.time: 3.000 ms Iteration 5: 4.606 ms/op gc.alloc.rate: 1646.014 MB/sec gc.alloc.rate.norm: 7955003.200 B/op gc.count: 1.000 counts gc.time: 5.000 ms Iteration 6: 5.470 ms/op gc.alloc.rate: 1647.774 MB/sec gc.alloc.rate.norm: 9458771.243 B/op gc.count: ≈ 0 counts Result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix": 5.010 ±(99.9%) 1.431 ms/op [Average] (min, avg, max) = (4.493, 5.010, 5.717), stdev = 0.510 CI (99.9%): [3.579, 6.441] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate": 1634.853 ±(99.9%) 133.314 MB/sec [Average] (min, avg, max) = (1570.708, 1634.853, 1697.209), stdev = 47.541 CI (99.9%): [1501.539, 1768.168] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm": 8590154.542 ±(99.9%) 2018875.176 B/op [Average] (min, avg, max) = (7955003.200, 8590154.542, 9518850.595), stdev = 719950.336 CI (99.9%): [6571279.366, 10609029.719] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count": 3.000 ±(99.9%) 0.001 counts [Sum] (min, avg, max) = (≈ 0, 0.500, 1.000), stdev = 0.548 CI (99.9%): [3.000, 3.000] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time": 14.000 ±(99.9%) 0.001 ms [Sum] (min, avg, max) = (≈ 0, 2.333, 6.000), stdev = 2.733 CI (99.9%): [14.000, 14.000] (assumes normal distribution) # JMH version: 1.37 # VM version: JDK 25, OpenJDK 64-Bit Server VM, 25+36-b176.4 # VM invoker: java # VM options: # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 1 iterations, 200 ms each # Measurement: 6 iterations, 200 ms each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix # Parameters: (implementation = abahgat-suffix-tree, itemCount = 100000, typedCharacterCount = 3) # Run progress: 18.18% complete, ETA 00:00:27 # Fork: 1 of 1 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::objectFieldOffset has been called by org.openjdk.jmh.util.Utils (file:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar) WARNING: Please consider reporting this to the maintainers of class org.openjdk.jmh.util.Utils WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release # Warmup Iteration 1: 3.165 ms/op Iteration 1: 2.197 ms/op gc.alloc.rate: 1668.611 MB/sec gc.alloc.rate.norm: 3846645.702 B/op gc.count: 1.000 counts gc.time: 10.000 ms Iteration 2: 2.139 ms/op gc.alloc.rate: 1727.178 MB/sec gc.alloc.rate.norm: 3877485.856 B/op gc.count: 1.000 counts gc.time: 4.000 ms Iteration 3: 2.216 ms/op gc.alloc.rate: 1655.289 MB/sec gc.alloc.rate.norm: 3848650.695 B/op gc.count: ≈ 0 counts Iteration 4: 2.124 ms/op gc.alloc.rate: 1739.507 MB/sec gc.alloc.rate.norm: 3877485.856 B/op gc.count: 1.000 counts gc.time: 5.000 ms Iteration 5: 2.072 ms/op gc.alloc.rate: 1781.256 MB/sec gc.alloc.rate.norm: 3874221.861 B/op gc.count: 1.000 counts gc.time: 4.000 ms Iteration 6: 1.976 ms/op gc.alloc.rate: 1822.342 MB/sec gc.alloc.rate.norm: 3778545.231 B/op gc.count: ≈ 0 counts Result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix": 2.121 ±(99.9%) 0.246 ms/op [Average] (min, avg, max) = (1.976, 2.121, 2.216), stdev = 0.088 CI (99.9%): [1.874, 2.367] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate": 1732.364 ±(99.9%) 179.859 MB/sec [Average] (min, avg, max) = (1655.289, 1732.364, 1822.342), stdev = 64.139 CI (99.9%): [1552.505, 1912.222] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm": 3850505.867 ±(99.9%) 106521.924 B/op [Average] (min, avg, max) = (3778545.231, 3850505.867, 3877485.856), stdev = 37986.744 CI (99.9%): [3743983.943, 3957027.791] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count": 4.000 ±(99.9%) 0.001 counts [Sum] (min, avg, max) = (≈ 0, 0.667, 1.000), stdev = 0.516 CI (99.9%): [4.000, 4.000] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time": 23.000 ±(99.9%) 0.001 ms [Sum] (min, avg, max) = (≈ 0, 3.833, 10.000), stdev = 3.710 CI (99.9%): [23.000, 23.000] (assumes normal distribution) # JMH version: 1.37 # VM version: JDK 25, OpenJDK 64-Bit Server VM, 25+36-b176.4 # VM invoker: java # VM options: # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 1 iterations, 200 ms each # Measurement: 6 iterations, 200 ms each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix # Parameters: (implementation = abahgat-suffix-tree, itemCount = 100000, typedCharacterCount = 4) # Run progress: 27.27% complete, ETA 00:00:23 # Fork: 1 of 1 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::objectFieldOffset has been called by org.openjdk.jmh.util.Utils (file:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar) WARNING: Please consider reporting this to the maintainers of class org.openjdk.jmh.util.Utils WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release # Warmup Iteration 1: 2.171 ms/op Iteration 1: 1.834 ms/op gc.alloc.rate: 1551.101 MB/sec gc.alloc.rate.norm: 2985408.643 B/op gc.count: 1.000 counts gc.time: 14.000 ms Iteration 2: 1.781 ms/op gc.alloc.rate: 1606.728 MB/sec gc.alloc.rate.norm: 3004168.621 B/op gc.count: 1.000 counts gc.time: 17.000 ms Iteration 3: 1.607 ms/op gc.alloc.rate: 1775.172 MB/sec gc.alloc.rate.norm: 2994342.016 B/op gc.count: ≈ 0 counts Iteration 4: 1.800 ms/op gc.alloc.rate: 1590.102 MB/sec gc.alloc.rate.norm: 3002526.737 B/op gc.count: 1.000 counts gc.time: 4.000 ms Iteration 5: 1.606 ms/op gc.alloc.rate: 1775.637 MB/sec gc.alloc.rate.norm: 2992428.341 B/op gc.count: ≈ 0 counts Iteration 6: 1.616 ms/op gc.alloc.rate: 1755.901 MB/sec gc.alloc.rate.norm: 2978262.173 B/op gc.count: 1.000 counts gc.time: 4.000 ms Result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix": 1.707 ±(99.9%) 0.304 ms/op [Average] (min, avg, max) = (1.606, 1.707, 1.834), stdev = 0.108 CI (99.9%): [1.403, 2.011] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate": 1675.774 ±(99.9%) 291.213 MB/sec [Average] (min, avg, max) = (1551.101, 1675.774, 1775.637), stdev = 103.849 CI (99.9%): [1384.561, 1966.986] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm": 2992856.088 ±(99.9%) 27826.028 B/op [Average] (min, avg, max) = (2978262.173, 2992856.088, 3004168.621), stdev = 9923.030 CI (99.9%): [2965030.061, 3020682.116] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count": 4.000 ±(99.9%) 0.001 counts [Sum] (min, avg, max) = (≈ 0, 0.667, 1.000), stdev = 0.516 CI (99.9%): [4.000, 4.000] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time": 39.000 ±(99.9%) 0.001 ms [Sum] (min, avg, max) = (≈ 0, 6.500, 17.000), stdev = 7.259 CI (99.9%): [39.000, 39.000] (assumes normal distribution) # JMH version: 1.37 # VM version: JDK 25, OpenJDK 64-Bit Server VM, 25+36-b176.4 # VM invoker: java # VM options: # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 1 iterations, 200 ms each # Measurement: 6 iterations, 200 ms each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix # Parameters: (implementation = abahgat-suffix-tree, itemCount = 100000, typedCharacterCount = 5) # Run progress: 36.36% complete, ETA 00:00:20 # Fork: 1 of 1 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::objectFieldOffset has been called by org.openjdk.jmh.util.Utils (file:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar) WARNING: Please consider reporting this to the maintainers of class org.openjdk.jmh.util.Utils WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release # Warmup Iteration 1: 2.023 ms/op Iteration 1: 1.288 ms/op gc.alloc.rate: 1848.347 MB/sec gc.alloc.rate.norm: 2498096.917 B/op gc.count: ≈ 0 counts Iteration 2: 1.441 ms/op gc.alloc.rate: 1663.833 MB/sec gc.alloc.rate.norm: 2516081.622 B/op gc.count: 1.000 counts gc.time: 6.000 ms Iteration 3: 1.309 ms/op gc.alloc.rate: 1828.304 MB/sec gc.alloc.rate.norm: 2510712.102 B/op gc.count: ≈ 0 counts Iteration 4: 1.344 ms/op gc.alloc.rate: 1824.639 MB/sec gc.alloc.rate.norm: 2574306.773 B/op gc.count: 1.000 counts gc.time: 4.000 ms Iteration 5: 1.311 ms/op gc.alloc.rate: 1813.580 MB/sec gc.alloc.rate.norm: 2497031.032 B/op gc.count: 1.000 counts gc.time: 5.000 ms Iteration 6: 1.406 ms/op gc.alloc.rate: 1711.974 MB/sec gc.alloc.rate.norm: 2526644.722 B/op gc.count: ≈ 0 counts Result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix": 1.350 ±(99.9%) 0.171 ms/op [Average] (min, avg, max) = (1.288, 1.350, 1.441), stdev = 0.061 CI (99.9%): [1.179, 1.520] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate": 1781.779 ±(99.9%) 210.699 MB/sec [Average] (min, avg, max) = (1663.833, 1781.779, 1848.347), stdev = 75.137 CI (99.9%): [1571.080, 1992.478] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm": 2520478.861 ±(99.9%) 80308.886 B/op [Average] (min, avg, max) = (2497031.032, 2520478.861, 2574306.773), stdev = 28638.922 CI (99.9%): [2440169.975, 2600787.748] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count": 3.000 ±(99.9%) 0.001 counts [Sum] (min, avg, max) = (≈ 0, 0.500, 1.000), stdev = 0.548 CI (99.9%): [3.000, 3.000] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time": 15.000 ±(99.9%) 0.001 ms [Sum] (min, avg, max) = (≈ 0, 2.500, 6.000), stdev = 2.811 CI (99.9%): [15.000, 15.000] (assumes normal distribution) # JMH version: 1.37 # VM version: JDK 25, OpenJDK 64-Bit Server VM, 25+36-b176.4 # VM invoker: java # VM options: # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 1 iterations, 200 ms each # Measurement: 6 iterations, 200 ms each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix # Parameters: (implementation = abahgat-suffix-tree, itemCount = 100000, typedCharacterCount = 6) # Run progress: 45.45% complete, ETA 00:00:17 # Fork: 1 of 1 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::objectFieldOffset has been called by org.openjdk.jmh.util.Utils (file:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar) WARNING: Please consider reporting this to the maintainers of class org.openjdk.jmh.util.Utils WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release # Warmup Iteration 1: 1.841 ms/op Iteration 1: 1.401 ms/op gc.alloc.rate: 1691.106 MB/sec gc.alloc.rate.norm: 2485620.634 B/op gc.count: ≈ 0 counts Iteration 2: 1.304 ms/op gc.alloc.rate: 1800.104 MB/sec gc.alloc.rate.norm: 2463665.107 B/op gc.count: 1.000 counts gc.time: 4.000 ms Iteration 3: 1.301 ms/op gc.alloc.rate: 1794.212 MB/sec gc.alloc.rate.norm: 2449891.846 B/op gc.count: 1.000 counts gc.time: 5.000 ms Iteration 4: 1.326 ms/op gc.alloc.rate: 1809.830 MB/sec gc.alloc.rate.norm: 2517913.135 B/op gc.count: ≈ 0 counts Iteration 5: 1.368 ms/op gc.alloc.rate: 1706.019 MB/sec gc.alloc.rate.norm: 2449467.520 B/op gc.count: 1.000 counts gc.time: 4.000 ms Iteration 6: 1.342 ms/op gc.alloc.rate: 1773.140 MB/sec gc.alloc.rate.norm: 2498166.805 B/op gc.count: 1.000 counts gc.time: 3.000 ms Result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix": 1.340 ±(99.9%) 0.109 ms/op [Average] (min, avg, max) = (1.301, 1.340, 1.401), stdev = 0.039 CI (99.9%): [1.232, 1.449] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate": 1762.402 ±(99.9%) 143.317 MB/sec [Average] (min, avg, max) = (1691.106, 1762.402, 1809.830), stdev = 51.108 CI (99.9%): [1619.085, 1905.719] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm": 2477454.175 ±(99.9%) 77971.569 B/op [Average] (min, avg, max) = (2449467.520, 2477454.175, 2517913.135), stdev = 27805.413 CI (99.9%): [2399482.606, 2555425.743] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count": 4.000 ±(99.9%) 0.001 counts [Sum] (min, avg, max) = (≈ 0, 0.667, 1.000), stdev = 0.516 CI (99.9%): [4.000, 4.000] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time": 16.000 ±(99.9%) 0.001 ms [Sum] (min, avg, max) = (≈ 0, 2.667, 5.000), stdev = 2.160 CI (99.9%): [16.000, 16.000] (assumes normal distribution) # JMH version: 1.37 # VM version: JDK 25, OpenJDK 64-Bit Server VM, 25+36-b176.4 # VM invoker: java # VM options: # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 1 iterations, 200 ms each # Measurement: 6 iterations, 200 ms each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix # Parameters: (implementation = abahgat-suffix-tree, itemCount = 100000, typedCharacterCount = 7) # Run progress: 54.55% complete, ETA 00:00:14 # Fork: 1 of 1 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::objectFieldOffset has been called by org.openjdk.jmh.util.Utils (file:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar) WARNING: Please consider reporting this to the maintainers of class org.openjdk.jmh.util.Utils WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release # Warmup Iteration 1: 1.238 ms/op Iteration 1: 1.099 ms/op gc.alloc.rate: 1348.704 MB/sec gc.alloc.rate.norm: 1557811.234 B/op gc.count: 1.000 counts gc.time: 10.000 ms Iteration 2: 0.963 ms/op gc.alloc.rate: 1557.422 MB/sec gc.alloc.rate.norm: 1575377.736 B/op gc.count: ≈ 0 counts Iteration 3: 0.973 ms/op gc.alloc.rate: 1534.551 MB/sec gc.alloc.rate.norm: 1567120.154 B/op gc.count: 1.000 counts gc.time: 4.000 ms Iteration 4: 0.943 ms/op gc.alloc.rate: 1552.836 MB/sec gc.alloc.rate.norm: 1535889.688 B/op gc.count: 1.000 counts gc.time: 5.000 ms Iteration 5: 1.060 ms/op gc.alloc.rate: 1420.822 MB/sec gc.alloc.rate.norm: 1580447.710 B/op gc.count: ≈ 0 counts Iteration 6: 0.982 ms/op gc.alloc.rate: 1532.794 MB/sec gc.alloc.rate.norm: 1579011.713 B/op gc.count: 1.000 counts gc.time: 4.000 ms Result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix": 1.003 ±(99.9%) 0.173 ms/op [Average] (min, avg, max) = (0.943, 1.003, 1.099), stdev = 0.062 CI (99.9%): [0.830, 1.176] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate": 1491.188 ±(99.9%) 241.394 MB/sec [Average] (min, avg, max) = (1348.704, 1491.188, 1557.422), stdev = 86.084 CI (99.9%): [1249.794, 1732.583] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm": 1565943.039 ±(99.9%) 47603.578 B/op [Average] (min, avg, max) = (1535889.688, 1565943.039, 1580447.710), stdev = 16975.895 CI (99.9%): [1518339.461, 1613546.617] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count": 4.000 ±(99.9%) 0.001 counts [Sum] (min, avg, max) = (≈ 0, 0.667, 1.000), stdev = 0.516 CI (99.9%): [4.000, 4.000] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time": 23.000 ±(99.9%) 0.001 ms [Sum] (min, avg, max) = (≈ 0, 3.833, 10.000), stdev = 3.710 CI (99.9%): [23.000, 23.000] (assumes normal distribution) # JMH version: 1.37 # VM version: JDK 25, OpenJDK 64-Bit Server VM, 25+36-b176.4 # VM invoker: java # VM options: # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 1 iterations, 200 ms each # Measurement: 6 iterations, 200 ms each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix # Parameters: (implementation = abahgat-suffix-tree, itemCount = 100000, typedCharacterCount = 8) # Run progress: 63.64% complete, ETA 00:00:11 # Fork: 1 of 1 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::objectFieldOffset has been called by org.openjdk.jmh.util.Utils (file:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar) WARNING: Please consider reporting this to the maintainers of class org.openjdk.jmh.util.Utils WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release # Warmup Iteration 1: 0.799 ms/op Iteration 1: 0.586 ms/op gc.alloc.rate: 1415.596 MB/sec gc.alloc.rate.norm: 870915.341 B/op gc.count: 1.000 counts gc.time: 14.000 ms Iteration 2: 0.530 ms/op gc.alloc.rate: 1564.472 MB/sec gc.alloc.rate.norm: 870913.667 B/op gc.count: ≈ 0 counts Iteration 3: 0.574 ms/op gc.alloc.rate: 1445.797 MB/sec gc.alloc.rate.norm: 870915.386 B/op gc.count: 1.000 counts gc.time: 9.000 ms Iteration 4: 0.587 ms/op gc.alloc.rate: 1428.381 MB/sec gc.alloc.rate.norm: 879928.091 B/op gc.count: ≈ 0 counts Iteration 5: 0.540 ms/op gc.alloc.rate: 1507.718 MB/sec gc.alloc.rate.norm: 854030.262 B/op gc.count: 1.000 counts gc.time: 5.000 ms Iteration 6: 0.553 ms/op gc.alloc.rate: 1529.842 MB/sec gc.alloc.rate.norm: 888345.557 B/op gc.count: 1.000 counts gc.time: 5.000 ms Result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix": 0.562 ±(99.9%) 0.068 ms/op [Average] (min, avg, max) = (0.530, 0.562, 0.587), stdev = 0.024 CI (99.9%): [0.494, 0.630] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate": 1481.968 ±(99.9%) 169.865 MB/sec [Average] (min, avg, max) = (1415.596, 1481.968, 1564.472), stdev = 60.576 CI (99.9%): [1312.103, 1651.833] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm": 872508.051 ±(99.9%) 32093.611 B/op [Average] (min, avg, max) = (854030.262, 872508.051, 888345.557), stdev = 11444.891 CI (99.9%): [840414.439, 904601.662] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count": 4.000 ±(99.9%) 0.001 counts [Sum] (min, avg, max) = (≈ 0, 0.667, 1.000), stdev = 0.516 CI (99.9%): [4.000, 4.000] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time": 33.000 ±(99.9%) 0.001 ms [Sum] (min, avg, max) = (≈ 0, 5.500, 14.000), stdev = 5.394 CI (99.9%): [33.000, 33.000] (assumes normal distribution) # JMH version: 1.37 # VM version: JDK 25, OpenJDK 64-Bit Server VM, 25+36-b176.4 # VM invoker: java # VM options: # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 1 iterations, 200 ms each # Measurement: 6 iterations, 200 ms each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix # Parameters: (implementation = abahgat-suffix-tree, itemCount = 100000, typedCharacterCount = 9) # Run progress: 72.73% complete, ETA 00:00:08 # Fork: 1 of 1 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::objectFieldOffset has been called by org.openjdk.jmh.util.Utils (file:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar) WARNING: Please consider reporting this to the maintainers of class org.openjdk.jmh.util.Utils WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release # Warmup Iteration 1: 0.708 ms/op Iteration 1: 0.499 ms/op gc.alloc.rate: 1593.846 MB/sec gc.alloc.rate.norm: 834431.325 B/op gc.count: ≈ 0 counts Iteration 2: 0.515 ms/op gc.alloc.rate: 1559.047 MB/sec gc.alloc.rate.norm: 842375.500 B/op gc.count: 1.000 counts gc.time: 5.000 ms Iteration 3: 0.556 ms/op gc.alloc.rate: 1473.591 MB/sec gc.alloc.rate.norm: 859962.249 B/op gc.count: ≈ 0 counts Iteration 4: 0.517 ms/op gc.alloc.rate: 1554.190 MB/sec gc.alloc.rate.norm: 842375.500 B/op gc.count: 1.000 counts gc.time: 4.000 ms Iteration 5: 0.499 ms/op gc.alloc.rate: 1593.291 MB/sec gc.alloc.rate.norm: 834639.557 B/op gc.count: ≈ 0 counts Iteration 6: 0.514 ms/op gc.alloc.rate: 1545.389 MB/sec gc.alloc.rate.norm: 834113.644 B/op gc.count: 1.000 counts gc.time: 5.000 ms Result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix": 0.517 ±(99.9%) 0.059 ms/op [Average] (min, avg, max) = (0.499, 0.517, 0.556), stdev = 0.021 CI (99.9%): [0.458, 0.575] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate": 1553.226 ±(99.9%) 123.468 MB/sec [Average] (min, avg, max) = (1473.591, 1553.226, 1593.846), stdev = 44.030 CI (99.9%): [1429.757, 1676.694] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm": 841316.296 ±(99.9%) 27866.767 B/op [Average] (min, avg, max) = (834113.644, 841316.296, 859962.249), stdev = 9937.557 CI (99.9%): [813449.529, 869183.062] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count": 3.000 ±(99.9%) 0.001 counts [Sum] (min, avg, max) = (≈ 0, 0.500, 1.000), stdev = 0.548 CI (99.9%): [3.000, 3.000] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time": 14.000 ±(99.9%) 0.001 ms [Sum] (min, avg, max) = (≈ 0, 2.333, 5.000), stdev = 2.582 CI (99.9%): [14.000, 14.000] (assumes normal distribution) # JMH version: 1.37 # VM version: JDK 25, OpenJDK 64-Bit Server VM, 25+36-b176.4 # VM invoker: java # VM options: # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 1 iterations, 200 ms each # Measurement: 6 iterations, 200 ms each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix # Parameters: (implementation = abahgat-suffix-tree, itemCount = 100000, typedCharacterCount = 10) # Run progress: 81.82% complete, ETA 00:00:05 # Fork: 1 of 1 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::objectFieldOffset has been called by org.openjdk.jmh.util.Utils (file:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar) WARNING: Please consider reporting this to the maintainers of class org.openjdk.jmh.util.Utils WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release # Warmup Iteration 1: 0.266 ms/op Iteration 1: 0.205 ms/op gc.alloc.rate: 1719.542 MB/sec gc.alloc.rate.norm: 369938.573 B/op gc.count: 1.000 counts gc.time: 10.000 ms Iteration 2: 0.196 ms/op gc.alloc.rate: 1798.136 MB/sec gc.alloc.rate.norm: 369938.200 B/op gc.count: 1.000 counts gc.time: 5.000 ms Iteration 3: 0.206 ms/op gc.alloc.rate: 1708.027 MB/sec gc.alloc.rate.norm: 369830.463 B/op gc.count: ≈ 0 counts Iteration 4: 0.196 ms/op gc.alloc.rate: 1789.736 MB/sec gc.alloc.rate.norm: 367185.934 B/op gc.count: 1.000 counts gc.time: 4.000 ms Iteration 5: 0.196 ms/op gc.alloc.rate: 1815.310 MB/sec gc.alloc.rate.norm: 372701.320 B/op gc.count: 1.000 counts gc.time: 4.000 ms Iteration 6: 0.189 ms/op gc.alloc.rate: 1862.996 MB/sec gc.alloc.rate.norm: 370005.311 B/op gc.count: ≈ 0 counts Result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix": 0.198 ±(99.9%) 0.018 ms/op [Average] (min, avg, max) = (0.189, 0.198, 0.206), stdev = 0.006 CI (99.9%): [0.180, 0.216] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate": 1782.291 ±(99.9%) 165.246 MB/sec [Average] (min, avg, max) = (1708.027, 1782.291, 1862.996), stdev = 58.928 CI (99.9%): [1617.045, 1947.537] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm": 369933.300 ±(99.9%) 4893.409 B/op [Average] (min, avg, max) = (367185.934, 369933.300, 372701.320), stdev = 1745.037 CI (99.9%): [365039.891, 374826.709] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count": 4.000 ±(99.9%) 0.001 counts [Sum] (min, avg, max) = (≈ 0, 0.667, 1.000), stdev = 0.516 CI (99.9%): [4.000, 4.000] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time": 23.000 ±(99.9%) 0.001 ms [Sum] (min, avg, max) = (≈ 0, 3.833, 10.000), stdev = 3.710 CI (99.9%): [23.000, 23.000] (assumes normal distribution) # JMH version: 1.37 # VM version: JDK 25, OpenJDK 64-Bit Server VM, 25+36-b176.4 # VM invoker: java # VM options: # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 1 iterations, 200 ms each # Measurement: 6 iterations, 200 ms each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix # Parameters: (implementation = abahgat-suffix-tree, itemCount = 100000, typedCharacterCount = 11) # Run progress: 90.91% complete, ETA 00:00:02 # Fork: 1 of 1 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::objectFieldOffset has been called by org.openjdk.jmh.util.Utils (file:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar) WARNING: Please consider reporting this to the maintainers of class org.openjdk.jmh.util.Utils WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release # Warmup Iteration 1: 0.285 ms/op Iteration 1: 0.275 ms/op gc.alloc.rate: 1143.415 MB/sec gc.alloc.rate.norm: 329907.957 B/op gc.count: ≈ 0 counts Iteration 2: 0.207 ms/op gc.alloc.rate: 1500.292 MB/sec gc.alloc.rate.norm: 326732.595 B/op gc.count: 1.000 counts gc.time: 5.000 ms Iteration 3: 0.191 ms/op gc.alloc.rate: 1659.335 MB/sec gc.alloc.rate.norm: 332824.104 B/op gc.count: ≈ 0 counts Iteration 4: 0.220 ms/op gc.alloc.rate: 1423.233 MB/sec gc.alloc.rate.norm: 329131.944 B/op gc.count: 1.000 counts gc.time: 6.000 ms Iteration 5: 0.427 ms/op gc.alloc.rate: 739.119 MB/sec gc.alloc.rate.norm: 331423.816 B/op gc.count: ≈ 0 counts Iteration 6: 0.202 ms/op gc.alloc.rate: 1559.092 MB/sec gc.alloc.rate.norm: 329905.389 B/op gc.count: ≈ 0 counts Result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix": 0.254 ±(99.9%) 0.252 ms/op [Average] (min, avg, max) = (0.191, 0.254, 0.427), stdev = 0.090 CI (99.9%): [0.002, 0.505] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate": 1337.414 ±(99.9%) 956.932 MB/sec [Average] (min, avg, max) = (739.119, 1337.414, 1659.335), stdev = 341.251 CI (99.9%): [380.483, 2294.346] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm": 329987.634 ±(99.9%) 5807.955 B/op [Average] (min, avg, max) = (326732.595, 329987.634, 332824.104), stdev = 2071.173 CI (99.9%): [324179.679, 335795.589] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count": 2.000 ±(99.9%) 0.001 counts [Sum] (min, avg, max) = (≈ 0, 0.333, 1.000), stdev = 0.516 CI (99.9%): [2.000, 2.000] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time": 11.000 ±(99.9%) 0.001 ms [Sum] (min, avg, max) = (≈ 0, 1.833, 6.000), stdev = 2.858 CI (99.9%): [11.000, 11.000] (assumes normal distribution) # Run complete. Total time: 00:00:31 REMEMBER: The numbers below are just data. To gain reusable insights, you need to follow up on why the numbers are the way they are. Use profilers (see -prof, -lprof), design factorial experiments, perform baseline and negative tests that provide experimental control, make sure the benchmarking environment is safe on JVM/OS/HW level, ask for reviews from the domain experts. Do not assume the numbers tell you what you want them to tell. NOTE: Current JVM experimentally supports Compiler Blackholes, and they are in use. Please exercise extra caution when trusting the results, look into the generated code to check the benchmark still works, and factor in a small probability of new VM bugs. Additionally, while comparisons between different JVMs are already problematic, the performance difference caused by different Blackhole modes can be very significant. Please make sure you use the consistent Blackhole mode for comparisons. Benchmark (implementation) (itemCount) (typedCharacterCount) Mode Cnt Score Error Units LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix abahgat-suffix-tree 100000 1 avgt 6 55.771 ± 44.853 ms/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate abahgat-suffix-tree 100000 1 avgt 6 1268.284 ± 190.293 MB/sec LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm abahgat-suffix-tree 100000 1 avgt 6 74330855.300 ± 61429335.430 B/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count abahgat-suffix-tree 100000 1 avgt 6 5.000 counts LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time abahgat-suffix-tree 100000 1 avgt 6 111.000 ms LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix abahgat-suffix-tree 100000 2 avgt 6 5.010 ± 1.431 ms/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate abahgat-suffix-tree 100000 2 avgt 6 1634.853 ± 133.314 MB/sec LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm abahgat-suffix-tree 100000 2 avgt 6 8590154.542 ± 2018875.176 B/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count abahgat-suffix-tree 100000 2 avgt 6 3.000 counts LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time abahgat-suffix-tree 100000 2 avgt 6 14.000 ms LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix abahgat-suffix-tree 100000 3 avgt 6 2.121 ± 0.246 ms/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate abahgat-suffix-tree 100000 3 avgt 6 1732.364 ± 179.859 MB/sec LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm abahgat-suffix-tree 100000 3 avgt 6 3850505.867 ± 106521.924 B/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count abahgat-suffix-tree 100000 3 avgt 6 4.000 counts LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time abahgat-suffix-tree 100000 3 avgt 6 23.000 ms LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix abahgat-suffix-tree 100000 4 avgt 6 1.707 ± 0.304 ms/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate abahgat-suffix-tree 100000 4 avgt 6 1675.774 ± 291.213 MB/sec LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm abahgat-suffix-tree 100000 4 avgt 6 2992856.088 ± 27826.028 B/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count abahgat-suffix-tree 100000 4 avgt 6 4.000 counts LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time abahgat-suffix-tree 100000 4 avgt 6 39.000 ms LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix abahgat-suffix-tree 100000 5 avgt 6 1.350 ± 0.171 ms/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate abahgat-suffix-tree 100000 5 avgt 6 1781.779 ± 210.699 MB/sec LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm abahgat-suffix-tree 100000 5 avgt 6 2520478.861 ± 80308.886 B/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count abahgat-suffix-tree 100000 5 avgt 6 3.000 counts LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time abahgat-suffix-tree 100000 5 avgt 6 15.000 ms LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix abahgat-suffix-tree 100000 6 avgt 6 1.340 ± 0.109 ms/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate abahgat-suffix-tree 100000 6 avgt 6 1762.402 ± 143.317 MB/sec LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm abahgat-suffix-tree 100000 6 avgt 6 2477454.175 ± 77971.569 B/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count abahgat-suffix-tree 100000 6 avgt 6 4.000 counts LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time abahgat-suffix-tree 100000 6 avgt 6 16.000 ms LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix abahgat-suffix-tree 100000 7 avgt 6 1.003 ± 0.173 ms/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate abahgat-suffix-tree 100000 7 avgt 6 1491.188 ± 241.394 MB/sec LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm abahgat-suffix-tree 100000 7 avgt 6 1565943.039 ± 47603.578 B/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count abahgat-suffix-tree 100000 7 avgt 6 4.000 counts LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time abahgat-suffix-tree 100000 7 avgt 6 23.000 ms LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix abahgat-suffix-tree 100000 8 avgt 6 0.562 ± 0.068 ms/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate abahgat-suffix-tree 100000 8 avgt 6 1481.968 ± 169.865 MB/sec LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm abahgat-suffix-tree 100000 8 avgt 6 872508.051 ± 32093.611 B/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count abahgat-suffix-tree 100000 8 avgt 6 4.000 counts LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time abahgat-suffix-tree 100000 8 avgt 6 33.000 ms LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix abahgat-suffix-tree 100000 9 avgt 6 0.517 ± 0.059 ms/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate abahgat-suffix-tree 100000 9 avgt 6 1553.226 ± 123.468 MB/sec LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm abahgat-suffix-tree 100000 9 avgt 6 841316.296 ± 27866.767 B/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count abahgat-suffix-tree 100000 9 avgt 6 3.000 counts LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time abahgat-suffix-tree 100000 9 avgt 6 14.000 ms LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix abahgat-suffix-tree 100000 10 avgt 6 0.198 ± 0.018 ms/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate abahgat-suffix-tree 100000 10 avgt 6 1782.291 ± 165.246 MB/sec LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm abahgat-suffix-tree 100000 10 avgt 6 369933.300 ± 4893.409 B/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count abahgat-suffix-tree 100000 10 avgt 6 4.000 counts LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time abahgat-suffix-tree 100000 10 avgt 6 23.000 ms LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix abahgat-suffix-tree 100000 11 avgt 6 0.254 ± 0.252 ms/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate abahgat-suffix-tree 100000 11 avgt 6 1337.414 ± 956.932 MB/sec LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm abahgat-suffix-tree 100000 11 avgt 6 329987.634 ± 5807.955 B/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count abahgat-suffix-tree 100000 11 avgt 6 2.000 counts LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time abahgat-suffix-tree 100000 11 avgt 6 11.000 ms Benchmark result is saved to /build/reports/jmh/adaptive-jmh-passes/pass-02-group-003.json # Adaptive pass 2, group 4 # Command: java -cp /build/classes/java/benchmark:/build/resources/benchmark:/build/moddev/artifacts/vanilla-26.2-2.jar:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar:/modules-2/files-2.1/com.abahgat/suffixtree/2.0.0/ffe2c29796add2624d2e0b9f33e72421eb5c5ea5/suffixtree-2.0.0.jar:/modules-2/files-2.1/net.mezzdev/suffixtree/1.3.0/1a1b87af70a1631ff6d6c9d49c63564aadecb176/suffixtree-1.3.0.jar:/modules-2/files-2.1/net.mezzdev/baked-substring-index/0.1.0/4f9fbd9eb54fdb1b8ec40a83297f4e8f4479eb7c/baked-substring-index-0.1.0.jar:/modules-2/files-2.1/net.mezzdev/baked-suffix-array-index/0.1.0/cd5e5ffbcee030d149e7a5a70e151a06158bd643/baked-suffix-array-index-0.1.0.jar:/modules-2/files-2.1/net.neoforged/mergetool/2.0.7/793b18456e92c4a7f66d9b5d8bf7a9c1c7a20b20/mergetool-2.0.7-api.jar:/modules-2/files-2.1/net.sf.jopt-simple/jopt-simple/5.0.4/4fdac2fbe92dfad86aa6e9301736f6b4342a3f5c/jopt-simple-5.0.4.jar:/modules-2/files-2.1/org.apache.commons/commons-math3/3.6.1/e4ba98f1d4b3c80ec46392f25e094a6a2e58fcbf/commons-math3-3.6.1.jar:/modules-2/files-2.1/com.google.code.findbugs/jsr305/3.0.2/25ea2e8b0c338a877313bd4672d3fe056ea78f0d/jsr305-3.0.2.jar:/modules-2/files-2.1/org.jspecify/jspecify/1.0.0/7425a601c1c7ec76645a78d22b8c6a627edee507/jspecify-1.0.0.jar:/modules-2/files-2.1/org.jetbrains/annotations/26.0.2-1/c7ce3cdeda3d18909368dfe5977332dfad326c6d/annotations-26.0.2-1.jar:/modules-2/files-2.1/ca.weblite/java-objc-bridge/1.1/1227f9e0666314f9de41477e3ec277e542ed7f7b/java-objc-bridge-1.1.jar:/modules-2/files-2.1/at.yawk.lz4/lz4-java/1.10.1/f541d7f910fe3d76f38f799c507c48cc81b12ecb/lz4-java-1.10.1.jar:/modules-2/files-2.1/com.azure/azure-json/1.4.0/fcc1d354dbc3e0300e5276b1bf124d0247799cd8/azure-json-1.4.0.jar:/modules-2/files-2.1/com.github.oshi/oshi-core/6.9.0/3224870731860cfcd7744581a05b559e94291e7/oshi-core-6.9.0.jar:/modules-2/files-2.1/com.google.code.gson/gson/2.14.0/efc0e34ede4e3204eaefb84a00e55e8c86634382/gson-2.14.0.jar:/modules-2/files-2.1/com.google.guava/failureaccess/1.0.3/aeaffd00d57023a2c947393ed251f0354f0985fc/failureaccess-1.0.3.jar:/modules-2/files-2.1/com.google.guava/guava/33.6.0-jre/c376b13067cc99a5774403530953f7b05a91e218/guava-33.6.0-jre.jar:/modules-2/files-2.1/com.ibm.icu/icu4j/78.3/6a851a53bb1f25689fc418dcc8935b0d93580adf/icu4j-78.3.jar:/modules-2/files-2.1/com.microsoft.azure/msal4j/1.24.1/c233f2d047b9755f7041adf21a858c680e4c9242/msal4j-1.24.1.jar:/modules-2/files-2.1/com.mojang/authlib/9.0.75/d61056a234d5e4b272e09d59b0713f80d6c0b6af/authlib-9.0.75.jar:/modules-2/files-2.1/com.mojang/blocklist/1.0.10/5c685c5ffa94c4cd39496c7184c1d122e515ecef/blocklist-1.0.10.jar:/modules-2/files-2.1/com.mojang/brigadier/1.3.10/d15b53a14cf20fdcaa98f731af5dda654452c010/brigadier-1.3.10.jar:/modules-2/files-2.1/com.mojang/datafixerupper/10.0.21/b6b2ae770c02e0c1eb90f9985b151e9085a38d0b/datafixerupper-10.0.21.jar:/modules-2/files-2.1/com.mojang/jtracy/1.0.37/a3fb649b2e2b2288d2978f0b0bc3d83f62809d1e/jtracy-1.0.37.jar:/modules-2/files-2.1/com.mojang/jtracy/1.0.37/a99fcb63b72fb623534d0ceb71bda4bed9b55b4c/jtracy-1.0.37-natives-macos.jar:/modules-2/files-2.1/com.mojang/jtracy/1.0.37/c8e971da5150aa33283c5bf4097154c0da554fb9/jtracy-1.0.37-natives-macos-arm64.jar:/modules-2/files-2.1/com.mojang/logging/1.7.12/351cea64a5233361327d8d54c44277041beed97f/logging-1.7.12.jar:/modules-2/files-2.1/com.mojang/patchy/2.2.10/da05971b07cbb379d002cf7eaec6a2048211fefc/patchy-2.2.10.jar:/modules-2/files-2.1/com.mojang/text2speech/1.19.12/2e517a75c79d34d32de2b5d68422150836c2133e/text2speech-1.19.12.jar:/modules-2/files-2.1/commons-codec/commons-codec/1.22.0/6b3eb4beb7058c2a638f5f17bcb388649fd339dd/commons-codec-1.22.0.jar:/modules-2/files-2.1/commons-io/commons-io/2.20.0/36f3474daec2849c149e877614e7f979b2082cd2/commons-io-2.20.0.jar:/modules-2/files-2.1/io.netty/netty-buffer/4.2.15.Final/2beb620803bf871cda2dd5d46b8f831e8015dd34/netty-buffer-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-codec-base/4.2.15.Final/e97149fdd5fb04858efa90e314651c8d700dc68b/netty-codec-base-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-codec-compression/4.2.15.Final/89fc4a20b7ae6af974304b1695405e62c4f9b16d/netty-codec-compression-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-codec-http/4.2.15.Final/e611826aa054371bb9a17f27bdb05755a4cac5f0/netty-codec-http-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-common/4.2.15.Final/7222492c1af9c2d4d78d521eea340a619e242fda/netty-common-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-handler/4.2.15.Final/d5344afd1148e3b9927a74be019605ebb0937a93/netty-handler-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-resolver/4.2.15.Final/b961a16d379b508b473e064ba06842bba280f4e3/netty-resolver-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-transport-classes-epoll/4.2.15.Final/44bafba9c9993800e955b365bba4981326f3f3b1/netty-transport-classes-epoll-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-transport-classes-kqueue/4.2.15.Final/f248656bb907607c5a41c7b61fd918a97db79250/netty-transport-classes-kqueue-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-transport-native-unix-common/4.2.15.Final/efb6943b4de9e0226a5ac35330f232605424af02/netty-transport-native-unix-common-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-transport/4.2.15.Final/a000c3a6196ee40207b73ac619dcb339409dd62f/netty-transport-4.2.15.Final.jar:/modules-2/files-2.1/it.unimi.dsi/fastutil/8.5.18/a6cff377eecc19c2037bf31568a6d7106b50ba1f/fastutil-8.5.18.jar:/modules-2/files-2.1/net.java.dev.jna/jna-platform/5.17.0/a4934c44d25a9d8c2ddf4203affd20330cb3426f/jna-platform-5.17.0.jar:/modules-2/files-2.1/net.java.dev.jna/jna/5.17.0/33d12735bef894440780fce64f9758d420c7bae2/jna-5.17.0.jar:/modules-2/files-2.1/org.apache.commons/commons-compress/1.28.0/e482f2c7a88dac3c497e96aa420b6a769f59c8d7/commons-compress-1.28.0.jar:/modules-2/files-2.1/org.apache.commons/commons-lang3/3.20.0/65897b3e5731220962e659e001904af3c3cbeba9/commons-lang3-3.20.0.jar:/modules-2/files-2.1/org.apache.logging.log4j/log4j-api/2.26.0/ad52af0ecf054a7e3f275a2e180ee06d9c490951/log4j-api-2.26.0.jar:/modules-2/files-2.1/org.apache.logging.log4j/log4j-core/2.26.0/d267ca60b27ddb075e0b4e75e7875859717bf85f/log4j-core-2.26.0.jar:/modules-2/files-2.1/org.apache.logging.log4j/log4j-slf4j2-impl/2.26.0/668c0f0e813d83f00a7182533aa658ec7e7a0a0d/log4j-slf4j2-impl-2.26.0.jar:/modules-2/files-2.1/org.jcraft/jorbis/0.0.17/8872d22b293e8f5d7d56ff92be966e6dc28ebdc6/jorbis-0.0.17.jar:/modules-2/files-2.1/org.joml/joml/1.10.8/fc0a71dad90a2cf41d82a76156a0e700af8e4f8d/joml-1.10.8.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-freetype/3.4.1/caa75a37e857efc9b0686e434d708d6420c5b6ea/lwjgl-freetype-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-freetype/3.4.1/61cb2d85e1838bca1a0b664f54e818bc68deb2ef/lwjgl-freetype-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-freetype/3.4.1/cce5a86b4a7d17817fe8ea0296302a4353acf2d5/lwjgl-freetype-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-glfw/3.4.1/a782b1ddd175c9107bf300fd92920579ea65e2a4/lwjgl-glfw-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-glfw/3.4.1/3c8538942f58377d59cd7be2dc164ba71a53868a/lwjgl-glfw-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-glfw/3.4.1/ef1f8efca5a60ba3512bc4982b88e446ecc43378/lwjgl-glfw-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-jemalloc/3.4.1/16b663092854fc6adfe0a941e61cae2bb2e437b6/lwjgl-jemalloc-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-jemalloc/3.4.1/581b4d542e841015ce3265eed0495e2cde15b1d0/lwjgl-jemalloc-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-jemalloc/3.4.1/dcd7e3f9a2ca386e8c5b8f508a8511d9dd63bab0/lwjgl-jemalloc-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-openal/3.4.1/8508bd60589de0539aa465b78fcf838efd07ae9a/lwjgl-openal-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-openal/3.4.1/a4dc57b7b0880d3fffb4d0b61649f45712bccc93/lwjgl-openal-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-openal/3.4.1/1c709a38c4a0e86aae96db7b8c78432307f2322a/lwjgl-openal-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-opengl/3.4.1/830412cab823c029cda6b9729f9d2ed36cf79959/lwjgl-opengl-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-opengl/3.4.1/ba18fc6012b88494ee893506934b92b01c4ef14b/lwjgl-opengl-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-opengl/3.4.1/35b5550058de4960525f465243bd01805f04fd8b/lwjgl-opengl-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-shaderc/3.4.1/5c02c88f0d879529014c78463b76f43fdecfd272/lwjgl-shaderc-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-shaderc/3.4.1/1d7bbdba70cf29c42978f6c0c1bdef945b922072/lwjgl-shaderc-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-shaderc/3.4.1/48aa2727e8616154d399d4dab0d8e8479741fa4f/lwjgl-shaderc-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-spvc/3.4.1/188553592e97b5ab2dba54a1b403ee80b48dad4c/lwjgl-spvc-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-spvc/3.4.1/2eeebd6d5bae966bfffda9747eba744cfe839ae1/lwjgl-spvc-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-spvc/3.4.1/a4f66638d28129eba0babd8fdc4385427a5ea83e/lwjgl-spvc-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-stb/3.4.1/f077c3dafc31924fbe8acb0b913f08977ba27f8e/lwjgl-stb-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-stb/3.4.1/fd1ea36b717b0832babca09324a6cfc43906e2aa/lwjgl-stb-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-stb/3.4.1/da554e04f819f09b0f3473bd931628ebf557965e/lwjgl-stb-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-tinyfd/3.4.1/562697d40dbd2ed0424bf24dcf65d51170f81adf/lwjgl-tinyfd-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-tinyfd/3.4.1/211ae9e8720e8f10f2ce85a118fa7bd5ee71584b/lwjgl-tinyfd-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-tinyfd/3.4.1/7bcde70f6164b2e72f84cac5257b7e9877b88510/lwjgl-tinyfd-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vma/3.4.1/2c54ce10154feb1ede4d23c5947438cdbfdcc003/lwjgl-vma-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vma/3.4.1/a130a9e4f96c83063f749e1dcc7065e0dffb3936/lwjgl-vma-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vma/3.4.1/9451dc1067716bc4125cdba65a7096e465f4d0e5/lwjgl-vma-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vulkan/3.4.1/d0601fdc38890755e5638048c14cc0f7b990964b/lwjgl-vulkan-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vulkan/3.4.1/140c7fd3e0fdbcc625c92be9328301c555035905/lwjgl-vulkan-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vulkan/3.4.1/2c933bf617cb8a174af26585efda4778b59e6d44/lwjgl-vulkan-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl/3.4.1/129e06a04f93992cb2a45172435b21fc4b60dd7d/lwjgl-3.4.1-unsafe.jar:/modules-2/files-2.1/org.lwjgl/lwjgl/3.4.1/b034fd9a67cb8646c01af7efcefcb93be835542b/lwjgl-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl/3.4.1/b4cbdef4818abd714ee66985344c0949fd1cd6d6/lwjgl-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.slf4j/slf4j-api/2.0.17/d9e58ac9c7779ba3bf8142aff6c830617a7fe60f/slf4j-api-2.0.17.jar:/modules-2/files-2.1/org.ow2.asm/asm-util/9.5/64b5a1fc8c1b15ed2efd6a063e976bc8d3dc5ffe/asm-util-9.5.jar:/modules-2/files-2.1/org.ow2.asm/asm-analysis/9.5/490bacc77de7cbc0be1a30bb3471072d705be4a4/asm-analysis-9.5.jar:/modules-2/files-2.1/org.ow2.asm/asm-tree/9.5/fd33c8b6373abaa675be407082fdfda35021254a/asm-tree-9.5.jar:/modules-2/files-2.1/org.ow2.asm/asm/9.5/dc6ea1875f4d64fbc85e1691c95b96a3d8569c90/asm-9.5.jar:/modules-2/files-2.1/net.neoforged/srgutils/1.0.10/abb471237b33b19f040ada00bfbad1ec45b949b6/srgutils-1.0.10.jar:/modules-2/files-2.1/io.netty/netty-transport-native-kqueue/4.2.15.Final/8ea0ef3eb716d821332e4b4926825a4b7c1a6d38/netty-transport-native-kqueue-4.2.15.Final-osx-aarch_64.jar:/modules-2/files-2.1/io.netty/netty-transport-native-kqueue/4.2.15.Final/4245380831515fb4eca18d32477a27fbb8f7b8f4/netty-transport-native-kqueue-4.2.15.Final-osx-x86_64.jar:/build/classes/java/main:/build/resources/main org.openjdk.jmh.Main .*net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix -p itemCount=100000 -p implementation=baked-substring-index -f 1 -wi 1 -i 6 -w 200ms -r 200ms -rf json -rff /build/reports/jmh/adaptive-jmh-passes/pass-02-group-004.json -o /build/reports/jmh/adaptive-jmh-passes/pass-02-group-004.txt -foe true -p typedCharacterCount=1,3,4,6,9,10 -prof gc # JMH version: 1.37 # VM version: JDK 25, OpenJDK 64-Bit Server VM, 25+36-b176.4 # VM invoker: java # VM options: # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 1 iterations, 200 ms each # Measurement: 6 iterations, 200 ms each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix # Parameters: (implementation = baked-substring-index, itemCount = 100000, typedCharacterCount = 1) # Run progress: 0.00% complete, ETA 00:00:08 # Fork: 1 of 1 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::objectFieldOffset has been called by org.openjdk.jmh.util.Utils (file:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar) WARNING: Please consider reporting this to the maintainers of class org.openjdk.jmh.util.Utils WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release # Warmup Iteration 1: 0.841 ms/op Iteration 1: 0.913 ms/op gc.alloc.rate: 0.107 MB/sec gc.alloc.rate.norm: 112.036 B/op gc.count: ≈ 0 counts Iteration 2: 0.661 ms/op gc.alloc.rate: 0.148 MB/sec gc.alloc.rate.norm: 102.442 B/op gc.count: ≈ 0 counts Iteration 3: 0.595 ms/op gc.alloc.rate: 0.161 MB/sec gc.alloc.rate.norm: 100.304 B/op gc.count: ≈ 0 counts Iteration 4: 0.773 ms/op gc.alloc.rate: 0.131 MB/sec gc.alloc.rate.norm: 106.007 B/op gc.count: ≈ 0 counts Iteration 5: 0.739 ms/op gc.alloc.rate: 0.135 MB/sec gc.alloc.rate.norm: 104.774 B/op gc.count: ≈ 0 counts Iteration 6: 0.705 ms/op gc.alloc.rate: 0.140 MB/sec gc.alloc.rate.norm: 103.753 B/op gc.count: ≈ 0 counts Result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix": 0.731 ±(99.9%) 0.305 ms/op [Average] (min, avg, max) = (0.595, 0.731, 0.913), stdev = 0.109 CI (99.9%): [0.426, 1.036] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate": 0.137 ±(99.9%) 0.051 MB/sec [Average] (min, avg, max) = (0.107, 0.137, 0.161), stdev = 0.018 CI (99.9%): [0.086, 0.187] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm": 104.886 ±(99.9%) 11.262 B/op [Average] (min, avg, max) = (100.304, 104.886, 112.036), stdev = 4.016 CI (99.9%): [93.624, 116.148] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count": ≈ 0 counts # JMH version: 1.37 # VM version: JDK 25, OpenJDK 64-Bit Server VM, 25+36-b176.4 # VM invoker: java # VM options: # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 1 iterations, 200 ms each # Measurement: 6 iterations, 200 ms each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix # Parameters: (implementation = baked-substring-index, itemCount = 100000, typedCharacterCount = 3) # Run progress: 16.67% complete, ETA 00:00:12 # Fork: 1 of 1 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::objectFieldOffset has been called by org.openjdk.jmh.util.Utils (file:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar) WARNING: Please consider reporting this to the maintainers of class org.openjdk.jmh.util.Utils WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release # Warmup Iteration 1: 0.031 ms/op Iteration 1: 0.024 ms/op gc.alloc.rate: 1.311 MB/sec gc.alloc.rate.norm: 32.826 B/op gc.count: ≈ 0 counts Iteration 2: 0.026 ms/op gc.alloc.rate: 1.197 MB/sec gc.alloc.rate.norm: 32.908 B/op gc.count: ≈ 0 counts Iteration 3: 0.024 ms/op gc.alloc.rate: 1.322 MB/sec gc.alloc.rate.norm: 32.808 B/op gc.count: ≈ 0 counts Iteration 4: 0.023 ms/op gc.alloc.rate: 1.340 MB/sec gc.alloc.rate.norm: 32.785 B/op gc.count: ≈ 0 counts Iteration 5: 0.023 ms/op gc.alloc.rate: 1.363 MB/sec gc.alloc.rate.norm: 32.783 B/op gc.count: ≈ 0 counts Iteration 6: 0.025 ms/op gc.alloc.rate: 1.238 MB/sec gc.alloc.rate.norm: 32.848 B/op gc.count: ≈ 0 counts Result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix": 0.024 ±(99.9%) 0.004 ms/op [Average] (min, avg, max) = (0.023, 0.024, 0.026), stdev = 0.001 CI (99.9%): [0.021, 0.028] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate": 1.295 ±(99.9%) 0.179 MB/sec [Average] (min, avg, max) = (1.197, 1.295, 1.363), stdev = 0.064 CI (99.9%): [1.116, 1.474] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm": 32.826 ±(99.9%) 0.131 B/op [Average] (min, avg, max) = (32.783, 32.826, 32.908), stdev = 0.047 CI (99.9%): [32.695, 32.958] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count": ≈ 0 counts # JMH version: 1.37 # VM version: JDK 25, OpenJDK 64-Bit Server VM, 25+36-b176.4 # VM invoker: java # VM options: # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 1 iterations, 200 ms each # Measurement: 6 iterations, 200 ms each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix # Parameters: (implementation = baked-substring-index, itemCount = 100000, typedCharacterCount = 4) # Run progress: 33.33% complete, ETA 00:00:10 # Fork: 1 of 1 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::objectFieldOffset has been called by org.openjdk.jmh.util.Utils (file:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar) WARNING: Please consider reporting this to the maintainers of class org.openjdk.jmh.util.Utils WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release # Warmup Iteration 1: 0.118 ms/op Iteration 1: 0.102 ms/op gc.alloc.rate: 187.710 MB/sec gc.alloc.rate.norm: 20003.189 B/op gc.count: 3.000 counts gc.time: 2.000 ms Iteration 2: 0.093 ms/op gc.alloc.rate: 205.978 MB/sec gc.alloc.rate.norm: 20040.810 B/op gc.count: 1.000 counts gc.time: 1.000 ms Iteration 3: 0.096 ms/op gc.alloc.rate: 199.789 MB/sec gc.alloc.rate.norm: 20027.980 B/op gc.count: ≈ 0 counts Iteration 4: 0.084 ms/op gc.alloc.rate: 227.630 MB/sec gc.alloc.rate.norm: 19991.262 B/op gc.count: ≈ 0 counts Iteration 5: 0.085 ms/op gc.alloc.rate: 225.574 MB/sec gc.alloc.rate.norm: 20039.401 B/op gc.count: 1.000 counts gc.time: 2.000 ms Iteration 6: 0.084 ms/op gc.alloc.rate: 227.399 MB/sec gc.alloc.rate.norm: 20030.467 B/op gc.count: ≈ 0 counts Result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix": 0.090 ±(99.9%) 0.021 ms/op [Average] (min, avg, max) = (0.084, 0.090, 0.102), stdev = 0.007 CI (99.9%): [0.070, 0.111] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate": 212.347 ±(99.9%) 47.595 MB/sec [Average] (min, avg, max) = (187.710, 212.347, 227.630), stdev = 16.973 CI (99.9%): [164.752, 259.941] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm": 20022.185 ±(99.9%) 56.954 B/op [Average] (min, avg, max) = (19991.262, 20022.185, 20040.810), stdev = 20.310 CI (99.9%): [19965.231, 20079.138] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count": 5.000 ±(99.9%) 0.001 counts [Sum] (min, avg, max) = (≈ 0, 0.833, 3.000), stdev = 1.169 CI (99.9%): [5.000, 5.000] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time": 5.000 ±(99.9%) 0.001 ms [Sum] (min, avg, max) = (≈ 0, 0.833, 2.000), stdev = 0.983 CI (99.9%): [5.000, 5.000] (assumes normal distribution) # JMH version: 1.37 # VM version: JDK 25, OpenJDK 64-Bit Server VM, 25+36-b176.4 # VM invoker: java # VM options: # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 1 iterations, 200 ms each # Measurement: 6 iterations, 200 ms each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix # Parameters: (implementation = baked-substring-index, itemCount = 100000, typedCharacterCount = 6) # Run progress: 50.00% complete, ETA 00:00:07 # Fork: 1 of 1 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::objectFieldOffset has been called by org.openjdk.jmh.util.Utils (file:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar) WARNING: Please consider reporting this to the maintainers of class org.openjdk.jmh.util.Utils WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release # Warmup Iteration 1: 0.135 ms/op Iteration 1: 0.104 ms/op gc.alloc.rate: 418.336 MB/sec gc.alloc.rate.norm: 45473.700 B/op gc.count: 1.000 counts gc.time: 2.000 ms Iteration 2: 0.104 ms/op gc.alloc.rate: 415.110 MB/sec gc.alloc.rate.norm: 45427.659 B/op gc.count: ≈ 0 counts Iteration 3: 0.101 ms/op gc.alloc.rate: 428.418 MB/sec gc.alloc.rate.norm: 45404.165 B/op gc.count: 1.000 counts gc.time: 1.000 ms Iteration 4: 0.106 ms/op gc.alloc.rate: 407.317 MB/sec gc.alloc.rate.norm: 45372.790 B/op gc.count: ≈ 0 counts Iteration 5: 0.116 ms/op gc.alloc.rate: 374.491 MB/sec gc.alloc.rate.norm: 45387.047 B/op gc.count: 1.000 counts gc.time: ≈ 0 ms Iteration 6: 0.103 ms/op gc.alloc.rate: 420.033 MB/sec gc.alloc.rate.norm: 45442.483 B/op gc.count: ≈ 0 counts Result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix": 0.106 ±(99.9%) 0.014 ms/op [Average] (min, avg, max) = (0.101, 0.106, 0.116), stdev = 0.005 CI (99.9%): [0.091, 0.120] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate": 410.617 ±(99.9%) 53.224 MB/sec [Average] (min, avg, max) = (374.491, 410.617, 428.418), stdev = 18.980 CI (99.9%): [357.393, 463.841] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm": 45417.974 ±(99.9%) 104.838 B/op [Average] (min, avg, max) = (45372.790, 45417.974, 45473.700), stdev = 37.386 CI (99.9%): [45313.136, 45522.812] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count": 3.000 ±(99.9%) 0.001 counts [Sum] (min, avg, max) = (≈ 0, 0.500, 1.000), stdev = 0.548 CI (99.9%): [3.000, 3.000] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time": 3.000 ±(99.9%) 0.001 ms [Sum] (min, avg, max) = (≈ 0, 0.500, 2.000), stdev = 0.837 CI (99.9%): [3.000, 3.000] (assumes normal distribution) # JMH version: 1.37 # VM version: JDK 25, OpenJDK 64-Bit Server VM, 25+36-b176.4 # VM invoker: java # VM options: # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 1 iterations, 200 ms each # Measurement: 6 iterations, 200 ms each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix # Parameters: (implementation = baked-substring-index, itemCount = 100000, typedCharacterCount = 9) # Run progress: 66.67% complete, ETA 00:00:04 # Fork: 1 of 1 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::objectFieldOffset has been called by org.openjdk.jmh.util.Utils (file:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar) WARNING: Please consider reporting this to the maintainers of class org.openjdk.jmh.util.Utils WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release # Warmup Iteration 1: 0.108 ms/op Iteration 1: 0.086 ms/op gc.alloc.rate: 393.542 MB/sec gc.alloc.rate.norm: 35697.011 B/op gc.count: 1.000 counts gc.time: 1.000 ms Iteration 2: 0.095 ms/op gc.alloc.rate: 360.629 MB/sec gc.alloc.rate.norm: 35876.543 B/op gc.count: ≈ 0 counts Iteration 3: 0.087 ms/op gc.alloc.rate: 390.908 MB/sec gc.alloc.rate.norm: 35712.272 B/op gc.count: 1.000 counts gc.time: 3.000 ms Iteration 4: 0.087 ms/op gc.alloc.rate: 390.671 MB/sec gc.alloc.rate.norm: 35664.299 B/op gc.count: ≈ 0 counts Iteration 5: 0.082 ms/op gc.alloc.rate: 414.416 MB/sec gc.alloc.rate.norm: 35742.804 B/op gc.count: 1.000 counts gc.time: ≈ 0 ms Iteration 6: 0.095 ms/op gc.alloc.rate: 359.155 MB/sec gc.alloc.rate.norm: 35822.071 B/op gc.count: ≈ 0 counts Result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix": 0.089 ±(99.9%) 0.014 ms/op [Average] (min, avg, max) = (0.082, 0.089, 0.095), stdev = 0.005 CI (99.9%): [0.074, 0.103] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate": 384.887 ±(99.9%) 59.712 MB/sec [Average] (min, avg, max) = (359.155, 384.887, 414.416), stdev = 21.294 CI (99.9%): [325.175, 444.599] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm": 35752.500 ±(99.9%) 227.114 B/op [Average] (min, avg, max) = (35664.299, 35752.500, 35876.543), stdev = 80.991 CI (99.9%): [35525.386, 35979.614] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count": 3.000 ±(99.9%) 0.001 counts [Sum] (min, avg, max) = (≈ 0, 0.500, 1.000), stdev = 0.548 CI (99.9%): [3.000, 3.000] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time": 4.000 ±(99.9%) 0.001 ms [Sum] (min, avg, max) = (≈ 0, 0.667, 3.000), stdev = 1.211 CI (99.9%): [4.000, 4.000] (assumes normal distribution) # JMH version: 1.37 # VM version: JDK 25, OpenJDK 64-Bit Server VM, 25+36-b176.4 # VM invoker: java # VM options: # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 1 iterations, 200 ms each # Measurement: 6 iterations, 200 ms each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix # Parameters: (implementation = baked-substring-index, itemCount = 100000, typedCharacterCount = 10) # Run progress: 83.33% complete, ETA 00:00:02 # Fork: 1 of 1 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::objectFieldOffset has been called by org.openjdk.jmh.util.Utils (file:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar) WARNING: Please consider reporting this to the maintainers of class org.openjdk.jmh.util.Utils WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release # Warmup Iteration 1: 0.080 ms/op Iteration 1: 0.067 ms/op gc.alloc.rate: 377.402 MB/sec gc.alloc.rate.norm: 26623.255 B/op gc.count: 1.000 counts gc.time: 1.000 ms Iteration 2: 0.074 ms/op gc.alloc.rate: 341.934 MB/sec gc.alloc.rate.norm: 26564.372 B/op gc.count: ≈ 0 counts Iteration 3: 0.073 ms/op gc.alloc.rate: 349.044 MB/sec gc.alloc.rate.norm: 26589.153 B/op gc.count: 1.000 counts gc.time: 4.000 ms Iteration 4: 0.065 ms/op gc.alloc.rate: 391.562 MB/sec gc.alloc.rate.norm: 26573.538 B/op gc.count: ≈ 0 counts Iteration 5: 0.066 ms/op gc.alloc.rate: 385.841 MB/sec gc.alloc.rate.norm: 26546.529 B/op gc.count: 1.000 counts gc.time: 1.000 ms Iteration 6: 0.074 ms/op gc.alloc.rate: 343.862 MB/sec gc.alloc.rate.norm: 26563.810 B/op gc.count: ≈ 0 counts Result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix": 0.070 ±(99.9%) 0.012 ms/op [Average] (min, avg, max) = (0.065, 0.070, 0.074), stdev = 0.004 CI (99.9%): [0.058, 0.082] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate": 364.941 ±(99.9%) 63.043 MB/sec [Average] (min, avg, max) = (341.934, 364.941, 391.562), stdev = 22.482 CI (99.9%): [301.898, 427.984] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm": 26576.776 ±(99.9%) 74.834 B/op [Average] (min, avg, max) = (26546.529, 26576.776, 26623.255), stdev = 26.686 CI (99.9%): [26501.943, 26651.610] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count": 3.000 ±(99.9%) 0.001 counts [Sum] (min, avg, max) = (≈ 0, 0.500, 1.000), stdev = 0.548 CI (99.9%): [3.000, 3.000] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time": 6.000 ±(99.9%) 0.001 ms [Sum] (min, avg, max) = (≈ 0, 1.000, 4.000), stdev = 1.549 CI (99.9%): [6.000, 6.000] (assumes normal distribution) # Run complete. Total time: 00:00:14 REMEMBER: The numbers below are just data. To gain reusable insights, you need to follow up on why the numbers are the way they are. Use profilers (see -prof, -lprof), design factorial experiments, perform baseline and negative tests that provide experimental control, make sure the benchmarking environment is safe on JVM/OS/HW level, ask for reviews from the domain experts. Do not assume the numbers tell you what you want them to tell. NOTE: Current JVM experimentally supports Compiler Blackholes, and they are in use. Please exercise extra caution when trusting the results, look into the generated code to check the benchmark still works, and factor in a small probability of new VM bugs. Additionally, while comparisons between different JVMs are already problematic, the performance difference caused by different Blackhole modes can be very significant. Please make sure you use the consistent Blackhole mode for comparisons. Benchmark (implementation) (itemCount) (typedCharacterCount) Mode Cnt Score Error Units LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix baked-substring-index 100000 1 avgt 6 0.731 ± 0.305 ms/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate baked-substring-index 100000 1 avgt 6 0.137 ± 0.051 MB/sec LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm baked-substring-index 100000 1 avgt 6 104.886 ± 11.262 B/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count baked-substring-index 100000 1 avgt 6 ≈ 0 counts LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix baked-substring-index 100000 3 avgt 6 0.024 ± 0.004 ms/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate baked-substring-index 100000 3 avgt 6 1.295 ± 0.179 MB/sec LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm baked-substring-index 100000 3 avgt 6 32.826 ± 0.131 B/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count baked-substring-index 100000 3 avgt 6 ≈ 0 counts LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix baked-substring-index 100000 4 avgt 6 0.090 ± 0.021 ms/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate baked-substring-index 100000 4 avgt 6 212.347 ± 47.595 MB/sec LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm baked-substring-index 100000 4 avgt 6 20022.185 ± 56.954 B/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count baked-substring-index 100000 4 avgt 6 5.000 counts LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time baked-substring-index 100000 4 avgt 6 5.000 ms LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix baked-substring-index 100000 6 avgt 6 0.106 ± 0.014 ms/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate baked-substring-index 100000 6 avgt 6 410.617 ± 53.224 MB/sec LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm baked-substring-index 100000 6 avgt 6 45417.974 ± 104.838 B/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count baked-substring-index 100000 6 avgt 6 3.000 counts LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time baked-substring-index 100000 6 avgt 6 3.000 ms LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix baked-substring-index 100000 9 avgt 6 0.089 ± 0.014 ms/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate baked-substring-index 100000 9 avgt 6 384.887 ± 59.712 MB/sec LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm baked-substring-index 100000 9 avgt 6 35752.500 ± 227.114 B/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count baked-substring-index 100000 9 avgt 6 3.000 counts LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time baked-substring-index 100000 9 avgt 6 4.000 ms LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix baked-substring-index 100000 10 avgt 6 0.070 ± 0.012 ms/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate baked-substring-index 100000 10 avgt 6 364.941 ± 63.043 MB/sec LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm baked-substring-index 100000 10 avgt 6 26576.776 ± 74.834 B/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count baked-substring-index 100000 10 avgt 6 3.000 counts LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time baked-substring-index 100000 10 avgt 6 6.000 ms Benchmark result is saved to /build/reports/jmh/adaptive-jmh-passes/pass-02-group-004.json # Adaptive pass 2, group 5 # Command: java -cp /build/classes/java/benchmark:/build/resources/benchmark:/build/moddev/artifacts/vanilla-26.2-2.jar:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar:/modules-2/files-2.1/com.abahgat/suffixtree/2.0.0/ffe2c29796add2624d2e0b9f33e72421eb5c5ea5/suffixtree-2.0.0.jar:/modules-2/files-2.1/net.mezzdev/suffixtree/1.3.0/1a1b87af70a1631ff6d6c9d49c63564aadecb176/suffixtree-1.3.0.jar:/modules-2/files-2.1/net.mezzdev/baked-substring-index/0.1.0/4f9fbd9eb54fdb1b8ec40a83297f4e8f4479eb7c/baked-substring-index-0.1.0.jar:/modules-2/files-2.1/net.mezzdev/baked-suffix-array-index/0.1.0/cd5e5ffbcee030d149e7a5a70e151a06158bd643/baked-suffix-array-index-0.1.0.jar:/modules-2/files-2.1/net.neoforged/mergetool/2.0.7/793b18456e92c4a7f66d9b5d8bf7a9c1c7a20b20/mergetool-2.0.7-api.jar:/modules-2/files-2.1/net.sf.jopt-simple/jopt-simple/5.0.4/4fdac2fbe92dfad86aa6e9301736f6b4342a3f5c/jopt-simple-5.0.4.jar:/modules-2/files-2.1/org.apache.commons/commons-math3/3.6.1/e4ba98f1d4b3c80ec46392f25e094a6a2e58fcbf/commons-math3-3.6.1.jar:/modules-2/files-2.1/com.google.code.findbugs/jsr305/3.0.2/25ea2e8b0c338a877313bd4672d3fe056ea78f0d/jsr305-3.0.2.jar:/modules-2/files-2.1/org.jspecify/jspecify/1.0.0/7425a601c1c7ec76645a78d22b8c6a627edee507/jspecify-1.0.0.jar:/modules-2/files-2.1/org.jetbrains/annotations/26.0.2-1/c7ce3cdeda3d18909368dfe5977332dfad326c6d/annotations-26.0.2-1.jar:/modules-2/files-2.1/ca.weblite/java-objc-bridge/1.1/1227f9e0666314f9de41477e3ec277e542ed7f7b/java-objc-bridge-1.1.jar:/modules-2/files-2.1/at.yawk.lz4/lz4-java/1.10.1/f541d7f910fe3d76f38f799c507c48cc81b12ecb/lz4-java-1.10.1.jar:/modules-2/files-2.1/com.azure/azure-json/1.4.0/fcc1d354dbc3e0300e5276b1bf124d0247799cd8/azure-json-1.4.0.jar:/modules-2/files-2.1/com.github.oshi/oshi-core/6.9.0/3224870731860cfcd7744581a05b559e94291e7/oshi-core-6.9.0.jar:/modules-2/files-2.1/com.google.code.gson/gson/2.14.0/efc0e34ede4e3204eaefb84a00e55e8c86634382/gson-2.14.0.jar:/modules-2/files-2.1/com.google.guava/failureaccess/1.0.3/aeaffd00d57023a2c947393ed251f0354f0985fc/failureaccess-1.0.3.jar:/modules-2/files-2.1/com.google.guava/guava/33.6.0-jre/c376b13067cc99a5774403530953f7b05a91e218/guava-33.6.0-jre.jar:/modules-2/files-2.1/com.ibm.icu/icu4j/78.3/6a851a53bb1f25689fc418dcc8935b0d93580adf/icu4j-78.3.jar:/modules-2/files-2.1/com.microsoft.azure/msal4j/1.24.1/c233f2d047b9755f7041adf21a858c680e4c9242/msal4j-1.24.1.jar:/modules-2/files-2.1/com.mojang/authlib/9.0.75/d61056a234d5e4b272e09d59b0713f80d6c0b6af/authlib-9.0.75.jar:/modules-2/files-2.1/com.mojang/blocklist/1.0.10/5c685c5ffa94c4cd39496c7184c1d122e515ecef/blocklist-1.0.10.jar:/modules-2/files-2.1/com.mojang/brigadier/1.3.10/d15b53a14cf20fdcaa98f731af5dda654452c010/brigadier-1.3.10.jar:/modules-2/files-2.1/com.mojang/datafixerupper/10.0.21/b6b2ae770c02e0c1eb90f9985b151e9085a38d0b/datafixerupper-10.0.21.jar:/modules-2/files-2.1/com.mojang/jtracy/1.0.37/a3fb649b2e2b2288d2978f0b0bc3d83f62809d1e/jtracy-1.0.37.jar:/modules-2/files-2.1/com.mojang/jtracy/1.0.37/a99fcb63b72fb623534d0ceb71bda4bed9b55b4c/jtracy-1.0.37-natives-macos.jar:/modules-2/files-2.1/com.mojang/jtracy/1.0.37/c8e971da5150aa33283c5bf4097154c0da554fb9/jtracy-1.0.37-natives-macos-arm64.jar:/modules-2/files-2.1/com.mojang/logging/1.7.12/351cea64a5233361327d8d54c44277041beed97f/logging-1.7.12.jar:/modules-2/files-2.1/com.mojang/patchy/2.2.10/da05971b07cbb379d002cf7eaec6a2048211fefc/patchy-2.2.10.jar:/modules-2/files-2.1/com.mojang/text2speech/1.19.12/2e517a75c79d34d32de2b5d68422150836c2133e/text2speech-1.19.12.jar:/modules-2/files-2.1/commons-codec/commons-codec/1.22.0/6b3eb4beb7058c2a638f5f17bcb388649fd339dd/commons-codec-1.22.0.jar:/modules-2/files-2.1/commons-io/commons-io/2.20.0/36f3474daec2849c149e877614e7f979b2082cd2/commons-io-2.20.0.jar:/modules-2/files-2.1/io.netty/netty-buffer/4.2.15.Final/2beb620803bf871cda2dd5d46b8f831e8015dd34/netty-buffer-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-codec-base/4.2.15.Final/e97149fdd5fb04858efa90e314651c8d700dc68b/netty-codec-base-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-codec-compression/4.2.15.Final/89fc4a20b7ae6af974304b1695405e62c4f9b16d/netty-codec-compression-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-codec-http/4.2.15.Final/e611826aa054371bb9a17f27bdb05755a4cac5f0/netty-codec-http-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-common/4.2.15.Final/7222492c1af9c2d4d78d521eea340a619e242fda/netty-common-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-handler/4.2.15.Final/d5344afd1148e3b9927a74be019605ebb0937a93/netty-handler-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-resolver/4.2.15.Final/b961a16d379b508b473e064ba06842bba280f4e3/netty-resolver-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-transport-classes-epoll/4.2.15.Final/44bafba9c9993800e955b365bba4981326f3f3b1/netty-transport-classes-epoll-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-transport-classes-kqueue/4.2.15.Final/f248656bb907607c5a41c7b61fd918a97db79250/netty-transport-classes-kqueue-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-transport-native-unix-common/4.2.15.Final/efb6943b4de9e0226a5ac35330f232605424af02/netty-transport-native-unix-common-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-transport/4.2.15.Final/a000c3a6196ee40207b73ac619dcb339409dd62f/netty-transport-4.2.15.Final.jar:/modules-2/files-2.1/it.unimi.dsi/fastutil/8.5.18/a6cff377eecc19c2037bf31568a6d7106b50ba1f/fastutil-8.5.18.jar:/modules-2/files-2.1/net.java.dev.jna/jna-platform/5.17.0/a4934c44d25a9d8c2ddf4203affd20330cb3426f/jna-platform-5.17.0.jar:/modules-2/files-2.1/net.java.dev.jna/jna/5.17.0/33d12735bef894440780fce64f9758d420c7bae2/jna-5.17.0.jar:/modules-2/files-2.1/org.apache.commons/commons-compress/1.28.0/e482f2c7a88dac3c497e96aa420b6a769f59c8d7/commons-compress-1.28.0.jar:/modules-2/files-2.1/org.apache.commons/commons-lang3/3.20.0/65897b3e5731220962e659e001904af3c3cbeba9/commons-lang3-3.20.0.jar:/modules-2/files-2.1/org.apache.logging.log4j/log4j-api/2.26.0/ad52af0ecf054a7e3f275a2e180ee06d9c490951/log4j-api-2.26.0.jar:/modules-2/files-2.1/org.apache.logging.log4j/log4j-core/2.26.0/d267ca60b27ddb075e0b4e75e7875859717bf85f/log4j-core-2.26.0.jar:/modules-2/files-2.1/org.apache.logging.log4j/log4j-slf4j2-impl/2.26.0/668c0f0e813d83f00a7182533aa658ec7e7a0a0d/log4j-slf4j2-impl-2.26.0.jar:/modules-2/files-2.1/org.jcraft/jorbis/0.0.17/8872d22b293e8f5d7d56ff92be966e6dc28ebdc6/jorbis-0.0.17.jar:/modules-2/files-2.1/org.joml/joml/1.10.8/fc0a71dad90a2cf41d82a76156a0e700af8e4f8d/joml-1.10.8.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-freetype/3.4.1/caa75a37e857efc9b0686e434d708d6420c5b6ea/lwjgl-freetype-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-freetype/3.4.1/61cb2d85e1838bca1a0b664f54e818bc68deb2ef/lwjgl-freetype-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-freetype/3.4.1/cce5a86b4a7d17817fe8ea0296302a4353acf2d5/lwjgl-freetype-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-glfw/3.4.1/a782b1ddd175c9107bf300fd92920579ea65e2a4/lwjgl-glfw-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-glfw/3.4.1/3c8538942f58377d59cd7be2dc164ba71a53868a/lwjgl-glfw-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-glfw/3.4.1/ef1f8efca5a60ba3512bc4982b88e446ecc43378/lwjgl-glfw-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-jemalloc/3.4.1/16b663092854fc6adfe0a941e61cae2bb2e437b6/lwjgl-jemalloc-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-jemalloc/3.4.1/581b4d542e841015ce3265eed0495e2cde15b1d0/lwjgl-jemalloc-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-jemalloc/3.4.1/dcd7e3f9a2ca386e8c5b8f508a8511d9dd63bab0/lwjgl-jemalloc-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-openal/3.4.1/8508bd60589de0539aa465b78fcf838efd07ae9a/lwjgl-openal-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-openal/3.4.1/a4dc57b7b0880d3fffb4d0b61649f45712bccc93/lwjgl-openal-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-openal/3.4.1/1c709a38c4a0e86aae96db7b8c78432307f2322a/lwjgl-openal-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-opengl/3.4.1/830412cab823c029cda6b9729f9d2ed36cf79959/lwjgl-opengl-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-opengl/3.4.1/ba18fc6012b88494ee893506934b92b01c4ef14b/lwjgl-opengl-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-opengl/3.4.1/35b5550058de4960525f465243bd01805f04fd8b/lwjgl-opengl-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-shaderc/3.4.1/5c02c88f0d879529014c78463b76f43fdecfd272/lwjgl-shaderc-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-shaderc/3.4.1/1d7bbdba70cf29c42978f6c0c1bdef945b922072/lwjgl-shaderc-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-shaderc/3.4.1/48aa2727e8616154d399d4dab0d8e8479741fa4f/lwjgl-shaderc-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-spvc/3.4.1/188553592e97b5ab2dba54a1b403ee80b48dad4c/lwjgl-spvc-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-spvc/3.4.1/2eeebd6d5bae966bfffda9747eba744cfe839ae1/lwjgl-spvc-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-spvc/3.4.1/a4f66638d28129eba0babd8fdc4385427a5ea83e/lwjgl-spvc-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-stb/3.4.1/f077c3dafc31924fbe8acb0b913f08977ba27f8e/lwjgl-stb-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-stb/3.4.1/fd1ea36b717b0832babca09324a6cfc43906e2aa/lwjgl-stb-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-stb/3.4.1/da554e04f819f09b0f3473bd931628ebf557965e/lwjgl-stb-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-tinyfd/3.4.1/562697d40dbd2ed0424bf24dcf65d51170f81adf/lwjgl-tinyfd-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-tinyfd/3.4.1/211ae9e8720e8f10f2ce85a118fa7bd5ee71584b/lwjgl-tinyfd-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-tinyfd/3.4.1/7bcde70f6164b2e72f84cac5257b7e9877b88510/lwjgl-tinyfd-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vma/3.4.1/2c54ce10154feb1ede4d23c5947438cdbfdcc003/lwjgl-vma-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vma/3.4.1/a130a9e4f96c83063f749e1dcc7065e0dffb3936/lwjgl-vma-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vma/3.4.1/9451dc1067716bc4125cdba65a7096e465f4d0e5/lwjgl-vma-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vulkan/3.4.1/d0601fdc38890755e5638048c14cc0f7b990964b/lwjgl-vulkan-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vulkan/3.4.1/140c7fd3e0fdbcc625c92be9328301c555035905/lwjgl-vulkan-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vulkan/3.4.1/2c933bf617cb8a174af26585efda4778b59e6d44/lwjgl-vulkan-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl/3.4.1/129e06a04f93992cb2a45172435b21fc4b60dd7d/lwjgl-3.4.1-unsafe.jar:/modules-2/files-2.1/org.lwjgl/lwjgl/3.4.1/b034fd9a67cb8646c01af7efcefcb93be835542b/lwjgl-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl/3.4.1/b4cbdef4818abd714ee66985344c0949fd1cd6d6/lwjgl-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.slf4j/slf4j-api/2.0.17/d9e58ac9c7779ba3bf8142aff6c830617a7fe60f/slf4j-api-2.0.17.jar:/modules-2/files-2.1/org.ow2.asm/asm-util/9.5/64b5a1fc8c1b15ed2efd6a063e976bc8d3dc5ffe/asm-util-9.5.jar:/modules-2/files-2.1/org.ow2.asm/asm-analysis/9.5/490bacc77de7cbc0be1a30bb3471072d705be4a4/asm-analysis-9.5.jar:/modules-2/files-2.1/org.ow2.asm/asm-tree/9.5/fd33c8b6373abaa675be407082fdfda35021254a/asm-tree-9.5.jar:/modules-2/files-2.1/org.ow2.asm/asm/9.5/dc6ea1875f4d64fbc85e1691c95b96a3d8569c90/asm-9.5.jar:/modules-2/files-2.1/net.neoforged/srgutils/1.0.10/abb471237b33b19f040ada00bfbad1ec45b949b6/srgutils-1.0.10.jar:/modules-2/files-2.1/io.netty/netty-transport-native-kqueue/4.2.15.Final/8ea0ef3eb716d821332e4b4926825a4b7c1a6d38/netty-transport-native-kqueue-4.2.15.Final-osx-aarch_64.jar:/modules-2/files-2.1/io.netty/netty-transport-native-kqueue/4.2.15.Final/4245380831515fb4eca18d32477a27fbb8f7b8f4/netty-transport-native-kqueue-4.2.15.Final-osx-x86_64.jar:/build/classes/java/main:/build/resources/main org.openjdk.jmh.Main .*net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix -p itemCount=100000 -p implementation=baked-suffix-array-index -f 1 -wi 1 -i 6 -w 200ms -r 200ms -rf json -rff /build/reports/jmh/adaptive-jmh-passes/pass-02-group-005.json -o /build/reports/jmh/adaptive-jmh-passes/pass-02-group-005.txt -foe true -p typedCharacterCount=1,2,4,5,6,7,8,9,10,11 -prof gc # JMH version: 1.37 # VM version: JDK 25, OpenJDK 64-Bit Server VM, 25+36-b176.4 # VM invoker: java # VM options: # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 1 iterations, 200 ms each # Measurement: 6 iterations, 200 ms each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix # Parameters: (implementation = baked-suffix-array-index, itemCount = 100000, typedCharacterCount = 1) # Run progress: 0.00% complete, ETA 00:00:14 # Fork: 1 of 1 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::objectFieldOffset has been called by org.openjdk.jmh.util.Utils (file:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar) WARNING: Please consider reporting this to the maintainers of class org.openjdk.jmh.util.Utils WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release # Warmup Iteration 1: 81.019 ms/op Iteration 1: 59.124 ms/op gc.alloc.rate: 135.246 MB/sec gc.alloc.rate.norm: 8390488.000 B/op gc.count: ≈ 0 counts Iteration 2: 30.482 ms/op gc.alloc.rate: 163.907 MB/sec gc.alloc.rate.norm: 5244630.000 B/op gc.count: ≈ 0 counts Iteration 3: 53.368 ms/op gc.alloc.rate: 131.091 MB/sec gc.alloc.rate.norm: 7341924.000 B/op gc.count: ≈ 0 counts Iteration 4: 54.974 ms/op gc.alloc.rate: 145.454 MB/sec gc.alloc.rate.norm: 8390498.000 B/op gc.count: 1.000 counts gc.time: 37.000 ms Iteration 5: 25.799 ms/op gc.alloc.rate: 206.635 MB/sec gc.alloc.rate.norm: 5593977.778 B/op gc.count: ≈ 0 counts Iteration 6: 33.533 ms/op gc.alloc.rate: 178.796 MB/sec gc.alloc.rate.norm: 6292752.000 B/op gc.count: ≈ 0 counts Result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix": 42.880 ±(99.9%) 40.694 ms/op [Average] (min, avg, max) = (25.799, 42.880, 59.124), stdev = 14.512 CI (99.9%): [2.186, 83.574] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate": 160.188 ±(99.9%) 81.304 MB/sec [Average] (min, avg, max) = (131.091, 160.188, 206.635), stdev = 28.994 CI (99.9%): [78.884, 241.493] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm": 6875711.630 ±(99.9%) 3855035.763 B/op [Average] (min, avg, max) = (5244630.000, 6875711.630, 8390498.000), stdev = 1374742.889 CI (99.9%): [3020675.867, 10730747.393] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count": 1.000 ±(99.9%) 0.001 counts [Sum] (min, avg, max) = (≈ 0, 0.167, 1.000), stdev = 0.408 CI (99.9%): [1.000, 1.000] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time": 37.000 ±(99.9%) 0.001 ms [Sum] (min, avg, max) = (≈ 0, 6.167, 37.000), stdev = 15.105 CI (99.9%): [37.000, 37.000] (assumes normal distribution) # JMH version: 1.37 # VM version: JDK 25, OpenJDK 64-Bit Server VM, 25+36-b176.4 # VM invoker: java # VM options: # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 1 iterations, 200 ms each # Measurement: 6 iterations, 200 ms each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix # Parameters: (implementation = baked-suffix-array-index, itemCount = 100000, typedCharacterCount = 2) # Run progress: 10.00% complete, ETA 00:00:37 # Fork: 1 of 1 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::objectFieldOffset has been called by org.openjdk.jmh.util.Utils (file:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar) WARNING: Please consider reporting this to the maintainers of class org.openjdk.jmh.util.Utils WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release # Warmup Iteration 1: 4.383 ms/op Iteration 1: 3.236 ms/op gc.alloc.rate: 285.093 MB/sec gc.alloc.rate.norm: 968271.138 B/op gc.count: ≈ 0 counts Iteration 2: 3.010 ms/op gc.alloc.rate: 285.610 MB/sec gc.alloc.rate.norm: 902427.176 B/op gc.count: 1.000 counts gc.time: 13.000 ms Iteration 3: 2.757 ms/op gc.alloc.rate: 306.988 MB/sec gc.alloc.rate.norm: 888147.093 B/op gc.count: ≈ 0 counts Iteration 4: 3.274 ms/op gc.alloc.rate: 281.871 MB/sec gc.alloc.rate.norm: 968272.246 B/op gc.count: 4.000 counts gc.time: 7.000 ms Iteration 5: 2.722 ms/op gc.alloc.rate: 294.705 MB/sec gc.alloc.rate.norm: 841968.000 B/op gc.count: ≈ 0 counts Iteration 6: 3.134 ms/op gc.alloc.rate: 290.432 MB/sec gc.alloc.rate.norm: 955021.254 B/op gc.count: ≈ 0 counts Result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix": 3.022 ±(99.9%) 0.666 ms/op [Average] (min, avg, max) = (2.722, 3.022, 3.274), stdev = 0.237 CI (99.9%): [2.356, 3.688] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate": 290.783 ±(99.9%) 25.599 MB/sec [Average] (min, avg, max) = (281.871, 290.783, 306.988), stdev = 9.129 CI (99.9%): [265.185, 316.382] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm": 920684.485 ±(99.9%) 144606.852 B/op [Average] (min, avg, max) = (841968.000, 920684.485, 968272.246), stdev = 51568.197 CI (99.9%): [776077.632, 1065291.337] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count": 5.000 ±(99.9%) 0.001 counts [Sum] (min, avg, max) = (≈ 0, 0.833, 4.000), stdev = 1.602 CI (99.9%): [5.000, 5.000] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time": 20.000 ±(99.9%) 0.001 ms [Sum] (min, avg, max) = (≈ 0, 3.333, 13.000), stdev = 5.502 CI (99.9%): [20.000, 20.000] (assumes normal distribution) # JMH version: 1.37 # VM version: JDK 25, OpenJDK 64-Bit Server VM, 25+36-b176.4 # VM invoker: java # VM options: # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 1 iterations, 200 ms each # Measurement: 6 iterations, 200 ms each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix # Parameters: (implementation = baked-suffix-array-index, itemCount = 100000, typedCharacterCount = 4) # Run progress: 20.00% complete, ETA 00:00:32 # Fork: 1 of 1 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::objectFieldOffset has been called by org.openjdk.jmh.util.Utils (file:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar) WARNING: Please consider reporting this to the maintainers of class org.openjdk.jmh.util.Utils WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release # Warmup Iteration 1: 0.463 ms/op Iteration 1: 0.422 ms/op gc.alloc.rate: 415.608 MB/sec gc.alloc.rate.norm: 184171.431 B/op gc.count: 1.000 counts gc.time: 10.000 ms Iteration 2: 0.339 ms/op gc.alloc.rate: 518.133 MB/sec gc.alloc.rate.norm: 184237.003 B/op gc.count: 1.000 counts gc.time: 1.000 ms Iteration 3: 0.356 ms/op gc.alloc.rate: 494.976 MB/sec gc.alloc.rate.norm: 184700.870 B/op gc.count: ≈ 0 counts Iteration 4: 0.427 ms/op gc.alloc.rate: 411.072 MB/sec gc.alloc.rate.norm: 184249.231 B/op gc.count: ≈ 0 counts Iteration 5: 0.357 ms/op gc.alloc.rate: 493.755 MB/sec gc.alloc.rate.norm: 185182.301 B/op gc.count: 1.000 counts gc.time: 1.000 ms Iteration 6: 0.349 ms/op gc.alloc.rate: 502.287 MB/sec gc.alloc.rate.norm: 183964.952 B/op gc.count: ≈ 0 counts Result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix": 0.375 ±(99.9%) 0.109 ms/op [Average] (min, avg, max) = (0.339, 0.375, 0.427), stdev = 0.039 CI (99.9%): [0.266, 0.484] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate": 472.638 ±(99.9%) 131.149 MB/sec [Average] (min, avg, max) = (411.072, 472.638, 518.133), stdev = 46.769 CI (99.9%): [341.490, 603.787] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm": 184417.631 ±(99.9%) 1248.705 B/op [Average] (min, avg, max) = (183964.952, 184417.631, 185182.301), stdev = 445.300 CI (99.9%): [183168.926, 185666.336] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count": 3.000 ±(99.9%) 0.001 counts [Sum] (min, avg, max) = (≈ 0, 0.500, 1.000), stdev = 0.548 CI (99.9%): [3.000, 3.000] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time": 12.000 ±(99.9%) 0.001 ms [Sum] (min, avg, max) = (≈ 0, 2.000, 10.000), stdev = 3.950 CI (99.9%): [12.000, 12.000] (assumes normal distribution) # JMH version: 1.37 # VM version: JDK 25, OpenJDK 64-Bit Server VM, 25+36-b176.4 # VM invoker: java # VM options: # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 1 iterations, 200 ms each # Measurement: 6 iterations, 200 ms each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix # Parameters: (implementation = baked-suffix-array-index, itemCount = 100000, typedCharacterCount = 5) # Run progress: 30.00% complete, ETA 00:00:28 # Fork: 1 of 1 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::objectFieldOffset has been called by org.openjdk.jmh.util.Utils (file:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar) WARNING: Please consider reporting this to the maintainers of class org.openjdk.jmh.util.Utils WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release # Warmup Iteration 1: 0.367 ms/op Iteration 1: 0.290 ms/op gc.alloc.rate: 507.549 MB/sec gc.alloc.rate.norm: 154667.741 B/op gc.count: 1.000 counts gc.time: 12.000 ms Iteration 2: 0.324 ms/op gc.alloc.rate: 452.603 MB/sec gc.alloc.rate.norm: 154017.931 B/op gc.count: 1.000 counts gc.time: 1.000 ms Iteration 3: 0.300 ms/op gc.alloc.rate: 489.375 MB/sec gc.alloc.rate.norm: 154276.333 B/op gc.count: ≈ 0 counts Iteration 4: 0.313 ms/op gc.alloc.rate: 469.701 MB/sec gc.alloc.rate.norm: 154276.671 B/op gc.count: 1.000 counts gc.time: ≈ 0 ms Iteration 5: 0.276 ms/op gc.alloc.rate: 531.267 MB/sec gc.alloc.rate.norm: 153954.230 B/op gc.count: ≈ 0 counts Iteration 6: 0.279 ms/op gc.alloc.rate: 525.699 MB/sec gc.alloc.rate.norm: 154128.577 B/op gc.count: ≈ 0 counts Result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix": 0.297 ±(99.9%) 0.053 ms/op [Average] (min, avg, max) = (0.276, 0.297, 0.324), stdev = 0.019 CI (99.9%): [0.244, 0.350] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate": 496.032 ±(99.9%) 87.587 MB/sec [Average] (min, avg, max) = (452.603, 496.032, 531.267), stdev = 31.234 CI (99.9%): [408.445, 583.620] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm": 154220.247 ±(99.9%) 716.777 B/op [Average] (min, avg, max) = (153954.230, 154220.247, 154667.741), stdev = 255.609 CI (99.9%): [153503.471, 154937.024] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count": 3.000 ±(99.9%) 0.001 counts [Sum] (min, avg, max) = (≈ 0, 0.500, 1.000), stdev = 0.548 CI (99.9%): [3.000, 3.000] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time": 13.000 ±(99.9%) 0.001 ms [Sum] (min, avg, max) = (≈ 0, 2.167, 12.000), stdev = 4.834 CI (99.9%): [13.000, 13.000] (assumes normal distribution) # JMH version: 1.37 # VM version: JDK 25, OpenJDK 64-Bit Server VM, 25+36-b176.4 # VM invoker: java # VM options: # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 1 iterations, 200 ms each # Measurement: 6 iterations, 200 ms each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix # Parameters: (implementation = baked-suffix-array-index, itemCount = 100000, typedCharacterCount = 6) # Run progress: 40.00% complete, ETA 00:00:23 # Fork: 1 of 1 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::objectFieldOffset has been called by org.openjdk.jmh.util.Utils (file:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar) WARNING: Please consider reporting this to the maintainers of class org.openjdk.jmh.util.Utils WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release # Warmup Iteration 1: 0.357 ms/op Iteration 1: 0.340 ms/op gc.alloc.rate: 417.363 MB/sec gc.alloc.rate.norm: 148958.515 B/op gc.count: 1.000 counts gc.time: 8.000 ms Iteration 2: 0.302 ms/op gc.alloc.rate: 468.232 MB/sec gc.alloc.rate.norm: 148577.991 B/op gc.count: 1.000 counts gc.time: 1.000 ms Iteration 3: 0.283 ms/op gc.alloc.rate: 500.586 MB/sec gc.alloc.rate.norm: 148748.966 B/op gc.count: ≈ 0 counts Iteration 4: 0.292 ms/op gc.alloc.rate: 485.764 MB/sec gc.alloc.rate.norm: 148666.943 B/op gc.count: 1.000 counts gc.time: 1.000 ms Iteration 5: 0.336 ms/op gc.alloc.rate: 421.730 MB/sec gc.alloc.rate.norm: 148854.870 B/op gc.count: ≈ 0 counts Iteration 6: 0.308 ms/op gc.alloc.rate: 459.815 MB/sec gc.alloc.rate.norm: 148407.279 B/op gc.count: ≈ 0 counts Result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix": 0.310 ±(99.9%) 0.065 ms/op [Average] (min, avg, max) = (0.283, 0.310, 0.340), stdev = 0.023 CI (99.9%): [0.245, 0.376] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate": 458.915 ±(99.9%) 94.300 MB/sec [Average] (min, avg, max) = (417.363, 458.915, 500.586), stdev = 33.628 CI (99.9%): [364.615, 553.215] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm": 148702.427 ±(99.9%) 553.557 B/op [Average] (min, avg, max) = (148407.279, 148702.427, 148958.515), stdev = 197.404 CI (99.9%): [148148.870, 149255.985] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count": 3.000 ±(99.9%) 0.001 counts [Sum] (min, avg, max) = (≈ 0, 0.500, 1.000), stdev = 0.548 CI (99.9%): [3.000, 3.000] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time": 10.000 ±(99.9%) 0.001 ms [Sum] (min, avg, max) = (≈ 0, 1.667, 8.000), stdev = 3.141 CI (99.9%): [10.000, 10.000] (assumes normal distribution) # JMH version: 1.37 # VM version: JDK 25, OpenJDK 64-Bit Server VM, 25+36-b176.4 # VM invoker: java # VM options: # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 1 iterations, 200 ms each # Measurement: 6 iterations, 200 ms each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix # Parameters: (implementation = baked-suffix-array-index, itemCount = 100000, typedCharacterCount = 7) # Run progress: 50.00% complete, ETA 00:00:19 # Fork: 1 of 1 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::objectFieldOffset has been called by org.openjdk.jmh.util.Utils (file:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar) WARNING: Please consider reporting this to the maintainers of class org.openjdk.jmh.util.Utils WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release # Warmup Iteration 1: 0.255 ms/op Iteration 1: 0.233 ms/op gc.alloc.rate: 416.253 MB/sec gc.alloc.rate.norm: 102060.083 B/op gc.count: 1.000 counts gc.time: 14.000 ms Iteration 2: 0.227 ms/op gc.alloc.rate: 425.785 MB/sec gc.alloc.rate.norm: 101550.966 B/op gc.count: 1.000 counts gc.time: 2.000 ms Iteration 3: 0.204 ms/op gc.alloc.rate: 476.664 MB/sec gc.alloc.rate.norm: 102220.254 B/op gc.count: ≈ 0 counts Iteration 4: 0.241 ms/op gc.alloc.rate: 404.477 MB/sec gc.alloc.rate.norm: 102248.792 B/op gc.count: ≈ 0 counts Iteration 5: 0.225 ms/op gc.alloc.rate: 433.704 MB/sec gc.alloc.rate.norm: 102384.693 B/op gc.count: 1.000 counts gc.time: 1.000 ms Iteration 6: 0.234 ms/op gc.alloc.rate: 414.463 MB/sec gc.alloc.rate.norm: 101864.019 B/op gc.count: ≈ 0 counts Result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix": 0.227 ±(99.9%) 0.036 ms/op [Average] (min, avg, max) = (0.204, 0.227, 0.241), stdev = 0.013 CI (99.9%): [0.192, 0.263] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate": 428.558 ±(99.9%) 71.804 MB/sec [Average] (min, avg, max) = (404.477, 428.558, 476.664), stdev = 25.606 CI (99.9%): [356.753, 500.362] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm": 102054.801 ±(99.9%) 854.344 B/op [Average] (min, avg, max) = (101550.966, 102054.801, 102384.693), stdev = 304.667 CI (99.9%): [101200.457, 102909.145] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count": 3.000 ±(99.9%) 0.001 counts [Sum] (min, avg, max) = (≈ 0, 0.500, 1.000), stdev = 0.548 CI (99.9%): [3.000, 3.000] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time": 17.000 ±(99.9%) 0.001 ms [Sum] (min, avg, max) = (≈ 0, 2.833, 14.000), stdev = 5.529 CI (99.9%): [17.000, 17.000] (assumes normal distribution) # JMH version: 1.37 # VM version: JDK 25, OpenJDK 64-Bit Server VM, 25+36-b176.4 # VM invoker: java # VM options: # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 1 iterations, 200 ms each # Measurement: 6 iterations, 200 ms each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix # Parameters: (implementation = baked-suffix-array-index, itemCount = 100000, typedCharacterCount = 8) # Run progress: 60.00% complete, ETA 00:00:15 # Fork: 1 of 1 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::objectFieldOffset has been called by org.openjdk.jmh.util.Utils (file:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar) WARNING: Please consider reporting this to the maintainers of class org.openjdk.jmh.util.Utils WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release # Warmup Iteration 1: 0.098 ms/op Iteration 1: 0.101 ms/op gc.alloc.rate: 538.580 MB/sec gc.alloc.rate.norm: 57090.229 B/op gc.count: 1.000 counts gc.time: 2.000 ms Iteration 2: 0.084 ms/op gc.alloc.rate: 646.665 MB/sec gc.alloc.rate.norm: 56796.010 B/op gc.count: ≈ 0 counts Iteration 3: 0.083 ms/op gc.alloc.rate: 651.160 MB/sec gc.alloc.rate.norm: 57024.230 B/op gc.count: 1.000 counts gc.time: 1.000 ms Iteration 4: 0.081 ms/op gc.alloc.rate: 668.873 MB/sec gc.alloc.rate.norm: 56939.734 B/op gc.count: ≈ 0 counts Iteration 5: 0.086 ms/op gc.alloc.rate: 628.699 MB/sec gc.alloc.rate.norm: 56853.788 B/op gc.count: 1.000 counts gc.time: ≈ 0 ms Iteration 6: 0.082 ms/op gc.alloc.rate: 660.925 MB/sec gc.alloc.rate.norm: 56939.800 B/op gc.count: ≈ 0 counts Result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix": 0.086 ±(99.9%) 0.021 ms/op [Average] (min, avg, max) = (0.081, 0.086, 0.101), stdev = 0.007 CI (99.9%): [0.065, 0.107] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate": 632.484 ±(99.9%) 134.573 MB/sec [Average] (min, avg, max) = (538.580, 632.484, 668.873), stdev = 47.990 CI (99.9%): [497.910, 767.057] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm": 56940.632 ±(99.9%) 301.569 B/op [Average] (min, avg, max) = (56796.010, 56940.632, 57090.229), stdev = 107.542 CI (99.9%): [56639.063, 57242.201] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count": 3.000 ±(99.9%) 0.001 counts [Sum] (min, avg, max) = (≈ 0, 0.500, 1.000), stdev = 0.548 CI (99.9%): [3.000, 3.000] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time": 3.000 ±(99.9%) 0.001 ms [Sum] (min, avg, max) = (≈ 0, 0.500, 2.000), stdev = 0.837 CI (99.9%): [3.000, 3.000] (assumes normal distribution) # JMH version: 1.37 # VM version: JDK 25, OpenJDK 64-Bit Server VM, 25+36-b176.4 # VM invoker: java # VM options: # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 1 iterations, 200 ms each # Measurement: 6 iterations, 200 ms each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix # Parameters: (implementation = baked-suffix-array-index, itemCount = 100000, typedCharacterCount = 9) # Run progress: 70.00% complete, ETA 00:00:11 # Fork: 1 of 1 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::objectFieldOffset has been called by org.openjdk.jmh.util.Utils (file:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar) WARNING: Please consider reporting this to the maintainers of class org.openjdk.jmh.util.Utils WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release # Warmup Iteration 1: 0.123 ms/op Iteration 1: 0.081 ms/op gc.alloc.rate: 644.978 MB/sec gc.alloc.rate.norm: 54864.824 B/op gc.count: ≈ 0 counts Iteration 2: 0.076 ms/op gc.alloc.rate: 685.650 MB/sec gc.alloc.rate.norm: 54900.598 B/op gc.count: 1.000 counts gc.time: 2.000 ms Iteration 3: 0.086 ms/op gc.alloc.rate: 604.243 MB/sec gc.alloc.rate.norm: 54800.226 B/op gc.count: 1.000 counts gc.time: ≈ 0 ms Iteration 4: 0.086 ms/op gc.alloc.rate: 613.416 MB/sec gc.alloc.rate.norm: 55061.482 B/op gc.count: ≈ 0 counts Iteration 5: 0.085 ms/op gc.alloc.rate: 614.042 MB/sec gc.alloc.rate.norm: 54803.054 B/op gc.count: 1.000 counts gc.time: 1.000 ms Iteration 6: 0.081 ms/op gc.alloc.rate: 642.075 MB/sec gc.alloc.rate.norm: 54881.506 B/op gc.count: ≈ 0 counts Result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix": 0.083 ±(99.9%) 0.011 ms/op [Average] (min, avg, max) = (0.076, 0.083, 0.086), stdev = 0.004 CI (99.9%): [0.072, 0.093] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate": 634.067 ±(99.9%) 84.693 MB/sec [Average] (min, avg, max) = (604.243, 634.067, 685.650), stdev = 30.202 CI (99.9%): [549.374, 718.760] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm": 54885.282 ±(99.9%) 268.118 B/op [Average] (min, avg, max) = (54800.226, 54885.282, 55061.482), stdev = 95.614 CI (99.9%): [54617.164, 55153.400] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count": 3.000 ±(99.9%) 0.001 counts [Sum] (min, avg, max) = (≈ 0, 0.500, 1.000), stdev = 0.548 CI (99.9%): [3.000, 3.000] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time": 3.000 ±(99.9%) 0.001 ms [Sum] (min, avg, max) = (≈ 0, 0.500, 2.000), stdev = 0.837 CI (99.9%): [3.000, 3.000] (assumes normal distribution) # JMH version: 1.37 # VM version: JDK 25, OpenJDK 64-Bit Server VM, 25+36-b176.4 # VM invoker: java # VM options: # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 1 iterations, 200 ms each # Measurement: 6 iterations, 200 ms each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix # Parameters: (implementation = baked-suffix-array-index, itemCount = 100000, typedCharacterCount = 10) # Run progress: 80.00% complete, ETA 00:00:07 # Fork: 1 of 1 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::objectFieldOffset has been called by org.openjdk.jmh.util.Utils (file:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar) WARNING: Please consider reporting this to the maintainers of class org.openjdk.jmh.util.Utils WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release # Warmup Iteration 1: 0.040 ms/op Iteration 1: 0.034 ms/op gc.alloc.rate: 705.186 MB/sec gc.alloc.rate.norm: 25186.937 B/op gc.count: 1.000 counts gc.time: 1.000 ms Iteration 2: 0.036 ms/op gc.alloc.rate: 668.867 MB/sec gc.alloc.rate.norm: 25184.198 B/op gc.count: ≈ 0 counts Iteration 3: 0.034 ms/op gc.alloc.rate: 714.834 MB/sec gc.alloc.rate.norm: 25183.941 B/op gc.count: 1.000 counts gc.time: 1.000 ms Iteration 4: 0.035 ms/op gc.alloc.rate: 693.427 MB/sec gc.alloc.rate.norm: 25184.386 B/op gc.count: ≈ 0 counts Iteration 5: 0.035 ms/op gc.alloc.rate: 681.857 MB/sec gc.alloc.rate.norm: 25184.213 B/op gc.count: 1.000 counts gc.time: 1.000 ms Iteration 6: 0.032 ms/op gc.alloc.rate: 752.587 MB/sec gc.alloc.rate.norm: 25184.099 B/op gc.count: 1.000 counts gc.time: ≈ 0 ms Result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix": 0.034 ±(99.9%) 0.004 ms/op [Average] (min, avg, max) = (0.032, 0.034, 0.036), stdev = 0.001 CI (99.9%): [0.030, 0.038] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate": 702.793 ±(99.9%) 82.303 MB/sec [Average] (min, avg, max) = (668.867, 702.793, 752.587), stdev = 29.350 CI (99.9%): [620.490, 785.096] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm": 25184.629 ±(99.9%) 3.197 B/op [Average] (min, avg, max) = (25183.941, 25184.629, 25186.937), stdev = 1.140 CI (99.9%): [25181.432, 25187.826] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count": 4.000 ±(99.9%) 0.001 counts [Sum] (min, avg, max) = (≈ 0, 0.667, 1.000), stdev = 0.516 CI (99.9%): [4.000, 4.000] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time": 3.000 ±(99.9%) 0.001 ms [Sum] (min, avg, max) = (≈ 0, 0.500, 1.000), stdev = 0.548 CI (99.9%): [3.000, 3.000] (assumes normal distribution) # JMH version: 1.37 # VM version: JDK 25, OpenJDK 64-Bit Server VM, 25+36-b176.4 # VM invoker: java # VM options: # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 1 iterations, 200 ms each # Measurement: 6 iterations, 200 ms each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix # Parameters: (implementation = baked-suffix-array-index, itemCount = 100000, typedCharacterCount = 11) # Run progress: 90.00% complete, ETA 00:00:03 # Fork: 1 of 1 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::objectFieldOffset has been called by org.openjdk.jmh.util.Utils (file:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar) WARNING: Please consider reporting this to the maintainers of class org.openjdk.jmh.util.Utils WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release # Warmup Iteration 1: 0.034 ms/op Iteration 1: 0.033 ms/op gc.alloc.rate: 639.666 MB/sec gc.alloc.rate.norm: 22197.520 B/op gc.count: 1.000 counts gc.time: 2.000 ms Iteration 2: 0.028 ms/op gc.alloc.rate: 741.524 MB/sec gc.alloc.rate.norm: 22137.460 B/op gc.count: ≈ 0 counts Iteration 3: 0.030 ms/op gc.alloc.rate: 711.533 MB/sec gc.alloc.rate.norm: 22193.766 B/op gc.count: 1.000 counts gc.time: ≈ 0 ms Iteration 4: 0.029 ms/op gc.alloc.rate: 715.356 MB/sec gc.alloc.rate.norm: 22136.478 B/op gc.count: ≈ 0 counts Iteration 5: 0.032 ms/op gc.alloc.rate: 663.307 MB/sec gc.alloc.rate.norm: 22196.559 B/op gc.count: 1.000 counts gc.time: 1.000 ms Iteration 6: 0.029 ms/op gc.alloc.rate: 740.718 MB/sec gc.alloc.rate.norm: 22164.970 B/op gc.count: 1.000 counts gc.time: ≈ 0 ms Result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix": 0.030 ±(99.9%) 0.005 ms/op [Average] (min, avg, max) = (0.028, 0.030, 0.033), stdev = 0.002 CI (99.9%): [0.025, 0.035] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate": 702.017 ±(99.9%) 117.061 MB/sec [Average] (min, avg, max) = (639.666, 702.017, 741.524), stdev = 41.745 CI (99.9%): [584.957, 819.078] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm": 22171.126 ±(99.9%) 81.542 B/op [Average] (min, avg, max) = (22136.478, 22171.126, 22197.520), stdev = 29.079 CI (99.9%): [22089.584, 22252.667] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count": 4.000 ±(99.9%) 0.001 counts [Sum] (min, avg, max) = (≈ 0, 0.667, 1.000), stdev = 0.516 CI (99.9%): [4.000, 4.000] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time": 3.000 ±(99.9%) 0.001 ms [Sum] (min, avg, max) = (≈ 0, 0.500, 2.000), stdev = 0.837 CI (99.9%): [3.000, 3.000] (assumes normal distribution) # Run complete. Total time: 00:00:39 REMEMBER: The numbers below are just data. To gain reusable insights, you need to follow up on why the numbers are the way they are. Use profilers (see -prof, -lprof), design factorial experiments, perform baseline and negative tests that provide experimental control, make sure the benchmarking environment is safe on JVM/OS/HW level, ask for reviews from the domain experts. Do not assume the numbers tell you what you want them to tell. NOTE: Current JVM experimentally supports Compiler Blackholes, and they are in use. Please exercise extra caution when trusting the results, look into the generated code to check the benchmark still works, and factor in a small probability of new VM bugs. Additionally, while comparisons between different JVMs are already problematic, the performance difference caused by different Blackhole modes can be very significant. Please make sure you use the consistent Blackhole mode for comparisons. Benchmark (implementation) (itemCount) (typedCharacterCount) Mode Cnt Score Error Units LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix baked-suffix-array-index 100000 1 avgt 6 42.880 ± 40.694 ms/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate baked-suffix-array-index 100000 1 avgt 6 160.188 ± 81.304 MB/sec LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm baked-suffix-array-index 100000 1 avgt 6 6875711.630 ± 3855035.763 B/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count baked-suffix-array-index 100000 1 avgt 6 1.000 counts LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time baked-suffix-array-index 100000 1 avgt 6 37.000 ms LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix baked-suffix-array-index 100000 2 avgt 6 3.022 ± 0.666 ms/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate baked-suffix-array-index 100000 2 avgt 6 290.783 ± 25.599 MB/sec LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm baked-suffix-array-index 100000 2 avgt 6 920684.485 ± 144606.852 B/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count baked-suffix-array-index 100000 2 avgt 6 5.000 counts LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time baked-suffix-array-index 100000 2 avgt 6 20.000 ms LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix baked-suffix-array-index 100000 4 avgt 6 0.375 ± 0.109 ms/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate baked-suffix-array-index 100000 4 avgt 6 472.638 ± 131.149 MB/sec LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm baked-suffix-array-index 100000 4 avgt 6 184417.631 ± 1248.705 B/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count baked-suffix-array-index 100000 4 avgt 6 3.000 counts LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time baked-suffix-array-index 100000 4 avgt 6 12.000 ms LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix baked-suffix-array-index 100000 5 avgt 6 0.297 ± 0.053 ms/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate baked-suffix-array-index 100000 5 avgt 6 496.032 ± 87.587 MB/sec LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm baked-suffix-array-index 100000 5 avgt 6 154220.247 ± 716.777 B/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count baked-suffix-array-index 100000 5 avgt 6 3.000 counts LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time baked-suffix-array-index 100000 5 avgt 6 13.000 ms LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix baked-suffix-array-index 100000 6 avgt 6 0.310 ± 0.065 ms/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate baked-suffix-array-index 100000 6 avgt 6 458.915 ± 94.300 MB/sec LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm baked-suffix-array-index 100000 6 avgt 6 148702.427 ± 553.557 B/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count baked-suffix-array-index 100000 6 avgt 6 3.000 counts LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time baked-suffix-array-index 100000 6 avgt 6 10.000 ms LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix baked-suffix-array-index 100000 7 avgt 6 0.227 ± 0.036 ms/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate baked-suffix-array-index 100000 7 avgt 6 428.558 ± 71.804 MB/sec LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm baked-suffix-array-index 100000 7 avgt 6 102054.801 ± 854.344 B/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count baked-suffix-array-index 100000 7 avgt 6 3.000 counts LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time baked-suffix-array-index 100000 7 avgt 6 17.000 ms LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix baked-suffix-array-index 100000 8 avgt 6 0.086 ± 0.021 ms/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate baked-suffix-array-index 100000 8 avgt 6 632.484 ± 134.573 MB/sec LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm baked-suffix-array-index 100000 8 avgt 6 56940.632 ± 301.569 B/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count baked-suffix-array-index 100000 8 avgt 6 3.000 counts LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time baked-suffix-array-index 100000 8 avgt 6 3.000 ms LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix baked-suffix-array-index 100000 9 avgt 6 0.083 ± 0.011 ms/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate baked-suffix-array-index 100000 9 avgt 6 634.067 ± 84.693 MB/sec LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm baked-suffix-array-index 100000 9 avgt 6 54885.282 ± 268.118 B/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count baked-suffix-array-index 100000 9 avgt 6 3.000 counts LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time baked-suffix-array-index 100000 9 avgt 6 3.000 ms LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix baked-suffix-array-index 100000 10 avgt 6 0.034 ± 0.004 ms/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate baked-suffix-array-index 100000 10 avgt 6 702.793 ± 82.303 MB/sec LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm baked-suffix-array-index 100000 10 avgt 6 25184.629 ± 3.197 B/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count baked-suffix-array-index 100000 10 avgt 6 4.000 counts LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time baked-suffix-array-index 100000 10 avgt 6 3.000 ms LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix baked-suffix-array-index 100000 11 avgt 6 0.030 ± 0.005 ms/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate baked-suffix-array-index 100000 11 avgt 6 702.017 ± 117.061 MB/sec LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm baked-suffix-array-index 100000 11 avgt 6 22171.126 ± 81.542 B/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count baked-suffix-array-index 100000 11 avgt 6 4.000 counts LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time baked-suffix-array-index 100000 11 avgt 6 3.000 ms Benchmark result is saved to /build/reports/jmh/adaptive-jmh-passes/pass-02-group-005.json # Adaptive pass 2, group 6 # Command: java -cp /build/classes/java/benchmark:/build/resources/benchmark:/build/moddev/artifacts/vanilla-26.2-2.jar:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar:/modules-2/files-2.1/com.abahgat/suffixtree/2.0.0/ffe2c29796add2624d2e0b9f33e72421eb5c5ea5/suffixtree-2.0.0.jar:/modules-2/files-2.1/net.mezzdev/suffixtree/1.3.0/1a1b87af70a1631ff6d6c9d49c63564aadecb176/suffixtree-1.3.0.jar:/modules-2/files-2.1/net.mezzdev/baked-substring-index/0.1.0/4f9fbd9eb54fdb1b8ec40a83297f4e8f4479eb7c/baked-substring-index-0.1.0.jar:/modules-2/files-2.1/net.mezzdev/baked-suffix-array-index/0.1.0/cd5e5ffbcee030d149e7a5a70e151a06158bd643/baked-suffix-array-index-0.1.0.jar:/modules-2/files-2.1/net.neoforged/mergetool/2.0.7/793b18456e92c4a7f66d9b5d8bf7a9c1c7a20b20/mergetool-2.0.7-api.jar:/modules-2/files-2.1/net.sf.jopt-simple/jopt-simple/5.0.4/4fdac2fbe92dfad86aa6e9301736f6b4342a3f5c/jopt-simple-5.0.4.jar:/modules-2/files-2.1/org.apache.commons/commons-math3/3.6.1/e4ba98f1d4b3c80ec46392f25e094a6a2e58fcbf/commons-math3-3.6.1.jar:/modules-2/files-2.1/com.google.code.findbugs/jsr305/3.0.2/25ea2e8b0c338a877313bd4672d3fe056ea78f0d/jsr305-3.0.2.jar:/modules-2/files-2.1/org.jspecify/jspecify/1.0.0/7425a601c1c7ec76645a78d22b8c6a627edee507/jspecify-1.0.0.jar:/modules-2/files-2.1/org.jetbrains/annotations/26.0.2-1/c7ce3cdeda3d18909368dfe5977332dfad326c6d/annotations-26.0.2-1.jar:/modules-2/files-2.1/ca.weblite/java-objc-bridge/1.1/1227f9e0666314f9de41477e3ec277e542ed7f7b/java-objc-bridge-1.1.jar:/modules-2/files-2.1/at.yawk.lz4/lz4-java/1.10.1/f541d7f910fe3d76f38f799c507c48cc81b12ecb/lz4-java-1.10.1.jar:/modules-2/files-2.1/com.azure/azure-json/1.4.0/fcc1d354dbc3e0300e5276b1bf124d0247799cd8/azure-json-1.4.0.jar:/modules-2/files-2.1/com.github.oshi/oshi-core/6.9.0/3224870731860cfcd7744581a05b559e94291e7/oshi-core-6.9.0.jar:/modules-2/files-2.1/com.google.code.gson/gson/2.14.0/efc0e34ede4e3204eaefb84a00e55e8c86634382/gson-2.14.0.jar:/modules-2/files-2.1/com.google.guava/failureaccess/1.0.3/aeaffd00d57023a2c947393ed251f0354f0985fc/failureaccess-1.0.3.jar:/modules-2/files-2.1/com.google.guava/guava/33.6.0-jre/c376b13067cc99a5774403530953f7b05a91e218/guava-33.6.0-jre.jar:/modules-2/files-2.1/com.ibm.icu/icu4j/78.3/6a851a53bb1f25689fc418dcc8935b0d93580adf/icu4j-78.3.jar:/modules-2/files-2.1/com.microsoft.azure/msal4j/1.24.1/c233f2d047b9755f7041adf21a858c680e4c9242/msal4j-1.24.1.jar:/modules-2/files-2.1/com.mojang/authlib/9.0.75/d61056a234d5e4b272e09d59b0713f80d6c0b6af/authlib-9.0.75.jar:/modules-2/files-2.1/com.mojang/blocklist/1.0.10/5c685c5ffa94c4cd39496c7184c1d122e515ecef/blocklist-1.0.10.jar:/modules-2/files-2.1/com.mojang/brigadier/1.3.10/d15b53a14cf20fdcaa98f731af5dda654452c010/brigadier-1.3.10.jar:/modules-2/files-2.1/com.mojang/datafixerupper/10.0.21/b6b2ae770c02e0c1eb90f9985b151e9085a38d0b/datafixerupper-10.0.21.jar:/modules-2/files-2.1/com.mojang/jtracy/1.0.37/a3fb649b2e2b2288d2978f0b0bc3d83f62809d1e/jtracy-1.0.37.jar:/modules-2/files-2.1/com.mojang/jtracy/1.0.37/a99fcb63b72fb623534d0ceb71bda4bed9b55b4c/jtracy-1.0.37-natives-macos.jar:/modules-2/files-2.1/com.mojang/jtracy/1.0.37/c8e971da5150aa33283c5bf4097154c0da554fb9/jtracy-1.0.37-natives-macos-arm64.jar:/modules-2/files-2.1/com.mojang/logging/1.7.12/351cea64a5233361327d8d54c44277041beed97f/logging-1.7.12.jar:/modules-2/files-2.1/com.mojang/patchy/2.2.10/da05971b07cbb379d002cf7eaec6a2048211fefc/patchy-2.2.10.jar:/modules-2/files-2.1/com.mojang/text2speech/1.19.12/2e517a75c79d34d32de2b5d68422150836c2133e/text2speech-1.19.12.jar:/modules-2/files-2.1/commons-codec/commons-codec/1.22.0/6b3eb4beb7058c2a638f5f17bcb388649fd339dd/commons-codec-1.22.0.jar:/modules-2/files-2.1/commons-io/commons-io/2.20.0/36f3474daec2849c149e877614e7f979b2082cd2/commons-io-2.20.0.jar:/modules-2/files-2.1/io.netty/netty-buffer/4.2.15.Final/2beb620803bf871cda2dd5d46b8f831e8015dd34/netty-buffer-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-codec-base/4.2.15.Final/e97149fdd5fb04858efa90e314651c8d700dc68b/netty-codec-base-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-codec-compression/4.2.15.Final/89fc4a20b7ae6af974304b1695405e62c4f9b16d/netty-codec-compression-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-codec-http/4.2.15.Final/e611826aa054371bb9a17f27bdb05755a4cac5f0/netty-codec-http-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-common/4.2.15.Final/7222492c1af9c2d4d78d521eea340a619e242fda/netty-common-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-handler/4.2.15.Final/d5344afd1148e3b9927a74be019605ebb0937a93/netty-handler-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-resolver/4.2.15.Final/b961a16d379b508b473e064ba06842bba280f4e3/netty-resolver-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-transport-classes-epoll/4.2.15.Final/44bafba9c9993800e955b365bba4981326f3f3b1/netty-transport-classes-epoll-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-transport-classes-kqueue/4.2.15.Final/f248656bb907607c5a41c7b61fd918a97db79250/netty-transport-classes-kqueue-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-transport-native-unix-common/4.2.15.Final/efb6943b4de9e0226a5ac35330f232605424af02/netty-transport-native-unix-common-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-transport/4.2.15.Final/a000c3a6196ee40207b73ac619dcb339409dd62f/netty-transport-4.2.15.Final.jar:/modules-2/files-2.1/it.unimi.dsi/fastutil/8.5.18/a6cff377eecc19c2037bf31568a6d7106b50ba1f/fastutil-8.5.18.jar:/modules-2/files-2.1/net.java.dev.jna/jna-platform/5.17.0/a4934c44d25a9d8c2ddf4203affd20330cb3426f/jna-platform-5.17.0.jar:/modules-2/files-2.1/net.java.dev.jna/jna/5.17.0/33d12735bef894440780fce64f9758d420c7bae2/jna-5.17.0.jar:/modules-2/files-2.1/org.apache.commons/commons-compress/1.28.0/e482f2c7a88dac3c497e96aa420b6a769f59c8d7/commons-compress-1.28.0.jar:/modules-2/files-2.1/org.apache.commons/commons-lang3/3.20.0/65897b3e5731220962e659e001904af3c3cbeba9/commons-lang3-3.20.0.jar:/modules-2/files-2.1/org.apache.logging.log4j/log4j-api/2.26.0/ad52af0ecf054a7e3f275a2e180ee06d9c490951/log4j-api-2.26.0.jar:/modules-2/files-2.1/org.apache.logging.log4j/log4j-core/2.26.0/d267ca60b27ddb075e0b4e75e7875859717bf85f/log4j-core-2.26.0.jar:/modules-2/files-2.1/org.apache.logging.log4j/log4j-slf4j2-impl/2.26.0/668c0f0e813d83f00a7182533aa658ec7e7a0a0d/log4j-slf4j2-impl-2.26.0.jar:/modules-2/files-2.1/org.jcraft/jorbis/0.0.17/8872d22b293e8f5d7d56ff92be966e6dc28ebdc6/jorbis-0.0.17.jar:/modules-2/files-2.1/org.joml/joml/1.10.8/fc0a71dad90a2cf41d82a76156a0e700af8e4f8d/joml-1.10.8.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-freetype/3.4.1/caa75a37e857efc9b0686e434d708d6420c5b6ea/lwjgl-freetype-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-freetype/3.4.1/61cb2d85e1838bca1a0b664f54e818bc68deb2ef/lwjgl-freetype-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-freetype/3.4.1/cce5a86b4a7d17817fe8ea0296302a4353acf2d5/lwjgl-freetype-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-glfw/3.4.1/a782b1ddd175c9107bf300fd92920579ea65e2a4/lwjgl-glfw-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-glfw/3.4.1/3c8538942f58377d59cd7be2dc164ba71a53868a/lwjgl-glfw-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-glfw/3.4.1/ef1f8efca5a60ba3512bc4982b88e446ecc43378/lwjgl-glfw-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-jemalloc/3.4.1/16b663092854fc6adfe0a941e61cae2bb2e437b6/lwjgl-jemalloc-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-jemalloc/3.4.1/581b4d542e841015ce3265eed0495e2cde15b1d0/lwjgl-jemalloc-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-jemalloc/3.4.1/dcd7e3f9a2ca386e8c5b8f508a8511d9dd63bab0/lwjgl-jemalloc-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-openal/3.4.1/8508bd60589de0539aa465b78fcf838efd07ae9a/lwjgl-openal-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-openal/3.4.1/a4dc57b7b0880d3fffb4d0b61649f45712bccc93/lwjgl-openal-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-openal/3.4.1/1c709a38c4a0e86aae96db7b8c78432307f2322a/lwjgl-openal-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-opengl/3.4.1/830412cab823c029cda6b9729f9d2ed36cf79959/lwjgl-opengl-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-opengl/3.4.1/ba18fc6012b88494ee893506934b92b01c4ef14b/lwjgl-opengl-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-opengl/3.4.1/35b5550058de4960525f465243bd01805f04fd8b/lwjgl-opengl-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-shaderc/3.4.1/5c02c88f0d879529014c78463b76f43fdecfd272/lwjgl-shaderc-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-shaderc/3.4.1/1d7bbdba70cf29c42978f6c0c1bdef945b922072/lwjgl-shaderc-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-shaderc/3.4.1/48aa2727e8616154d399d4dab0d8e8479741fa4f/lwjgl-shaderc-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-spvc/3.4.1/188553592e97b5ab2dba54a1b403ee80b48dad4c/lwjgl-spvc-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-spvc/3.4.1/2eeebd6d5bae966bfffda9747eba744cfe839ae1/lwjgl-spvc-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-spvc/3.4.1/a4f66638d28129eba0babd8fdc4385427a5ea83e/lwjgl-spvc-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-stb/3.4.1/f077c3dafc31924fbe8acb0b913f08977ba27f8e/lwjgl-stb-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-stb/3.4.1/fd1ea36b717b0832babca09324a6cfc43906e2aa/lwjgl-stb-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-stb/3.4.1/da554e04f819f09b0f3473bd931628ebf557965e/lwjgl-stb-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-tinyfd/3.4.1/562697d40dbd2ed0424bf24dcf65d51170f81adf/lwjgl-tinyfd-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-tinyfd/3.4.1/211ae9e8720e8f10f2ce85a118fa7bd5ee71584b/lwjgl-tinyfd-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-tinyfd/3.4.1/7bcde70f6164b2e72f84cac5257b7e9877b88510/lwjgl-tinyfd-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vma/3.4.1/2c54ce10154feb1ede4d23c5947438cdbfdcc003/lwjgl-vma-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vma/3.4.1/a130a9e4f96c83063f749e1dcc7065e0dffb3936/lwjgl-vma-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vma/3.4.1/9451dc1067716bc4125cdba65a7096e465f4d0e5/lwjgl-vma-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vulkan/3.4.1/d0601fdc38890755e5638048c14cc0f7b990964b/lwjgl-vulkan-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vulkan/3.4.1/140c7fd3e0fdbcc625c92be9328301c555035905/lwjgl-vulkan-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vulkan/3.4.1/2c933bf617cb8a174af26585efda4778b59e6d44/lwjgl-vulkan-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl/3.4.1/129e06a04f93992cb2a45172435b21fc4b60dd7d/lwjgl-3.4.1-unsafe.jar:/modules-2/files-2.1/org.lwjgl/lwjgl/3.4.1/b034fd9a67cb8646c01af7efcefcb93be835542b/lwjgl-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl/3.4.1/b4cbdef4818abd714ee66985344c0949fd1cd6d6/lwjgl-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.slf4j/slf4j-api/2.0.17/d9e58ac9c7779ba3bf8142aff6c830617a7fe60f/slf4j-api-2.0.17.jar:/modules-2/files-2.1/org.ow2.asm/asm-util/9.5/64b5a1fc8c1b15ed2efd6a063e976bc8d3dc5ffe/asm-util-9.5.jar:/modules-2/files-2.1/org.ow2.asm/asm-analysis/9.5/490bacc77de7cbc0be1a30bb3471072d705be4a4/asm-analysis-9.5.jar:/modules-2/files-2.1/org.ow2.asm/asm-tree/9.5/fd33c8b6373abaa675be407082fdfda35021254a/asm-tree-9.5.jar:/modules-2/files-2.1/org.ow2.asm/asm/9.5/dc6ea1875f4d64fbc85e1691c95b96a3d8569c90/asm-9.5.jar:/modules-2/files-2.1/net.neoforged/srgutils/1.0.10/abb471237b33b19f040ada00bfbad1ec45b949b6/srgutils-1.0.10.jar:/modules-2/files-2.1/io.netty/netty-transport-native-kqueue/4.2.15.Final/8ea0ef3eb716d821332e4b4926825a4b7c1a6d38/netty-transport-native-kqueue-4.2.15.Final-osx-aarch_64.jar:/modules-2/files-2.1/io.netty/netty-transport-native-kqueue/4.2.15.Final/4245380831515fb4eca18d32477a27fbb8f7b8f4/netty-transport-native-kqueue-4.2.15.Final-osx-x86_64.jar:/build/classes/java/main:/build/resources/main org.openjdk.jmh.Main .*net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix -p itemCount=100000 -p implementation=minecraft-suffix-array -f 1 -wi 1 -i 6 -w 200ms -r 200ms -rf json -rff /build/reports/jmh/adaptive-jmh-passes/pass-02-group-006.json -o /build/reports/jmh/adaptive-jmh-passes/pass-02-group-006.txt -foe true -p typedCharacterCount=1,2,3,5,8 -prof gc # JMH version: 1.37 # VM version: JDK 25, OpenJDK 64-Bit Server VM, 25+36-b176.4 # VM invoker: java # VM options: # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 1 iterations, 200 ms each # Measurement: 6 iterations, 200 ms each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix # Parameters: (implementation = minecraft-suffix-array, itemCount = 100000, typedCharacterCount = 1) # Run progress: 0.00% complete, ETA 00:00:07 # Fork: 1 of 1 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::objectFieldOffset has been called by org.openjdk.jmh.util.Utils (file:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar) WARNING: Please consider reporting this to the maintainers of class org.openjdk.jmh.util.Utils WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release # Warmup Iteration 1: 36.431 ms/op Iteration 1: 23.504 ms/op gc.alloc.rate: 610.437 MB/sec gc.alloc.rate.norm: 15063082.667 B/op gc.count: 1.000 counts gc.time: 15.000 ms Iteration 2: 30.729 ms/op gc.alloc.rate: 617.482 MB/sec gc.alloc.rate.norm: 19920408.000 B/op gc.count: ≈ 0 counts Iteration 3: 26.592 ms/op gc.alloc.rate: 496.901 MB/sec gc.alloc.rate.norm: 13865491.200 B/op gc.count: 1.000 counts gc.time: 61.000 ms Iteration 4: 32.072 ms/op gc.alloc.rate: 663.284 MB/sec gc.alloc.rate.norm: 22325157.714 B/op gc.count: 2.000 counts gc.time: 1.000 ms Iteration 5: 18.734 ms/op gc.alloc.rate: 623.554 MB/sec gc.alloc.rate.norm: 12261265.455 B/op gc.count: ≈ 0 counts Iteration 6: 44.937 ms/op gc.alloc.rate: 514.724 MB/sec gc.alloc.rate.norm: 24271155.200 B/op gc.count: 1.000 counts gc.time: 51.000 ms Result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix": 29.428 ±(99.9%) 25.291 ms/op [Average] (min, avg, max) = (18.734, 29.428, 44.937), stdev = 9.019 CI (99.9%): [4.137, 54.719] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate": 587.730 ±(99.9%) 185.892 MB/sec [Average] (min, avg, max) = (496.901, 587.730, 663.284), stdev = 66.291 CI (99.9%): [401.838, 773.622] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm": 17951093.373 ±(99.9%) 13758285.060 B/op [Average] (min, avg, max) = (12261265.455, 17951093.373, 24271155.200), stdev = 4906336.987 CI (99.9%): [4192808.313, 31709378.433] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count": 5.000 ±(99.9%) 0.001 counts [Sum] (min, avg, max) = (≈ 0, 0.833, 2.000), stdev = 0.753 CI (99.9%): [5.000, 5.000] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time": 128.000 ±(99.9%) 0.001 ms [Sum] (min, avg, max) = (≈ 0, 21.333, 61.000), stdev = 27.631 CI (99.9%): [128.000, 128.000] (assumes normal distribution) # JMH version: 1.37 # VM version: JDK 25, OpenJDK 64-Bit Server VM, 25+36-b176.4 # VM invoker: java # VM options: # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 1 iterations, 200 ms each # Measurement: 6 iterations, 200 ms each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix # Parameters: (implementation = minecraft-suffix-array, itemCount = 100000, typedCharacterCount = 2) # Run progress: 20.00% complete, ETA 00:00:23 # Fork: 1 of 1 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::objectFieldOffset has been called by org.openjdk.jmh.util.Utils (file:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar) WARNING: Please consider reporting this to the maintainers of class org.openjdk.jmh.util.Utils WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release # Warmup Iteration 1: 4.054 ms/op Iteration 1: 3.063 ms/op gc.alloc.rate: 636.686 MB/sec gc.alloc.rate.norm: 2050797.449 B/op gc.count: ≈ 0 counts Iteration 2: 2.925 ms/op gc.alloc.rate: 661.172 MB/sec gc.alloc.rate.norm: 2030453.859 B/op gc.count: ≈ 0 counts Iteration 3: 3.134 ms/op gc.alloc.rate: 676.704 MB/sec gc.alloc.rate.norm: 2225580.242 B/op gc.count: 1.000 counts gc.time: 1.000 ms Iteration 4: 3.200 ms/op gc.alloc.rate: 610.341 MB/sec gc.alloc.rate.norm: 2095937.939 B/op gc.count: ≈ 0 counts Iteration 5: 2.780 ms/op gc.alloc.rate: 679.761 MB/sec gc.alloc.rate.norm: 1991322.000 B/op gc.count: 1.000 counts gc.time: 2.000 ms Iteration 6: 3.224 ms/op gc.alloc.rate: 657.131 MB/sec gc.alloc.rate.norm: 2225579.879 B/op gc.count: ≈ 0 counts Result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix": 3.054 ±(99.9%) 0.483 ms/op [Average] (min, avg, max) = (2.780, 3.054, 3.224), stdev = 0.172 CI (99.9%): [2.571, 3.537] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate": 653.633 ±(99.9%) 73.611 MB/sec [Average] (min, avg, max) = (610.341, 653.633, 679.761), stdev = 26.251 CI (99.9%): [580.021, 727.244] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm": 2103278.562 ±(99.9%) 281987.919 B/op [Average] (min, avg, max) = (1991322.000, 2103278.562, 2225580.242), stdev = 100559.608 CI (99.9%): [1821290.642, 2385266.481] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count": 2.000 ±(99.9%) 0.001 counts [Sum] (min, avg, max) = (≈ 0, 0.333, 1.000), stdev = 0.516 CI (99.9%): [2.000, 2.000] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time": 3.000 ±(99.9%) 0.001 ms [Sum] (min, avg, max) = (≈ 0, 0.500, 2.000), stdev = 0.837 CI (99.9%): [3.000, 3.000] (assumes normal distribution) # JMH version: 1.37 # VM version: JDK 25, OpenJDK 64-Bit Server VM, 25+36-b176.4 # VM invoker: java # VM options: # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 1 iterations, 200 ms each # Measurement: 6 iterations, 200 ms each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix # Parameters: (implementation = minecraft-suffix-array, itemCount = 100000, typedCharacterCount = 3) # Run progress: 40.00% complete, ETA 00:00:18 # Fork: 1 of 1 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::objectFieldOffset has been called by org.openjdk.jmh.util.Utils (file:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar) WARNING: Please consider reporting this to the maintainers of class org.openjdk.jmh.util.Utils WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release # Warmup Iteration 1: 1.289 ms/op Iteration 1: 1.121 ms/op gc.alloc.rate: 855.294 MB/sec gc.alloc.rate.norm: 1006353.903 B/op gc.count: ≈ 0 counts Iteration 2: 1.028 ms/op gc.alloc.rate: 906.900 MB/sec gc.alloc.rate.norm: 978817.840 B/op gc.count: 1.000 counts gc.time: 2.000 ms Iteration 3: 1.230 ms/op gc.alloc.rate: 768.818 MB/sec gc.alloc.rate.norm: 992080.921 B/op gc.count: ≈ 0 counts Iteration 4: 1.021 ms/op gc.alloc.rate: 905.088 MB/sec gc.alloc.rate.norm: 974601.194 B/op gc.count: 1.000 counts gc.time: 1.000 ms Iteration 5: 0.965 ms/op gc.alloc.rate: 989.304 MB/sec gc.alloc.rate.norm: 1002380.868 B/op gc.count: ≈ 0 counts Iteration 6: 0.976 ms/op gc.alloc.rate: 965.290 MB/sec gc.alloc.rate.norm: 988795.285 B/op gc.count: 1.000 counts gc.time: ≈ 0 ms Result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix": 1.057 ±(99.9%) 0.283 ms/op [Average] (min, avg, max) = (0.965, 1.057, 1.230), stdev = 0.101 CI (99.9%): [0.774, 1.340] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate": 898.449 ±(99.9%) 222.591 MB/sec [Average] (min, avg, max) = (768.818, 898.449, 989.304), stdev = 79.378 CI (99.9%): [675.858, 1121.040] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm": 990505.002 ±(99.9%) 35184.473 B/op [Average] (min, avg, max) = (974601.194, 990505.002, 1006353.903), stdev = 12547.122 CI (99.9%): [955320.529, 1025689.475] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count": 3.000 ±(99.9%) 0.001 counts [Sum] (min, avg, max) = (≈ 0, 0.500, 1.000), stdev = 0.548 CI (99.9%): [3.000, 3.000] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time": 3.000 ±(99.9%) 0.001 ms [Sum] (min, avg, max) = (≈ 0, 0.500, 2.000), stdev = 0.837 CI (99.9%): [3.000, 3.000] (assumes normal distribution) # JMH version: 1.37 # VM version: JDK 25, OpenJDK 64-Bit Server VM, 25+36-b176.4 # VM invoker: java # VM options: # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 1 iterations, 200 ms each # Measurement: 6 iterations, 200 ms each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix # Parameters: (implementation = minecraft-suffix-array, itemCount = 100000, typedCharacterCount = 5) # Run progress: 60.00% complete, ETA 00:00:11 # Fork: 1 of 1 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::objectFieldOffset has been called by org.openjdk.jmh.util.Utils (file:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar) WARNING: Please consider reporting this to the maintainers of class org.openjdk.jmh.util.Utils WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release # Warmup Iteration 1: 0.627 ms/op Iteration 1: 0.499 ms/op gc.alloc.rate: 1104.886 MB/sec gc.alloc.rate.norm: 578497.534 B/op gc.count: 1.000 counts gc.time: 1.000 ms Iteration 2: 0.453 ms/op gc.alloc.rate: 1206.559 MB/sec gc.alloc.rate.norm: 573879.258 B/op gc.count: ≈ 0 counts Iteration 3: 0.475 ms/op gc.alloc.rate: 1171.064 MB/sec gc.alloc.rate.norm: 583637.991 B/op gc.count: 1.000 counts gc.time: 1.000 ms Iteration 4: 0.513 ms/op gc.alloc.rate: 1073.828 MB/sec gc.alloc.rate.norm: 578646.860 B/op gc.count: ≈ 0 counts Iteration 5: 0.489 ms/op gc.alloc.rate: 1116.191 MB/sec gc.alloc.rate.norm: 578792.324 B/op gc.count: 1.000 counts gc.time: 1.000 ms Iteration 6: 0.468 ms/op gc.alloc.rate: 1167.252 MB/sec gc.alloc.rate.norm: 572813.813 B/op gc.count: ≈ 0 counts Result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix": 0.483 ±(99.9%) 0.061 ms/op [Average] (min, avg, max) = (0.453, 0.483, 0.513), stdev = 0.022 CI (99.9%): [0.421, 0.544] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate": 1139.963 ±(99.9%) 139.175 MB/sec [Average] (min, avg, max) = (1073.828, 1139.963, 1206.559), stdev = 49.631 CI (99.9%): [1000.788, 1279.139] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm": 577711.297 ±(99.9%) 10965.599 B/op [Average] (min, avg, max) = (572813.813, 577711.297, 583637.991), stdev = 3910.438 CI (99.9%): [566745.698, 588676.895] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count": 3.000 ±(99.9%) 0.001 counts [Sum] (min, avg, max) = (≈ 0, 0.500, 1.000), stdev = 0.548 CI (99.9%): [3.000, 3.000] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time": 3.000 ±(99.9%) 0.001 ms [Sum] (min, avg, max) = (≈ 0, 0.500, 1.000), stdev = 0.548 CI (99.9%): [3.000, 3.000] (assumes normal distribution) # JMH version: 1.37 # VM version: JDK 25, OpenJDK 64-Bit Server VM, 25+36-b176.4 # VM invoker: java # VM options: # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 1 iterations, 200 ms each # Measurement: 6 iterations, 200 ms each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix # Parameters: (implementation = minecraft-suffix-array, itemCount = 100000, typedCharacterCount = 8) # Run progress: 80.00% complete, ETA 00:00:05 # Fork: 1 of 1 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::objectFieldOffset has been called by org.openjdk.jmh.util.Utils (file:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar) WARNING: Please consider reporting this to the maintainers of class org.openjdk.jmh.util.Utils WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release # Warmup Iteration 1: 0.238 ms/op Iteration 1: 0.178 ms/op gc.alloc.rate: 1256.672 MB/sec gc.alloc.rate.norm: 234600.268 B/op gc.count: 1.000 counts gc.time: 1.000 ms Iteration 2: 0.186 ms/op gc.alloc.rate: 1209.674 MB/sec gc.alloc.rate.norm: 236137.819 B/op gc.count: ≈ 0 counts Iteration 3: 0.165 ms/op gc.alloc.rate: 1368.596 MB/sec gc.alloc.rate.norm: 237549.977 B/op gc.count: 1.000 counts gc.time: 1.000 ms Iteration 4: 0.165 ms/op gc.alloc.rate: 1354.629 MB/sec gc.alloc.rate.norm: 234738.369 B/op gc.count: ≈ 0 counts Iteration 5: 0.164 ms/op gc.alloc.rate: 1378.245 MB/sec gc.alloc.rate.norm: 237539.112 B/op gc.count: 1.000 counts gc.time: 1.000 ms Iteration 6: 0.180 ms/op gc.alloc.rate: 1246.359 MB/sec gc.alloc.rate.norm: 235531.961 B/op gc.count: ≈ 0 counts Result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix": 0.173 ±(99.9%) 0.026 ms/op [Average] (min, avg, max) = (0.164, 0.173, 0.186), stdev = 0.009 CI (99.9%): [0.147, 0.199] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate": 1302.363 ±(99.9%) 204.886 MB/sec [Average] (min, avg, max) = (1209.674, 1302.363, 1378.245), stdev = 73.064 CI (99.9%): [1097.477, 1507.249] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm": 236016.251 ±(99.9%) 3668.821 B/op [Average] (min, avg, max) = (234600.268, 236016.251, 237549.977), stdev = 1308.337 CI (99.9%): [232347.430, 239685.072] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count": 3.000 ±(99.9%) 0.001 counts [Sum] (min, avg, max) = (≈ 0, 0.500, 1.000), stdev = 0.548 CI (99.9%): [3.000, 3.000] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time": 3.000 ±(99.9%) 0.001 ms [Sum] (min, avg, max) = (≈ 0, 0.500, 1.000), stdev = 0.548 CI (99.9%): [3.000, 3.000] (assumes normal distribution) # Run complete. Total time: 00:00:29 REMEMBER: The numbers below are just data. To gain reusable insights, you need to follow up on why the numbers are the way they are. Use profilers (see -prof, -lprof), design factorial experiments, perform baseline and negative tests that provide experimental control, make sure the benchmarking environment is safe on JVM/OS/HW level, ask for reviews from the domain experts. Do not assume the numbers tell you what you want them to tell. NOTE: Current JVM experimentally supports Compiler Blackholes, and they are in use. Please exercise extra caution when trusting the results, look into the generated code to check the benchmark still works, and factor in a small probability of new VM bugs. Additionally, while comparisons between different JVMs are already problematic, the performance difference caused by different Blackhole modes can be very significant. Please make sure you use the consistent Blackhole mode for comparisons. Benchmark (implementation) (itemCount) (typedCharacterCount) Mode Cnt Score Error Units LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix minecraft-suffix-array 100000 1 avgt 6 29.428 ± 25.291 ms/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate minecraft-suffix-array 100000 1 avgt 6 587.730 ± 185.892 MB/sec LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm minecraft-suffix-array 100000 1 avgt 6 17951093.373 ± 13758285.060 B/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count minecraft-suffix-array 100000 1 avgt 6 5.000 counts LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time minecraft-suffix-array 100000 1 avgt 6 128.000 ms LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix minecraft-suffix-array 100000 2 avgt 6 3.054 ± 0.483 ms/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate minecraft-suffix-array 100000 2 avgt 6 653.633 ± 73.611 MB/sec LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm minecraft-suffix-array 100000 2 avgt 6 2103278.562 ± 281987.919 B/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count minecraft-suffix-array 100000 2 avgt 6 2.000 counts LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time minecraft-suffix-array 100000 2 avgt 6 3.000 ms LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix minecraft-suffix-array 100000 3 avgt 6 1.057 ± 0.283 ms/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate minecraft-suffix-array 100000 3 avgt 6 898.449 ± 222.591 MB/sec LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm minecraft-suffix-array 100000 3 avgt 6 990505.002 ± 35184.473 B/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count minecraft-suffix-array 100000 3 avgt 6 3.000 counts LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time minecraft-suffix-array 100000 3 avgt 6 3.000 ms LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix minecraft-suffix-array 100000 5 avgt 6 0.483 ± 0.061 ms/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate minecraft-suffix-array 100000 5 avgt 6 1139.963 ± 139.175 MB/sec LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm minecraft-suffix-array 100000 5 avgt 6 577711.297 ± 10965.599 B/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count minecraft-suffix-array 100000 5 avgt 6 3.000 counts LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time minecraft-suffix-array 100000 5 avgt 6 3.000 ms LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix minecraft-suffix-array 100000 8 avgt 6 0.173 ± 0.026 ms/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate minecraft-suffix-array 100000 8 avgt 6 1302.363 ± 204.886 MB/sec LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm minecraft-suffix-array 100000 8 avgt 6 236016.251 ± 3668.821 B/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count minecraft-suffix-array 100000 8 avgt 6 3.000 counts LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time minecraft-suffix-array 100000 8 avgt 6 3.000 ms Benchmark result is saved to /build/reports/jmh/adaptive-jmh-passes/pass-02-group-006.json # Adaptive pass 3, group 1 # Command: java -cp /build/classes/java/benchmark:/build/resources/benchmark:/build/moddev/artifacts/vanilla-26.2-2.jar:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar:/modules-2/files-2.1/com.abahgat/suffixtree/2.0.0/ffe2c29796add2624d2e0b9f33e72421eb5c5ea5/suffixtree-2.0.0.jar:/modules-2/files-2.1/net.mezzdev/suffixtree/1.3.0/1a1b87af70a1631ff6d6c9d49c63564aadecb176/suffixtree-1.3.0.jar:/modules-2/files-2.1/net.mezzdev/baked-substring-index/0.1.0/4f9fbd9eb54fdb1b8ec40a83297f4e8f4479eb7c/baked-substring-index-0.1.0.jar:/modules-2/files-2.1/net.mezzdev/baked-suffix-array-index/0.1.0/cd5e5ffbcee030d149e7a5a70e151a06158bd643/baked-suffix-array-index-0.1.0.jar:/modules-2/files-2.1/net.neoforged/mergetool/2.0.7/793b18456e92c4a7f66d9b5d8bf7a9c1c7a20b20/mergetool-2.0.7-api.jar:/modules-2/files-2.1/net.sf.jopt-simple/jopt-simple/5.0.4/4fdac2fbe92dfad86aa6e9301736f6b4342a3f5c/jopt-simple-5.0.4.jar:/modules-2/files-2.1/org.apache.commons/commons-math3/3.6.1/e4ba98f1d4b3c80ec46392f25e094a6a2e58fcbf/commons-math3-3.6.1.jar:/modules-2/files-2.1/com.google.code.findbugs/jsr305/3.0.2/25ea2e8b0c338a877313bd4672d3fe056ea78f0d/jsr305-3.0.2.jar:/modules-2/files-2.1/org.jspecify/jspecify/1.0.0/7425a601c1c7ec76645a78d22b8c6a627edee507/jspecify-1.0.0.jar:/modules-2/files-2.1/org.jetbrains/annotations/26.0.2-1/c7ce3cdeda3d18909368dfe5977332dfad326c6d/annotations-26.0.2-1.jar:/modules-2/files-2.1/ca.weblite/java-objc-bridge/1.1/1227f9e0666314f9de41477e3ec277e542ed7f7b/java-objc-bridge-1.1.jar:/modules-2/files-2.1/at.yawk.lz4/lz4-java/1.10.1/f541d7f910fe3d76f38f799c507c48cc81b12ecb/lz4-java-1.10.1.jar:/modules-2/files-2.1/com.azure/azure-json/1.4.0/fcc1d354dbc3e0300e5276b1bf124d0247799cd8/azure-json-1.4.0.jar:/modules-2/files-2.1/com.github.oshi/oshi-core/6.9.0/3224870731860cfcd7744581a05b559e94291e7/oshi-core-6.9.0.jar:/modules-2/files-2.1/com.google.code.gson/gson/2.14.0/efc0e34ede4e3204eaefb84a00e55e8c86634382/gson-2.14.0.jar:/modules-2/files-2.1/com.google.guava/failureaccess/1.0.3/aeaffd00d57023a2c947393ed251f0354f0985fc/failureaccess-1.0.3.jar:/modules-2/files-2.1/com.google.guava/guava/33.6.0-jre/c376b13067cc99a5774403530953f7b05a91e218/guava-33.6.0-jre.jar:/modules-2/files-2.1/com.ibm.icu/icu4j/78.3/6a851a53bb1f25689fc418dcc8935b0d93580adf/icu4j-78.3.jar:/modules-2/files-2.1/com.microsoft.azure/msal4j/1.24.1/c233f2d047b9755f7041adf21a858c680e4c9242/msal4j-1.24.1.jar:/modules-2/files-2.1/com.mojang/authlib/9.0.75/d61056a234d5e4b272e09d59b0713f80d6c0b6af/authlib-9.0.75.jar:/modules-2/files-2.1/com.mojang/blocklist/1.0.10/5c685c5ffa94c4cd39496c7184c1d122e515ecef/blocklist-1.0.10.jar:/modules-2/files-2.1/com.mojang/brigadier/1.3.10/d15b53a14cf20fdcaa98f731af5dda654452c010/brigadier-1.3.10.jar:/modules-2/files-2.1/com.mojang/datafixerupper/10.0.21/b6b2ae770c02e0c1eb90f9985b151e9085a38d0b/datafixerupper-10.0.21.jar:/modules-2/files-2.1/com.mojang/jtracy/1.0.37/a3fb649b2e2b2288d2978f0b0bc3d83f62809d1e/jtracy-1.0.37.jar:/modules-2/files-2.1/com.mojang/jtracy/1.0.37/a99fcb63b72fb623534d0ceb71bda4bed9b55b4c/jtracy-1.0.37-natives-macos.jar:/modules-2/files-2.1/com.mojang/jtracy/1.0.37/c8e971da5150aa33283c5bf4097154c0da554fb9/jtracy-1.0.37-natives-macos-arm64.jar:/modules-2/files-2.1/com.mojang/logging/1.7.12/351cea64a5233361327d8d54c44277041beed97f/logging-1.7.12.jar:/modules-2/files-2.1/com.mojang/patchy/2.2.10/da05971b07cbb379d002cf7eaec6a2048211fefc/patchy-2.2.10.jar:/modules-2/files-2.1/com.mojang/text2speech/1.19.12/2e517a75c79d34d32de2b5d68422150836c2133e/text2speech-1.19.12.jar:/modules-2/files-2.1/commons-codec/commons-codec/1.22.0/6b3eb4beb7058c2a638f5f17bcb388649fd339dd/commons-codec-1.22.0.jar:/modules-2/files-2.1/commons-io/commons-io/2.20.0/36f3474daec2849c149e877614e7f979b2082cd2/commons-io-2.20.0.jar:/modules-2/files-2.1/io.netty/netty-buffer/4.2.15.Final/2beb620803bf871cda2dd5d46b8f831e8015dd34/netty-buffer-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-codec-base/4.2.15.Final/e97149fdd5fb04858efa90e314651c8d700dc68b/netty-codec-base-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-codec-compression/4.2.15.Final/89fc4a20b7ae6af974304b1695405e62c4f9b16d/netty-codec-compression-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-codec-http/4.2.15.Final/e611826aa054371bb9a17f27bdb05755a4cac5f0/netty-codec-http-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-common/4.2.15.Final/7222492c1af9c2d4d78d521eea340a619e242fda/netty-common-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-handler/4.2.15.Final/d5344afd1148e3b9927a74be019605ebb0937a93/netty-handler-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-resolver/4.2.15.Final/b961a16d379b508b473e064ba06842bba280f4e3/netty-resolver-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-transport-classes-epoll/4.2.15.Final/44bafba9c9993800e955b365bba4981326f3f3b1/netty-transport-classes-epoll-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-transport-classes-kqueue/4.2.15.Final/f248656bb907607c5a41c7b61fd918a97db79250/netty-transport-classes-kqueue-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-transport-native-unix-common/4.2.15.Final/efb6943b4de9e0226a5ac35330f232605424af02/netty-transport-native-unix-common-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-transport/4.2.15.Final/a000c3a6196ee40207b73ac619dcb339409dd62f/netty-transport-4.2.15.Final.jar:/modules-2/files-2.1/it.unimi.dsi/fastutil/8.5.18/a6cff377eecc19c2037bf31568a6d7106b50ba1f/fastutil-8.5.18.jar:/modules-2/files-2.1/net.java.dev.jna/jna-platform/5.17.0/a4934c44d25a9d8c2ddf4203affd20330cb3426f/jna-platform-5.17.0.jar:/modules-2/files-2.1/net.java.dev.jna/jna/5.17.0/33d12735bef894440780fce64f9758d420c7bae2/jna-5.17.0.jar:/modules-2/files-2.1/org.apache.commons/commons-compress/1.28.0/e482f2c7a88dac3c497e96aa420b6a769f59c8d7/commons-compress-1.28.0.jar:/modules-2/files-2.1/org.apache.commons/commons-lang3/3.20.0/65897b3e5731220962e659e001904af3c3cbeba9/commons-lang3-3.20.0.jar:/modules-2/files-2.1/org.apache.logging.log4j/log4j-api/2.26.0/ad52af0ecf054a7e3f275a2e180ee06d9c490951/log4j-api-2.26.0.jar:/modules-2/files-2.1/org.apache.logging.log4j/log4j-core/2.26.0/d267ca60b27ddb075e0b4e75e7875859717bf85f/log4j-core-2.26.0.jar:/modules-2/files-2.1/org.apache.logging.log4j/log4j-slf4j2-impl/2.26.0/668c0f0e813d83f00a7182533aa658ec7e7a0a0d/log4j-slf4j2-impl-2.26.0.jar:/modules-2/files-2.1/org.jcraft/jorbis/0.0.17/8872d22b293e8f5d7d56ff92be966e6dc28ebdc6/jorbis-0.0.17.jar:/modules-2/files-2.1/org.joml/joml/1.10.8/fc0a71dad90a2cf41d82a76156a0e700af8e4f8d/joml-1.10.8.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-freetype/3.4.1/caa75a37e857efc9b0686e434d708d6420c5b6ea/lwjgl-freetype-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-freetype/3.4.1/61cb2d85e1838bca1a0b664f54e818bc68deb2ef/lwjgl-freetype-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-freetype/3.4.1/cce5a86b4a7d17817fe8ea0296302a4353acf2d5/lwjgl-freetype-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-glfw/3.4.1/a782b1ddd175c9107bf300fd92920579ea65e2a4/lwjgl-glfw-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-glfw/3.4.1/3c8538942f58377d59cd7be2dc164ba71a53868a/lwjgl-glfw-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-glfw/3.4.1/ef1f8efca5a60ba3512bc4982b88e446ecc43378/lwjgl-glfw-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-jemalloc/3.4.1/16b663092854fc6adfe0a941e61cae2bb2e437b6/lwjgl-jemalloc-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-jemalloc/3.4.1/581b4d542e841015ce3265eed0495e2cde15b1d0/lwjgl-jemalloc-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-jemalloc/3.4.1/dcd7e3f9a2ca386e8c5b8f508a8511d9dd63bab0/lwjgl-jemalloc-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-openal/3.4.1/8508bd60589de0539aa465b78fcf838efd07ae9a/lwjgl-openal-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-openal/3.4.1/a4dc57b7b0880d3fffb4d0b61649f45712bccc93/lwjgl-openal-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-openal/3.4.1/1c709a38c4a0e86aae96db7b8c78432307f2322a/lwjgl-openal-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-opengl/3.4.1/830412cab823c029cda6b9729f9d2ed36cf79959/lwjgl-opengl-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-opengl/3.4.1/ba18fc6012b88494ee893506934b92b01c4ef14b/lwjgl-opengl-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-opengl/3.4.1/35b5550058de4960525f465243bd01805f04fd8b/lwjgl-opengl-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-shaderc/3.4.1/5c02c88f0d879529014c78463b76f43fdecfd272/lwjgl-shaderc-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-shaderc/3.4.1/1d7bbdba70cf29c42978f6c0c1bdef945b922072/lwjgl-shaderc-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-shaderc/3.4.1/48aa2727e8616154d399d4dab0d8e8479741fa4f/lwjgl-shaderc-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-spvc/3.4.1/188553592e97b5ab2dba54a1b403ee80b48dad4c/lwjgl-spvc-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-spvc/3.4.1/2eeebd6d5bae966bfffda9747eba744cfe839ae1/lwjgl-spvc-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-spvc/3.4.1/a4f66638d28129eba0babd8fdc4385427a5ea83e/lwjgl-spvc-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-stb/3.4.1/f077c3dafc31924fbe8acb0b913f08977ba27f8e/lwjgl-stb-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-stb/3.4.1/fd1ea36b717b0832babca09324a6cfc43906e2aa/lwjgl-stb-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-stb/3.4.1/da554e04f819f09b0f3473bd931628ebf557965e/lwjgl-stb-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-tinyfd/3.4.1/562697d40dbd2ed0424bf24dcf65d51170f81adf/lwjgl-tinyfd-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-tinyfd/3.4.1/211ae9e8720e8f10f2ce85a118fa7bd5ee71584b/lwjgl-tinyfd-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-tinyfd/3.4.1/7bcde70f6164b2e72f84cac5257b7e9877b88510/lwjgl-tinyfd-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vma/3.4.1/2c54ce10154feb1ede4d23c5947438cdbfdcc003/lwjgl-vma-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vma/3.4.1/a130a9e4f96c83063f749e1dcc7065e0dffb3936/lwjgl-vma-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vma/3.4.1/9451dc1067716bc4125cdba65a7096e465f4d0e5/lwjgl-vma-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vulkan/3.4.1/d0601fdc38890755e5638048c14cc0f7b990964b/lwjgl-vulkan-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vulkan/3.4.1/140c7fd3e0fdbcc625c92be9328301c555035905/lwjgl-vulkan-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vulkan/3.4.1/2c933bf617cb8a174af26585efda4778b59e6d44/lwjgl-vulkan-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl/3.4.1/129e06a04f93992cb2a45172435b21fc4b60dd7d/lwjgl-3.4.1-unsafe.jar:/modules-2/files-2.1/org.lwjgl/lwjgl/3.4.1/b034fd9a67cb8646c01af7efcefcb93be835542b/lwjgl-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl/3.4.1/b4cbdef4818abd714ee66985344c0949fd1cd6d6/lwjgl-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.slf4j/slf4j-api/2.0.17/d9e58ac9c7779ba3bf8142aff6c830617a7fe60f/slf4j-api-2.0.17.jar:/modules-2/files-2.1/org.ow2.asm/asm-util/9.5/64b5a1fc8c1b15ed2efd6a063e976bc8d3dc5ffe/asm-util-9.5.jar:/modules-2/files-2.1/org.ow2.asm/asm-analysis/9.5/490bacc77de7cbc0be1a30bb3471072d705be4a4/asm-analysis-9.5.jar:/modules-2/files-2.1/org.ow2.asm/asm-tree/9.5/fd33c8b6373abaa675be407082fdfda35021254a/asm-tree-9.5.jar:/modules-2/files-2.1/org.ow2.asm/asm/9.5/dc6ea1875f4d64fbc85e1691c95b96a3d8569c90/asm-9.5.jar:/modules-2/files-2.1/net.neoforged/srgutils/1.0.10/abb471237b33b19f040ada00bfbad1ec45b949b6/srgutils-1.0.10.jar:/modules-2/files-2.1/io.netty/netty-transport-native-kqueue/4.2.15.Final/8ea0ef3eb716d821332e4b4926825a4b7c1a6d38/netty-transport-native-kqueue-4.2.15.Final-osx-aarch_64.jar:/modules-2/files-2.1/io.netty/netty-transport-native-kqueue/4.2.15.Final/4245380831515fb4eca18d32477a27fbb8f7b8f4/netty-transport-native-kqueue-4.2.15.Final-osx-x86_64.jar:/build/classes/java/main:/build/resources/main org.openjdk.jmh.Main .*net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix -p itemCount=100000 -p implementation=generalized-suffix-tree -f 1 -wi 2 -i 8 -w 500ms -r 500ms -rf json -rff /build/reports/jmh/adaptive-jmh-passes/pass-03-group-001.json -o /build/reports/jmh/adaptive-jmh-passes/pass-03-group-001.txt -foe true -p typedCharacterCount=4,6,10,11 -prof gc # JMH version: 1.37 # VM version: JDK 25, OpenJDK 64-Bit Server VM, 25+36-b176.4 # VM invoker: java # VM options: # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 2 iterations, 500 ms each # Measurement: 8 iterations, 500 ms each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix # Parameters: (implementation = generalized-suffix-tree, itemCount = 100000, typedCharacterCount = 4) # Run progress: 0.00% complete, ETA 00:00:20 # Fork: 1 of 1 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::objectFieldOffset has been called by org.openjdk.jmh.util.Utils (file:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar) WARNING: Please consider reporting this to the maintainers of class org.openjdk.jmh.util.Utils WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release # Warmup Iteration 1: 0.329 ms/op # Warmup Iteration 2: 0.210 ms/op Iteration 1: 0.173 ms/op gc.alloc.rate: 846.789 MB/sec gc.alloc.rate.norm: 153519.942 B/op gc.count: 1.000 counts gc.time: 15.000 ms Iteration 2: 0.167 ms/op gc.alloc.rate: 875.580 MB/sec gc.alloc.rate.norm: 153343.575 B/op gc.count: 1.000 counts gc.time: 3.000 ms Iteration 3: 0.168 ms/op gc.alloc.rate: 872.900 MB/sec gc.alloc.rate.norm: 153591.032 B/op gc.count: 1.000 counts gc.time: 2.000 ms Iteration 4: 0.168 ms/op gc.alloc.rate: 871.356 MB/sec gc.alloc.rate.norm: 153438.177 B/op gc.count: 1.000 counts gc.time: 5.000 ms Iteration 5: 0.170 ms/op gc.alloc.rate: 862.852 MB/sec gc.alloc.rate.norm: 153528.167 B/op gc.count: 1.000 counts gc.time: 3.000 ms Iteration 6: 0.184 ms/op gc.alloc.rate: 793.120 MB/sec gc.alloc.rate.norm: 153433.672 B/op gc.count: ≈ 0 counts Iteration 7: 0.173 ms/op gc.alloc.rate: 843.739 MB/sec gc.alloc.rate.norm: 153499.194 B/op gc.count: 1.000 counts gc.time: 3.000 ms Iteration 8: 0.187 ms/op gc.alloc.rate: 781.307 MB/sec gc.alloc.rate.norm: 153394.366 B/op gc.count: 1.000 counts gc.time: 4.000 ms Result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix": 0.174 ±(99.9%) 0.015 ms/op [Average] (min, avg, max) = (0.167, 0.174, 0.187), stdev = 0.008 CI (99.9%): [0.159, 0.189] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate": 843.455 ±(99.9%) 70.291 MB/sec [Average] (min, avg, max) = (781.307, 843.455, 875.580), stdev = 36.764 CI (99.9%): [773.164, 913.746] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm": 153468.516 ±(99.9%) 153.974 B/op [Average] (min, avg, max) = (153343.575, 153468.516, 153591.032), stdev = 80.531 CI (99.9%): [153314.542, 153622.490] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count": 7.000 ±(99.9%) 0.001 counts [Sum] (min, avg, max) = (≈ 0, 0.875, 1.000), stdev = 0.354 CI (99.9%): [7.000, 7.000] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time": 35.000 ±(99.9%) 0.001 ms [Sum] (min, avg, max) = (≈ 0, 4.375, 15.000), stdev = 4.534 CI (99.9%): [35.000, 35.000] (assumes normal distribution) # JMH version: 1.37 # VM version: JDK 25, OpenJDK 64-Bit Server VM, 25+36-b176.4 # VM invoker: java # VM options: # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 2 iterations, 500 ms each # Measurement: 8 iterations, 500 ms each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix # Parameters: (implementation = generalized-suffix-tree, itemCount = 100000, typedCharacterCount = 6) # Run progress: 25.00% complete, ETA 00:00:18 # Fork: 1 of 1 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::objectFieldOffset has been called by org.openjdk.jmh.util.Utils (file:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar) WARNING: Please consider reporting this to the maintainers of class org.openjdk.jmh.util.Utils WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release # Warmup Iteration 1: 0.171 ms/op # Warmup Iteration 2: 0.133 ms/op Iteration 1: 0.135 ms/op gc.alloc.rate: 889.038 MB/sec gc.alloc.rate.norm: 126279.144 B/op gc.count: 1.000 counts gc.time: 1.000 ms Iteration 2: 0.139 ms/op gc.alloc.rate: 866.795 MB/sec gc.alloc.rate.norm: 126269.486 B/op gc.count: 1.000 counts gc.time: ≈ 0 ms Iteration 3: 0.135 ms/op gc.alloc.rate: 890.033 MB/sec gc.alloc.rate.norm: 126269.953 B/op gc.count: 1.000 counts gc.time: 1.000 ms Iteration 4: 0.141 ms/op gc.alloc.rate: 852.553 MB/sec gc.alloc.rate.norm: 126296.892 B/op gc.count: 1.000 counts gc.time: 1.000 ms Iteration 5: 0.131 ms/op gc.alloc.rate: 918.185 MB/sec gc.alloc.rate.norm: 126276.102 B/op gc.count: 1.000 counts gc.time: 1.000 ms Iteration 6: 0.139 ms/op gc.alloc.rate: 869.126 MB/sec gc.alloc.rate.norm: 126272.910 B/op gc.count: 1.000 counts gc.time: ≈ 0 ms Iteration 7: 0.143 ms/op gc.alloc.rate: 841.488 MB/sec gc.alloc.rate.norm: 126245.173 B/op gc.count: ≈ 0 counts Iteration 8: 0.135 ms/op gc.alloc.rate: 892.593 MB/sec gc.alloc.rate.norm: 126339.458 B/op gc.count: 1.000 counts gc.time: 1.000 ms Result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix": 0.137 ±(99.9%) 0.007 ms/op [Average] (min, avg, max) = (0.131, 0.137, 0.143), stdev = 0.004 CI (99.9%): [0.130, 0.145] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate": 877.476 ±(99.9%) 47.262 MB/sec [Average] (min, avg, max) = (841.488, 877.476, 918.185), stdev = 24.719 CI (99.9%): [830.215, 924.738] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm": 126281.140 ±(99.9%) 52.614 B/op [Average] (min, avg, max) = (126245.173, 126281.140, 126339.458), stdev = 27.518 CI (99.9%): [126228.526, 126333.754] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count": 7.000 ±(99.9%) 0.001 counts [Sum] (min, avg, max) = (≈ 0, 0.875, 1.000), stdev = 0.354 CI (99.9%): [7.000, 7.000] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time": 5.000 ±(99.9%) 0.001 ms [Sum] (min, avg, max) = (≈ 0, 0.625, 1.000), stdev = 0.518 CI (99.9%): [5.000, 5.000] (assumes normal distribution) # JMH version: 1.37 # VM version: JDK 25, OpenJDK 64-Bit Server VM, 25+36-b176.4 # VM invoker: java # VM options: # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 2 iterations, 500 ms each # Measurement: 8 iterations, 500 ms each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix # Parameters: (implementation = generalized-suffix-tree, itemCount = 100000, typedCharacterCount = 10) # Run progress: 50.00% complete, ETA 00:00:12 # Fork: 1 of 1 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::objectFieldOffset has been called by org.openjdk.jmh.util.Utils (file:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar) WARNING: Please consider reporting this to the maintainers of class org.openjdk.jmh.util.Utils WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release # Warmup Iteration 1: 0.018 ms/op # Warmup Iteration 2: 0.018 ms/op Iteration 1: 0.017 ms/op gc.alloc.rate: 1135.274 MB/sec gc.alloc.rate.norm: 20494.362 B/op gc.count: 2.000 counts gc.time: 5.000 ms Iteration 2: 0.018 ms/op gc.alloc.rate: 1107.374 MB/sec gc.alloc.rate.norm: 20489.957 B/op gc.count: 1.000 counts gc.time: 2.000 ms Iteration 3: 0.017 ms/op gc.alloc.rate: 1144.081 MB/sec gc.alloc.rate.norm: 20479.644 B/op gc.count: 1.000 counts gc.time: 2.000 ms Iteration 4: 0.018 ms/op gc.alloc.rate: 1099.886 MB/sec gc.alloc.rate.norm: 20474.742 B/op gc.count: 1.000 counts gc.time: 3.000 ms Iteration 5: 0.017 ms/op gc.alloc.rate: 1123.647 MB/sec gc.alloc.rate.norm: 20474.742 B/op gc.count: 1.000 counts gc.time: 3.000 ms Iteration 6: 0.017 ms/op gc.alloc.rate: 1139.608 MB/sec gc.alloc.rate.norm: 20474.738 B/op gc.count: 1.000 counts gc.time: 2.000 ms Iteration 7: 0.019 ms/op gc.alloc.rate: 1053.432 MB/sec gc.alloc.rate.norm: 20474.757 B/op gc.count: 1.000 counts gc.time: 2.000 ms Iteration 8: 0.017 ms/op gc.alloc.rate: 1128.666 MB/sec gc.alloc.rate.norm: 20474.741 B/op gc.count: 1.000 counts gc.time: 3.000 ms Result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix": 0.017 ±(99.9%) 0.001 ms/op [Average] (min, avg, max) = (0.017, 0.017, 0.019), stdev = 0.001 CI (99.9%): [0.017, 0.018] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate": 1116.496 ±(99.9%) 56.825 MB/sec [Average] (min, avg, max) = (1053.432, 1116.496, 1144.081), stdev = 29.720 CI (99.9%): [1059.671, 1173.321] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm": 20479.710 ±(99.9%) 15.210 B/op [Average] (min, avg, max) = (20474.738, 20479.710, 20494.362), stdev = 7.955 CI (99.9%): [20464.500, 20494.921] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count": 9.000 ±(99.9%) 0.001 counts [Sum] (min, avg, max) = (1.000, 1.125, 2.000), stdev = 0.354 CI (99.9%): [9.000, 9.000] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time": 22.000 ±(99.9%) 0.001 ms [Sum] (min, avg, max) = (2.000, 2.750, 5.000), stdev = 1.035 CI (99.9%): [22.000, 22.000] (assumes normal distribution) # JMH version: 1.37 # VM version: JDK 25, OpenJDK 64-Bit Server VM, 25+36-b176.4 # VM invoker: java # VM options: # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 2 iterations, 500 ms each # Measurement: 8 iterations, 500 ms each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix # Parameters: (implementation = generalized-suffix-tree, itemCount = 100000, typedCharacterCount = 11) # Run progress: 75.00% complete, ETA 00:00:06 # Fork: 1 of 1 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::objectFieldOffset has been called by org.openjdk.jmh.util.Utils (file:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar) WARNING: Please consider reporting this to the maintainers of class org.openjdk.jmh.util.Utils WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release # Warmup Iteration 1: 0.016 ms/op # Warmup Iteration 2: 0.017 ms/op Iteration 1: 0.017 ms/op gc.alloc.rate: 994.266 MB/sec gc.alloc.rate.norm: 17762.531 B/op gc.count: 1.000 counts gc.time: 3.000 ms Iteration 2: 0.016 ms/op gc.alloc.rate: 1069.434 MB/sec gc.alloc.rate.norm: 17753.778 B/op gc.count: 1.000 counts gc.time: 3.000 ms Iteration 3: 0.015 ms/op gc.alloc.rate: 1111.312 MB/sec gc.alloc.rate.norm: 17739.211 B/op gc.count: 2.000 counts gc.time: 5.000 ms Iteration 4: 0.016 ms/op gc.alloc.rate: 1089.739 MB/sec gc.alloc.rate.norm: 17734.412 B/op gc.count: 1.000 counts gc.time: 2.000 ms Iteration 5: 0.018 ms/op gc.alloc.rate: 938.233 MB/sec gc.alloc.rate.norm: 17744.739 B/op gc.count: 1.000 counts gc.time: 3.000 ms Iteration 6: 0.016 ms/op gc.alloc.rate: 1046.263 MB/sec gc.alloc.rate.norm: 17736.828 B/op gc.count: 1.000 counts gc.time: 3.000 ms Iteration 7: 0.015 ms/op gc.alloc.rate: 1103.637 MB/sec gc.alloc.rate.norm: 17736.818 B/op gc.count: 1.000 counts gc.time: 3.000 ms Iteration 8: 0.015 ms/op gc.alloc.rate: 1114.996 MB/sec gc.alloc.rate.norm: 17743.907 B/op gc.count: 1.000 counts gc.time: 3.000 ms Result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix": 0.016 ±(99.9%) 0.002 ms/op [Average] (min, avg, max) = (0.015, 0.016, 0.018), stdev = 0.001 CI (99.9%): [0.014, 0.018] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate": 1058.485 ±(99.9%) 120.608 MB/sec [Average] (min, avg, max) = (938.233, 1058.485, 1114.996), stdev = 63.080 CI (99.9%): [937.877, 1179.093] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm": 17744.028 ±(99.9%) 18.529 B/op [Average] (min, avg, max) = (17734.412, 17744.028, 17762.531), stdev = 9.691 CI (99.9%): [17725.499, 17762.557] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count": 9.000 ±(99.9%) 0.001 counts [Sum] (min, avg, max) = (1.000, 1.125, 2.000), stdev = 0.354 CI (99.9%): [9.000, 9.000] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time": 25.000 ±(99.9%) 0.001 ms [Sum] (min, avg, max) = (2.000, 3.125, 5.000), stdev = 0.835 CI (99.9%): [25.000, 25.000] (assumes normal distribution) # Run complete. Total time: 00:00:25 REMEMBER: The numbers below are just data. To gain reusable insights, you need to follow up on why the numbers are the way they are. Use profilers (see -prof, -lprof), design factorial experiments, perform baseline and negative tests that provide experimental control, make sure the benchmarking environment is safe on JVM/OS/HW level, ask for reviews from the domain experts. Do not assume the numbers tell you what you want them to tell. NOTE: Current JVM experimentally supports Compiler Blackholes, and they are in use. Please exercise extra caution when trusting the results, look into the generated code to check the benchmark still works, and factor in a small probability of new VM bugs. Additionally, while comparisons between different JVMs are already problematic, the performance difference caused by different Blackhole modes can be very significant. Please make sure you use the consistent Blackhole mode for comparisons. Benchmark (implementation) (itemCount) (typedCharacterCount) Mode Cnt Score Error Units LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix generalized-suffix-tree 100000 4 avgt 8 0.174 ± 0.015 ms/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate generalized-suffix-tree 100000 4 avgt 8 843.455 ± 70.291 MB/sec LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm generalized-suffix-tree 100000 4 avgt 8 153468.516 ± 153.974 B/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count generalized-suffix-tree 100000 4 avgt 8 7.000 counts LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time generalized-suffix-tree 100000 4 avgt 8 35.000 ms LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix generalized-suffix-tree 100000 6 avgt 8 0.137 ± 0.007 ms/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate generalized-suffix-tree 100000 6 avgt 8 877.476 ± 47.262 MB/sec LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm generalized-suffix-tree 100000 6 avgt 8 126281.140 ± 52.614 B/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count generalized-suffix-tree 100000 6 avgt 8 7.000 counts LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time generalized-suffix-tree 100000 6 avgt 8 5.000 ms LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix generalized-suffix-tree 100000 10 avgt 8 0.017 ± 0.001 ms/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate generalized-suffix-tree 100000 10 avgt 8 1116.496 ± 56.825 MB/sec LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm generalized-suffix-tree 100000 10 avgt 8 20479.710 ± 15.210 B/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count generalized-suffix-tree 100000 10 avgt 8 9.000 counts LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time generalized-suffix-tree 100000 10 avgt 8 22.000 ms LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix generalized-suffix-tree 100000 11 avgt 8 0.016 ± 0.002 ms/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate generalized-suffix-tree 100000 11 avgt 8 1058.485 ± 120.608 MB/sec LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm generalized-suffix-tree 100000 11 avgt 8 17744.028 ± 18.529 B/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count generalized-suffix-tree 100000 11 avgt 8 9.000 counts LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time generalized-suffix-tree 100000 11 avgt 8 25.000 ms Benchmark result is saved to /build/reports/jmh/adaptive-jmh-passes/pass-03-group-001.json # Adaptive pass 3, group 2 # Command: java -cp /build/classes/java/benchmark:/build/resources/benchmark:/build/moddev/artifacts/vanilla-26.2-2.jar:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar:/modules-2/files-2.1/com.abahgat/suffixtree/2.0.0/ffe2c29796add2624d2e0b9f33e72421eb5c5ea5/suffixtree-2.0.0.jar:/modules-2/files-2.1/net.mezzdev/suffixtree/1.3.0/1a1b87af70a1631ff6d6c9d49c63564aadecb176/suffixtree-1.3.0.jar:/modules-2/files-2.1/net.mezzdev/baked-substring-index/0.1.0/4f9fbd9eb54fdb1b8ec40a83297f4e8f4479eb7c/baked-substring-index-0.1.0.jar:/modules-2/files-2.1/net.mezzdev/baked-suffix-array-index/0.1.0/cd5e5ffbcee030d149e7a5a70e151a06158bd643/baked-suffix-array-index-0.1.0.jar:/modules-2/files-2.1/net.neoforged/mergetool/2.0.7/793b18456e92c4a7f66d9b5d8bf7a9c1c7a20b20/mergetool-2.0.7-api.jar:/modules-2/files-2.1/net.sf.jopt-simple/jopt-simple/5.0.4/4fdac2fbe92dfad86aa6e9301736f6b4342a3f5c/jopt-simple-5.0.4.jar:/modules-2/files-2.1/org.apache.commons/commons-math3/3.6.1/e4ba98f1d4b3c80ec46392f25e094a6a2e58fcbf/commons-math3-3.6.1.jar:/modules-2/files-2.1/com.google.code.findbugs/jsr305/3.0.2/25ea2e8b0c338a877313bd4672d3fe056ea78f0d/jsr305-3.0.2.jar:/modules-2/files-2.1/org.jspecify/jspecify/1.0.0/7425a601c1c7ec76645a78d22b8c6a627edee507/jspecify-1.0.0.jar:/modules-2/files-2.1/org.jetbrains/annotations/26.0.2-1/c7ce3cdeda3d18909368dfe5977332dfad326c6d/annotations-26.0.2-1.jar:/modules-2/files-2.1/ca.weblite/java-objc-bridge/1.1/1227f9e0666314f9de41477e3ec277e542ed7f7b/java-objc-bridge-1.1.jar:/modules-2/files-2.1/at.yawk.lz4/lz4-java/1.10.1/f541d7f910fe3d76f38f799c507c48cc81b12ecb/lz4-java-1.10.1.jar:/modules-2/files-2.1/com.azure/azure-json/1.4.0/fcc1d354dbc3e0300e5276b1bf124d0247799cd8/azure-json-1.4.0.jar:/modules-2/files-2.1/com.github.oshi/oshi-core/6.9.0/3224870731860cfcd7744581a05b559e94291e7/oshi-core-6.9.0.jar:/modules-2/files-2.1/com.google.code.gson/gson/2.14.0/efc0e34ede4e3204eaefb84a00e55e8c86634382/gson-2.14.0.jar:/modules-2/files-2.1/com.google.guava/failureaccess/1.0.3/aeaffd00d57023a2c947393ed251f0354f0985fc/failureaccess-1.0.3.jar:/modules-2/files-2.1/com.google.guava/guava/33.6.0-jre/c376b13067cc99a5774403530953f7b05a91e218/guava-33.6.0-jre.jar:/modules-2/files-2.1/com.ibm.icu/icu4j/78.3/6a851a53bb1f25689fc418dcc8935b0d93580adf/icu4j-78.3.jar:/modules-2/files-2.1/com.microsoft.azure/msal4j/1.24.1/c233f2d047b9755f7041adf21a858c680e4c9242/msal4j-1.24.1.jar:/modules-2/files-2.1/com.mojang/authlib/9.0.75/d61056a234d5e4b272e09d59b0713f80d6c0b6af/authlib-9.0.75.jar:/modules-2/files-2.1/com.mojang/blocklist/1.0.10/5c685c5ffa94c4cd39496c7184c1d122e515ecef/blocklist-1.0.10.jar:/modules-2/files-2.1/com.mojang/brigadier/1.3.10/d15b53a14cf20fdcaa98f731af5dda654452c010/brigadier-1.3.10.jar:/modules-2/files-2.1/com.mojang/datafixerupper/10.0.21/b6b2ae770c02e0c1eb90f9985b151e9085a38d0b/datafixerupper-10.0.21.jar:/modules-2/files-2.1/com.mojang/jtracy/1.0.37/a3fb649b2e2b2288d2978f0b0bc3d83f62809d1e/jtracy-1.0.37.jar:/modules-2/files-2.1/com.mojang/jtracy/1.0.37/a99fcb63b72fb623534d0ceb71bda4bed9b55b4c/jtracy-1.0.37-natives-macos.jar:/modules-2/files-2.1/com.mojang/jtracy/1.0.37/c8e971da5150aa33283c5bf4097154c0da554fb9/jtracy-1.0.37-natives-macos-arm64.jar:/modules-2/files-2.1/com.mojang/logging/1.7.12/351cea64a5233361327d8d54c44277041beed97f/logging-1.7.12.jar:/modules-2/files-2.1/com.mojang/patchy/2.2.10/da05971b07cbb379d002cf7eaec6a2048211fefc/patchy-2.2.10.jar:/modules-2/files-2.1/com.mojang/text2speech/1.19.12/2e517a75c79d34d32de2b5d68422150836c2133e/text2speech-1.19.12.jar:/modules-2/files-2.1/commons-codec/commons-codec/1.22.0/6b3eb4beb7058c2a638f5f17bcb388649fd339dd/commons-codec-1.22.0.jar:/modules-2/files-2.1/commons-io/commons-io/2.20.0/36f3474daec2849c149e877614e7f979b2082cd2/commons-io-2.20.0.jar:/modules-2/files-2.1/io.netty/netty-buffer/4.2.15.Final/2beb620803bf871cda2dd5d46b8f831e8015dd34/netty-buffer-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-codec-base/4.2.15.Final/e97149fdd5fb04858efa90e314651c8d700dc68b/netty-codec-base-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-codec-compression/4.2.15.Final/89fc4a20b7ae6af974304b1695405e62c4f9b16d/netty-codec-compression-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-codec-http/4.2.15.Final/e611826aa054371bb9a17f27bdb05755a4cac5f0/netty-codec-http-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-common/4.2.15.Final/7222492c1af9c2d4d78d521eea340a619e242fda/netty-common-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-handler/4.2.15.Final/d5344afd1148e3b9927a74be019605ebb0937a93/netty-handler-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-resolver/4.2.15.Final/b961a16d379b508b473e064ba06842bba280f4e3/netty-resolver-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-transport-classes-epoll/4.2.15.Final/44bafba9c9993800e955b365bba4981326f3f3b1/netty-transport-classes-epoll-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-transport-classes-kqueue/4.2.15.Final/f248656bb907607c5a41c7b61fd918a97db79250/netty-transport-classes-kqueue-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-transport-native-unix-common/4.2.15.Final/efb6943b4de9e0226a5ac35330f232605424af02/netty-transport-native-unix-common-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-transport/4.2.15.Final/a000c3a6196ee40207b73ac619dcb339409dd62f/netty-transport-4.2.15.Final.jar:/modules-2/files-2.1/it.unimi.dsi/fastutil/8.5.18/a6cff377eecc19c2037bf31568a6d7106b50ba1f/fastutil-8.5.18.jar:/modules-2/files-2.1/net.java.dev.jna/jna-platform/5.17.0/a4934c44d25a9d8c2ddf4203affd20330cb3426f/jna-platform-5.17.0.jar:/modules-2/files-2.1/net.java.dev.jna/jna/5.17.0/33d12735bef894440780fce64f9758d420c7bae2/jna-5.17.0.jar:/modules-2/files-2.1/org.apache.commons/commons-compress/1.28.0/e482f2c7a88dac3c497e96aa420b6a769f59c8d7/commons-compress-1.28.0.jar:/modules-2/files-2.1/org.apache.commons/commons-lang3/3.20.0/65897b3e5731220962e659e001904af3c3cbeba9/commons-lang3-3.20.0.jar:/modules-2/files-2.1/org.apache.logging.log4j/log4j-api/2.26.0/ad52af0ecf054a7e3f275a2e180ee06d9c490951/log4j-api-2.26.0.jar:/modules-2/files-2.1/org.apache.logging.log4j/log4j-core/2.26.0/d267ca60b27ddb075e0b4e75e7875859717bf85f/log4j-core-2.26.0.jar:/modules-2/files-2.1/org.apache.logging.log4j/log4j-slf4j2-impl/2.26.0/668c0f0e813d83f00a7182533aa658ec7e7a0a0d/log4j-slf4j2-impl-2.26.0.jar:/modules-2/files-2.1/org.jcraft/jorbis/0.0.17/8872d22b293e8f5d7d56ff92be966e6dc28ebdc6/jorbis-0.0.17.jar:/modules-2/files-2.1/org.joml/joml/1.10.8/fc0a71dad90a2cf41d82a76156a0e700af8e4f8d/joml-1.10.8.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-freetype/3.4.1/caa75a37e857efc9b0686e434d708d6420c5b6ea/lwjgl-freetype-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-freetype/3.4.1/61cb2d85e1838bca1a0b664f54e818bc68deb2ef/lwjgl-freetype-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-freetype/3.4.1/cce5a86b4a7d17817fe8ea0296302a4353acf2d5/lwjgl-freetype-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-glfw/3.4.1/a782b1ddd175c9107bf300fd92920579ea65e2a4/lwjgl-glfw-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-glfw/3.4.1/3c8538942f58377d59cd7be2dc164ba71a53868a/lwjgl-glfw-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-glfw/3.4.1/ef1f8efca5a60ba3512bc4982b88e446ecc43378/lwjgl-glfw-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-jemalloc/3.4.1/16b663092854fc6adfe0a941e61cae2bb2e437b6/lwjgl-jemalloc-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-jemalloc/3.4.1/581b4d542e841015ce3265eed0495e2cde15b1d0/lwjgl-jemalloc-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-jemalloc/3.4.1/dcd7e3f9a2ca386e8c5b8f508a8511d9dd63bab0/lwjgl-jemalloc-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-openal/3.4.1/8508bd60589de0539aa465b78fcf838efd07ae9a/lwjgl-openal-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-openal/3.4.1/a4dc57b7b0880d3fffb4d0b61649f45712bccc93/lwjgl-openal-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-openal/3.4.1/1c709a38c4a0e86aae96db7b8c78432307f2322a/lwjgl-openal-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-opengl/3.4.1/830412cab823c029cda6b9729f9d2ed36cf79959/lwjgl-opengl-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-opengl/3.4.1/ba18fc6012b88494ee893506934b92b01c4ef14b/lwjgl-opengl-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-opengl/3.4.1/35b5550058de4960525f465243bd01805f04fd8b/lwjgl-opengl-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-shaderc/3.4.1/5c02c88f0d879529014c78463b76f43fdecfd272/lwjgl-shaderc-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-shaderc/3.4.1/1d7bbdba70cf29c42978f6c0c1bdef945b922072/lwjgl-shaderc-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-shaderc/3.4.1/48aa2727e8616154d399d4dab0d8e8479741fa4f/lwjgl-shaderc-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-spvc/3.4.1/188553592e97b5ab2dba54a1b403ee80b48dad4c/lwjgl-spvc-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-spvc/3.4.1/2eeebd6d5bae966bfffda9747eba744cfe839ae1/lwjgl-spvc-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-spvc/3.4.1/a4f66638d28129eba0babd8fdc4385427a5ea83e/lwjgl-spvc-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-stb/3.4.1/f077c3dafc31924fbe8acb0b913f08977ba27f8e/lwjgl-stb-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-stb/3.4.1/fd1ea36b717b0832babca09324a6cfc43906e2aa/lwjgl-stb-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-stb/3.4.1/da554e04f819f09b0f3473bd931628ebf557965e/lwjgl-stb-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-tinyfd/3.4.1/562697d40dbd2ed0424bf24dcf65d51170f81adf/lwjgl-tinyfd-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-tinyfd/3.4.1/211ae9e8720e8f10f2ce85a118fa7bd5ee71584b/lwjgl-tinyfd-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-tinyfd/3.4.1/7bcde70f6164b2e72f84cac5257b7e9877b88510/lwjgl-tinyfd-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vma/3.4.1/2c54ce10154feb1ede4d23c5947438cdbfdcc003/lwjgl-vma-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vma/3.4.1/a130a9e4f96c83063f749e1dcc7065e0dffb3936/lwjgl-vma-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vma/3.4.1/9451dc1067716bc4125cdba65a7096e465f4d0e5/lwjgl-vma-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vulkan/3.4.1/d0601fdc38890755e5638048c14cc0f7b990964b/lwjgl-vulkan-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vulkan/3.4.1/140c7fd3e0fdbcc625c92be9328301c555035905/lwjgl-vulkan-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vulkan/3.4.1/2c933bf617cb8a174af26585efda4778b59e6d44/lwjgl-vulkan-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl/3.4.1/129e06a04f93992cb2a45172435b21fc4b60dd7d/lwjgl-3.4.1-unsafe.jar:/modules-2/files-2.1/org.lwjgl/lwjgl/3.4.1/b034fd9a67cb8646c01af7efcefcb93be835542b/lwjgl-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl/3.4.1/b4cbdef4818abd714ee66985344c0949fd1cd6d6/lwjgl-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.slf4j/slf4j-api/2.0.17/d9e58ac9c7779ba3bf8142aff6c830617a7fe60f/slf4j-api-2.0.17.jar:/modules-2/files-2.1/org.ow2.asm/asm-util/9.5/64b5a1fc8c1b15ed2efd6a063e976bc8d3dc5ffe/asm-util-9.5.jar:/modules-2/files-2.1/org.ow2.asm/asm-analysis/9.5/490bacc77de7cbc0be1a30bb3471072d705be4a4/asm-analysis-9.5.jar:/modules-2/files-2.1/org.ow2.asm/asm-tree/9.5/fd33c8b6373abaa675be407082fdfda35021254a/asm-tree-9.5.jar:/modules-2/files-2.1/org.ow2.asm/asm/9.5/dc6ea1875f4d64fbc85e1691c95b96a3d8569c90/asm-9.5.jar:/modules-2/files-2.1/net.neoforged/srgutils/1.0.10/abb471237b33b19f040ada00bfbad1ec45b949b6/srgutils-1.0.10.jar:/modules-2/files-2.1/io.netty/netty-transport-native-kqueue/4.2.15.Final/8ea0ef3eb716d821332e4b4926825a4b7c1a6d38/netty-transport-native-kqueue-4.2.15.Final-osx-aarch_64.jar:/modules-2/files-2.1/io.netty/netty-transport-native-kqueue/4.2.15.Final/4245380831515fb4eca18d32477a27fbb8f7b8f4/netty-transport-native-kqueue-4.2.15.Final-osx-x86_64.jar:/build/classes/java/main:/build/resources/main org.openjdk.jmh.Main .*net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix -p itemCount=100000 -p implementation=abahgat-suffix-tree -f 1 -wi 2 -i 8 -w 500ms -r 500ms -rf json -rff /build/reports/jmh/adaptive-jmh-passes/pass-03-group-002.json -o /build/reports/jmh/adaptive-jmh-passes/pass-03-group-002.txt -foe true -p typedCharacterCount=1,2,11 -prof gc # JMH version: 1.37 # VM version: JDK 25, OpenJDK 64-Bit Server VM, 25+36-b176.4 # VM invoker: java # VM options: # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 2 iterations, 500 ms each # Measurement: 8 iterations, 500 ms each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix # Parameters: (implementation = abahgat-suffix-tree, itemCount = 100000, typedCharacterCount = 1) # Run progress: 0.00% complete, ETA 00:00:15 # Fork: 1 of 1 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::objectFieldOffset has been called by org.openjdk.jmh.util.Utils (file:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar) WARNING: Please consider reporting this to the maintainers of class org.openjdk.jmh.util.Utils WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release # Warmup Iteration 1: 74.529 ms/op # Warmup Iteration 2: 40.447 ms/op Iteration 1: 49.762 ms/op gc.alloc.rate: 1204.093 MB/sec gc.alloc.rate.norm: 62852350.545 B/op gc.count: 1.000 counts gc.time: 44.000 ms Iteration 2: 81.021 ms/op gc.alloc.rate: 1118.148 MB/sec gc.alloc.rate.norm: 95077585.000 B/op gc.count: 2.000 counts gc.time: 74.000 ms Iteration 3: 36.876 ms/op gc.alloc.rate: 1402.277 MB/sec gc.alloc.rate.norm: 54241013.143 B/op gc.count: 3.000 counts gc.time: 21.000 ms Iteration 4: 51.312 ms/op gc.alloc.rate: 1172.845 MB/sec gc.alloc.rate.norm: 63141522.400 B/op gc.count: 1.000 counts gc.time: 36.000 ms Iteration 5: 73.490 ms/op gc.alloc.rate: 1233.442 MB/sec gc.alloc.rate.norm: 95077574.000 B/op gc.count: ≈ 0 counts Iteration 6: 43.622 ms/op gc.alloc.rate: 1175.895 MB/sec gc.alloc.rate.norm: 53801037.538 B/op gc.count: 1.000 counts gc.time: 72.000 ms Iteration 7: 51.568 ms/op gc.alloc.rate: 1145.155 MB/sec gc.alloc.rate.norm: 61946136.000 B/op gc.count: 1.000 counts gc.time: 66.000 ms Iteration 8: 59.010 ms/op gc.alloc.rate: 1494.417 MB/sec gc.alloc.rate.norm: 92503905.778 B/op gc.count: ≈ 0 counts Result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix": 55.833 ±(99.9%) 28.362 ms/op [Average] (min, avg, max) = (36.876, 55.833, 81.021), stdev = 14.834 CI (99.9%): [27.471, 84.194] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate": 1243.284 ±(99.9%) 255.264 MB/sec [Average] (min, avg, max) = (1118.148, 1243.284, 1494.417), stdev = 133.508 CI (99.9%): [988.020, 1498.548] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm": 72330140.551 ±(99.9%) 35362339.711 B/op [Average] (min, avg, max) = (53801037.538, 72330140.551, 95077585.000), stdev = 18495187.433 CI (99.9%): [36967800.839, 107692480.262] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count": 9.000 ±(99.9%) 0.001 counts [Sum] (min, avg, max) = (≈ 0, 1.125, 3.000), stdev = 0.991 CI (99.9%): [9.000, 9.000] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time": 313.000 ±(99.9%) 0.001 ms [Sum] (min, avg, max) = (≈ 0, 39.125, 74.000), stdev = 30.338 CI (99.9%): [313.000, 313.000] (assumes normal distribution) # JMH version: 1.37 # VM version: JDK 25, OpenJDK 64-Bit Server VM, 25+36-b176.4 # VM invoker: java # VM options: # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 2 iterations, 500 ms each # Measurement: 8 iterations, 500 ms each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix # Parameters: (implementation = abahgat-suffix-tree, itemCount = 100000, typedCharacterCount = 2) # Run progress: 33.33% complete, ETA 00:00:14 # Fork: 1 of 1 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::objectFieldOffset has been called by org.openjdk.jmh.util.Utils (file:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar) WARNING: Please consider reporting this to the maintainers of class org.openjdk.jmh.util.Utils WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release # Warmup Iteration 1: 5.736 ms/op # Warmup Iteration 2: 4.843 ms/op Iteration 1: 5.051 ms/op gc.alloc.rate: 1625.754 MB/sec gc.alloc.rate.norm: 8614219.840 B/op gc.count: 1.000 counts gc.time: 2.000 ms Iteration 2: 4.746 ms/op gc.alloc.rate: 1677.886 MB/sec gc.alloc.rate.norm: 8353648.741 B/op gc.count: 1.000 counts gc.time: 4.000 ms Iteration 3: 5.162 ms/op gc.alloc.rate: 1597.072 MB/sec gc.alloc.rate.norm: 8646555.475 B/op gc.count: 2.000 counts gc.time: 8.000 ms Iteration 4: 4.680 ms/op gc.alloc.rate: 1675.018 MB/sec gc.alloc.rate.norm: 8222652.000 B/op gc.count: 1.000 counts gc.time: 3.000 ms Iteration 5: 5.232 ms/op gc.alloc.rate: 1596.241 MB/sec gc.alloc.rate.norm: 8760736.000 B/op gc.count: 2.000 counts gc.time: 7.000 ms Iteration 6: 4.676 ms/op gc.alloc.rate: 1652.892 MB/sec gc.alloc.rate.norm: 8107477.926 B/op gc.count: 1.000 counts gc.time: 2.000 ms Iteration 7: 5.067 ms/op gc.alloc.rate: 1670.703 MB/sec gc.alloc.rate.norm: 8880084.320 B/op gc.count: 1.000 counts gc.time: 3.000 ms Iteration 8: 4.905 ms/op gc.alloc.rate: 1633.176 MB/sec gc.alloc.rate.norm: 8401859.573 B/op gc.count: 2.000 counts gc.time: 7.000 ms Result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix": 4.940 ±(99.9%) 0.421 ms/op [Average] (min, avg, max) = (4.676, 4.940, 5.232), stdev = 0.220 CI (99.9%): [4.519, 5.361] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate": 1641.093 ±(99.9%) 63.693 MB/sec [Average] (min, avg, max) = (1596.241, 1641.093, 1677.886), stdev = 33.313 CI (99.9%): [1577.400, 1704.786] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm": 8498404.234 ±(99.9%) 515574.003 B/op [Average] (min, avg, max) = (8107477.926, 8498404.234, 8880084.320), stdev = 269655.173 CI (99.9%): [7982830.231, 9013978.238] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count": 11.000 ±(99.9%) 0.001 counts [Sum] (min, avg, max) = (1.000, 1.375, 2.000), stdev = 0.518 CI (99.9%): [11.000, 11.000] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time": 36.000 ±(99.9%) 0.001 ms [Sum] (min, avg, max) = (2.000, 4.500, 8.000), stdev = 2.449 CI (99.9%): [36.000, 36.000] (assumes normal distribution) # JMH version: 1.37 # VM version: JDK 25, OpenJDK 64-Bit Server VM, 25+36-b176.4 # VM invoker: java # VM options: # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 2 iterations, 500 ms each # Measurement: 8 iterations, 500 ms each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix # Parameters: (implementation = abahgat-suffix-tree, itemCount = 100000, typedCharacterCount = 11) # Run progress: 66.67% complete, ETA 00:00:06 # Fork: 1 of 1 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::objectFieldOffset has been called by org.openjdk.jmh.util.Utils (file:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar) WARNING: Please consider reporting this to the maintainers of class org.openjdk.jmh.util.Utils WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release # Warmup Iteration 1: 0.213 ms/op # Warmup Iteration 2: 0.188 ms/op Iteration 1: 0.185 ms/op gc.alloc.rate: 1699.711 MB/sec gc.alloc.rate.norm: 329865.784 B/op gc.count: 1.000 counts gc.time: 5.000 ms Iteration 2: 0.185 ms/op gc.alloc.rate: 1695.071 MB/sec gc.alloc.rate.norm: 328680.843 B/op gc.count: 2.000 counts gc.time: 7.000 ms Iteration 3: 0.185 ms/op gc.alloc.rate: 1702.026 MB/sec gc.alloc.rate.norm: 330988.332 B/op gc.count: 1.000 counts gc.time: 4.000 ms Iteration 4: 0.191 ms/op gc.alloc.rate: 1642.732 MB/sec gc.alloc.rate.norm: 329829.152 B/op gc.count: 2.000 counts gc.time: 9.000 ms Iteration 5: 0.180 ms/op gc.alloc.rate: 1747.775 MB/sec gc.alloc.rate.norm: 329828.986 B/op gc.count: 1.000 counts gc.time: 4.000 ms Iteration 6: 0.186 ms/op gc.alloc.rate: 1686.538 MB/sec gc.alloc.rate.norm: 329829.089 B/op gc.count: 2.000 counts gc.time: 9.000 ms Iteration 7: 0.179 ms/op gc.alloc.rate: 1747.561 MB/sec gc.alloc.rate.norm: 328721.798 B/op gc.count: 1.000 counts gc.time: 4.000 ms Iteration 8: 0.184 ms/op gc.alloc.rate: 1715.978 MB/sec gc.alloc.rate.norm: 330958.729 B/op gc.count: 1.000 counts gc.time: 4.000 ms Result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix": 0.185 ±(99.9%) 0.007 ms/op [Average] (min, avg, max) = (0.179, 0.185, 0.191), stdev = 0.004 CI (99.9%): [0.177, 0.192] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate": 1704.674 ±(99.9%) 65.097 MB/sec [Average] (min, avg, max) = (1642.732, 1704.674, 1747.775), stdev = 34.047 CI (99.9%): [1639.577, 1769.771] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm": 329837.839 ±(99.9%) 1642.396 B/op [Average] (min, avg, max) = (328680.843, 329837.839, 330988.332), stdev = 859.005 CI (99.9%): [328195.443, 331480.235] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count": 11.000 ±(99.9%) 0.001 counts [Sum] (min, avg, max) = (1.000, 1.375, 2.000), stdev = 0.518 CI (99.9%): [11.000, 11.000] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time": 46.000 ±(99.9%) 0.001 ms [Sum] (min, avg, max) = (4.000, 5.750, 9.000), stdev = 2.252 CI (99.9%): [46.000, 46.000] (assumes normal distribution) # Run complete. Total time: 00:00:19 REMEMBER: The numbers below are just data. To gain reusable insights, you need to follow up on why the numbers are the way they are. Use profilers (see -prof, -lprof), design factorial experiments, perform baseline and negative tests that provide experimental control, make sure the benchmarking environment is safe on JVM/OS/HW level, ask for reviews from the domain experts. Do not assume the numbers tell you what you want them to tell. NOTE: Current JVM experimentally supports Compiler Blackholes, and they are in use. Please exercise extra caution when trusting the results, look into the generated code to check the benchmark still works, and factor in a small probability of new VM bugs. Additionally, while comparisons between different JVMs are already problematic, the performance difference caused by different Blackhole modes can be very significant. Please make sure you use the consistent Blackhole mode for comparisons. Benchmark (implementation) (itemCount) (typedCharacterCount) Mode Cnt Score Error Units LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix abahgat-suffix-tree 100000 1 avgt 8 55.833 ± 28.362 ms/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate abahgat-suffix-tree 100000 1 avgt 8 1243.284 ± 255.264 MB/sec LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm abahgat-suffix-tree 100000 1 avgt 8 72330140.551 ± 35362339.711 B/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count abahgat-suffix-tree 100000 1 avgt 8 9.000 counts LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time abahgat-suffix-tree 100000 1 avgt 8 313.000 ms LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix abahgat-suffix-tree 100000 2 avgt 8 4.940 ± 0.421 ms/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate abahgat-suffix-tree 100000 2 avgt 8 1641.093 ± 63.693 MB/sec LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm abahgat-suffix-tree 100000 2 avgt 8 8498404.234 ± 515574.003 B/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count abahgat-suffix-tree 100000 2 avgt 8 11.000 counts LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time abahgat-suffix-tree 100000 2 avgt 8 36.000 ms LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix abahgat-suffix-tree 100000 11 avgt 8 0.185 ± 0.007 ms/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate abahgat-suffix-tree 100000 11 avgt 8 1704.674 ± 65.097 MB/sec LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm abahgat-suffix-tree 100000 11 avgt 8 329837.839 ± 1642.396 B/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count abahgat-suffix-tree 100000 11 avgt 8 11.000 counts LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time abahgat-suffix-tree 100000 11 avgt 8 46.000 ms Benchmark result is saved to /build/reports/jmh/adaptive-jmh-passes/pass-03-group-002.json # Adaptive pass 3, group 3 # Command: java -cp /build/classes/java/benchmark:/build/resources/benchmark:/build/moddev/artifacts/vanilla-26.2-2.jar:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar:/modules-2/files-2.1/com.abahgat/suffixtree/2.0.0/ffe2c29796add2624d2e0b9f33e72421eb5c5ea5/suffixtree-2.0.0.jar:/modules-2/files-2.1/net.mezzdev/suffixtree/1.3.0/1a1b87af70a1631ff6d6c9d49c63564aadecb176/suffixtree-1.3.0.jar:/modules-2/files-2.1/net.mezzdev/baked-substring-index/0.1.0/4f9fbd9eb54fdb1b8ec40a83297f4e8f4479eb7c/baked-substring-index-0.1.0.jar:/modules-2/files-2.1/net.mezzdev/baked-suffix-array-index/0.1.0/cd5e5ffbcee030d149e7a5a70e151a06158bd643/baked-suffix-array-index-0.1.0.jar:/modules-2/files-2.1/net.neoforged/mergetool/2.0.7/793b18456e92c4a7f66d9b5d8bf7a9c1c7a20b20/mergetool-2.0.7-api.jar:/modules-2/files-2.1/net.sf.jopt-simple/jopt-simple/5.0.4/4fdac2fbe92dfad86aa6e9301736f6b4342a3f5c/jopt-simple-5.0.4.jar:/modules-2/files-2.1/org.apache.commons/commons-math3/3.6.1/e4ba98f1d4b3c80ec46392f25e094a6a2e58fcbf/commons-math3-3.6.1.jar:/modules-2/files-2.1/com.google.code.findbugs/jsr305/3.0.2/25ea2e8b0c338a877313bd4672d3fe056ea78f0d/jsr305-3.0.2.jar:/modules-2/files-2.1/org.jspecify/jspecify/1.0.0/7425a601c1c7ec76645a78d22b8c6a627edee507/jspecify-1.0.0.jar:/modules-2/files-2.1/org.jetbrains/annotations/26.0.2-1/c7ce3cdeda3d18909368dfe5977332dfad326c6d/annotations-26.0.2-1.jar:/modules-2/files-2.1/ca.weblite/java-objc-bridge/1.1/1227f9e0666314f9de41477e3ec277e542ed7f7b/java-objc-bridge-1.1.jar:/modules-2/files-2.1/at.yawk.lz4/lz4-java/1.10.1/f541d7f910fe3d76f38f799c507c48cc81b12ecb/lz4-java-1.10.1.jar:/modules-2/files-2.1/com.azure/azure-json/1.4.0/fcc1d354dbc3e0300e5276b1bf124d0247799cd8/azure-json-1.4.0.jar:/modules-2/files-2.1/com.github.oshi/oshi-core/6.9.0/3224870731860cfcd7744581a05b559e94291e7/oshi-core-6.9.0.jar:/modules-2/files-2.1/com.google.code.gson/gson/2.14.0/efc0e34ede4e3204eaefb84a00e55e8c86634382/gson-2.14.0.jar:/modules-2/files-2.1/com.google.guava/failureaccess/1.0.3/aeaffd00d57023a2c947393ed251f0354f0985fc/failureaccess-1.0.3.jar:/modules-2/files-2.1/com.google.guava/guava/33.6.0-jre/c376b13067cc99a5774403530953f7b05a91e218/guava-33.6.0-jre.jar:/modules-2/files-2.1/com.ibm.icu/icu4j/78.3/6a851a53bb1f25689fc418dcc8935b0d93580adf/icu4j-78.3.jar:/modules-2/files-2.1/com.microsoft.azure/msal4j/1.24.1/c233f2d047b9755f7041adf21a858c680e4c9242/msal4j-1.24.1.jar:/modules-2/files-2.1/com.mojang/authlib/9.0.75/d61056a234d5e4b272e09d59b0713f80d6c0b6af/authlib-9.0.75.jar:/modules-2/files-2.1/com.mojang/blocklist/1.0.10/5c685c5ffa94c4cd39496c7184c1d122e515ecef/blocklist-1.0.10.jar:/modules-2/files-2.1/com.mojang/brigadier/1.3.10/d15b53a14cf20fdcaa98f731af5dda654452c010/brigadier-1.3.10.jar:/modules-2/files-2.1/com.mojang/datafixerupper/10.0.21/b6b2ae770c02e0c1eb90f9985b151e9085a38d0b/datafixerupper-10.0.21.jar:/modules-2/files-2.1/com.mojang/jtracy/1.0.37/a3fb649b2e2b2288d2978f0b0bc3d83f62809d1e/jtracy-1.0.37.jar:/modules-2/files-2.1/com.mojang/jtracy/1.0.37/a99fcb63b72fb623534d0ceb71bda4bed9b55b4c/jtracy-1.0.37-natives-macos.jar:/modules-2/files-2.1/com.mojang/jtracy/1.0.37/c8e971da5150aa33283c5bf4097154c0da554fb9/jtracy-1.0.37-natives-macos-arm64.jar:/modules-2/files-2.1/com.mojang/logging/1.7.12/351cea64a5233361327d8d54c44277041beed97f/logging-1.7.12.jar:/modules-2/files-2.1/com.mojang/patchy/2.2.10/da05971b07cbb379d002cf7eaec6a2048211fefc/patchy-2.2.10.jar:/modules-2/files-2.1/com.mojang/text2speech/1.19.12/2e517a75c79d34d32de2b5d68422150836c2133e/text2speech-1.19.12.jar:/modules-2/files-2.1/commons-codec/commons-codec/1.22.0/6b3eb4beb7058c2a638f5f17bcb388649fd339dd/commons-codec-1.22.0.jar:/modules-2/files-2.1/commons-io/commons-io/2.20.0/36f3474daec2849c149e877614e7f979b2082cd2/commons-io-2.20.0.jar:/modules-2/files-2.1/io.netty/netty-buffer/4.2.15.Final/2beb620803bf871cda2dd5d46b8f831e8015dd34/netty-buffer-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-codec-base/4.2.15.Final/e97149fdd5fb04858efa90e314651c8d700dc68b/netty-codec-base-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-codec-compression/4.2.15.Final/89fc4a20b7ae6af974304b1695405e62c4f9b16d/netty-codec-compression-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-codec-http/4.2.15.Final/e611826aa054371bb9a17f27bdb05755a4cac5f0/netty-codec-http-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-common/4.2.15.Final/7222492c1af9c2d4d78d521eea340a619e242fda/netty-common-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-handler/4.2.15.Final/d5344afd1148e3b9927a74be019605ebb0937a93/netty-handler-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-resolver/4.2.15.Final/b961a16d379b508b473e064ba06842bba280f4e3/netty-resolver-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-transport-classes-epoll/4.2.15.Final/44bafba9c9993800e955b365bba4981326f3f3b1/netty-transport-classes-epoll-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-transport-classes-kqueue/4.2.15.Final/f248656bb907607c5a41c7b61fd918a97db79250/netty-transport-classes-kqueue-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-transport-native-unix-common/4.2.15.Final/efb6943b4de9e0226a5ac35330f232605424af02/netty-transport-native-unix-common-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-transport/4.2.15.Final/a000c3a6196ee40207b73ac619dcb339409dd62f/netty-transport-4.2.15.Final.jar:/modules-2/files-2.1/it.unimi.dsi/fastutil/8.5.18/a6cff377eecc19c2037bf31568a6d7106b50ba1f/fastutil-8.5.18.jar:/modules-2/files-2.1/net.java.dev.jna/jna-platform/5.17.0/a4934c44d25a9d8c2ddf4203affd20330cb3426f/jna-platform-5.17.0.jar:/modules-2/files-2.1/net.java.dev.jna/jna/5.17.0/33d12735bef894440780fce64f9758d420c7bae2/jna-5.17.0.jar:/modules-2/files-2.1/org.apache.commons/commons-compress/1.28.0/e482f2c7a88dac3c497e96aa420b6a769f59c8d7/commons-compress-1.28.0.jar:/modules-2/files-2.1/org.apache.commons/commons-lang3/3.20.0/65897b3e5731220962e659e001904af3c3cbeba9/commons-lang3-3.20.0.jar:/modules-2/files-2.1/org.apache.logging.log4j/log4j-api/2.26.0/ad52af0ecf054a7e3f275a2e180ee06d9c490951/log4j-api-2.26.0.jar:/modules-2/files-2.1/org.apache.logging.log4j/log4j-core/2.26.0/d267ca60b27ddb075e0b4e75e7875859717bf85f/log4j-core-2.26.0.jar:/modules-2/files-2.1/org.apache.logging.log4j/log4j-slf4j2-impl/2.26.0/668c0f0e813d83f00a7182533aa658ec7e7a0a0d/log4j-slf4j2-impl-2.26.0.jar:/modules-2/files-2.1/org.jcraft/jorbis/0.0.17/8872d22b293e8f5d7d56ff92be966e6dc28ebdc6/jorbis-0.0.17.jar:/modules-2/files-2.1/org.joml/joml/1.10.8/fc0a71dad90a2cf41d82a76156a0e700af8e4f8d/joml-1.10.8.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-freetype/3.4.1/caa75a37e857efc9b0686e434d708d6420c5b6ea/lwjgl-freetype-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-freetype/3.4.1/61cb2d85e1838bca1a0b664f54e818bc68deb2ef/lwjgl-freetype-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-freetype/3.4.1/cce5a86b4a7d17817fe8ea0296302a4353acf2d5/lwjgl-freetype-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-glfw/3.4.1/a782b1ddd175c9107bf300fd92920579ea65e2a4/lwjgl-glfw-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-glfw/3.4.1/3c8538942f58377d59cd7be2dc164ba71a53868a/lwjgl-glfw-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-glfw/3.4.1/ef1f8efca5a60ba3512bc4982b88e446ecc43378/lwjgl-glfw-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-jemalloc/3.4.1/16b663092854fc6adfe0a941e61cae2bb2e437b6/lwjgl-jemalloc-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-jemalloc/3.4.1/581b4d542e841015ce3265eed0495e2cde15b1d0/lwjgl-jemalloc-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-jemalloc/3.4.1/dcd7e3f9a2ca386e8c5b8f508a8511d9dd63bab0/lwjgl-jemalloc-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-openal/3.4.1/8508bd60589de0539aa465b78fcf838efd07ae9a/lwjgl-openal-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-openal/3.4.1/a4dc57b7b0880d3fffb4d0b61649f45712bccc93/lwjgl-openal-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-openal/3.4.1/1c709a38c4a0e86aae96db7b8c78432307f2322a/lwjgl-openal-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-opengl/3.4.1/830412cab823c029cda6b9729f9d2ed36cf79959/lwjgl-opengl-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-opengl/3.4.1/ba18fc6012b88494ee893506934b92b01c4ef14b/lwjgl-opengl-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-opengl/3.4.1/35b5550058de4960525f465243bd01805f04fd8b/lwjgl-opengl-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-shaderc/3.4.1/5c02c88f0d879529014c78463b76f43fdecfd272/lwjgl-shaderc-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-shaderc/3.4.1/1d7bbdba70cf29c42978f6c0c1bdef945b922072/lwjgl-shaderc-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-shaderc/3.4.1/48aa2727e8616154d399d4dab0d8e8479741fa4f/lwjgl-shaderc-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-spvc/3.4.1/188553592e97b5ab2dba54a1b403ee80b48dad4c/lwjgl-spvc-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-spvc/3.4.1/2eeebd6d5bae966bfffda9747eba744cfe839ae1/lwjgl-spvc-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-spvc/3.4.1/a4f66638d28129eba0babd8fdc4385427a5ea83e/lwjgl-spvc-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-stb/3.4.1/f077c3dafc31924fbe8acb0b913f08977ba27f8e/lwjgl-stb-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-stb/3.4.1/fd1ea36b717b0832babca09324a6cfc43906e2aa/lwjgl-stb-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-stb/3.4.1/da554e04f819f09b0f3473bd931628ebf557965e/lwjgl-stb-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-tinyfd/3.4.1/562697d40dbd2ed0424bf24dcf65d51170f81adf/lwjgl-tinyfd-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-tinyfd/3.4.1/211ae9e8720e8f10f2ce85a118fa7bd5ee71584b/lwjgl-tinyfd-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-tinyfd/3.4.1/7bcde70f6164b2e72f84cac5257b7e9877b88510/lwjgl-tinyfd-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vma/3.4.1/2c54ce10154feb1ede4d23c5947438cdbfdcc003/lwjgl-vma-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vma/3.4.1/a130a9e4f96c83063f749e1dcc7065e0dffb3936/lwjgl-vma-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vma/3.4.1/9451dc1067716bc4125cdba65a7096e465f4d0e5/lwjgl-vma-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vulkan/3.4.1/d0601fdc38890755e5638048c14cc0f7b990964b/lwjgl-vulkan-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vulkan/3.4.1/140c7fd3e0fdbcc625c92be9328301c555035905/lwjgl-vulkan-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vulkan/3.4.1/2c933bf617cb8a174af26585efda4778b59e6d44/lwjgl-vulkan-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl/3.4.1/129e06a04f93992cb2a45172435b21fc4b60dd7d/lwjgl-3.4.1-unsafe.jar:/modules-2/files-2.1/org.lwjgl/lwjgl/3.4.1/b034fd9a67cb8646c01af7efcefcb93be835542b/lwjgl-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl/3.4.1/b4cbdef4818abd714ee66985344c0949fd1cd6d6/lwjgl-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.slf4j/slf4j-api/2.0.17/d9e58ac9c7779ba3bf8142aff6c830617a7fe60f/slf4j-api-2.0.17.jar:/modules-2/files-2.1/org.ow2.asm/asm-util/9.5/64b5a1fc8c1b15ed2efd6a063e976bc8d3dc5ffe/asm-util-9.5.jar:/modules-2/files-2.1/org.ow2.asm/asm-analysis/9.5/490bacc77de7cbc0be1a30bb3471072d705be4a4/asm-analysis-9.5.jar:/modules-2/files-2.1/org.ow2.asm/asm-tree/9.5/fd33c8b6373abaa675be407082fdfda35021254a/asm-tree-9.5.jar:/modules-2/files-2.1/org.ow2.asm/asm/9.5/dc6ea1875f4d64fbc85e1691c95b96a3d8569c90/asm-9.5.jar:/modules-2/files-2.1/net.neoforged/srgutils/1.0.10/abb471237b33b19f040ada00bfbad1ec45b949b6/srgutils-1.0.10.jar:/modules-2/files-2.1/io.netty/netty-transport-native-kqueue/4.2.15.Final/8ea0ef3eb716d821332e4b4926825a4b7c1a6d38/netty-transport-native-kqueue-4.2.15.Final-osx-aarch_64.jar:/modules-2/files-2.1/io.netty/netty-transport-native-kqueue/4.2.15.Final/4245380831515fb4eca18d32477a27fbb8f7b8f4/netty-transport-native-kqueue-4.2.15.Final-osx-x86_64.jar:/build/classes/java/main:/build/resources/main org.openjdk.jmh.Main .*net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix -p itemCount=100000 -p implementation=baked-substring-index -f 1 -wi 2 -i 8 -w 500ms -r 500ms -rf json -rff /build/reports/jmh/adaptive-jmh-passes/pass-03-group-003.json -o /build/reports/jmh/adaptive-jmh-passes/pass-03-group-003.txt -foe true -p typedCharacterCount=1 -prof gc # JMH version: 1.37 # VM version: JDK 25, OpenJDK 64-Bit Server VM, 25+36-b176.4 # VM invoker: java # VM options: # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 2 iterations, 500 ms each # Measurement: 8 iterations, 500 ms each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix # Parameters: (implementation = baked-substring-index, itemCount = 100000, typedCharacterCount = 1) # Run progress: 0.00% complete, ETA 00:00:05 # Fork: 1 of 1 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::objectFieldOffset has been called by org.openjdk.jmh.util.Utils (file:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar) WARNING: Please consider reporting this to the maintainers of class org.openjdk.jmh.util.Utils WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release # Warmup Iteration 1: 0.750 ms/op # Warmup Iteration 2: 0.720 ms/op Iteration 1: 0.686 ms/op gc.alloc.rate: 0.124 MB/sec gc.alloc.rate.norm: 89.512 B/op gc.count: ≈ 0 counts Iteration 2: 0.720 ms/op gc.alloc.rate: 0.119 MB/sec gc.alloc.rate.norm: 89.917 B/op gc.count: ≈ 0 counts Iteration 3: 0.690 ms/op gc.alloc.rate: 0.124 MB/sec gc.alloc.rate.norm: 89.521 B/op gc.count: ≈ 0 counts Iteration 4: 0.729 ms/op gc.alloc.rate: 0.118 MB/sec gc.alloc.rate.norm: 90.020 B/op gc.count: ≈ 0 counts Iteration 5: 0.691 ms/op gc.alloc.rate: 0.123 MB/sec gc.alloc.rate.norm: 89.486 B/op gc.count: ≈ 0 counts Iteration 6: 0.640 ms/op gc.alloc.rate: 0.101 MB/sec gc.alloc.rate.norm: 67.497 B/op gc.count: ≈ 0 counts Iteration 7: 0.544 ms/op gc.alloc.rate: 0.069 MB/sec gc.alloc.rate.norm: 39.489 B/op gc.count: ≈ 0 counts Iteration 8: 0.549 ms/op gc.alloc.rate: 0.069 MB/sec gc.alloc.rate.norm: 39.564 B/op gc.count: ≈ 0 counts Result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix": 0.656 ±(99.9%) 0.139 ms/op [Average] (min, avg, max) = (0.544, 0.656, 0.729), stdev = 0.073 CI (99.9%): [0.517, 0.795] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate": 0.106 ±(99.9%) 0.046 MB/sec [Average] (min, avg, max) = (0.069, 0.106, 0.124), stdev = 0.024 CI (99.9%): [0.060, 0.152] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm": 74.376 ±(99.9%) 43.656 B/op [Average] (min, avg, max) = (39.489, 74.376, 90.020), stdev = 22.833 CI (99.9%): [30.720, 118.032] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count": ≈ 0 counts # Run complete. Total time: 00:00:06 REMEMBER: The numbers below are just data. To gain reusable insights, you need to follow up on why the numbers are the way they are. Use profilers (see -prof, -lprof), design factorial experiments, perform baseline and negative tests that provide experimental control, make sure the benchmarking environment is safe on JVM/OS/HW level, ask for reviews from the domain experts. Do not assume the numbers tell you what you want them to tell. NOTE: Current JVM experimentally supports Compiler Blackholes, and they are in use. Please exercise extra caution when trusting the results, look into the generated code to check the benchmark still works, and factor in a small probability of new VM bugs. Additionally, while comparisons between different JVMs are already problematic, the performance difference caused by different Blackhole modes can be very significant. Please make sure you use the consistent Blackhole mode for comparisons. Benchmark (implementation) (itemCount) (typedCharacterCount) Mode Cnt Score Error Units LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix baked-substring-index 100000 1 avgt 8 0.656 ± 0.139 ms/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate baked-substring-index 100000 1 avgt 8 0.106 ± 0.046 MB/sec LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm baked-substring-index 100000 1 avgt 8 74.376 ± 43.656 B/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count baked-substring-index 100000 1 avgt 8 ≈ 0 counts Benchmark result is saved to /build/reports/jmh/adaptive-jmh-passes/pass-03-group-003.json # Adaptive pass 3, group 4 # Command: java -cp /build/classes/java/benchmark:/build/resources/benchmark:/build/moddev/artifacts/vanilla-26.2-2.jar:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar:/modules-2/files-2.1/com.abahgat/suffixtree/2.0.0/ffe2c29796add2624d2e0b9f33e72421eb5c5ea5/suffixtree-2.0.0.jar:/modules-2/files-2.1/net.mezzdev/suffixtree/1.3.0/1a1b87af70a1631ff6d6c9d49c63564aadecb176/suffixtree-1.3.0.jar:/modules-2/files-2.1/net.mezzdev/baked-substring-index/0.1.0/4f9fbd9eb54fdb1b8ec40a83297f4e8f4479eb7c/baked-substring-index-0.1.0.jar:/modules-2/files-2.1/net.mezzdev/baked-suffix-array-index/0.1.0/cd5e5ffbcee030d149e7a5a70e151a06158bd643/baked-suffix-array-index-0.1.0.jar:/modules-2/files-2.1/net.neoforged/mergetool/2.0.7/793b18456e92c4a7f66d9b5d8bf7a9c1c7a20b20/mergetool-2.0.7-api.jar:/modules-2/files-2.1/net.sf.jopt-simple/jopt-simple/5.0.4/4fdac2fbe92dfad86aa6e9301736f6b4342a3f5c/jopt-simple-5.0.4.jar:/modules-2/files-2.1/org.apache.commons/commons-math3/3.6.1/e4ba98f1d4b3c80ec46392f25e094a6a2e58fcbf/commons-math3-3.6.1.jar:/modules-2/files-2.1/com.google.code.findbugs/jsr305/3.0.2/25ea2e8b0c338a877313bd4672d3fe056ea78f0d/jsr305-3.0.2.jar:/modules-2/files-2.1/org.jspecify/jspecify/1.0.0/7425a601c1c7ec76645a78d22b8c6a627edee507/jspecify-1.0.0.jar:/modules-2/files-2.1/org.jetbrains/annotations/26.0.2-1/c7ce3cdeda3d18909368dfe5977332dfad326c6d/annotations-26.0.2-1.jar:/modules-2/files-2.1/ca.weblite/java-objc-bridge/1.1/1227f9e0666314f9de41477e3ec277e542ed7f7b/java-objc-bridge-1.1.jar:/modules-2/files-2.1/at.yawk.lz4/lz4-java/1.10.1/f541d7f910fe3d76f38f799c507c48cc81b12ecb/lz4-java-1.10.1.jar:/modules-2/files-2.1/com.azure/azure-json/1.4.0/fcc1d354dbc3e0300e5276b1bf124d0247799cd8/azure-json-1.4.0.jar:/modules-2/files-2.1/com.github.oshi/oshi-core/6.9.0/3224870731860cfcd7744581a05b559e94291e7/oshi-core-6.9.0.jar:/modules-2/files-2.1/com.google.code.gson/gson/2.14.0/efc0e34ede4e3204eaefb84a00e55e8c86634382/gson-2.14.0.jar:/modules-2/files-2.1/com.google.guava/failureaccess/1.0.3/aeaffd00d57023a2c947393ed251f0354f0985fc/failureaccess-1.0.3.jar:/modules-2/files-2.1/com.google.guava/guava/33.6.0-jre/c376b13067cc99a5774403530953f7b05a91e218/guava-33.6.0-jre.jar:/modules-2/files-2.1/com.ibm.icu/icu4j/78.3/6a851a53bb1f25689fc418dcc8935b0d93580adf/icu4j-78.3.jar:/modules-2/files-2.1/com.microsoft.azure/msal4j/1.24.1/c233f2d047b9755f7041adf21a858c680e4c9242/msal4j-1.24.1.jar:/modules-2/files-2.1/com.mojang/authlib/9.0.75/d61056a234d5e4b272e09d59b0713f80d6c0b6af/authlib-9.0.75.jar:/modules-2/files-2.1/com.mojang/blocklist/1.0.10/5c685c5ffa94c4cd39496c7184c1d122e515ecef/blocklist-1.0.10.jar:/modules-2/files-2.1/com.mojang/brigadier/1.3.10/d15b53a14cf20fdcaa98f731af5dda654452c010/brigadier-1.3.10.jar:/modules-2/files-2.1/com.mojang/datafixerupper/10.0.21/b6b2ae770c02e0c1eb90f9985b151e9085a38d0b/datafixerupper-10.0.21.jar:/modules-2/files-2.1/com.mojang/jtracy/1.0.37/a3fb649b2e2b2288d2978f0b0bc3d83f62809d1e/jtracy-1.0.37.jar:/modules-2/files-2.1/com.mojang/jtracy/1.0.37/a99fcb63b72fb623534d0ceb71bda4bed9b55b4c/jtracy-1.0.37-natives-macos.jar:/modules-2/files-2.1/com.mojang/jtracy/1.0.37/c8e971da5150aa33283c5bf4097154c0da554fb9/jtracy-1.0.37-natives-macos-arm64.jar:/modules-2/files-2.1/com.mojang/logging/1.7.12/351cea64a5233361327d8d54c44277041beed97f/logging-1.7.12.jar:/modules-2/files-2.1/com.mojang/patchy/2.2.10/da05971b07cbb379d002cf7eaec6a2048211fefc/patchy-2.2.10.jar:/modules-2/files-2.1/com.mojang/text2speech/1.19.12/2e517a75c79d34d32de2b5d68422150836c2133e/text2speech-1.19.12.jar:/modules-2/files-2.1/commons-codec/commons-codec/1.22.0/6b3eb4beb7058c2a638f5f17bcb388649fd339dd/commons-codec-1.22.0.jar:/modules-2/files-2.1/commons-io/commons-io/2.20.0/36f3474daec2849c149e877614e7f979b2082cd2/commons-io-2.20.0.jar:/modules-2/files-2.1/io.netty/netty-buffer/4.2.15.Final/2beb620803bf871cda2dd5d46b8f831e8015dd34/netty-buffer-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-codec-base/4.2.15.Final/e97149fdd5fb04858efa90e314651c8d700dc68b/netty-codec-base-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-codec-compression/4.2.15.Final/89fc4a20b7ae6af974304b1695405e62c4f9b16d/netty-codec-compression-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-codec-http/4.2.15.Final/e611826aa054371bb9a17f27bdb05755a4cac5f0/netty-codec-http-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-common/4.2.15.Final/7222492c1af9c2d4d78d521eea340a619e242fda/netty-common-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-handler/4.2.15.Final/d5344afd1148e3b9927a74be019605ebb0937a93/netty-handler-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-resolver/4.2.15.Final/b961a16d379b508b473e064ba06842bba280f4e3/netty-resolver-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-transport-classes-epoll/4.2.15.Final/44bafba9c9993800e955b365bba4981326f3f3b1/netty-transport-classes-epoll-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-transport-classes-kqueue/4.2.15.Final/f248656bb907607c5a41c7b61fd918a97db79250/netty-transport-classes-kqueue-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-transport-native-unix-common/4.2.15.Final/efb6943b4de9e0226a5ac35330f232605424af02/netty-transport-native-unix-common-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-transport/4.2.15.Final/a000c3a6196ee40207b73ac619dcb339409dd62f/netty-transport-4.2.15.Final.jar:/modules-2/files-2.1/it.unimi.dsi/fastutil/8.5.18/a6cff377eecc19c2037bf31568a6d7106b50ba1f/fastutil-8.5.18.jar:/modules-2/files-2.1/net.java.dev.jna/jna-platform/5.17.0/a4934c44d25a9d8c2ddf4203affd20330cb3426f/jna-platform-5.17.0.jar:/modules-2/files-2.1/net.java.dev.jna/jna/5.17.0/33d12735bef894440780fce64f9758d420c7bae2/jna-5.17.0.jar:/modules-2/files-2.1/org.apache.commons/commons-compress/1.28.0/e482f2c7a88dac3c497e96aa420b6a769f59c8d7/commons-compress-1.28.0.jar:/modules-2/files-2.1/org.apache.commons/commons-lang3/3.20.0/65897b3e5731220962e659e001904af3c3cbeba9/commons-lang3-3.20.0.jar:/modules-2/files-2.1/org.apache.logging.log4j/log4j-api/2.26.0/ad52af0ecf054a7e3f275a2e180ee06d9c490951/log4j-api-2.26.0.jar:/modules-2/files-2.1/org.apache.logging.log4j/log4j-core/2.26.0/d267ca60b27ddb075e0b4e75e7875859717bf85f/log4j-core-2.26.0.jar:/modules-2/files-2.1/org.apache.logging.log4j/log4j-slf4j2-impl/2.26.0/668c0f0e813d83f00a7182533aa658ec7e7a0a0d/log4j-slf4j2-impl-2.26.0.jar:/modules-2/files-2.1/org.jcraft/jorbis/0.0.17/8872d22b293e8f5d7d56ff92be966e6dc28ebdc6/jorbis-0.0.17.jar:/modules-2/files-2.1/org.joml/joml/1.10.8/fc0a71dad90a2cf41d82a76156a0e700af8e4f8d/joml-1.10.8.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-freetype/3.4.1/caa75a37e857efc9b0686e434d708d6420c5b6ea/lwjgl-freetype-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-freetype/3.4.1/61cb2d85e1838bca1a0b664f54e818bc68deb2ef/lwjgl-freetype-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-freetype/3.4.1/cce5a86b4a7d17817fe8ea0296302a4353acf2d5/lwjgl-freetype-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-glfw/3.4.1/a782b1ddd175c9107bf300fd92920579ea65e2a4/lwjgl-glfw-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-glfw/3.4.1/3c8538942f58377d59cd7be2dc164ba71a53868a/lwjgl-glfw-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-glfw/3.4.1/ef1f8efca5a60ba3512bc4982b88e446ecc43378/lwjgl-glfw-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-jemalloc/3.4.1/16b663092854fc6adfe0a941e61cae2bb2e437b6/lwjgl-jemalloc-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-jemalloc/3.4.1/581b4d542e841015ce3265eed0495e2cde15b1d0/lwjgl-jemalloc-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-jemalloc/3.4.1/dcd7e3f9a2ca386e8c5b8f508a8511d9dd63bab0/lwjgl-jemalloc-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-openal/3.4.1/8508bd60589de0539aa465b78fcf838efd07ae9a/lwjgl-openal-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-openal/3.4.1/a4dc57b7b0880d3fffb4d0b61649f45712bccc93/lwjgl-openal-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-openal/3.4.1/1c709a38c4a0e86aae96db7b8c78432307f2322a/lwjgl-openal-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-opengl/3.4.1/830412cab823c029cda6b9729f9d2ed36cf79959/lwjgl-opengl-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-opengl/3.4.1/ba18fc6012b88494ee893506934b92b01c4ef14b/lwjgl-opengl-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-opengl/3.4.1/35b5550058de4960525f465243bd01805f04fd8b/lwjgl-opengl-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-shaderc/3.4.1/5c02c88f0d879529014c78463b76f43fdecfd272/lwjgl-shaderc-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-shaderc/3.4.1/1d7bbdba70cf29c42978f6c0c1bdef945b922072/lwjgl-shaderc-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-shaderc/3.4.1/48aa2727e8616154d399d4dab0d8e8479741fa4f/lwjgl-shaderc-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-spvc/3.4.1/188553592e97b5ab2dba54a1b403ee80b48dad4c/lwjgl-spvc-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-spvc/3.4.1/2eeebd6d5bae966bfffda9747eba744cfe839ae1/lwjgl-spvc-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-spvc/3.4.1/a4f66638d28129eba0babd8fdc4385427a5ea83e/lwjgl-spvc-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-stb/3.4.1/f077c3dafc31924fbe8acb0b913f08977ba27f8e/lwjgl-stb-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-stb/3.4.1/fd1ea36b717b0832babca09324a6cfc43906e2aa/lwjgl-stb-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-stb/3.4.1/da554e04f819f09b0f3473bd931628ebf557965e/lwjgl-stb-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-tinyfd/3.4.1/562697d40dbd2ed0424bf24dcf65d51170f81adf/lwjgl-tinyfd-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-tinyfd/3.4.1/211ae9e8720e8f10f2ce85a118fa7bd5ee71584b/lwjgl-tinyfd-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-tinyfd/3.4.1/7bcde70f6164b2e72f84cac5257b7e9877b88510/lwjgl-tinyfd-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vma/3.4.1/2c54ce10154feb1ede4d23c5947438cdbfdcc003/lwjgl-vma-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vma/3.4.1/a130a9e4f96c83063f749e1dcc7065e0dffb3936/lwjgl-vma-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vma/3.4.1/9451dc1067716bc4125cdba65a7096e465f4d0e5/lwjgl-vma-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vulkan/3.4.1/d0601fdc38890755e5638048c14cc0f7b990964b/lwjgl-vulkan-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vulkan/3.4.1/140c7fd3e0fdbcc625c92be9328301c555035905/lwjgl-vulkan-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vulkan/3.4.1/2c933bf617cb8a174af26585efda4778b59e6d44/lwjgl-vulkan-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl/3.4.1/129e06a04f93992cb2a45172435b21fc4b60dd7d/lwjgl-3.4.1-unsafe.jar:/modules-2/files-2.1/org.lwjgl/lwjgl/3.4.1/b034fd9a67cb8646c01af7efcefcb93be835542b/lwjgl-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl/3.4.1/b4cbdef4818abd714ee66985344c0949fd1cd6d6/lwjgl-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.slf4j/slf4j-api/2.0.17/d9e58ac9c7779ba3bf8142aff6c830617a7fe60f/slf4j-api-2.0.17.jar:/modules-2/files-2.1/org.ow2.asm/asm-util/9.5/64b5a1fc8c1b15ed2efd6a063e976bc8d3dc5ffe/asm-util-9.5.jar:/modules-2/files-2.1/org.ow2.asm/asm-analysis/9.5/490bacc77de7cbc0be1a30bb3471072d705be4a4/asm-analysis-9.5.jar:/modules-2/files-2.1/org.ow2.asm/asm-tree/9.5/fd33c8b6373abaa675be407082fdfda35021254a/asm-tree-9.5.jar:/modules-2/files-2.1/org.ow2.asm/asm/9.5/dc6ea1875f4d64fbc85e1691c95b96a3d8569c90/asm-9.5.jar:/modules-2/files-2.1/net.neoforged/srgutils/1.0.10/abb471237b33b19f040ada00bfbad1ec45b949b6/srgutils-1.0.10.jar:/modules-2/files-2.1/io.netty/netty-transport-native-kqueue/4.2.15.Final/8ea0ef3eb716d821332e4b4926825a4b7c1a6d38/netty-transport-native-kqueue-4.2.15.Final-osx-aarch_64.jar:/modules-2/files-2.1/io.netty/netty-transport-native-kqueue/4.2.15.Final/4245380831515fb4eca18d32477a27fbb8f7b8f4/netty-transport-native-kqueue-4.2.15.Final-osx-x86_64.jar:/build/classes/java/main:/build/resources/main org.openjdk.jmh.Main .*net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix -p itemCount=100000 -p implementation=baked-suffix-array-index -f 1 -wi 2 -i 8 -w 500ms -r 500ms -rf json -rff /build/reports/jmh/adaptive-jmh-passes/pass-03-group-004.json -o /build/reports/jmh/adaptive-jmh-passes/pass-03-group-004.txt -foe true -p typedCharacterCount=1,4 -prof gc # JMH version: 1.37 # VM version: JDK 25, OpenJDK 64-Bit Server VM, 25+36-b176.4 # VM invoker: java # VM options: # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 2 iterations, 500 ms each # Measurement: 8 iterations, 500 ms each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix # Parameters: (implementation = baked-suffix-array-index, itemCount = 100000, typedCharacterCount = 1) # Run progress: 0.00% complete, ETA 00:00:10 # Fork: 1 of 1 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::objectFieldOffset has been called by org.openjdk.jmh.util.Utils (file:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar) WARNING: Please consider reporting this to the maintainers of class org.openjdk.jmh.util.Utils WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release # Warmup Iteration 1: 70.784 ms/op # Warmup Iteration 2: 38.319 ms/op Iteration 1: 38.376 ms/op gc.alloc.rate: 162.811 MB/sec gc.alloc.rate.norm: 6554552.500 B/op gc.count: 4.000 counts gc.time: 20.000 ms Iteration 2: 34.098 ms/op gc.alloc.rate: 164.194 MB/sec gc.alloc.rate.norm: 5873026.667 B/op gc.count: ≈ 0 counts Iteration 3: 36.708 ms/op gc.alloc.rate: 171.041 MB/sec gc.alloc.rate.norm: 6592119.429 B/op gc.count: 1.000 counts gc.time: 13.000 ms Iteration 4: 37.593 ms/op gc.alloc.rate: 167.176 MB/sec gc.alloc.rate.norm: 6592113.143 B/op gc.count: ≈ 0 counts Iteration 5: 33.758 ms/op gc.alloc.rate: 189.543 MB/sec gc.alloc.rate.norm: 6711893.333 B/op gc.count: 4.000 counts gc.time: 26.000 ms Iteration 6: 30.597 ms/op gc.alloc.rate: 199.894 MB/sec gc.alloc.rate.norm: 6415717.176 B/op gc.count: ≈ 0 counts Iteration 7: 35.390 ms/op gc.alloc.rate: 180.793 MB/sec gc.alloc.rate.norm: 6711895.467 B/op gc.count: 5.000 counts gc.time: 36.000 ms Iteration 8: 32.287 ms/op gc.alloc.rate: 193.532 MB/sec gc.alloc.rate.norm: 6554552.500 B/op gc.count: 1.000 counts gc.time: 9.000 ms Result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix": 34.851 ±(99.9%) 5.116 ms/op [Average] (min, avg, max) = (30.597, 34.851, 38.376), stdev = 2.676 CI (99.9%): [29.735, 39.967] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate": 178.623 ±(99.9%) 27.475 MB/sec [Average] (min, avg, max) = (162.811, 178.623, 199.894), stdev = 14.370 CI (99.9%): [151.148, 206.098] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm": 6500733.777 ±(99.9%) 517554.867 B/op [Average] (min, avg, max) = (5873026.667, 6500733.777, 6711895.467), stdev = 270691.203 CI (99.9%): [5983178.909, 7018288.644] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count": 15.000 ±(99.9%) 0.001 counts [Sum] (min, avg, max) = (≈ 0, 1.875, 5.000), stdev = 2.100 CI (99.9%): [15.000, 15.000] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time": 104.000 ±(99.9%) 0.001 ms [Sum] (min, avg, max) = (≈ 0, 13.000, 36.000), stdev = 13.470 CI (99.9%): [104.000, 104.000] (assumes normal distribution) # JMH version: 1.37 # VM version: JDK 25, OpenJDK 64-Bit Server VM, 25+36-b176.4 # VM invoker: java # VM options: # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 2 iterations, 500 ms each # Measurement: 8 iterations, 500 ms each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix # Parameters: (implementation = baked-suffix-array-index, itemCount = 100000, typedCharacterCount = 4) # Run progress: 50.00% complete, ETA 00:00:07 # Fork: 1 of 1 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::objectFieldOffset has been called by org.openjdk.jmh.util.Utils (file:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar) WARNING: Please consider reporting this to the maintainers of class org.openjdk.jmh.util.Utils WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release # Warmup Iteration 1: 0.374 ms/op # Warmup Iteration 2: 0.361 ms/op Iteration 1: 0.372 ms/op gc.alloc.rate: 472.162 MB/sec gc.alloc.rate.norm: 184460.239 B/op gc.count: 1.000 counts gc.time: ≈ 0 ms Iteration 2: 0.357 ms/op gc.alloc.rate: 494.038 MB/sec gc.alloc.rate.norm: 184837.098 B/op gc.count: ≈ 0 counts Iteration 3: 0.374 ms/op gc.alloc.rate: 469.678 MB/sec gc.alloc.rate.norm: 184207.290 B/op gc.count: 1.000 counts gc.time: 1.000 ms Iteration 4: 0.341 ms/op gc.alloc.rate: 515.044 MB/sec gc.alloc.rate.norm: 184332.980 B/op gc.count: 1.000 counts gc.time: 1.000 ms Iteration 5: 0.355 ms/op gc.alloc.rate: 494.992 MB/sec gc.alloc.rate.norm: 184467.876 B/op gc.count: 1.000 counts gc.time: ≈ 0 ms Iteration 6: 0.327 ms/op gc.alloc.rate: 537.072 MB/sec gc.alloc.rate.norm: 184387.898 B/op gc.count: 1.000 counts gc.time: 1.000 ms Iteration 7: 0.365 ms/op gc.alloc.rate: 482.613 MB/sec gc.alloc.rate.norm: 184746.306 B/op gc.count: 1.000 counts gc.time: ≈ 0 ms Iteration 8: 0.354 ms/op gc.alloc.rate: 496.783 MB/sec gc.alloc.rate.norm: 184274.815 B/op gc.count: 1.000 counts gc.time: 1.000 ms Result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix": 0.356 ±(99.9%) 0.030 ms/op [Average] (min, avg, max) = (0.327, 0.356, 0.374), stdev = 0.016 CI (99.9%): [0.326, 0.386] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate": 495.298 ±(99.9%) 42.701 MB/sec [Average] (min, avg, max) = (469.678, 495.298, 537.072), stdev = 22.333 CI (99.9%): [452.597, 537.998] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm": 184464.313 ±(99.9%) 423.589 B/op [Average] (min, avg, max) = (184207.290, 184464.313, 184837.098), stdev = 221.545 CI (99.9%): [184040.723, 184887.902] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count": 7.000 ±(99.9%) 0.001 counts [Sum] (min, avg, max) = (≈ 0, 0.875, 1.000), stdev = 0.354 CI (99.9%): [7.000, 7.000] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time": 4.000 ±(99.9%) 0.001 ms [Sum] (min, avg, max) = (≈ 0, 0.500, 1.000), stdev = 0.535 CI (99.9%): [4.000, 4.000] (assumes normal distribution) # Run complete. Total time: 00:00:15 REMEMBER: The numbers below are just data. To gain reusable insights, you need to follow up on why the numbers are the way they are. Use profilers (see -prof, -lprof), design factorial experiments, perform baseline and negative tests that provide experimental control, make sure the benchmarking environment is safe on JVM/OS/HW level, ask for reviews from the domain experts. Do not assume the numbers tell you what you want them to tell. NOTE: Current JVM experimentally supports Compiler Blackholes, and they are in use. Please exercise extra caution when trusting the results, look into the generated code to check the benchmark still works, and factor in a small probability of new VM bugs. Additionally, while comparisons between different JVMs are already problematic, the performance difference caused by different Blackhole modes can be very significant. Please make sure you use the consistent Blackhole mode for comparisons. Benchmark (implementation) (itemCount) (typedCharacterCount) Mode Cnt Score Error Units LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix baked-suffix-array-index 100000 1 avgt 8 34.851 ± 5.116 ms/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate baked-suffix-array-index 100000 1 avgt 8 178.623 ± 27.475 MB/sec LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm baked-suffix-array-index 100000 1 avgt 8 6500733.777 ± 517554.867 B/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count baked-suffix-array-index 100000 1 avgt 8 15.000 counts LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time baked-suffix-array-index 100000 1 avgt 8 104.000 ms LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix baked-suffix-array-index 100000 4 avgt 8 0.356 ± 0.030 ms/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate baked-suffix-array-index 100000 4 avgt 8 495.298 ± 42.701 MB/sec LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm baked-suffix-array-index 100000 4 avgt 8 184464.313 ± 423.589 B/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count baked-suffix-array-index 100000 4 avgt 8 7.000 counts LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time baked-suffix-array-index 100000 4 avgt 8 4.000 ms Benchmark result is saved to /build/reports/jmh/adaptive-jmh-passes/pass-03-group-004.json # Adaptive pass 3, group 5 # Command: java -cp /build/classes/java/benchmark:/build/resources/benchmark:/build/moddev/artifacts/vanilla-26.2-2.jar:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar:/modules-2/files-2.1/com.abahgat/suffixtree/2.0.0/ffe2c29796add2624d2e0b9f33e72421eb5c5ea5/suffixtree-2.0.0.jar:/modules-2/files-2.1/net.mezzdev/suffixtree/1.3.0/1a1b87af70a1631ff6d6c9d49c63564aadecb176/suffixtree-1.3.0.jar:/modules-2/files-2.1/net.mezzdev/baked-substring-index/0.1.0/4f9fbd9eb54fdb1b8ec40a83297f4e8f4479eb7c/baked-substring-index-0.1.0.jar:/modules-2/files-2.1/net.mezzdev/baked-suffix-array-index/0.1.0/cd5e5ffbcee030d149e7a5a70e151a06158bd643/baked-suffix-array-index-0.1.0.jar:/modules-2/files-2.1/net.neoforged/mergetool/2.0.7/793b18456e92c4a7f66d9b5d8bf7a9c1c7a20b20/mergetool-2.0.7-api.jar:/modules-2/files-2.1/net.sf.jopt-simple/jopt-simple/5.0.4/4fdac2fbe92dfad86aa6e9301736f6b4342a3f5c/jopt-simple-5.0.4.jar:/modules-2/files-2.1/org.apache.commons/commons-math3/3.6.1/e4ba98f1d4b3c80ec46392f25e094a6a2e58fcbf/commons-math3-3.6.1.jar:/modules-2/files-2.1/com.google.code.findbugs/jsr305/3.0.2/25ea2e8b0c338a877313bd4672d3fe056ea78f0d/jsr305-3.0.2.jar:/modules-2/files-2.1/org.jspecify/jspecify/1.0.0/7425a601c1c7ec76645a78d22b8c6a627edee507/jspecify-1.0.0.jar:/modules-2/files-2.1/org.jetbrains/annotations/26.0.2-1/c7ce3cdeda3d18909368dfe5977332dfad326c6d/annotations-26.0.2-1.jar:/modules-2/files-2.1/ca.weblite/java-objc-bridge/1.1/1227f9e0666314f9de41477e3ec277e542ed7f7b/java-objc-bridge-1.1.jar:/modules-2/files-2.1/at.yawk.lz4/lz4-java/1.10.1/f541d7f910fe3d76f38f799c507c48cc81b12ecb/lz4-java-1.10.1.jar:/modules-2/files-2.1/com.azure/azure-json/1.4.0/fcc1d354dbc3e0300e5276b1bf124d0247799cd8/azure-json-1.4.0.jar:/modules-2/files-2.1/com.github.oshi/oshi-core/6.9.0/3224870731860cfcd7744581a05b559e94291e7/oshi-core-6.9.0.jar:/modules-2/files-2.1/com.google.code.gson/gson/2.14.0/efc0e34ede4e3204eaefb84a00e55e8c86634382/gson-2.14.0.jar:/modules-2/files-2.1/com.google.guava/failureaccess/1.0.3/aeaffd00d57023a2c947393ed251f0354f0985fc/failureaccess-1.0.3.jar:/modules-2/files-2.1/com.google.guava/guava/33.6.0-jre/c376b13067cc99a5774403530953f7b05a91e218/guava-33.6.0-jre.jar:/modules-2/files-2.1/com.ibm.icu/icu4j/78.3/6a851a53bb1f25689fc418dcc8935b0d93580adf/icu4j-78.3.jar:/modules-2/files-2.1/com.microsoft.azure/msal4j/1.24.1/c233f2d047b9755f7041adf21a858c680e4c9242/msal4j-1.24.1.jar:/modules-2/files-2.1/com.mojang/authlib/9.0.75/d61056a234d5e4b272e09d59b0713f80d6c0b6af/authlib-9.0.75.jar:/modules-2/files-2.1/com.mojang/blocklist/1.0.10/5c685c5ffa94c4cd39496c7184c1d122e515ecef/blocklist-1.0.10.jar:/modules-2/files-2.1/com.mojang/brigadier/1.3.10/d15b53a14cf20fdcaa98f731af5dda654452c010/brigadier-1.3.10.jar:/modules-2/files-2.1/com.mojang/datafixerupper/10.0.21/b6b2ae770c02e0c1eb90f9985b151e9085a38d0b/datafixerupper-10.0.21.jar:/modules-2/files-2.1/com.mojang/jtracy/1.0.37/a3fb649b2e2b2288d2978f0b0bc3d83f62809d1e/jtracy-1.0.37.jar:/modules-2/files-2.1/com.mojang/jtracy/1.0.37/a99fcb63b72fb623534d0ceb71bda4bed9b55b4c/jtracy-1.0.37-natives-macos.jar:/modules-2/files-2.1/com.mojang/jtracy/1.0.37/c8e971da5150aa33283c5bf4097154c0da554fb9/jtracy-1.0.37-natives-macos-arm64.jar:/modules-2/files-2.1/com.mojang/logging/1.7.12/351cea64a5233361327d8d54c44277041beed97f/logging-1.7.12.jar:/modules-2/files-2.1/com.mojang/patchy/2.2.10/da05971b07cbb379d002cf7eaec6a2048211fefc/patchy-2.2.10.jar:/modules-2/files-2.1/com.mojang/text2speech/1.19.12/2e517a75c79d34d32de2b5d68422150836c2133e/text2speech-1.19.12.jar:/modules-2/files-2.1/commons-codec/commons-codec/1.22.0/6b3eb4beb7058c2a638f5f17bcb388649fd339dd/commons-codec-1.22.0.jar:/modules-2/files-2.1/commons-io/commons-io/2.20.0/36f3474daec2849c149e877614e7f979b2082cd2/commons-io-2.20.0.jar:/modules-2/files-2.1/io.netty/netty-buffer/4.2.15.Final/2beb620803bf871cda2dd5d46b8f831e8015dd34/netty-buffer-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-codec-base/4.2.15.Final/e97149fdd5fb04858efa90e314651c8d700dc68b/netty-codec-base-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-codec-compression/4.2.15.Final/89fc4a20b7ae6af974304b1695405e62c4f9b16d/netty-codec-compression-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-codec-http/4.2.15.Final/e611826aa054371bb9a17f27bdb05755a4cac5f0/netty-codec-http-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-common/4.2.15.Final/7222492c1af9c2d4d78d521eea340a619e242fda/netty-common-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-handler/4.2.15.Final/d5344afd1148e3b9927a74be019605ebb0937a93/netty-handler-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-resolver/4.2.15.Final/b961a16d379b508b473e064ba06842bba280f4e3/netty-resolver-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-transport-classes-epoll/4.2.15.Final/44bafba9c9993800e955b365bba4981326f3f3b1/netty-transport-classes-epoll-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-transport-classes-kqueue/4.2.15.Final/f248656bb907607c5a41c7b61fd918a97db79250/netty-transport-classes-kqueue-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-transport-native-unix-common/4.2.15.Final/efb6943b4de9e0226a5ac35330f232605424af02/netty-transport-native-unix-common-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-transport/4.2.15.Final/a000c3a6196ee40207b73ac619dcb339409dd62f/netty-transport-4.2.15.Final.jar:/modules-2/files-2.1/it.unimi.dsi/fastutil/8.5.18/a6cff377eecc19c2037bf31568a6d7106b50ba1f/fastutil-8.5.18.jar:/modules-2/files-2.1/net.java.dev.jna/jna-platform/5.17.0/a4934c44d25a9d8c2ddf4203affd20330cb3426f/jna-platform-5.17.0.jar:/modules-2/files-2.1/net.java.dev.jna/jna/5.17.0/33d12735bef894440780fce64f9758d420c7bae2/jna-5.17.0.jar:/modules-2/files-2.1/org.apache.commons/commons-compress/1.28.0/e482f2c7a88dac3c497e96aa420b6a769f59c8d7/commons-compress-1.28.0.jar:/modules-2/files-2.1/org.apache.commons/commons-lang3/3.20.0/65897b3e5731220962e659e001904af3c3cbeba9/commons-lang3-3.20.0.jar:/modules-2/files-2.1/org.apache.logging.log4j/log4j-api/2.26.0/ad52af0ecf054a7e3f275a2e180ee06d9c490951/log4j-api-2.26.0.jar:/modules-2/files-2.1/org.apache.logging.log4j/log4j-core/2.26.0/d267ca60b27ddb075e0b4e75e7875859717bf85f/log4j-core-2.26.0.jar:/modules-2/files-2.1/org.apache.logging.log4j/log4j-slf4j2-impl/2.26.0/668c0f0e813d83f00a7182533aa658ec7e7a0a0d/log4j-slf4j2-impl-2.26.0.jar:/modules-2/files-2.1/org.jcraft/jorbis/0.0.17/8872d22b293e8f5d7d56ff92be966e6dc28ebdc6/jorbis-0.0.17.jar:/modules-2/files-2.1/org.joml/joml/1.10.8/fc0a71dad90a2cf41d82a76156a0e700af8e4f8d/joml-1.10.8.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-freetype/3.4.1/caa75a37e857efc9b0686e434d708d6420c5b6ea/lwjgl-freetype-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-freetype/3.4.1/61cb2d85e1838bca1a0b664f54e818bc68deb2ef/lwjgl-freetype-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-freetype/3.4.1/cce5a86b4a7d17817fe8ea0296302a4353acf2d5/lwjgl-freetype-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-glfw/3.4.1/a782b1ddd175c9107bf300fd92920579ea65e2a4/lwjgl-glfw-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-glfw/3.4.1/3c8538942f58377d59cd7be2dc164ba71a53868a/lwjgl-glfw-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-glfw/3.4.1/ef1f8efca5a60ba3512bc4982b88e446ecc43378/lwjgl-glfw-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-jemalloc/3.4.1/16b663092854fc6adfe0a941e61cae2bb2e437b6/lwjgl-jemalloc-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-jemalloc/3.4.1/581b4d542e841015ce3265eed0495e2cde15b1d0/lwjgl-jemalloc-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-jemalloc/3.4.1/dcd7e3f9a2ca386e8c5b8f508a8511d9dd63bab0/lwjgl-jemalloc-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-openal/3.4.1/8508bd60589de0539aa465b78fcf838efd07ae9a/lwjgl-openal-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-openal/3.4.1/a4dc57b7b0880d3fffb4d0b61649f45712bccc93/lwjgl-openal-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-openal/3.4.1/1c709a38c4a0e86aae96db7b8c78432307f2322a/lwjgl-openal-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-opengl/3.4.1/830412cab823c029cda6b9729f9d2ed36cf79959/lwjgl-opengl-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-opengl/3.4.1/ba18fc6012b88494ee893506934b92b01c4ef14b/lwjgl-opengl-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-opengl/3.4.1/35b5550058de4960525f465243bd01805f04fd8b/lwjgl-opengl-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-shaderc/3.4.1/5c02c88f0d879529014c78463b76f43fdecfd272/lwjgl-shaderc-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-shaderc/3.4.1/1d7bbdba70cf29c42978f6c0c1bdef945b922072/lwjgl-shaderc-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-shaderc/3.4.1/48aa2727e8616154d399d4dab0d8e8479741fa4f/lwjgl-shaderc-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-spvc/3.4.1/188553592e97b5ab2dba54a1b403ee80b48dad4c/lwjgl-spvc-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-spvc/3.4.1/2eeebd6d5bae966bfffda9747eba744cfe839ae1/lwjgl-spvc-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-spvc/3.4.1/a4f66638d28129eba0babd8fdc4385427a5ea83e/lwjgl-spvc-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-stb/3.4.1/f077c3dafc31924fbe8acb0b913f08977ba27f8e/lwjgl-stb-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-stb/3.4.1/fd1ea36b717b0832babca09324a6cfc43906e2aa/lwjgl-stb-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-stb/3.4.1/da554e04f819f09b0f3473bd931628ebf557965e/lwjgl-stb-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-tinyfd/3.4.1/562697d40dbd2ed0424bf24dcf65d51170f81adf/lwjgl-tinyfd-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-tinyfd/3.4.1/211ae9e8720e8f10f2ce85a118fa7bd5ee71584b/lwjgl-tinyfd-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-tinyfd/3.4.1/7bcde70f6164b2e72f84cac5257b7e9877b88510/lwjgl-tinyfd-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vma/3.4.1/2c54ce10154feb1ede4d23c5947438cdbfdcc003/lwjgl-vma-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vma/3.4.1/a130a9e4f96c83063f749e1dcc7065e0dffb3936/lwjgl-vma-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vma/3.4.1/9451dc1067716bc4125cdba65a7096e465f4d0e5/lwjgl-vma-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vulkan/3.4.1/d0601fdc38890755e5638048c14cc0f7b990964b/lwjgl-vulkan-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vulkan/3.4.1/140c7fd3e0fdbcc625c92be9328301c555035905/lwjgl-vulkan-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vulkan/3.4.1/2c933bf617cb8a174af26585efda4778b59e6d44/lwjgl-vulkan-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl/3.4.1/129e06a04f93992cb2a45172435b21fc4b60dd7d/lwjgl-3.4.1-unsafe.jar:/modules-2/files-2.1/org.lwjgl/lwjgl/3.4.1/b034fd9a67cb8646c01af7efcefcb93be835542b/lwjgl-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl/3.4.1/b4cbdef4818abd714ee66985344c0949fd1cd6d6/lwjgl-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.slf4j/slf4j-api/2.0.17/d9e58ac9c7779ba3bf8142aff6c830617a7fe60f/slf4j-api-2.0.17.jar:/modules-2/files-2.1/org.ow2.asm/asm-util/9.5/64b5a1fc8c1b15ed2efd6a063e976bc8d3dc5ffe/asm-util-9.5.jar:/modules-2/files-2.1/org.ow2.asm/asm-analysis/9.5/490bacc77de7cbc0be1a30bb3471072d705be4a4/asm-analysis-9.5.jar:/modules-2/files-2.1/org.ow2.asm/asm-tree/9.5/fd33c8b6373abaa675be407082fdfda35021254a/asm-tree-9.5.jar:/modules-2/files-2.1/org.ow2.asm/asm/9.5/dc6ea1875f4d64fbc85e1691c95b96a3d8569c90/asm-9.5.jar:/modules-2/files-2.1/net.neoforged/srgutils/1.0.10/abb471237b33b19f040ada00bfbad1ec45b949b6/srgutils-1.0.10.jar:/modules-2/files-2.1/io.netty/netty-transport-native-kqueue/4.2.15.Final/8ea0ef3eb716d821332e4b4926825a4b7c1a6d38/netty-transport-native-kqueue-4.2.15.Final-osx-aarch_64.jar:/modules-2/files-2.1/io.netty/netty-transport-native-kqueue/4.2.15.Final/4245380831515fb4eca18d32477a27fbb8f7b8f4/netty-transport-native-kqueue-4.2.15.Final-osx-x86_64.jar:/build/classes/java/main:/build/resources/main org.openjdk.jmh.Main .*net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix -p itemCount=100000 -p implementation=minecraft-suffix-array -f 1 -wi 2 -i 8 -w 500ms -r 500ms -rf json -rff /build/reports/jmh/adaptive-jmh-passes/pass-03-group-005.json -o /build/reports/jmh/adaptive-jmh-passes/pass-03-group-005.txt -foe true -p typedCharacterCount=1,3 -prof gc # JMH version: 1.37 # VM version: JDK 25, OpenJDK 64-Bit Server VM, 25+36-b176.4 # VM invoker: java # VM options: # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 2 iterations, 500 ms each # Measurement: 8 iterations, 500 ms each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix # Parameters: (implementation = minecraft-suffix-array, itemCount = 100000, typedCharacterCount = 1) # Run progress: 0.00% complete, ETA 00:00:10 # Fork: 1 of 1 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::objectFieldOffset has been called by org.openjdk.jmh.util.Utils (file:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar) WARNING: Please consider reporting this to the maintainers of class org.openjdk.jmh.util.Utils WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release # Warmup Iteration 1: 27.649 ms/op # Warmup Iteration 2: 27.376 ms/op Iteration 1: 22.223 ms/op gc.alloc.rate: 640.237 MB/sec gc.alloc.rate.norm: 14928824.696 B/op gc.count: 3.000 counts gc.time: 25.000 ms Iteration 2: 26.413 ms/op gc.alloc.rate: 625.157 MB/sec gc.alloc.rate.norm: 17321587.200 B/op gc.count: 2.000 counts gc.time: 49.000 ms Iteration 3: 24.244 ms/op gc.alloc.rate: 627.440 MB/sec gc.alloc.rate.norm: 15956635.048 B/op gc.count: ≈ 0 counts Iteration 4: 21.315 ms/op gc.alloc.rate: 657.952 MB/sec gc.alloc.rate.norm: 14711759.333 B/op gc.count: ≈ 0 counts Iteration 5: 31.612 ms/op gc.alloc.rate: 523.210 MB/sec gc.alloc.rate.norm: 17348471.529 B/op gc.count: 4.000 counts gc.time: 96.000 ms Iteration 6: 24.290 ms/op gc.alloc.rate: 651.519 MB/sec gc.alloc.rate.norm: 16599401.818 B/op gc.count: ≈ 0 counts Iteration 7: 33.247 ms/op gc.alloc.rate: 521.150 MB/sec gc.alloc.rate.norm: 18174534.737 B/op gc.count: 1.000 counts gc.time: 87.000 ms Iteration 8: 20.502 ms/op gc.alloc.rate: 662.445 MB/sec gc.alloc.rate.norm: 14246775.040 B/op gc.count: ≈ 0 counts Result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix": 25.481 ±(99.9%) 8.982 ms/op [Average] (min, avg, max) = (20.502, 25.481, 33.247), stdev = 4.698 CI (99.9%): [16.499, 34.463] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate": 613.639 ±(99.9%) 110.883 MB/sec [Average] (min, avg, max) = (521.150, 613.639, 662.445), stdev = 57.994 CI (99.9%): [502.756, 724.521] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm": 16160998.675 ±(99.9%) 2735446.584 B/op [Average] (min, avg, max) = (14246775.040, 16160998.675, 18174534.737), stdev = 1430691.456 CI (99.9%): [13425552.091, 18896445.259] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count": 10.000 ±(99.9%) 0.001 counts [Sum] (min, avg, max) = (≈ 0, 1.250, 4.000), stdev = 1.581 CI (99.9%): [10.000, 10.000] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time": 257.000 ±(99.9%) 0.001 ms [Sum] (min, avg, max) = (≈ 0, 32.125, 96.000), stdev = 40.629 CI (99.9%): [257.000, 257.000] (assumes normal distribution) # JMH version: 1.37 # VM version: JDK 25, OpenJDK 64-Bit Server VM, 25+36-b176.4 # VM invoker: java # VM options: # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 2 iterations, 500 ms each # Measurement: 8 iterations, 500 ms each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix # Parameters: (implementation = minecraft-suffix-array, itemCount = 100000, typedCharacterCount = 3) # Run progress: 50.00% complete, ETA 00:00:09 # Fork: 1 of 1 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::objectFieldOffset has been called by org.openjdk.jmh.util.Utils (file:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar) WARNING: Please consider reporting this to the maintainers of class org.openjdk.jmh.util.Utils WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release # Warmup Iteration 1: 1.154 ms/op # Warmup Iteration 2: 1.026 ms/op Iteration 1: 0.952 ms/op gc.alloc.rate: 990.816 MB/sec gc.alloc.rate.norm: 989739.119 B/op gc.count: 1.000 counts gc.time: 1.000 ms Iteration 2: 1.012 ms/op gc.alloc.rate: 932.031 MB/sec gc.alloc.rate.norm: 989108.525 B/op gc.count: 1.000 counts gc.time: 2.000 ms Iteration 3: 0.982 ms/op gc.alloc.rate: 963.300 MB/sec gc.alloc.rate.norm: 992578.361 B/op gc.count: ≈ 0 counts Iteration 4: 0.984 ms/op gc.alloc.rate: 958.278 MB/sec gc.alloc.rate.norm: 989347.672 B/op gc.count: 1.000 counts gc.time: ≈ 0 ms Iteration 5: 0.961 ms/op gc.alloc.rate: 978.635 MB/sec gc.alloc.rate.norm: 985994.616 B/op gc.count: ≈ 0 counts Iteration 6: 0.974 ms/op gc.alloc.rate: 968.971 MB/sec gc.alloc.rate.norm: 989521.821 B/op gc.count: 1.000 counts gc.time: 1.000 ms Iteration 7: 0.947 ms/op gc.alloc.rate: 996.498 MB/sec gc.alloc.rate.norm: 989571.388 B/op gc.count: 1.000 counts gc.time: 1.000 ms Iteration 8: 0.978 ms/op gc.alloc.rate: 963.506 MB/sec gc.alloc.rate.norm: 989347.152 B/op gc.count: ≈ 0 counts Result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix": 0.974 ±(99.9%) 0.040 ms/op [Average] (min, avg, max) = (0.947, 0.974, 1.012), stdev = 0.021 CI (99.9%): [0.934, 1.013] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate": 969.004 ±(99.9%) 38.710 MB/sec [Average] (min, avg, max) = (932.031, 969.004, 996.498), stdev = 20.246 CI (99.9%): [930.295, 1007.714] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm": 989401.082 ±(99.9%) 3385.586 B/op [Average] (min, avg, max) = (985994.616, 989401.082, 992578.361), stdev = 1770.727 CI (99.9%): [986015.496, 992786.668] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count": 5.000 ±(99.9%) 0.001 counts [Sum] (min, avg, max) = (≈ 0, 0.625, 1.000), stdev = 0.518 CI (99.9%): [5.000, 5.000] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time": 5.000 ±(99.9%) 0.001 ms [Sum] (min, avg, max) = (≈ 0, 0.625, 2.000), stdev = 0.744 CI (99.9%): [5.000, 5.000] (assumes normal distribution) # Run complete. Total time: 00:00:19 REMEMBER: The numbers below are just data. To gain reusable insights, you need to follow up on why the numbers are the way they are. Use profilers (see -prof, -lprof), design factorial experiments, perform baseline and negative tests that provide experimental control, make sure the benchmarking environment is safe on JVM/OS/HW level, ask for reviews from the domain experts. Do not assume the numbers tell you what you want them to tell. NOTE: Current JVM experimentally supports Compiler Blackholes, and they are in use. Please exercise extra caution when trusting the results, look into the generated code to check the benchmark still works, and factor in a small probability of new VM bugs. Additionally, while comparisons between different JVMs are already problematic, the performance difference caused by different Blackhole modes can be very significant. Please make sure you use the consistent Blackhole mode for comparisons. Benchmark (implementation) (itemCount) (typedCharacterCount) Mode Cnt Score Error Units LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix minecraft-suffix-array 100000 1 avgt 8 25.481 ± 8.982 ms/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate minecraft-suffix-array 100000 1 avgt 8 613.639 ± 110.883 MB/sec LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm minecraft-suffix-array 100000 1 avgt 8 16160998.675 ± 2735446.584 B/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count minecraft-suffix-array 100000 1 avgt 8 10.000 counts LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time minecraft-suffix-array 100000 1 avgt 8 257.000 ms LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix minecraft-suffix-array 100000 3 avgt 8 0.974 ± 0.040 ms/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate minecraft-suffix-array 100000 3 avgt 8 969.004 ± 38.710 MB/sec LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm minecraft-suffix-array 100000 3 avgt 8 989401.082 ± 3385.586 B/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count minecraft-suffix-array 100000 3 avgt 8 5.000 counts LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time minecraft-suffix-array 100000 3 avgt 8 5.000 ms Benchmark result is saved to /build/reports/jmh/adaptive-jmh-passes/pass-03-group-005.json # Adaptive pass 4, group 1 # Command: java -cp /build/classes/java/benchmark:/build/resources/benchmark:/build/moddev/artifacts/vanilla-26.2-2.jar:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar:/modules-2/files-2.1/com.abahgat/suffixtree/2.0.0/ffe2c29796add2624d2e0b9f33e72421eb5c5ea5/suffixtree-2.0.0.jar:/modules-2/files-2.1/net.mezzdev/suffixtree/1.3.0/1a1b87af70a1631ff6d6c9d49c63564aadecb176/suffixtree-1.3.0.jar:/modules-2/files-2.1/net.mezzdev/baked-substring-index/0.1.0/4f9fbd9eb54fdb1b8ec40a83297f4e8f4479eb7c/baked-substring-index-0.1.0.jar:/modules-2/files-2.1/net.mezzdev/baked-suffix-array-index/0.1.0/cd5e5ffbcee030d149e7a5a70e151a06158bd643/baked-suffix-array-index-0.1.0.jar:/modules-2/files-2.1/net.neoforged/mergetool/2.0.7/793b18456e92c4a7f66d9b5d8bf7a9c1c7a20b20/mergetool-2.0.7-api.jar:/modules-2/files-2.1/net.sf.jopt-simple/jopt-simple/5.0.4/4fdac2fbe92dfad86aa6e9301736f6b4342a3f5c/jopt-simple-5.0.4.jar:/modules-2/files-2.1/org.apache.commons/commons-math3/3.6.1/e4ba98f1d4b3c80ec46392f25e094a6a2e58fcbf/commons-math3-3.6.1.jar:/modules-2/files-2.1/com.google.code.findbugs/jsr305/3.0.2/25ea2e8b0c338a877313bd4672d3fe056ea78f0d/jsr305-3.0.2.jar:/modules-2/files-2.1/org.jspecify/jspecify/1.0.0/7425a601c1c7ec76645a78d22b8c6a627edee507/jspecify-1.0.0.jar:/modules-2/files-2.1/org.jetbrains/annotations/26.0.2-1/c7ce3cdeda3d18909368dfe5977332dfad326c6d/annotations-26.0.2-1.jar:/modules-2/files-2.1/ca.weblite/java-objc-bridge/1.1/1227f9e0666314f9de41477e3ec277e542ed7f7b/java-objc-bridge-1.1.jar:/modules-2/files-2.1/at.yawk.lz4/lz4-java/1.10.1/f541d7f910fe3d76f38f799c507c48cc81b12ecb/lz4-java-1.10.1.jar:/modules-2/files-2.1/com.azure/azure-json/1.4.0/fcc1d354dbc3e0300e5276b1bf124d0247799cd8/azure-json-1.4.0.jar:/modules-2/files-2.1/com.github.oshi/oshi-core/6.9.0/3224870731860cfcd7744581a05b559e94291e7/oshi-core-6.9.0.jar:/modules-2/files-2.1/com.google.code.gson/gson/2.14.0/efc0e34ede4e3204eaefb84a00e55e8c86634382/gson-2.14.0.jar:/modules-2/files-2.1/com.google.guava/failureaccess/1.0.3/aeaffd00d57023a2c947393ed251f0354f0985fc/failureaccess-1.0.3.jar:/modules-2/files-2.1/com.google.guava/guava/33.6.0-jre/c376b13067cc99a5774403530953f7b05a91e218/guava-33.6.0-jre.jar:/modules-2/files-2.1/com.ibm.icu/icu4j/78.3/6a851a53bb1f25689fc418dcc8935b0d93580adf/icu4j-78.3.jar:/modules-2/files-2.1/com.microsoft.azure/msal4j/1.24.1/c233f2d047b9755f7041adf21a858c680e4c9242/msal4j-1.24.1.jar:/modules-2/files-2.1/com.mojang/authlib/9.0.75/d61056a234d5e4b272e09d59b0713f80d6c0b6af/authlib-9.0.75.jar:/modules-2/files-2.1/com.mojang/blocklist/1.0.10/5c685c5ffa94c4cd39496c7184c1d122e515ecef/blocklist-1.0.10.jar:/modules-2/files-2.1/com.mojang/brigadier/1.3.10/d15b53a14cf20fdcaa98f731af5dda654452c010/brigadier-1.3.10.jar:/modules-2/files-2.1/com.mojang/datafixerupper/10.0.21/b6b2ae770c02e0c1eb90f9985b151e9085a38d0b/datafixerupper-10.0.21.jar:/modules-2/files-2.1/com.mojang/jtracy/1.0.37/a3fb649b2e2b2288d2978f0b0bc3d83f62809d1e/jtracy-1.0.37.jar:/modules-2/files-2.1/com.mojang/jtracy/1.0.37/a99fcb63b72fb623534d0ceb71bda4bed9b55b4c/jtracy-1.0.37-natives-macos.jar:/modules-2/files-2.1/com.mojang/jtracy/1.0.37/c8e971da5150aa33283c5bf4097154c0da554fb9/jtracy-1.0.37-natives-macos-arm64.jar:/modules-2/files-2.1/com.mojang/logging/1.7.12/351cea64a5233361327d8d54c44277041beed97f/logging-1.7.12.jar:/modules-2/files-2.1/com.mojang/patchy/2.2.10/da05971b07cbb379d002cf7eaec6a2048211fefc/patchy-2.2.10.jar:/modules-2/files-2.1/com.mojang/text2speech/1.19.12/2e517a75c79d34d32de2b5d68422150836c2133e/text2speech-1.19.12.jar:/modules-2/files-2.1/commons-codec/commons-codec/1.22.0/6b3eb4beb7058c2a638f5f17bcb388649fd339dd/commons-codec-1.22.0.jar:/modules-2/files-2.1/commons-io/commons-io/2.20.0/36f3474daec2849c149e877614e7f979b2082cd2/commons-io-2.20.0.jar:/modules-2/files-2.1/io.netty/netty-buffer/4.2.15.Final/2beb620803bf871cda2dd5d46b8f831e8015dd34/netty-buffer-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-codec-base/4.2.15.Final/e97149fdd5fb04858efa90e314651c8d700dc68b/netty-codec-base-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-codec-compression/4.2.15.Final/89fc4a20b7ae6af974304b1695405e62c4f9b16d/netty-codec-compression-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-codec-http/4.2.15.Final/e611826aa054371bb9a17f27bdb05755a4cac5f0/netty-codec-http-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-common/4.2.15.Final/7222492c1af9c2d4d78d521eea340a619e242fda/netty-common-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-handler/4.2.15.Final/d5344afd1148e3b9927a74be019605ebb0937a93/netty-handler-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-resolver/4.2.15.Final/b961a16d379b508b473e064ba06842bba280f4e3/netty-resolver-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-transport-classes-epoll/4.2.15.Final/44bafba9c9993800e955b365bba4981326f3f3b1/netty-transport-classes-epoll-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-transport-classes-kqueue/4.2.15.Final/f248656bb907607c5a41c7b61fd918a97db79250/netty-transport-classes-kqueue-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-transport-native-unix-common/4.2.15.Final/efb6943b4de9e0226a5ac35330f232605424af02/netty-transport-native-unix-common-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-transport/4.2.15.Final/a000c3a6196ee40207b73ac619dcb339409dd62f/netty-transport-4.2.15.Final.jar:/modules-2/files-2.1/it.unimi.dsi/fastutil/8.5.18/a6cff377eecc19c2037bf31568a6d7106b50ba1f/fastutil-8.5.18.jar:/modules-2/files-2.1/net.java.dev.jna/jna-platform/5.17.0/a4934c44d25a9d8c2ddf4203affd20330cb3426f/jna-platform-5.17.0.jar:/modules-2/files-2.1/net.java.dev.jna/jna/5.17.0/33d12735bef894440780fce64f9758d420c7bae2/jna-5.17.0.jar:/modules-2/files-2.1/org.apache.commons/commons-compress/1.28.0/e482f2c7a88dac3c497e96aa420b6a769f59c8d7/commons-compress-1.28.0.jar:/modules-2/files-2.1/org.apache.commons/commons-lang3/3.20.0/65897b3e5731220962e659e001904af3c3cbeba9/commons-lang3-3.20.0.jar:/modules-2/files-2.1/org.apache.logging.log4j/log4j-api/2.26.0/ad52af0ecf054a7e3f275a2e180ee06d9c490951/log4j-api-2.26.0.jar:/modules-2/files-2.1/org.apache.logging.log4j/log4j-core/2.26.0/d267ca60b27ddb075e0b4e75e7875859717bf85f/log4j-core-2.26.0.jar:/modules-2/files-2.1/org.apache.logging.log4j/log4j-slf4j2-impl/2.26.0/668c0f0e813d83f00a7182533aa658ec7e7a0a0d/log4j-slf4j2-impl-2.26.0.jar:/modules-2/files-2.1/org.jcraft/jorbis/0.0.17/8872d22b293e8f5d7d56ff92be966e6dc28ebdc6/jorbis-0.0.17.jar:/modules-2/files-2.1/org.joml/joml/1.10.8/fc0a71dad90a2cf41d82a76156a0e700af8e4f8d/joml-1.10.8.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-freetype/3.4.1/caa75a37e857efc9b0686e434d708d6420c5b6ea/lwjgl-freetype-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-freetype/3.4.1/61cb2d85e1838bca1a0b664f54e818bc68deb2ef/lwjgl-freetype-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-freetype/3.4.1/cce5a86b4a7d17817fe8ea0296302a4353acf2d5/lwjgl-freetype-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-glfw/3.4.1/a782b1ddd175c9107bf300fd92920579ea65e2a4/lwjgl-glfw-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-glfw/3.4.1/3c8538942f58377d59cd7be2dc164ba71a53868a/lwjgl-glfw-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-glfw/3.4.1/ef1f8efca5a60ba3512bc4982b88e446ecc43378/lwjgl-glfw-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-jemalloc/3.4.1/16b663092854fc6adfe0a941e61cae2bb2e437b6/lwjgl-jemalloc-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-jemalloc/3.4.1/581b4d542e841015ce3265eed0495e2cde15b1d0/lwjgl-jemalloc-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-jemalloc/3.4.1/dcd7e3f9a2ca386e8c5b8f508a8511d9dd63bab0/lwjgl-jemalloc-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-openal/3.4.1/8508bd60589de0539aa465b78fcf838efd07ae9a/lwjgl-openal-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-openal/3.4.1/a4dc57b7b0880d3fffb4d0b61649f45712bccc93/lwjgl-openal-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-openal/3.4.1/1c709a38c4a0e86aae96db7b8c78432307f2322a/lwjgl-openal-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-opengl/3.4.1/830412cab823c029cda6b9729f9d2ed36cf79959/lwjgl-opengl-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-opengl/3.4.1/ba18fc6012b88494ee893506934b92b01c4ef14b/lwjgl-opengl-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-opengl/3.4.1/35b5550058de4960525f465243bd01805f04fd8b/lwjgl-opengl-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-shaderc/3.4.1/5c02c88f0d879529014c78463b76f43fdecfd272/lwjgl-shaderc-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-shaderc/3.4.1/1d7bbdba70cf29c42978f6c0c1bdef945b922072/lwjgl-shaderc-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-shaderc/3.4.1/48aa2727e8616154d399d4dab0d8e8479741fa4f/lwjgl-shaderc-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-spvc/3.4.1/188553592e97b5ab2dba54a1b403ee80b48dad4c/lwjgl-spvc-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-spvc/3.4.1/2eeebd6d5bae966bfffda9747eba744cfe839ae1/lwjgl-spvc-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-spvc/3.4.1/a4f66638d28129eba0babd8fdc4385427a5ea83e/lwjgl-spvc-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-stb/3.4.1/f077c3dafc31924fbe8acb0b913f08977ba27f8e/lwjgl-stb-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-stb/3.4.1/fd1ea36b717b0832babca09324a6cfc43906e2aa/lwjgl-stb-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-stb/3.4.1/da554e04f819f09b0f3473bd931628ebf557965e/lwjgl-stb-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-tinyfd/3.4.1/562697d40dbd2ed0424bf24dcf65d51170f81adf/lwjgl-tinyfd-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-tinyfd/3.4.1/211ae9e8720e8f10f2ce85a118fa7bd5ee71584b/lwjgl-tinyfd-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-tinyfd/3.4.1/7bcde70f6164b2e72f84cac5257b7e9877b88510/lwjgl-tinyfd-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vma/3.4.1/2c54ce10154feb1ede4d23c5947438cdbfdcc003/lwjgl-vma-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vma/3.4.1/a130a9e4f96c83063f749e1dcc7065e0dffb3936/lwjgl-vma-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vma/3.4.1/9451dc1067716bc4125cdba65a7096e465f4d0e5/lwjgl-vma-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vulkan/3.4.1/d0601fdc38890755e5638048c14cc0f7b990964b/lwjgl-vulkan-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vulkan/3.4.1/140c7fd3e0fdbcc625c92be9328301c555035905/lwjgl-vulkan-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vulkan/3.4.1/2c933bf617cb8a174af26585efda4778b59e6d44/lwjgl-vulkan-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl/3.4.1/129e06a04f93992cb2a45172435b21fc4b60dd7d/lwjgl-3.4.1-unsafe.jar:/modules-2/files-2.1/org.lwjgl/lwjgl/3.4.1/b034fd9a67cb8646c01af7efcefcb93be835542b/lwjgl-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl/3.4.1/b4cbdef4818abd714ee66985344c0949fd1cd6d6/lwjgl-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.slf4j/slf4j-api/2.0.17/d9e58ac9c7779ba3bf8142aff6c830617a7fe60f/slf4j-api-2.0.17.jar:/modules-2/files-2.1/org.ow2.asm/asm-util/9.5/64b5a1fc8c1b15ed2efd6a063e976bc8d3dc5ffe/asm-util-9.5.jar:/modules-2/files-2.1/org.ow2.asm/asm-analysis/9.5/490bacc77de7cbc0be1a30bb3471072d705be4a4/asm-analysis-9.5.jar:/modules-2/files-2.1/org.ow2.asm/asm-tree/9.5/fd33c8b6373abaa675be407082fdfda35021254a/asm-tree-9.5.jar:/modules-2/files-2.1/org.ow2.asm/asm/9.5/dc6ea1875f4d64fbc85e1691c95b96a3d8569c90/asm-9.5.jar:/modules-2/files-2.1/net.neoforged/srgutils/1.0.10/abb471237b33b19f040ada00bfbad1ec45b949b6/srgutils-1.0.10.jar:/modules-2/files-2.1/io.netty/netty-transport-native-kqueue/4.2.15.Final/8ea0ef3eb716d821332e4b4926825a4b7c1a6d38/netty-transport-native-kqueue-4.2.15.Final-osx-aarch_64.jar:/modules-2/files-2.1/io.netty/netty-transport-native-kqueue/4.2.15.Final/4245380831515fb4eca18d32477a27fbb8f7b8f4/netty-transport-native-kqueue-4.2.15.Final-osx-x86_64.jar:/build/classes/java/main:/build/resources/main org.openjdk.jmh.Main .*net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix -p itemCount=100000 -p implementation=abahgat-suffix-tree -f 2 -wi 2 -i 8 -w 750ms -r 750ms -rf json -rff /build/reports/jmh/adaptive-jmh-passes/pass-04-group-001.json -o /build/reports/jmh/adaptive-jmh-passes/pass-04-group-001.txt -foe true -p typedCharacterCount=1 -prof gc # JMH version: 1.37 # VM version: JDK 25, OpenJDK 64-Bit Server VM, 25+36-b176.4 # VM invoker: java # VM options: # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 2 iterations, 750 ms each # Measurement: 8 iterations, 750 ms each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix # Parameters: (implementation = abahgat-suffix-tree, itemCount = 100000, typedCharacterCount = 1) # Run progress: 0.00% complete, ETA 00:00:15 # Fork: 1 of 2 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::objectFieldOffset has been called by org.openjdk.jmh.util.Utils (file:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar) WARNING: Please consider reporting this to the maintainers of class org.openjdk.jmh.util.Utils WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release # Warmup Iteration 1: 53.524 ms/op # Warmup Iteration 2: 51.317 ms/op Iteration 1: 51.332 ms/op gc.alloc.rate: 1168.340 MB/sec gc.alloc.rate.norm: 62900550.400 B/op gc.count: 1.000 counts gc.time: 41.000 ms Iteration 2: 81.114 ms/op gc.alloc.rate: 1194.670 MB/sec gc.alloc.rate.norm: 101638977.600 B/op gc.count: 5.000 counts gc.time: 76.000 ms Iteration 3: 50.304 ms/op gc.alloc.rate: 1308.697 MB/sec gc.alloc.rate.norm: 69044436.500 B/op gc.count: 1.000 counts gc.time: 40.000 ms Iteration 4: 51.911 ms/op gc.alloc.rate: 1268.170 MB/sec gc.alloc.rate.norm: 69044436.500 B/op gc.count: 1.000 counts gc.time: 48.000 ms Iteration 5: 55.752 ms/op gc.alloc.rate: 1180.810 MB/sec gc.alloc.rate.norm: 69044432.500 B/op gc.count: 3.000 counts gc.time: 147.000 ms Iteration 6: 55.580 ms/op gc.alloc.rate: 1184.426 MB/sec gc.alloc.rate.norm: 69044432.500 B/op gc.count: 2.000 counts gc.time: 55.000 ms Iteration 7: 50.685 ms/op gc.alloc.rate: 1298.689 MB/sec gc.alloc.rate.norm: 69044434.500 B/op gc.count: 3.000 counts gc.time: 27.000 ms Iteration 8: 51.515 ms/op gc.alloc.rate: 1277.877 MB/sec gc.alloc.rate.norm: 69044434.500 B/op gc.count: 2.000 counts gc.time: 69.000 ms # Run progress: 50.00% complete, ETA 00:00:09 # Fork: 2 of 2 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::objectFieldOffset has been called by org.openjdk.jmh.util.Utils (file:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar) WARNING: Please consider reporting this to the maintainers of class org.openjdk.jmh.util.Utils WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release # Warmup Iteration 1: 52.696 ms/op # Warmup Iteration 2: 50.552 ms/op Iteration 1: 53.430 ms/op gc.alloc.rate: 1199.597 MB/sec gc.alloc.rate.norm: 67231346.500 B/op gc.count: 3.000 counts gc.time: 87.000 ms Iteration 2: 47.780 ms/op gc.alloc.rate: 1341.610 MB/sec gc.alloc.rate.norm: 67231344.500 B/op gc.count: 3.000 counts gc.time: 48.000 ms Iteration 3: 50.288 ms/op gc.alloc.rate: 1274.675 MB/sec gc.alloc.rate.norm: 67231346.500 B/op gc.count: 1.000 counts gc.time: 45.000 ms Iteration 4: 50.265 ms/op gc.alloc.rate: 1275.303 MB/sec gc.alloc.rate.norm: 67231346.500 B/op gc.count: 1.000 counts gc.time: 51.000 ms Iteration 5: 54.597 ms/op gc.alloc.rate: 1174.132 MB/sec gc.alloc.rate.norm: 67231346.500 B/op gc.count: 2.000 counts gc.time: 111.000 ms Iteration 6: 53.772 ms/op gc.alloc.rate: 1192.117 MB/sec gc.alloc.rate.norm: 67231344.500 B/op gc.count: 2.000 counts gc.time: 78.000 ms Iteration 7: 49.612 ms/op gc.alloc.rate: 1291.761 MB/sec gc.alloc.rate.norm: 67231346.500 B/op gc.count: 3.000 counts gc.time: 34.000 ms Iteration 8: 49.218 ms/op gc.alloc.rate: 1302.433 MB/sec gc.alloc.rate.norm: 67231344.500 B/op gc.count: 1.000 counts gc.time: 43.000 ms Result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix": 53.572 ±(99.9%) 7.840 ms/op [Average] (min, avg, max) = (47.780, 53.572, 81.114), stdev = 7.700 CI (99.9%): [45.732, 61.412] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate": 1245.832 ±(99.9%) 59.512 MB/sec [Average] (min, avg, max) = (1168.340, 1245.832, 1341.610), stdev = 58.449 CI (99.9%): [1186.320, 1305.344] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm": 69791056.313 ±(99.9%) 8788474.506 B/op [Average] (min, avg, max) = (62900550.400, 69791056.313, 101638977.600), stdev = 8631457.089 CI (99.9%): [61002581.806, 78579530.819] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count": 34.000 ±(99.9%) 0.001 counts [Sum] (min, avg, max) = (1.000, 2.125, 5.000), stdev = 1.147 CI (99.9%): [34.000, 34.000] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time": 1000.000 ±(99.9%) 0.001 ms [Sum] (min, avg, max) = (27.000, 62.500, 147.000), stdev = 31.511 CI (99.9%): [1000.000, 1000.000] (assumes normal distribution) # Run complete. Total time: 00:00:19 REMEMBER: The numbers below are just data. To gain reusable insights, you need to follow up on why the numbers are the way they are. Use profilers (see -prof, -lprof), design factorial experiments, perform baseline and negative tests that provide experimental control, make sure the benchmarking environment is safe on JVM/OS/HW level, ask for reviews from the domain experts. Do not assume the numbers tell you what you want them to tell. NOTE: Current JVM experimentally supports Compiler Blackholes, and they are in use. Please exercise extra caution when trusting the results, look into the generated code to check the benchmark still works, and factor in a small probability of new VM bugs. Additionally, while comparisons between different JVMs are already problematic, the performance difference caused by different Blackhole modes can be very significant. Please make sure you use the consistent Blackhole mode for comparisons. Benchmark (implementation) (itemCount) (typedCharacterCount) Mode Cnt Score Error Units LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix abahgat-suffix-tree 100000 1 avgt 16 53.572 ± 7.840 ms/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate abahgat-suffix-tree 100000 1 avgt 16 1245.832 ± 59.512 MB/sec LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm abahgat-suffix-tree 100000 1 avgt 16 69791056.313 ± 8788474.506 B/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count abahgat-suffix-tree 100000 1 avgt 16 34.000 counts LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time abahgat-suffix-tree 100000 1 avgt 16 1000.000 ms Benchmark result is saved to /build/reports/jmh/adaptive-jmh-passes/pass-04-group-001.json # Adaptive pass 4, group 2 # Command: java -cp /build/classes/java/benchmark:/build/resources/benchmark:/build/moddev/artifacts/vanilla-26.2-2.jar:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar:/modules-2/files-2.1/com.abahgat/suffixtree/2.0.0/ffe2c29796add2624d2e0b9f33e72421eb5c5ea5/suffixtree-2.0.0.jar:/modules-2/files-2.1/net.mezzdev/suffixtree/1.3.0/1a1b87af70a1631ff6d6c9d49c63564aadecb176/suffixtree-1.3.0.jar:/modules-2/files-2.1/net.mezzdev/baked-substring-index/0.1.0/4f9fbd9eb54fdb1b8ec40a83297f4e8f4479eb7c/baked-substring-index-0.1.0.jar:/modules-2/files-2.1/net.mezzdev/baked-suffix-array-index/0.1.0/cd5e5ffbcee030d149e7a5a70e151a06158bd643/baked-suffix-array-index-0.1.0.jar:/modules-2/files-2.1/net.neoforged/mergetool/2.0.7/793b18456e92c4a7f66d9b5d8bf7a9c1c7a20b20/mergetool-2.0.7-api.jar:/modules-2/files-2.1/net.sf.jopt-simple/jopt-simple/5.0.4/4fdac2fbe92dfad86aa6e9301736f6b4342a3f5c/jopt-simple-5.0.4.jar:/modules-2/files-2.1/org.apache.commons/commons-math3/3.6.1/e4ba98f1d4b3c80ec46392f25e094a6a2e58fcbf/commons-math3-3.6.1.jar:/modules-2/files-2.1/com.google.code.findbugs/jsr305/3.0.2/25ea2e8b0c338a877313bd4672d3fe056ea78f0d/jsr305-3.0.2.jar:/modules-2/files-2.1/org.jspecify/jspecify/1.0.0/7425a601c1c7ec76645a78d22b8c6a627edee507/jspecify-1.0.0.jar:/modules-2/files-2.1/org.jetbrains/annotations/26.0.2-1/c7ce3cdeda3d18909368dfe5977332dfad326c6d/annotations-26.0.2-1.jar:/modules-2/files-2.1/ca.weblite/java-objc-bridge/1.1/1227f9e0666314f9de41477e3ec277e542ed7f7b/java-objc-bridge-1.1.jar:/modules-2/files-2.1/at.yawk.lz4/lz4-java/1.10.1/f541d7f910fe3d76f38f799c507c48cc81b12ecb/lz4-java-1.10.1.jar:/modules-2/files-2.1/com.azure/azure-json/1.4.0/fcc1d354dbc3e0300e5276b1bf124d0247799cd8/azure-json-1.4.0.jar:/modules-2/files-2.1/com.github.oshi/oshi-core/6.9.0/3224870731860cfcd7744581a05b559e94291e7/oshi-core-6.9.0.jar:/modules-2/files-2.1/com.google.code.gson/gson/2.14.0/efc0e34ede4e3204eaefb84a00e55e8c86634382/gson-2.14.0.jar:/modules-2/files-2.1/com.google.guava/failureaccess/1.0.3/aeaffd00d57023a2c947393ed251f0354f0985fc/failureaccess-1.0.3.jar:/modules-2/files-2.1/com.google.guava/guava/33.6.0-jre/c376b13067cc99a5774403530953f7b05a91e218/guava-33.6.0-jre.jar:/modules-2/files-2.1/com.ibm.icu/icu4j/78.3/6a851a53bb1f25689fc418dcc8935b0d93580adf/icu4j-78.3.jar:/modules-2/files-2.1/com.microsoft.azure/msal4j/1.24.1/c233f2d047b9755f7041adf21a858c680e4c9242/msal4j-1.24.1.jar:/modules-2/files-2.1/com.mojang/authlib/9.0.75/d61056a234d5e4b272e09d59b0713f80d6c0b6af/authlib-9.0.75.jar:/modules-2/files-2.1/com.mojang/blocklist/1.0.10/5c685c5ffa94c4cd39496c7184c1d122e515ecef/blocklist-1.0.10.jar:/modules-2/files-2.1/com.mojang/brigadier/1.3.10/d15b53a14cf20fdcaa98f731af5dda654452c010/brigadier-1.3.10.jar:/modules-2/files-2.1/com.mojang/datafixerupper/10.0.21/b6b2ae770c02e0c1eb90f9985b151e9085a38d0b/datafixerupper-10.0.21.jar:/modules-2/files-2.1/com.mojang/jtracy/1.0.37/a3fb649b2e2b2288d2978f0b0bc3d83f62809d1e/jtracy-1.0.37.jar:/modules-2/files-2.1/com.mojang/jtracy/1.0.37/a99fcb63b72fb623534d0ceb71bda4bed9b55b4c/jtracy-1.0.37-natives-macos.jar:/modules-2/files-2.1/com.mojang/jtracy/1.0.37/c8e971da5150aa33283c5bf4097154c0da554fb9/jtracy-1.0.37-natives-macos-arm64.jar:/modules-2/files-2.1/com.mojang/logging/1.7.12/351cea64a5233361327d8d54c44277041beed97f/logging-1.7.12.jar:/modules-2/files-2.1/com.mojang/patchy/2.2.10/da05971b07cbb379d002cf7eaec6a2048211fefc/patchy-2.2.10.jar:/modules-2/files-2.1/com.mojang/text2speech/1.19.12/2e517a75c79d34d32de2b5d68422150836c2133e/text2speech-1.19.12.jar:/modules-2/files-2.1/commons-codec/commons-codec/1.22.0/6b3eb4beb7058c2a638f5f17bcb388649fd339dd/commons-codec-1.22.0.jar:/modules-2/files-2.1/commons-io/commons-io/2.20.0/36f3474daec2849c149e877614e7f979b2082cd2/commons-io-2.20.0.jar:/modules-2/files-2.1/io.netty/netty-buffer/4.2.15.Final/2beb620803bf871cda2dd5d46b8f831e8015dd34/netty-buffer-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-codec-base/4.2.15.Final/e97149fdd5fb04858efa90e314651c8d700dc68b/netty-codec-base-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-codec-compression/4.2.15.Final/89fc4a20b7ae6af974304b1695405e62c4f9b16d/netty-codec-compression-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-codec-http/4.2.15.Final/e611826aa054371bb9a17f27bdb05755a4cac5f0/netty-codec-http-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-common/4.2.15.Final/7222492c1af9c2d4d78d521eea340a619e242fda/netty-common-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-handler/4.2.15.Final/d5344afd1148e3b9927a74be019605ebb0937a93/netty-handler-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-resolver/4.2.15.Final/b961a16d379b508b473e064ba06842bba280f4e3/netty-resolver-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-transport-classes-epoll/4.2.15.Final/44bafba9c9993800e955b365bba4981326f3f3b1/netty-transport-classes-epoll-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-transport-classes-kqueue/4.2.15.Final/f248656bb907607c5a41c7b61fd918a97db79250/netty-transport-classes-kqueue-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-transport-native-unix-common/4.2.15.Final/efb6943b4de9e0226a5ac35330f232605424af02/netty-transport-native-unix-common-4.2.15.Final.jar:/modules-2/files-2.1/io.netty/netty-transport/4.2.15.Final/a000c3a6196ee40207b73ac619dcb339409dd62f/netty-transport-4.2.15.Final.jar:/modules-2/files-2.1/it.unimi.dsi/fastutil/8.5.18/a6cff377eecc19c2037bf31568a6d7106b50ba1f/fastutil-8.5.18.jar:/modules-2/files-2.1/net.java.dev.jna/jna-platform/5.17.0/a4934c44d25a9d8c2ddf4203affd20330cb3426f/jna-platform-5.17.0.jar:/modules-2/files-2.1/net.java.dev.jna/jna/5.17.0/33d12735bef894440780fce64f9758d420c7bae2/jna-5.17.0.jar:/modules-2/files-2.1/org.apache.commons/commons-compress/1.28.0/e482f2c7a88dac3c497e96aa420b6a769f59c8d7/commons-compress-1.28.0.jar:/modules-2/files-2.1/org.apache.commons/commons-lang3/3.20.0/65897b3e5731220962e659e001904af3c3cbeba9/commons-lang3-3.20.0.jar:/modules-2/files-2.1/org.apache.logging.log4j/log4j-api/2.26.0/ad52af0ecf054a7e3f275a2e180ee06d9c490951/log4j-api-2.26.0.jar:/modules-2/files-2.1/org.apache.logging.log4j/log4j-core/2.26.0/d267ca60b27ddb075e0b4e75e7875859717bf85f/log4j-core-2.26.0.jar:/modules-2/files-2.1/org.apache.logging.log4j/log4j-slf4j2-impl/2.26.0/668c0f0e813d83f00a7182533aa658ec7e7a0a0d/log4j-slf4j2-impl-2.26.0.jar:/modules-2/files-2.1/org.jcraft/jorbis/0.0.17/8872d22b293e8f5d7d56ff92be966e6dc28ebdc6/jorbis-0.0.17.jar:/modules-2/files-2.1/org.joml/joml/1.10.8/fc0a71dad90a2cf41d82a76156a0e700af8e4f8d/joml-1.10.8.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-freetype/3.4.1/caa75a37e857efc9b0686e434d708d6420c5b6ea/lwjgl-freetype-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-freetype/3.4.1/61cb2d85e1838bca1a0b664f54e818bc68deb2ef/lwjgl-freetype-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-freetype/3.4.1/cce5a86b4a7d17817fe8ea0296302a4353acf2d5/lwjgl-freetype-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-glfw/3.4.1/a782b1ddd175c9107bf300fd92920579ea65e2a4/lwjgl-glfw-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-glfw/3.4.1/3c8538942f58377d59cd7be2dc164ba71a53868a/lwjgl-glfw-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-glfw/3.4.1/ef1f8efca5a60ba3512bc4982b88e446ecc43378/lwjgl-glfw-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-jemalloc/3.4.1/16b663092854fc6adfe0a941e61cae2bb2e437b6/lwjgl-jemalloc-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-jemalloc/3.4.1/581b4d542e841015ce3265eed0495e2cde15b1d0/lwjgl-jemalloc-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-jemalloc/3.4.1/dcd7e3f9a2ca386e8c5b8f508a8511d9dd63bab0/lwjgl-jemalloc-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-openal/3.4.1/8508bd60589de0539aa465b78fcf838efd07ae9a/lwjgl-openal-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-openal/3.4.1/a4dc57b7b0880d3fffb4d0b61649f45712bccc93/lwjgl-openal-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-openal/3.4.1/1c709a38c4a0e86aae96db7b8c78432307f2322a/lwjgl-openal-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-opengl/3.4.1/830412cab823c029cda6b9729f9d2ed36cf79959/lwjgl-opengl-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-opengl/3.4.1/ba18fc6012b88494ee893506934b92b01c4ef14b/lwjgl-opengl-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-opengl/3.4.1/35b5550058de4960525f465243bd01805f04fd8b/lwjgl-opengl-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-shaderc/3.4.1/5c02c88f0d879529014c78463b76f43fdecfd272/lwjgl-shaderc-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-shaderc/3.4.1/1d7bbdba70cf29c42978f6c0c1bdef945b922072/lwjgl-shaderc-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-shaderc/3.4.1/48aa2727e8616154d399d4dab0d8e8479741fa4f/lwjgl-shaderc-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-spvc/3.4.1/188553592e97b5ab2dba54a1b403ee80b48dad4c/lwjgl-spvc-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-spvc/3.4.1/2eeebd6d5bae966bfffda9747eba744cfe839ae1/lwjgl-spvc-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-spvc/3.4.1/a4f66638d28129eba0babd8fdc4385427a5ea83e/lwjgl-spvc-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-stb/3.4.1/f077c3dafc31924fbe8acb0b913f08977ba27f8e/lwjgl-stb-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-stb/3.4.1/fd1ea36b717b0832babca09324a6cfc43906e2aa/lwjgl-stb-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-stb/3.4.1/da554e04f819f09b0f3473bd931628ebf557965e/lwjgl-stb-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-tinyfd/3.4.1/562697d40dbd2ed0424bf24dcf65d51170f81adf/lwjgl-tinyfd-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-tinyfd/3.4.1/211ae9e8720e8f10f2ce85a118fa7bd5ee71584b/lwjgl-tinyfd-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-tinyfd/3.4.1/7bcde70f6164b2e72f84cac5257b7e9877b88510/lwjgl-tinyfd-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vma/3.4.1/2c54ce10154feb1ede4d23c5947438cdbfdcc003/lwjgl-vma-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vma/3.4.1/a130a9e4f96c83063f749e1dcc7065e0dffb3936/lwjgl-vma-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vma/3.4.1/9451dc1067716bc4125cdba65a7096e465f4d0e5/lwjgl-vma-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vulkan/3.4.1/d0601fdc38890755e5638048c14cc0f7b990964b/lwjgl-vulkan-3.4.1.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vulkan/3.4.1/140c7fd3e0fdbcc625c92be9328301c555035905/lwjgl-vulkan-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl-vulkan/3.4.1/2c933bf617cb8a174af26585efda4778b59e6d44/lwjgl-vulkan-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.lwjgl/lwjgl/3.4.1/129e06a04f93992cb2a45172435b21fc4b60dd7d/lwjgl-3.4.1-unsafe.jar:/modules-2/files-2.1/org.lwjgl/lwjgl/3.4.1/b034fd9a67cb8646c01af7efcefcb93be835542b/lwjgl-3.4.1-natives-macos.jar:/modules-2/files-2.1/org.lwjgl/lwjgl/3.4.1/b4cbdef4818abd714ee66985344c0949fd1cd6d6/lwjgl-3.4.1-natives-macos-arm64.jar:/modules-2/files-2.1/org.slf4j/slf4j-api/2.0.17/d9e58ac9c7779ba3bf8142aff6c830617a7fe60f/slf4j-api-2.0.17.jar:/modules-2/files-2.1/org.ow2.asm/asm-util/9.5/64b5a1fc8c1b15ed2efd6a063e976bc8d3dc5ffe/asm-util-9.5.jar:/modules-2/files-2.1/org.ow2.asm/asm-analysis/9.5/490bacc77de7cbc0be1a30bb3471072d705be4a4/asm-analysis-9.5.jar:/modules-2/files-2.1/org.ow2.asm/asm-tree/9.5/fd33c8b6373abaa675be407082fdfda35021254a/asm-tree-9.5.jar:/modules-2/files-2.1/org.ow2.asm/asm/9.5/dc6ea1875f4d64fbc85e1691c95b96a3d8569c90/asm-9.5.jar:/modules-2/files-2.1/net.neoforged/srgutils/1.0.10/abb471237b33b19f040ada00bfbad1ec45b949b6/srgutils-1.0.10.jar:/modules-2/files-2.1/io.netty/netty-transport-native-kqueue/4.2.15.Final/8ea0ef3eb716d821332e4b4926825a4b7c1a6d38/netty-transport-native-kqueue-4.2.15.Final-osx-aarch_64.jar:/modules-2/files-2.1/io.netty/netty-transport-native-kqueue/4.2.15.Final/4245380831515fb4eca18d32477a27fbb8f7b8f4/netty-transport-native-kqueue-4.2.15.Final-osx-x86_64.jar:/build/classes/java/main:/build/resources/main org.openjdk.jmh.Main .*net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix -p itemCount=100000 -p implementation=minecraft-suffix-array -f 2 -wi 2 -i 8 -w 750ms -r 750ms -rf json -rff /build/reports/jmh/adaptive-jmh-passes/pass-04-group-002.json -o /build/reports/jmh/adaptive-jmh-passes/pass-04-group-002.txt -foe true -p typedCharacterCount=1 -prof gc # JMH version: 1.37 # VM version: JDK 25, OpenJDK 64-Bit Server VM, 25+36-b176.4 # VM invoker: java # VM options: # Blackhole mode: compiler (auto-detected, use -Djmh.blackhole.autoDetect=false to disable) # Warmup: 2 iterations, 750 ms each # Measurement: 8 iterations, 750 ms each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix # Parameters: (implementation = minecraft-suffix-array, itemCount = 100000, typedCharacterCount = 1) # Run progress: 0.00% complete, ETA 00:00:15 # Fork: 1 of 2 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::objectFieldOffset has been called by org.openjdk.jmh.util.Utils (file:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar) WARNING: Please consider reporting this to the maintainers of class org.openjdk.jmh.util.Utils WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release # Warmup Iteration 1: 25.299 ms/op # Warmup Iteration 2: 26.143 ms/op Iteration 1: 25.190 ms/op gc.alloc.rate: 606.115 MB/sec gc.alloc.rate.norm: 16013705.250 B/op gc.count: 2.000 counts gc.time: 54.000 ms Iteration 2: 23.814 ms/op gc.alloc.rate: 641.122 MB/sec gc.alloc.rate.norm: 16013703.500 B/op gc.count: ≈ 0 counts Iteration 3: 31.002 ms/op gc.alloc.rate: 558.835 MB/sec gc.alloc.rate.norm: 18171212.160 B/op gc.count: 3.000 counts gc.time: 64.000 ms Iteration 4: 25.470 ms/op gc.alloc.rate: 571.997 MB/sec gc.alloc.rate.norm: 15281848.516 B/op gc.count: 1.000 counts gc.time: 89.000 ms Iteration 5: 25.669 ms/op gc.alloc.rate: 594.750 MB/sec gc.alloc.rate.norm: 16013704.250 B/op gc.count: 2.000 counts gc.time: 80.000 ms Iteration 6: 24.348 ms/op gc.alloc.rate: 627.032 MB/sec gc.alloc.rate.norm: 16013705.250 B/op gc.count: 3.000 counts gc.time: 32.000 ms Iteration 7: 24.651 ms/op gc.alloc.rate: 618.987 MB/sec gc.alloc.rate.norm: 16013705.250 B/op gc.count: 4.000 counts gc.time: 69.000 ms Iteration 8: 23.518 ms/op gc.alloc.rate: 677.044 MB/sec gc.alloc.rate.norm: 16701205.333 B/op gc.count: ≈ 0 counts # Run progress: 50.00% complete, ETA 00:00:12 # Fork: 2 of 2 WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::objectFieldOffset has been called by org.openjdk.jmh.util.Utils (file:/modules-2/files-2.1/org.openjdk.jmh/jmh-core/1.37/896f27e49105b35ea1964319c83d12082e7a79ef/jmh-core-1.37.jar) WARNING: Please consider reporting this to the maintainers of class org.openjdk.jmh.util.Utils WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release # Warmup Iteration 1: 32.812 ms/op # Warmup Iteration 2: 25.237 ms/op Iteration 1: 26.000 ms/op gc.alloc.rate: 587.239 MB/sec gc.alloc.rate.norm: 16013705.250 B/op gc.count: 2.000 counts gc.time: 115.000 ms Iteration 2: 29.309 ms/op gc.alloc.rate: 504.817 MB/sec gc.alloc.rate.norm: 15518248.308 B/op gc.count: 1.000 counts gc.time: 12.000 ms Iteration 3: 32.646 ms/op gc.alloc.rate: 530.630 MB/sec gc.alloc.rate.norm: 18171212.160 B/op gc.count: 3.000 counts gc.time: 88.000 ms Iteration 4: 25.035 ms/op gc.alloc.rate: 609.863 MB/sec gc.alloc.rate.norm: 16013703.500 B/op gc.count: ≈ 0 counts Iteration 5: 25.664 ms/op gc.alloc.rate: 567.744 MB/sec gc.alloc.rate.norm: 15281848.516 B/op gc.count: 1.000 counts gc.time: 88.000 ms Iteration 6: 26.363 ms/op gc.alloc.rate: 548.832 MB/sec gc.alloc.rate.norm: 15174968.552 B/op gc.count: 4.000 counts gc.time: 101.000 ms Iteration 7: 23.593 ms/op gc.alloc.rate: 654.412 MB/sec gc.alloc.rate.norm: 16194268.848 B/op gc.count: 1.000 counts gc.time: 37.000 ms Iteration 8: 26.996 ms/op gc.alloc.rate: 561.578 MB/sec gc.alloc.rate.norm: 15902245.429 B/op gc.count: 3.000 counts gc.time: 95.000 ms Result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix": 26.204 ±(99.9%) 2.681 ms/op [Average] (min, avg, max) = (23.518, 26.204, 32.646), stdev = 2.633 CI (99.9%): [23.524, 28.885] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate": 591.312 ±(99.9%) 47.235 MB/sec [Average] (min, avg, max) = (504.817, 591.312, 677.044), stdev = 46.391 CI (99.9%): [544.077, 638.547] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm": 16155811.880 ±(99.9%) 892469.763 B/op [Average] (min, avg, max) = (15174968.552, 16155811.880, 18171212.160), stdev = 876524.641 CI (99.9%): [15263342.117, 17048281.642] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count": 30.000 ±(99.9%) 0.001 counts [Sum] (min, avg, max) = (≈ 0, 1.875, 4.000), stdev = 1.360 CI (99.9%): [30.000, 30.000] (assumes normal distribution) Secondary result "net.mezzdev.substringsearch.benchmark.LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time": 924.000 ±(99.9%) 0.001 ms [Sum] (min, avg, max) = (≈ 0, 57.750, 115.000), stdev = 39.335 CI (99.9%): [924.000, 924.000] (assumes normal distribution) # Run complete. Total time: 00:00:24 REMEMBER: The numbers below are just data. To gain reusable insights, you need to follow up on why the numbers are the way they are. Use profilers (see -prof, -lprof), design factorial experiments, perform baseline and negative tests that provide experimental control, make sure the benchmarking environment is safe on JVM/OS/HW level, ask for reviews from the domain experts. Do not assume the numbers tell you what you want them to tell. NOTE: Current JVM experimentally supports Compiler Blackholes, and they are in use. Please exercise extra caution when trusting the results, look into the generated code to check the benchmark still works, and factor in a small probability of new VM bugs. Additionally, while comparisons between different JVMs are already problematic, the performance difference caused by different Blackhole modes can be very significant. Please make sure you use the consistent Blackhole mode for comparisons. Benchmark (implementation) (itemCount) (typedCharacterCount) Mode Cnt Score Error Units LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix minecraft-suffix-array 100000 1 avgt 16 26.204 ± 2.681 ms/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate minecraft-suffix-array 100000 1 avgt 16 591.312 ± 47.235 MB/sec LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.alloc.rate.norm minecraft-suffix-array 100000 1 avgt 16 16155811.880 ± 892469.763 B/op LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.count minecraft-suffix-array 100000 1 avgt 16 30.000 counts LargeCatalogSearchBenchmark.searchAllDefaultsTypedCatalogPrefix:gc.time minecraft-suffix-array 100000 1 avgt 16 924.000 ms Benchmark result is saved to /build/reports/jmh/adaptive-jmh-passes/pass-04-group-002.json