package Ġcom . bos w el ja . migration Ċ Ċ import Ġkotlinx . benchmark . Benchmark Ċ import Ġkotlinx . benchmark . Mode Ċ import Ġkotlinx . benchmark . Setup Ċ import Ġkotlinx . coroutines . run Blocking Ċ import Ġorg . openjdk . j mh . annotations . Benchmark Mode Ċ import Ġorg . openjdk . j mh . annotations . Fork Ċ import Ġorg . openjdk . j mh . annotations . Measurement Ċ import Ġorg . openjdk . j mh . annotations . Output TimeUnit Ċ import Ġorg . openjdk . j mh . annotations . Scope Ċ import Ġorg . openjdk . j mh . annotations . State Ċ import Ġorg . openjdk . j mh . annotations . W arm up Ċ import Ġjava . util . concurrent . TimeUnit Ċ Ċ @ W arm up ( iterations Ġ= Ġ 5 , Ġtime Ġ= Ġ 1 , Ġtime Unit Ġ= ĠTimeUnit . SECONDS ) Ċ @ Measurement ( iterations Ġ= Ġ 5 , Ġtime Ġ= Ġ 1 , Ġtime Unit Ġ= ĠTimeUnit . SECONDS ) Ċ @ Fork ( value Ġ= Ġ 1 ) Ċ @ Benchmark Mode ( Mode . Average Time ) Ċ @ Output TimeUnit ( TimeUnit . MICRO SECONDS ) Ċ @ State ( Scope . Benchmark ) Ċ class ĠM igr ator Benchmark Ġ{ ĊĠĠĠ Ġfinal Ġval Ġfrom Version Ġ= Ġ 1 ĊĠĠĠ Ġfinal Ġval Ġto Version Ġ= Ġ 1 0 0 ĊĠĠĠ Ġ// ĠCreate Ġsome Ġbasic Ġmigrations Ġthat Ġdo Ġnothing ĊĠĠĠ Ġprivate Ġval Ġversion ed Migrations Ġ= Ġ( from Version .. to Version ). map Ġ{ Ġfrom Ver Ġ-> ĊĠĠĠĠĠĠĠ Ġobject Ġ: ĠVersion Migration ( from Ver , Ġfrom Ver Ġ+ Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġsuspend Ġfun Ġmigrate (): ĠBoolean Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġval Ġconstant Migrations Ġ= Ġ( from Version .. to Version ). map Ġ{ ĊĠĠĠĠĠĠĠ Ġobject Ġ: ĠConditional Migration () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġsuspend Ġfun Ġshould Migrate ( from Version : ĠInt ): ĠBoolean Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġsuspend Ġfun Ġmigrate (): ĠBoolean Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġmigr ator : ĠM igr ator ĊĊĠĠĠ Ġ@ Setup ĊĠĠĠ Ġfun ĠsetUp () Ġ{ ĊĠĠĠĠĠĠĠ Ġmigr ator Ġ= Ġobject Ġ: ĠM igr ator ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Version Ġ= Ġto Version , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmigrations Ġ= Ġversion ed Migrations Ġ+ Ġconstant Migrations ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġsuspend Ġfun Ġon Migr ated To ( version : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠDo Ġnothing ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġsuspend Ġfun Ġget Old Version (): ĠInt Ġ= Ġfrom Version ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Benchmark ĊĠĠĠ Ġfun Ġmigrate Benchmark (): ĠUnit Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ Ġmigr ator . migrate () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Benchmark ĊĠĠĠ Ġfun Ġrun Version ed Migrations Benchmark (): ĠUnit Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ Ġmigr ator . run Version ed Migrations ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfrom Version , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġversion ed Migrations ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Benchmark ĊĠĠĠ Ġfun Ġrun Constant Migrations Benchmark (): ĠUnit Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ Ġmigr ator . run Constant Migrations ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfrom Version , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconstant Migrations ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ