## Benchmark: Resolver Optimizations ## ## This benchmark measures the performance improvements from optimizations ## and validates that they meet the performance targets. import times import strformat import strutils import tables import sets import ../src/nip/resolver/profiler import ../src/nip/resolver/optimizations import ../src/nip/resolver/variant_types import ../src/nip/resolver/dependency_graph import ../src/nip/manifest_parser # ============================================================================ # Benchmark Configuration # ============================================================================ const ITERATIONS = 1000 WARMUP_ITERATIONS = 100 # ============================================================================ # Test Data Helpers # ============================================================================ proc createTestDemand(flags: seq[string]): VariantDemand = ## Helper to create test variant demands var domains = initTable[string, VariantDomain]() domains["features"] = VariantDomain( name: "features", exclusivity: NonExclusive, flags: initHashSet[string]() ) for flag in flags: domains["features"].flags.incl(flag) result = VariantDemand( packageName: "test", variantProfile: VariantProfile( domains: domains, hash: "" ), optional: false ) proc createTestTerm(name: string, major, minor, patch: int): PackageTerm = ## Helper to create test package terms result = PackageTerm( id: PackageTermId(name & "-" & $major & "." & $minor & "." & $patch), packageName: name, version: SemanticVersion(major: major, minor: minor, patch: patch), variantProfile: VariantProfile( domains: initTable[string, VariantDomain](), hash: "" ), optional: false, source: "test" ) # ============================================================================ # Benchmark Utilities # ============================================================================ proc benchmark(name: string, iterations: int, body: proc()) = ## Run a benchmark and print results # Warmup for i in 0..