diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 7454180..249e583 100644 Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 8049c68..17655d0 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.6-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew index 1b6c787..a69d9cb 100755 --- a/gradlew +++ b/gradlew @@ -205,6 +205,12 @@ set -- \ org.gradle.wrapper.GradleWrapperMain \ "$@" +# Stop when "xargs" is not available. +if ! command -v xargs >/dev/null 2>&1 +then + die "xargs is not available" +fi + # Use "xargs" to parse quoted args. # # With -n1 it outputs one arg per line, with the quotes and backslashes removed. diff --git a/gradlew.bat b/gradlew.bat index 107acd3..f127cfd 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -14,7 +14,7 @@ @rem limitations under the License. @rem -@if "%DEBUG%" == "" @echo off +@if "%DEBUG%"=="" @echo off @rem ########################################################################## @rem @rem Gradle startup script for Windows @@ -25,7 +25,7 @@ if "%OS%"=="Windows_NT" setlocal set DIRNAME=%~dp0 -if "%DIRNAME%" == "" set DIRNAME=. +if "%DIRNAME%"=="" set DIRNAME=. set APP_BASE_NAME=%~n0 set APP_HOME=%DIRNAME% @@ -40,7 +40,7 @@ if defined JAVA_HOME goto findJavaFromJavaHome set JAVA_EXE=java.exe %JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto execute +if %ERRORLEVEL% equ 0 goto execute echo. echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. @@ -75,13 +75,15 @@ set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar :end @rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="0" goto mainEnd +if %ERRORLEVEL% equ 0 goto mainEnd :fail rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of rem the _cmd.exe /c_ return code! -if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 -exit /b 1 +set EXIT_CODE=%ERRORLEVEL% +if %EXIT_CODE% equ 0 set EXIT_CODE=1 +if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% +exit /b %EXIT_CODE% :mainEnd if "%OS%"=="Windows_NT" endlocal diff --git a/kotlin/jmh/build.gradle.kts b/kotlin/jmh/build.gradle.kts index 611da2c..fdba8cd 100644 --- a/kotlin/jmh/build.gradle.kts +++ b/kotlin/jmh/build.gradle.kts @@ -26,7 +26,7 @@ dependencies { kotlin { jvmToolchain { - (this as JavaToolchainSpec).languageVersion.set(JavaLanguageVersion.of("18")) + (this as JavaToolchainSpec).languageVersion.set(JavaLanguageVersion.of("17")) } } diff --git a/kotlin/jmh/src/jmh/kotlin/bench/MetricsBenchmark.kt b/kotlin/jmh/src/jmh/kotlin/bench/MetricsBenchmark.kt index 60fd991..9614d95 100644 --- a/kotlin/jmh/src/jmh/kotlin/bench/MetricsBenchmark.kt +++ b/kotlin/jmh/src/jmh/kotlin/bench/MetricsBenchmark.kt @@ -1,82 +1,99 @@ -package bench - -import org.openjdk.jmh.annotations.Benchmark -import org.openjdk.jmh.annotations.BenchmarkMode -import org.openjdk.jmh.annotations.Fork -import org.openjdk.jmh.annotations.Measurement -import org.openjdk.jmh.annotations.Mode -import org.openjdk.jmh.annotations.OutputTimeUnit -import org.openjdk.jmh.annotations.Threads -import org.openjdk.jmh.annotations.Warmup -import java.util.concurrent.TimeUnit - -import goodmetrics.Metrics -import org.openjdk.jmh.annotations.OperationsPerInvocation -import org.openjdk.jmh.annotations.Scope -import org.openjdk.jmh.annotations.State - -@State(Scope.Benchmark) -@BenchmarkMode(Mode.SampleTime) -@OutputTimeUnit(TimeUnit.NANOSECONDS) -@Threads(1) -@Fork(value = 1, jvmArgs = ["-server"]) -@Warmup(iterations = 5, time = 1, timeUnit = TimeUnit.SECONDS) -@Measurement(iterations = 10, time = 1, timeUnit = TimeUnit.SECONDS) -open class MetricsBenchmark { - val m = Metrics() - - @Benchmark - @OperationsPerInvocation(50) - fun recordInt() { - m.measuremeI("lel", 42) - m.measuremeI("lel2", 42) - m.measuremeI("lel23", 42) - m.measuremeI("lel234", 42) - m.measuremeI("lel2345", 42) - m.measuremeI("lel23456", 42) - m.measuremeI("lel234567", 42) - m.measuremeI("lel234567", 42) - m.measuremeI("lel234567", 42) - m.measuremeI("lel234567", 42) - m.measuremeI("lel234567", 42) - m.measuremeI("lel234567", 42) - m.measuremeI("lel234567", 42) - m.measuremeI("lel234567", 42) - m.measuremeI("lel234567", 42) - m.measuremeI("lel234567", 42) - m.measuremeI("lel234567", 42) - m.measuremeI("lel234567", 42) - m.measuremeI("lel234567", 42) - m.measuremeI("lel234567", 42) - m.measuremeI("lel234567", 42) - m.measuremeI("lel234567", 42) - m.measuremeI("lel234567", 42) - m.measuremeI("lel234567", 42) - m.measuremeI("lel234567", 42) - m.measuremeI("lel234567", 42) - m.measuremeI("lel234567", 42) - m.measuremeI("lel234567", 42) - m.measuremeI("lel234567", 42) - m.measuremeI("lel234567", 42) - m.measuremeI("lel234567", 42) - m.measuremeI("lel234567", 42) - m.measuremeI("lel234567", 42) - m.measuremeI("lel234567", 42) - m.measuremeI("lel234567", 42) - m.measuremeI("lel234567", 42) - m.measuremeI("lel234567", 42) - m.measuremeI("lel234567", 42) - m.measuremeI("lel234567", 42) - m.measuremeI("lel234567", 42) - m.measuremeI("lel234567", 42) - m.measuremeI("lel234567", 42) - m.measuremeI("lel234567", 42) - m.measuremeI("lel234567", 42) - m.measuremeI("lel234567", 42) - m.measuremeI("lel234567", 42) - m.measuremeI("lel234567", 42) - m.measuremeI("lel234567", 42) - m.measuremeI("lel234567", 42) - m.measuremeI("lel234567", 42) - } -} +package bench + +import org.openjdk.jmh.annotations.Benchmark +import org.openjdk.jmh.annotations.BenchmarkMode +import org.openjdk.jmh.annotations.Fork +import org.openjdk.jmh.annotations.Measurement +import org.openjdk.jmh.annotations.Mode +import org.openjdk.jmh.annotations.OutputTimeUnit +import org.openjdk.jmh.annotations.Threads +import org.openjdk.jmh.annotations.Warmup +import java.util.concurrent.TimeUnit + +import goodmetrics.Metrics +import goodmetrics.MetricsFactory +import goodmetrics.NanoTimeSource +import goodmetrics.TimestampAt +import goodmetrics.pipeline.MetricsSink +import org.openjdk.jmh.annotations.OperationsPerInvocation +import org.openjdk.jmh.annotations.Scope +import org.openjdk.jmh.annotations.State + +object Sink: MetricsSink { + override fun emit(metrics: Metrics) { + } + override fun close() { + } +} + +@State(Scope.Benchmark) +@BenchmarkMode(Mode.SampleTime) +@OutputTimeUnit(TimeUnit.NANOSECONDS) +@Threads(1) +@Fork(value = 1, jvmArgs = ["-server"]) +@Warmup(iterations = 5, time = 1, timeUnit = TimeUnit.SECONDS) +@Measurement(iterations = 10, time = 1, timeUnit = TimeUnit.SECONDS) +open class MetricsBenchmark { + val metricsFactory = MetricsFactory( + Sink, + NanoTimeSource.fastNanoTime, + MetricsFactory.TotaltimeType.None, + ) + + val m = metricsFactory.internals.getMetrics("benchmark", TimestampAt.Start) + + @Benchmark + @OperationsPerInvocation(50) + fun recordInt() { + m.measure("lel", 42) + m.measure("lel2", 42) + m.measure("lel23", 42) + m.measure("lel234", 42) + m.measure("lel2345", 42) + m.measure("lel23456", 42) + m.measure("lel234567", 42) + m.measure("lel234567", 42) + m.measure("lel234567", 42) + m.measure("lel234567", 42) + m.measure("lel234567", 42) + m.measure("lel234567", 42) + m.measure("lel234567", 42) + m.measure("lel234567", 42) + m.measure("lel234567", 42) + m.measure("lel234567", 42) + m.measure("lel234567", 42) + m.measure("lel234567", 42) + m.measure("lel234567", 42) + m.measure("lel234567", 42) + m.measure("lel234567", 42) + m.measure("lel234567", 42) + m.measure("lel234567", 42) + m.measure("lel234567", 42) + m.measure("lel234567", 42) + m.measure("lel234567", 42) + m.measure("lel234567", 42) + m.measure("lel234567", 42) + m.measure("lel234567", 42) + m.measure("lel234567", 42) + m.measure("lel234567", 42) + m.measure("lel234567", 42) + m.measure("lel234567", 42) + m.measure("lel234567", 42) + m.measure("lel234567", 42) + m.measure("lel234567", 42) + m.measure("lel234567", 42) + m.measure("lel234567", 42) + m.measure("lel234567", 42) + m.measure("lel234567", 42) + m.measure("lel234567", 42) + m.measure("lel234567", 42) + m.measure("lel234567", 42) + m.measure("lel234567", 42) + m.measure("lel234567", 42) + m.measure("lel234567", 42) + m.measure("lel234567", 42) + m.measure("lel234567", 42) + m.measure("lel234567", 42) + m.measure("lel234567", 42) + } +}