Skip to content

Instantly share code, notes, and snippets.

@remcomokveld
Created October 14, 2024 09:11
Show Gist options
  • Select an option

  • Save remcomokveld/11559cbb9154c004b50a555a6c962353 to your computer and use it in GitHub Desktop.

Select an option

Save remcomokveld/11559cbb9154c004b50a555a6c962353 to your computer and use it in GitHub Desktop.
package com.example.benchmark
import androidx.benchmark.junit4.BenchmarkRule
import androidx.benchmark.junit4.measureRepeated
import androidx.test.ext.junit.runners.AndroidJUnit4
import dagger.internal.DoubleCheck
import dagger.internal.Provider
import org.junit.Rule
import org.junit.Test
import org.junit.runner.RunWith
@RunWith(AndroidJUnit4::class)
class ExampleBenchmark {
@get:Rule
val benchmarkRule = BenchmarkRule()
private val getInvocations = 9
@Test
fun notScoped() {
benchmarkRule.measureRepeated {
val dependency = Provider { Dependency() }
val dependentProvider = Provider { Dependent(dependency.get()) }
repeat(getInvocations) { dependentProvider.get() }
}
}
@Test
fun scoped() {
benchmarkRule.measureRepeated {
val dependency = DoubleCheck.provider(Provider { Dependency() })
val dependentProvider = DoubleCheck.provider(Provider { Dependent(dependency.get()) })
repeat(getInvocations) { dependentProvider.get() }
}
}
class Dependency
class Dependent(val dependency: Dependency)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment