TimeRecorder for precise timing and support configurable warmup, iteration counts, and batch sizes.
@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
Complete Example Suite
BenchmarkContext
Injected into benchmark methods when you declare aBenchmarkContext parameter.
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:- Automatic (default)
- Manual
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
Next Steps
- API: Contexts - full BenchmarkContext method reference
- Running: Commands -
/hrtk benchcommand details - Codec Testing - benchmark serialization performance