/* Ċ Ġ* ĠCopyright Ġ 2 0 1 9 ĠRealm ĠInc . Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġio . realm . benchmarks Ċ Ċ import Ġandroidx . benchmark . junit 4 . Benchmark Rule Ċ import Ġandroidx . benchmark . junit 4 . measure Repeated Ċ import Ġandroidx . test . ext . junit . runners . Android JUnit 4 Ċ import Ġandroidx . test . platform . app . Instrumentation Registry Ċ import Ġio . realm . Realm Ċ import Ġio . realm . Realm Configuration Ċ import Ġio . realm . Realm List Ċ import Ġio . realm . Realm Results Ċ import Ġio . realm . benchmarks . entities . All Types Ċ import Ġio . realm . kotlin . createObject Ċ import Ġio . realm . kotlin . where Ċ import Ġio . realm . log . Realm Log Ċ import Ġorg . junit . After Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . Rule Ċ import Ġorg . junit . Test Ċ import Ġorg . junit . runner . RunWith Ċ import Ġjava . util .* Ċ Ċ @ RunWith ( Android JUnit 4 :: class ) Ċ class ĠF rozen Objects Bench marks Ġ{ ĊĊĠĠĠ Ġ@ get : Rule ĊĠĠĠ Ġval Ġbenchmark Rule Ġ= ĠBenchmark Rule () ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġrealm : ĠRealm ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġread Object : ĠAll Types ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġrealm Config : ĠRealm Configuration ĊĊĠĠĠ Ġ@ Before ĊĠĠĠ Ġfun ĠsetUp () Ġ{ ĊĠĠĠĠĠĠĠ ĠRealm . init ( Instrumentation Registry . get Instrumentation (). context ) ĊĠĠĠĠĠĠĠ ĠRealm Log . error (" SETUP ") ĊĠĠĠĠĠĠĠ Ġrealm Config Ġ= ĠRealm Configuration . Builder (). name (" frozen ${ Random (). next Long ()}. realm "). build () ĊĠĠĠĠĠĠĠ Ġrealm Ġ= ĠRealm . getInstance ( realm Config ) ĊĠĠĠĠĠĠĠ Ġrealm . execute Transaction Ġ{ Ġrealm Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġread Object Ġ= Ġrealm . createObject ( All Types :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġread Object . column String Ġ= Ġ" Foo " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġread Object . column Long Ġ= Ġ 4 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġread Object . column Double Ġ= Ġ 1 . 2 3 4 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ After ĊĠĠĠ Ġfun ĠtearDown () Ġ{ ĊĠĠĠĠĠĠĠ ĠRealm Log . error (" TE AR _ DOWN "); ĊĠĠĠĠĠĠĠ Ġrealm . close () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġfreeze Realm () Ġ{ ĊĠĠĠĠĠĠĠ Ġbenchmark Rule . measure Repeated Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠSkip Ġcaching Ġin ĠJava Ġand Ġdirectly Ġmeasure Ġhow Ġfast Ġit Ġis Ġto Ġfreeze Ġthe ĠShared Realm . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠObject Store Ġdo Ġnot Ġcache Ġit , Ġso Ġit Ġshould Ġbe Ġsafe Ġto Ġrun Ġin Ġa Ġloop . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrealm . shared Realm . freeze () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġfreeze Results () Ġ{ ĊĠĠĠĠĠĠĠ Ġrealm . execute Transaction Ġ{ Ġr Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 .. 1 0 _ 0 0 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġobj Ġ= Ġr . createObject < All Types >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobj . column String = Ġ" String : Ġ" Ġ+ Ġi ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobj . column Long Ġ= Ġi . to Long () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobj . is Column Boolean Ġ= Ġ( i Ġ% Ġ 2 Ġ== Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġvar Ġresults : ĠRealm Results < All Types > Ġ= Ġrealm . where < All Types >(). findAll () ĊĠĠĠĠĠĠĠ Ġbenchmark Rule . measure Repeated Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresults . freeze () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġfreeze List () Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġlist : ĠRealm List < All Types > Ġ= ĠRealm List () ĊĠĠĠĠĠĠĠ Ġrealm . execute Transaction Ġ{ Ġr Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 .. 1 0 _ 0 0 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist Ġ= Ġread Object . column Realm List ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġobj Ġ= Ġr . createObject < All Types >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobj . column String = Ġ" String : Ġ" Ġ+ Ġi ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobj . column Long Ġ= Ġi . to Long () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobj . is Column Boolean Ġ= Ġ( i Ġ% Ġ 2 Ġ== Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist . add ( obj ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġbenchmark Rule . measure Repeated Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlist . freeze () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġfreeze Object () Ġ{ ĊĠĠĠĠĠĠĠ Ġbenchmark Rule . measure Repeated Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġread Object . freeze < All Types >() ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ