- // get the hash collisions average
- long NumBuckets = sizeof(Cache->HeaderP->PkgHashTable)/sizeof(map_ptrloc);
- long UsedBuckets = 0;
- long UnusedBuckets = 0;
- long LongestBucket = 0;
- long ShortestBucket = NumBuckets;
- for (unsigned int i=0; i < NumBuckets; ++i)
- {
- pkgCache::Package *Pkg = Cache->PkgP + Cache->HeaderP->PkgHashTable[i];
- if(Pkg == 0 || Pkg == Cache->PkgP)
- {
- UnusedBuckets++;
- continue;
- }
- long ThisBucketSize = 0;
- for (; Pkg != Cache->PkgP; Pkg = Cache->PkgP + Pkg->NextPackage)
- ThisBucketSize++;
- LongestBucket = std::max(ThisBucketSize, LongestBucket);
- ShortestBucket = std::min(ThisBucketSize, ShortestBucket);
- UsedBuckets += ThisBucketSize;
- }
- cout << _("Pkg Hashtable stats:") << endl;
- cout << _("Number of buckets: ") << SizeToStr(NumBuckets) << endl;
- cout << _("Unused buckets: ") << SizeToStr(UnusedBuckets) << endl;
- cout << _("Used buckets: ") << UsedBuckets << endl;
- cout << _("Average num entries per bucket : ") << UsedBuckets/(double)NumBuckets << endl;
- cout << _("Longest / Shortest bucket: ") << LongestBucket << " / " << ShortestBucket << endl;
-
- // get the hash collisions average
- NumBuckets = sizeof(Cache->HeaderP->GrpHashTable)/sizeof(map_ptrloc);
- UsedBuckets = 0;
- UnusedBuckets = 0;
- LongestBucket = 0;
- ShortestBucket = NumBuckets;
- for (unsigned int i=0; i < NumBuckets; ++i)
- {
- pkgCache::Group *Grp = Cache->GrpP + Cache->HeaderP->GrpHashTable[i];
- if(Grp == 0 || Grp == Cache->GrpP)
- {
- UnusedBuckets++;
- continue;
- }
- long ThisBucketSize = 0;
- for (; Grp != Cache->GrpP; Grp = Cache->GrpP + Grp->Next)
- ThisBucketSize++;
- LongestBucket = std::max(ThisBucketSize, LongestBucket);
- ShortestBucket = std::min(ThisBucketSize, ShortestBucket);
- UsedBuckets += ThisBucketSize;
- }
- cout << _("Grp Hashtable stats:") << endl;
- cout << _("Number of buckets: ") << SizeToStr(NumBuckets) << endl;
- cout << _("Unused buckets: ") << SizeToStr(UnusedBuckets) << endl;
- cout << _("Used buckets: ") << UsedBuckets << endl;
- cout << _("Average num entries per bucket : ") << UsedBuckets/(double)NumBuckets << endl;
- cout << _("Longest / Shortest bucket: ") << LongestBucket << " / " << ShortestBucket << endl;