From 9da198eb6e4fdf68491446a5fe8543dd321ab199 Mon Sep 17 00:00:00 2001 From: Yigang Wen Date: Mon, 8 Apr 2013 16:10:45 +0800 Subject: [PATCH] critical performance fix: remove duplicate dependency packages Without this patch, package dependency and reverse depedency resolving will take about 1-2G memory while scanning 800 Tizen packages, and after remove duplicated packages only ~2M. Change-Id: I220c9cb69e726e2202f98273de5b8a5cb823745a --- depanneur | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/depanneur b/depanneur index a4ce3e0..078c420 100755 --- a/depanneur +++ b/depanneur @@ -1046,8 +1046,6 @@ sub update_pkgddeps { } } - return if ($deps_build == 0 && $rdeps_build == 0); - for my $pack (sort keys %pkgddeps) { $pkgrddeps{$pack} = []; } @@ -1082,6 +1080,8 @@ sub update_pkgddeps { next if (! defined($pkgddeps{$pkg})); for (@{$pkgddeps{$pkg}}) { push @{$pkgrdeps{$_}}, @{$pkgrdeps{$pkg}}; + my %uniq_deps = map {$_,1} @{$pkgrdeps{$_}}; + $pkgrdeps{$_} = [keys(%uniq_deps)]; } } @@ -1089,6 +1089,8 @@ sub update_pkgddeps { next if (! defined($pkgrddeps{$pkg})); for (@{$pkgrddeps{$pkg}}) { push @{$pkgdeps{$_}}, @{$pkgdeps{$pkg}}; + my %uniq_deps = map {$_,1} @{$pkgdeps{$_}}; + $pkgdeps{$_} = [keys(%uniq_deps)]; } } } -- 2.7.4