package Ġcom . tencent . bk repo . common . bk sync . benchmarks Ċ Ċ import Ġcom . tencent . bk repo . common . bk sync . Buffered Sl iding Window Ċ import Ġorg . openjdk . j mh . annotations . Benchmark Ċ import Ġorg . openjdk . j mh . annotations . Benchmark Mode Ċ import Ġorg . openjdk . j mh . annotations . Measurement Ċ import Ġorg . openjdk . j mh . annotations . Mode Ċ import Ġorg . openjdk . j mh . annotations . Output TimeUnit Ċ import Ġorg . openjdk . j mh . annotations . Scope Ċ import Ġorg . openjdk . j mh . annotations . Setup Ċ import Ġorg . openjdk . j mh . annotations . State Ċ import Ġorg . openjdk . j mh . annotations . Tear Down Ċ import Ġorg . openjdk . j mh . annotations . W arm up Ċ import Ġjava . io . File Ċ import Ġjava . io . InputStream Ċ import Ġjava . io . Random Access File Ċ import Ġjava . nio . file . Files Ċ import Ġjava . util . concurrent . TimeUnit Ċ Ċ @ State ( Scope . Thread ) Ċ open Ġclass ĠBuffered Sl iding Window Benchmark Ġ{ ĊĠĠĠ Ġlateinit Ġvar Ġfile : ĠFile ĊĠĠĠ Ġlateinit Ġvar Ġr af : ĠRandom Access File ĊĠĠĠ Ġlateinit Ġvar Ġb sw : ĠBuffered Sl iding Window ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠMB Ġ= Ġ 1 0 2 4 Ġ* Ġ 1 0 2 4 ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠGB Ġ= Ġ 1 0 2 4 Ġ* ĠMB ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Setup ĊĠĠĠ Ġfun Ġsetup () Ġ{ ĊĠĠĠĠĠĠĠ Ġfile Ġ= Ġcreate TempFile () ĊĠĠĠĠĠĠĠ ĠFiles . new OutputStream ( file . to Path ()). use Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠZero InputStream ( GB ). copy To ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġr af Ġ= ĠRandom Access File ( file , Ġ" r ") ĊĠĠĠĠĠĠĠ Ġb sw Ġ= ĠBuffered Sl iding Window ( 2 0 0 0 , Ġ 1 6 Ġ* ĠMB , Ġfile . inputStream (), Ġfile . length ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Tear Down ĊĠĠĠ Ġfun ĠtearDown () Ġ{ ĊĠĠĠĠĠĠĠ Ġr af . close () ĊĠĠĠĠĠĠĠ Ġfile . delete () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Benchmark ĊĠĠĠ Ġ@ Benchmark Mode ( Mode . Average Time ) ĊĠĠĠ Ġ@ Output TimeUnit ( TimeUnit . NAN O SECONDS ) ĊĠĠĠ Ġ@ W arm up ( iterations Ġ= Ġ 5 , Ġtime Ġ= Ġ 1 0 0 , Ġtime Unit Ġ= ĠTimeUnit . MILLISECONDS ) ĊĠĠĠ Ġ@ Measurement ( iterations Ġ= Ġ 5 , Ġtime Ġ= Ġ 1 0 0 , Ġtime Unit Ġ= ĠTimeUnit . MILLISECONDS ) ĊĠĠĠ Ġfun Ġtest MoveTo Next Byte () Ġ{ ĊĠĠĠĠĠĠĠ Ġb sw . moveTo Next Byte () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Benchmark ĊĠĠĠ Ġ@ Benchmark Mode ( Mode . Average Time ) ĊĠĠĠ Ġ@ Output TimeUnit ( TimeUnit . NAN O SECONDS ) ĊĠĠĠ Ġ@ W arm up ( iterations Ġ= Ġ 5 , Ġtime Ġ= Ġ 1 0 0 , Ġtime Unit Ġ= ĠTimeUnit . MILLISECONDS ) ĊĠĠĠ Ġ@ Measurement ( iterations Ġ= Ġ 5 , Ġtime Ġ= Ġ 1 0 0 , Ġtime Unit Ġ= ĠTimeUnit . MILLISECONDS ) ĊĠĠĠ Ġfun Ġtest MoveTo Next () Ġ{ ĊĠĠĠĠĠĠĠ Ġb sw . moveTo Next () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠZero InputStream ( private Ġval Ġsize : ĠInt ) Ġ: ĠInputStream () Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġread Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġread (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(++ read Ġ> Ġsize ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ- 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ 0 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ