import Ġorg . junit . jupiter . api . Disabled Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġjava . util .* Ċ Ċ val Ġrandom Ġ= ĠRandom ( 1 0 0 ) Ċ Ċ fun Ġgenerate Namespace (): ĠMap < String , ĠInt > Ġ= ĊĠĠĠ Ġ( 0 .. 1 0 0 0 ). associate Ġ{ ĠPair ( random . nextInt (). toString (), Ġrandom . nextInt ()) Ġ} Ċ Ċ fun Ġnew Namespace Stack () Ġ= ĊĠĠĠ Ġ( 0 .. 4 ). map Ġ{ Ġgenerate Namespace () Ġ} Ċ Ċ tail rec Ġfun Ġresolve Symbol In Stack ( stack : ĠList < Map < String , ĠInt >>, Ġindex : ĠInt , Ġkey : ĠString ): ĠInt ? Ġ= ĊĠĠĠ Ġif Ġ( index Ġ< Ġ 0 ) ĊĠĠĠĠĠ Ġnull ĊĠĠĠ Ġelse ĊĠĠĠĠĠ Ġstack [ index ][ key ] Ġ?: Ġresolve Symbol In Stack ( stack , Ġindex Ġ- Ġ 1 , Ġkey ) Ċ Ċ fun ĠgetRandom Key ( keys : ĠList < String >) Ġ= ĊĠĠĠ Ġif Ġ( random . next Boolean ()) ĊĠĠĠĠĠ Ġkeys [ random . nextInt ( keys . size Ġ- Ġ 1 )] ĊĠĠĠ Ġelse ĊĠĠĠĠĠ Ġrandom . nextInt (). toString () Ċ Ċ fun Ġprint Value ( value : ĠInt ?) Ġ{ ĊĠ Ġif Ġ( value Ġ!= Ġnull Ġ&& Ġvalue Ġ> Ġ 1 0 0 0 Ġ&& Ġvalue Ġ< Ġ 1 0 0 0 0 0 ) ĊĠĠĠ Ġprint ( value . toString (). first ()) Ġ// ĠTo Ġprevent Ġoptim izing Ġaway Ċ } Ċ Ċ const Ġval Ġiterations Ġ= Ġ 1 0 0 0 0 Ċ fun Ġnamespace Stack () Ġ{ ĊĠ Ġval Ġstart Ġ= ĠSystem . currentTimeMillis () ĊĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġiterations ) Ġ{ ĊĠĠĠ Ġval Ġstack Ġ= Ġnew Namespace Stack () ĊĠĠĠ Ġval Ġkeys Ġ= Ġstack . flatMap Ġ{ Ġit . keys Ġ} ĊĠĠĠ Ġfor Ġ( j Ġin Ġ 0 Ġuntil Ġ 1 0 0 ) Ġ{ ĊĠĠĠĠĠ Ġval Ġkey Ġ= ĠgetRandom Key ( keys ) ĊĠĠĠĠĠ Ġval Ġvalue Ġ= Ġresolve Symbol In Stack ( stack , Ġstack . size Ġ- Ġ 1 , Ġkey ) ĊĠĠĠĠĠ Ġprint Value ( value ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĠ Ġval Ġend Ġ= ĠSystem . currentTimeMillis () ĊĠ Ġval Ġduration Ġ= Ġend Ġ- Ġstart ĊĠ Ġprintln ("") ĊĠ Ġprintln (" Recursion Ġduration :\ t \ t $ duration ") Ċ } Ċ Ċ fun Ġmerged Namespaces () Ġ{ ĊĠ Ġval Ġstart Ġ= ĠSystem . currentTimeMillis () ĊĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġiterations ) Ġ{ ĊĠĠĠ Ġval Ġstack Ġ= Ġnew Namespace Stack () ĊĠĠĠ Ġval Ġkeys Ġ= Ġstack . flatMap Ġ{ Ġit . keys Ġ} ĊĠĠĠ Ġval Ġnamespace Ġ= Ġstack . reduce Ġ{ Ġa , Ġb Ġ-> Ġa Ġ+ Ġb Ġ} ĊĠĠĠ Ġfor Ġ( j Ġin Ġ 0 Ġuntil Ġ 1 0 0 ) Ġ{ ĊĠĠĠĠĠ Ġval Ġkey Ġ= ĠgetRandom Key ( keys ) ĊĠĠĠĠĠ Ġval Ġvalue Ġ= Ġnamespace [ key ] ĊĠĠĠĠĠ Ġprint Value ( value ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĠ Ġval Ġend Ġ= ĠSystem . currentTimeMillis () ĊĠ Ġval Ġduration Ġ= Ġend Ġ- Ġstart ĊĠ Ġprintln ("") ĊĠ Ġprintln (" Mer ging Ġduration :\ t \ t $ duration ") Ċ } Ċ Ċ class ĠBenchmark Test Ġ{ ĊĠ Ġ@ Disabled ĊĠ Ġ@ Test ĊĠ Ġfun Ġstack Resolution Comparison () Ġ{ ĊĠĠĠ Ġnamespace Stack () ĊĠĠĠ Ġmerged Namespaces () ĊĠ Ġ} Ċ } Ċ