From 5b7af08e4b23f00fc1de4dfe4178d867a560553d Mon Sep 17 00:00:00 2001 From: Julian Andres Klode Date: Mon, 3 Feb 2025 19:22:52 +0100 Subject: solver3: Cache calls to policy It's a bit silly otherwise. --- apt-pkg/solver3.h | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'apt-pkg/solver3.h') diff --git a/apt-pkg/solver3.h b/apt-pkg/solver3.h index 548c3b777..2868616de 100644 --- a/apt-pkg/solver3.h +++ b/apt-pkg/solver3.h @@ -114,6 +114,20 @@ class Solver mutable std::vector pkgObsolete; bool Obsolete(pkgCache::PkgIterator pkg) const; bool ObsoletedByNewerSourceVersion(pkgCache::VerIterator cand) const; + mutable std::vector priorities; + short GetPriority(pkgCache::VerIterator ver) const + { + if (priorities[ver->ID] == 0) + priorities[ver->ID] = policy.GetPriority(ver); + return priorities[ver->ID]; + } + mutable std::vector candidates; + pkgCache::VerIterator GetCandidateVer(pkgCache::PkgIterator pkg) const + { + if (candidates[pkg->ID].end()) + candidates[pkg->ID] = policy.GetCandidateVer(pkg); + return candidates[pkg->ID]; + } // \brief Heap of the remaining work. // -- cgit v1.2.3-70-g09d2