package Ġorg . trials . bench . search Ċ Ċ import Ġorg . openjdk . j mh . annotations .* Ċ import Ġorg . openjdk . j mh . infra . Black hole Ċ import Ġorg . trials . search .* Ċ import Ġjava . util .* Ċ import Ġjava . util . concurrent . TimeUnit Ċ Ċ @ Benchmark Mode ( Mode . Average Time ) Ċ @ Output TimeUnit ( TimeUnit . MICRO SECONDS ) Ċ @ W arm up ( iterations Ġ= Ġ 1 0 , Ġtime Ġ= Ġ 5 5 , Ġtime Unit Ġ= ĠTimeUnit . MILLISECONDS ) Ċ @ Measurement ( iterations Ġ= Ġ 1 0 0 , Ġtime Ġ= Ġ 5 5 , Ġtime Unit Ġ= ĠTimeUnit . MILLISECONDS ) Ċ open Ġclass ĠSearch Bench Ġ: ĠSized Benchmark () Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġrandom Ġ= ĠRandom () ĊĊĠĠĠ Ġprivate Ġvar Ġlinear Searcher : ĠLinear Search < Int > Ġ= ĠLinear Search () ĊĠĠĠ Ġprivate Ġvar Ġbinary Searcher : ĠBinary Search < Int > Ġ= ĠBinary Search () ĊĠĠĠ Ġprivate Ġvar Ġjump Searcher : ĠJump Search < Int > Ġ= ĠJump Search () ĊĊĠĠĠ Ġprivate Ġvar Ġcollection : ĠArray < Int > Ġ= ĠarrayOf () ĊĠĠĠ Ġprivate Ġvar Ġneedle : ĠInt Ġ= Ġ 0 ĊĊĠĠĠ Ġ@ Setup ( Level . Iteration ) ĊĠĠĠ Ġfun ĠsetUp () Ġ{ ĊĠĠĠĠĠĠĠ Ġcollection Ġ= Ġ( 1 .. size ). toList (). to Typed Array () ĊĊĠĠĠĠĠĠĠ Ġneedle Ġ= Ġif Ġ( probability Ġ== Ġ 0 . 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ- 1 ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrandom . nextInt ( size Ġ* Ġ( 1 . 0 Ġ/ Ġprobability ). toInt ()) Ġ+ Ġ 1 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Benchmark ĊĠĠĠ Ġfun Ġlinear Search ( black hole : ĠBlack hole ) Ġ{ ĊĠĠĠĠĠĠĠ Ġblack hole . consume ( linear Searcher . search ( collection , Ġneedle )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Benchmark ĊĠĠĠ Ġfun Ġbinary Search ( black hole : ĠBlack hole ) Ġ{ ĊĠĠĠĠĠĠĠ Ġblack hole . consume ( binary Searcher . search ( collection , Ġneedle )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Benchmark ĊĠĠĠ Ġfun Ġjump Search ( black hole : ĠBlack hole ) Ġ{ ĊĠĠĠĠĠĠĠ Ġblack hole . consume ( jump Searcher . search ( collection , Ġneedle )) ĊĠĠĠ Ġ} Ċ } Ċ