diff --git a/test/test_resolver_performance.go b/test/test_resolver_performance.go new file mode 100644 index 0000000..fd11846 --- /dev/null +++ b/test/test_resolver_performance.go @@ -0,0 +1,61 @@ +package main + +import ( + "fmt" + "time" + + "zsvo/pkg/debian" +) + +func main() { + fmt.Println("🚀 Testing Dependency Resolution Performance") + fmt.Println("==========================================") + + // Создаем резолвер + resolver := debian.NewResolver() + + // Тестируем несколько пакетов + testPackages := []string{"cmake", "pkg-config", "libdrm-dev"} + + fmt.Printf("\n📊 Testing %d packages...\n", len(testPackages)) + + totalStart := time.Now() + + for i, pkg := range testPackages { + fmt.Printf("\n%d. Looking up %s...\n", i+1, pkg) + + start := time.Now() + info, err := resolver.ResolveSource(pkg) + duration := time.Since(start) + + if err != nil { + fmt.Printf("❌ Error: %v\n", err) + } else { + fmt.Printf("✅ Found: %s (version: %s)\n", info.SourcePackage, info.DebianVersion) + fmt.Printf("⏱️ Lookup time: %v\n", duration) + } + } + + totalDuration := time.Since(totalStart) + fmt.Printf("\n🎯 Total time for %d lookups: %v\n", len(testPackages), totalDuration) + fmt.Printf("📈 Average time per lookup: %v\n", totalDuration/time.Duration(len(testPackages))) + + // Тестируем повторный lookup того же пакета + fmt.Printf("\n🔄 Testing repeated lookup...\n") + start := time.Now() + _, err := resolver.ResolveSource("cmake") + duration := time.Since(start) + + if err != nil { + fmt.Printf("❌ Error: %v\n", err) + } else { + fmt.Printf("✅ Repeated lookup time: %v\n", duration) + } + + fmt.Printf("\n🎯 Performance Target: <1ms per lookup\n") + if duration < time.Millisecond { + fmt.Printf("✅ TARGET ACHIEVED! (%v)\n", duration) + } else { + fmt.Printf("❌ Target not achieved (%v)\n", duration) + } +}