Advertisement
Guest User

Untitled

a guest
Aug 19th, 2019
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.83 KB | None | 0 0
  1. class MainActivity : AppCompatActivity() {
  2.  
  3. private var switchFromIoToCompute = 0L
  4. private var switchFromComputeToIo = 0L
  5. private var loopCount = 0L
  6. private var appCreated = 0L
  7.  
  8. override fun onCreate(savedInstanceState: Bundle?) {
  9. super.onCreate(savedInstanceState)
  10. setContentView(R.layout.activity_main)
  11.  
  12. val publishSubject = PublishSubject.create<Long>()
  13.  
  14. var startTime: Long = 0L
  15. publishSubject.doOnNext {
  16. startTime = System.nanoTime()
  17. }
  18. .observeOn(Schedulers.computation())
  19. .doOnNext {
  20. switchFromIoToCompute += System.nanoTime() - startTime
  21. startTime = System.nanoTime()
  22. }
  23. .observeOn(Schedulers.io())
  24. .doOnNext {
  25. switchFromComputeToIo += System.nanoTime() - startTime
  26. }
  27. .subscribe {
  28. // Loop
  29. loopCount++
  30. publishSubject.onNext(it + 1)
  31. }
  32.  
  33. appCreated = System.nanoTime()
  34. publishSubject.onNext(0L)
  35.  
  36. Observable.interval(0, 1, TimeUnit.SECONDS, AndroidSchedulers.mainThread())
  37. .subscribe { updateUi() }
  38. }
  39.  
  40. private fun updateUi() {
  41. val totalSwitching = (switchFromIoToCompute + switchFromComputeToIo) / loopCount
  42. val appTimeByLoop = (System.nanoTime() - appCreated) / loopCount
  43. val message = """
  44. loopCount = $loopCount
  45. IO -> Compute = ${switchFromIoToCompute / loopCount}
  46. Compute -> IO = ${switchFromComputeToIo / loopCount}
  47. Total switching = $totalSwitching
  48. Total time since activity created / loop count= $appTimeByLoop
  49. switch time / Percent total time = ${(totalSwitching * 100f) / appTimeByLoop}%
  50. """.trimIndent()
  51. text_view.text = message
  52. }
  53. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement