$ time tar xzf /tmp/mutt-0.92.8i.tar.gz
26.44s user 1.50s system 98% cpu 28.309 total
$ rm -rf mutt-0.92.8i
$ time ./tar xzf /tmp/mutt-0.92.8i.tar.gz
2.05s user 0.69s system 95% cpu 2.854 total
$
Please apply the following patch to tar-1.12/src/names.c, it extends the
caching to UIDs on which the lookup failed. We should probably extend
the caching to all UIDs that were found so far.
Felix
--- names.c Tue Apr 22 07:35:50 1997
+++ names.c.new Sun May 17 13:58:08 1998
@@ -48,6 +48,9 @@
static uid_t cached_uid; /* valid only if cached_uname is not empty */
static gid_t cached_gid; /* valid only if cached_gname is not empty */
+int lookup_failed = 0;
+int glookup_failed = 0;
+
/*------------------------------------------.
| Given UID, find the corresponding UNAME. |
`------------------------------------------*/
@@ -111,12 +114,18 @@
passwd = getpwnam (uname);
if (passwd)
{
+ lookup_failed = 0;
cached_uid = passwd->pw_uid;
strncpy (cached_uname, uname, UNAME_FIELD_SIZE);
}
- else
+ else {
+ lookup_failed = 1;
+ strncpy (cached_uname, uname, UNAME_FIELD_SIZE);
return 0;
+ }
}
+ if (lookup_failed)
+ return 0;
*uidp = cached_uid;
return 1;
}
@@ -140,9 +149,14 @@
cached_gid = group->gr_gid;
strncpy (cached_gname, gname, GNAME_FIELD_SIZE);
}
- else
+ else {
+ glookup_failed = 1;
+ strncpy (cached_gname, gname, GNAME_FIELD_SIZE);
return 0;
+ }
}
+ if (glookup_failed)
+ return 0;
*gidp = cached_gid;
return 1;
}
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu