Skip to main content
HRTK includes a built-in benchmarking system for measuring the performance of your mod’s code paths inside the live server. Benchmarks use Hytale’s TimeRecorder for precise timing and support configurable warmup, iteration counts, and batch sizes.
Looking for server-wide profiling? Use spark alongside HRTK. spark finds the hotspots, HRTK benchmarks let you track them. See Profiling with spark for the recommended workflow.

@Benchmark

Annotate a method with @Benchmark to mark it as a performance benchmark. Benchmarks are executed via /hrtk bench and are not included in regular /hrtk run invocations.

Configuration Parameters

ParameterDefaultDescription
warmup5Number of warmup iterations (not measured)
iterations100Number of measured iterations
batchSize1Operations per iteration (for throughput calculation)

Complete Example Suite

BenchmarkContext

Injected into benchmark methods when you declare a BenchmarkContext parameter.
MethodDescription
getIteration()Current iteration number (0-based)
getTotalIterations()Total measured iterations
isWarmup()True during warmup phase
startTimer()Manually start timing
stopTimer()Manually stop timing

Automatic vs. Manual Timing

By default, the entire method body is timed automatically. If you need to exclude setup or teardown code from measurement, use manual timing:
If you call startTimer() but forget to call stopTimer(), HRTK stops the timer automatically at the end of the iteration. The timing will still be accurate for the measured portion.

Execution Phases

1

Warmup

The method runs warmup times. These iterations are not measured. JIT compilation and caching happen during this phase.
2

Measurement

The method runs iterations times. Each execution is timed and recorded in a TimeRecorder.
3

Reporting

Statistics (avg, min, max, ops/sec) are calculated and logged.

Output Format

Benchmark results appear in the console and are stored in the test results:

Running Benchmarks

Benchmarks run inside the live server, so results are affected by concurrent server activity. For the most consistent results, run benchmarks on a quiet server with no players connected.

Next Steps