package Ġru . ig la . tf profiler . core . analytics Ċ Ċ import Ġandroid . content . Context Ċ import Ġru . ig la . tf profiler . models _ list . domain . Model Entity Ċ import Ġru . ig la . tf profiler . reports _ list . List Report Entity Ċ import Ġru . ig la . tf profiler . reports _ list . Report Delegate Item Ċ import Ġru . ig la . tf profiler . t flite _ runners . base . Model Options Ċ import Ġru . ig la . tf profiler . utils . Date Utils Ċ Ċ class ĠStatistics Estimator ( context : ĠContext ) Ġ{ ĊĠĠĠ Ġ@ Jvm Field ĊĠĠĠ Ġval Ġapp Memory Estimator Ġ= ĠApp Memory Estimator ( context . application Context ) ĊĊĠĠĠ Ġprivate Ġval Ġdata Analytics Map : ĠMutable Map < Model Options , ĠData Analytics > Ġ= Ġmutable Map Of () ĊĊĠĠĠ Ġfun Ġcreate Report ( ĊĠĠĠĠĠĠĠ Ġmodel Entity : ĠModel Entity ĊĠĠĠ Ġ): ĠList Report Entity Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġreport Items Ġ= Ġmutable ListOf < Report Delegate Item >() ĊĠĠĠĠĠĠĠ Ġfor Ġ(( key , Ġvalue ) Ġin Ġdata Analytics Map ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġno Exception Ġ= Ġvalue . exception ?. message . isNull OrEmpty () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitem Ġ= ĠReport Delegate Item ( ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexception Ġ= Ġvalue . exception ?. message , ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdevice Ġ= Ġkey . device , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthreads Ġ= Ġkey . num Threads , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuse Xn np ack Ġ= Ġkey . use Xn np ack , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbatch Image Count Ġ= Ġkey . numberOf Input Images , ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfps Ġ= Ġvalue . fps , ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmemory Usage Min Ġ= Ġvalue . memory Usage Min , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmemory Usage Max Ġ= Ġvalue . memory Usage Max , ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodel Init Time Ġ= Ġvalue . initialization Time , ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmean Time Ġ= Ġif Ġ( no Exception ) Ġvalue . statistics . mean Ġelse Ġ 0 . 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstd Time Ġ= Ġif Ġ( no Exception ) Ġvalue . statistics . standard De viation Ġelse Ġ 0 . 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpercent ile 9 9 Time Ġ= Ġif Ġ( no Exception ) Ġvalue . statistics . get Percent ile ( 9 9 . 0 ) Ġelse Ġ 0 . 0 , ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmin Time Ġ= Ġvalue . inter ference Time Min , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmax Time Ġ= Ġvalue . inter ference Time Max , ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinference Ġ= Ġvalue . inter ference Runs , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwarm up Runs Ġ= Ġvalue . warm up Runs ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreport Items . add ( item ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠList Report Entity ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid Report Ġ= Ġ 1 L , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠcreatedAt Ġ= ĠDate Utils . getCurrent Date In Ms (), ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodel Name Ġ= Ġmodel Entity . name , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodel Type Ġ= Ġmodel Entity . model Type , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreport Delegate Items Ġ= Ġreport Items , ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodel Config Ġ= Ġmodel Entity . model Config ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġclear Stats ( model Options : ĠModel Options ) Ġ{ ĊĠĠĠĠĠĠĠ Ġget Stats ( model Options ). clear () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Init Time ( model Options : ĠModel Options , Ġinit Time : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠ Ġget Stats ( model Options ). initialization Time Ġ= Ġinit Time ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Memory Usage ( model Options : ĠModel Options , Ġmemory Usage : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠ Ġget Stats ( model Options ). set Memory Usage ( memory Usage ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Stats ( model Options : ĠModel Options ): ĠData Analytics Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġkey Ġ= Ġdata Analytics Map [ model Options ] Ġ?: ĠData Analytics () ĊĠĠĠĠĠĠĠ Ġdata Analytics Map [ model Options ] Ġ= Ġkey ĊĠĠĠĠĠĠĠ Ġreturn Ġkey ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Init Time ( model Options : ĠModel Options ): ĠLong Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġget Stats ( model Options ). initialization Time ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcalc F ps ( model Options : ĠModel Options ): ĠDouble Ġ{ ĊĠĠĠĠĠĠĠ Ġget Stats ( model Options ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfps Ġ= Ġcompute F ps . calc F ps () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfps ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset W arm up Runs ( model Options : ĠModel Options , Ġwarm up Runs : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġget Stats ( model Options ). warm up Runs Ġ= Ġwarm up Runs ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Inter ference Time ( model Options : ĠModel Options , Ġprocess Time : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠ Ġget Stats ( model Options ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstatistics . add Value ( process Time . toDouble ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Inter ference Time ( process Time ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Frame Number ( model Options : ĠModel Options ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġget Stats ( model Options ). inter ference Runs ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġincrement Frame Number ( model Options : ĠModel Options ) Ġ{ ĊĠĠĠĠĠĠĠ Ġget Stats ( model Options ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġincrement Runs () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠsetError ( model Options : ĠModel Options , Ġe : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠ Ġget Stats ( model Options ). exception Ġ= Ġe ĊĠĠĠ Ġ} Ċ }