package Ġperformance čĊčĊč Ċ import Ġjava . util . ArrayList čĊčĊč Ċ /** čĊ Ġ* ĠIter ates Ġprovided Ġby Ġ[ callback ] Ġcode Ġ[ iterations ] x [ test Count ] Ġtimes . čĊ Ġ* ĠPerforms Ġwarm ing Ġby Ġiter ating Ġ[ iterations ] x [ warm Count ] Ġtimes . čĊ Ġ*/ č Ċ fun Ġsimple Measure ( iterations : ĠInt Ġ= Ġ 1 0 , Ġtest Count : ĠInt Ġ= Ġ 1 0 , Ġwarm Count : ĠInt Ġ= Ġ 2 , Ġcallback : Ġ() Ġ-> ĠUnit ) Ġ{ čĊĠĠĠ Ġval Ġresults Ġ= ĠArrayList < Long >() čĊĠĠĠ Ġvar Ġtotal Time Ġ= Ġ 0 L čĊĠĠĠ Ġvar Ġt Ġ= Ġ 0 čĊčĊĠĠĠ Ġprintln ("$ PRINT _ PREFIX Ġ-> ĠStart ") čĊčĊĠĠĠ Ġwhile Ġ(++ t Ġ<= Ġtest Count Ġ+ Ġwarm Count ) Ġ{ čĊĠĠĠĠĠĠĠ Ġval ĠstartTime Ġ= ĠSystem . currentTimeMillis () čĊčĊĠĠĠĠĠĠĠ Ġvar Ġi Ġ= Ġ 0 čĊĠĠĠĠĠĠĠ Ġwhile Ġ( i ++ Ġ< Ġiterations ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġcallback () čĊčĊĠĠĠĠĠĠĠ Ġif Ġ( t Ġ<= Ġwarm Count ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ("$ PRINT _ PREFIX ĠW arm ing Ġ$ t Ġof Ġ$ warm Count ") čĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontinue čĊĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠ Ġval Ġtime Ġ= ĠSystem . currentTimeMillis () Ġ- ĠstartTime čĊĠĠĠĠĠĠĠ Ġprintln ( PRINT _ PREFIX Ġ+ Ġ" Ġ" Ġ+ Ġtime . toString () Ġ+ Ġ" ms ") čĊčĊĠĠĠĠĠĠĠ Ġresults . add ( time ) čĊĠĠĠĠĠĠĠ Ġtotal Time Ġ+= Ġtime čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġresults . sort () čĊčĊĠĠĠ Ġval Ġaverage Ġ= Ġtotal Time Ġ/ Ġtest Count čĊĠĠĠ Ġval Ġmedian Ġ= Ġresults [ results . size Ġ/ Ġ 2 ] čĊčĊĠĠĠ Ġprintln ("$ PRINT _ PREFIX Ġ-> Ġaverage =${ average } ms Ġ/ Ġmedian =${ median } ms \ n ") č Ċ } čĊč Ċ /** čĊ Ġ* ĠUsed Ġto Ġfilter Ġconsole Ġmessages Ġeasily čĊ Ġ*/ č Ċ private Ġconst Ġval ĠPRINT _ PREFIX Ġ= Ġ"[ Time Test ]"