/* Ċ Ġ* ĠCopyright Ġ 2 0 2 1 ĠGoogle ĠLLC . Ċ Ġ* Ċ Ġ* ĠThis Ġcode Ġmay Ġonly Ġbe Ġused Ġunder Ġthe ĠBSD Ġstyle Ġlicense Ġfound Ġat Ċ Ġ* Ġhttp :// polymer . github . io / LICENSE . txt Ċ Ġ* Ċ Ġ* ĠCode Ġdistributed Ġby ĠGoogle Ġas Ġpart Ġof Ġthis Ġproject Ġis Ġalso Ġsubject Ġto Ġan Ġadditional ĠIP Ġrights Ċ Ġ* Ġgrant Ġfound Ġat Ċ Ġ* Ġhttp :// polymer . github . io / PAT ENTS . txt Ċ Ġ*/ Ċ Ċ package Ġar cs . core . util . performance Ċ Ċ /** Ċ Ġ* ĠRecord Ġof ĠArc s Ġtiming Ġmeasurements . ĠThis Ġis Ġa Ġglobal Ġsingleton Ġso Ġthat Ġany Ġcode Ġin ĠArc s Ġcan Ċ Ġ* Ġeasily Ġrecord Ġtiming Ġmetrics Ġwithout Ġcomplex Ġpl umb ing . Ċ Ġ*/ Ċ object ĠT iming Measure ments Ġ{ ĊĠ Ġprivate Ġval Ġmeasurements Ġ= Ġmutable Map Of < String , ĠArrayList < Long >>() ĊĠ Ġprivate Ġval ĠMET RIC _ REGEX Ġ= Ġlazy Ġ{ ĠRegex ("[ a - zA - Z 0 - 9 _. ]+ ") Ġ} ĊĊĠ Ġ/** ĠRecord Ġa Ġmetric . Ġ*/ ĊĠ Ġfun Ġrecord ( metric : ĠString , Ġtime Ms : ĠLong ) Ġ{ ĊĠĠĠ Ġrequire ( METRIC _ REGEX . value . matches ( metric )) Ġ{ Ġ" Invalid Ġmetric Ġname : Ġ$ metric " Ġ} ĊĠĠĠ Ġmeasurements . get Or Put ( metric ) Ġ{ ĠArrayList () Ġ}. add ( time Ms ) ĊĠ Ġ} ĊĊĠ Ġ/** ĠReturns Ġa Ġcopy Ġof Ġthe Ġmeasurements Ġrecorded Ġso Ġfar . Ġ*/ ĊĠ Ġfun Ġget (): ĠMap < String , ĠArrayList < Long >> Ġ{ ĊĠĠĠ Ġreturn Ġmeasurements . map Values Ġ{ Ġ(_, Ġvalue ) Ġ-> ĠArrayList ( value ) Ġ} ĊĠ Ġ} ĊĊĠ Ġ/** ĠRe sets Ġthe Ġmeasurements . Ġ*/ ĊĠ Ġfun Ġreset () Ġ{ ĊĠĠĠ Ġmeasurements . clear () ĊĠ Ġ} ĊĊĠ Ġ/** ĠConvenience Ġmethod Ġto Ġcall Ġboth Ġ[ get ] Ġand Ġ[ reset ]. Ġ*/ ĊĠ Ġfun Ġget And Reset () Ġ= Ġget (). also Ġ{ Ġreset () Ġ} Ċ } Ċ