Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class MainActivity : AppCompatActivity() {
- private var switchFromIoToCompute = 0L
- private var switchFromComputeToIo = 0L
- private var loopCount = 0L
- private var appCreated = 0L
- override fun onCreate(savedInstanceState: Bundle?) {
- super.onCreate(savedInstanceState)
- setContentView(R.layout.activity_main)
- val publishSubject = PublishSubject.create<Long>()
- var startTime: Long = 0L
- publishSubject.doOnNext {
- startTime = System.nanoTime()
- }
- .observeOn(Schedulers.computation())
- .doOnNext {
- switchFromIoToCompute += System.nanoTime() - startTime
- startTime = System.nanoTime()
- }
- .observeOn(Schedulers.io())
- .doOnNext {
- switchFromComputeToIo += System.nanoTime() - startTime
- }
- .subscribe {
- // Loop
- loopCount++
- publishSubject.onNext(it + 1)
- }
- appCreated = System.nanoTime()
- publishSubject.onNext(0L)
- Observable.interval(0, 1, TimeUnit.SECONDS, AndroidSchedulers.mainThread())
- .subscribe { updateUi() }
- }
- private fun updateUi() {
- val totalSwitching = (switchFromIoToCompute + switchFromComputeToIo) / loopCount
- val appTimeByLoop = (System.nanoTime() - appCreated) / loopCount
- val message = """
- loopCount = $loopCount
- IO -> Compute = ${switchFromIoToCompute / loopCount}
- Compute -> IO = ${switchFromComputeToIo / loopCount}
- Total switching = $totalSwitching
- Total time since activity created / loop count= $appTimeByLoop
- switch time / Percent total time = ${(totalSwitching * 100f) / appTimeByLoop}%
- """.trimIndent()
- text_view.text = message
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement