libxbps: performance improvements by caching the most accessed paths.

1- We can cache the result of the first xbps_pkgdb_init() when it fails
   and avoid the malloc/free/access from it.
2- We cache the uname(2) result into a private var in xbps_handle and
   use it in xbps_pkg_arch_match().

This improves performance by ~5% approx and it's close as it was before
introducing the repository index format 1.5.
This commit is contained in:
Juan RP
2012-06-15 15:33:11 +02:00
parent 506625a716
commit 068cab8d20
22 changed files with 272 additions and 159 deletions

View File

@@ -281,13 +281,12 @@ xbps_pkg_has_rundeps(prop_dictionary_t pkgd)
}
bool
xbps_pkg_arch_match(const char *orig, const char *target)
xbps_pkg_arch_match(struct xbps_handle *xhp,
const char *orig,
const char *target)
{
struct utsname un;
if (target == NULL) {
uname(&un);
if (strcmp(orig, "noarch") && strcmp(orig, un.machine))
if (strcmp(orig, "noarch") && strcmp(orig, xhp->un_machine))
return false;
} else {
if (strcmp(orig, "noarch") && strcmp(orig, target))