From d01d91d397284fb2ab3402dddede1594d2685356 Mon Sep 17 00:00:00 2001 From: Michael Vogt Date: Wed, 28 May 2014 13:49:52 +0200 Subject: cmdline/apt-extracttemplates.cc: remove unused private var Reported-By: clang -Wall --- cmdline/apt-extracttemplates.cc | 2 +- cmdline/apt-extracttemplates.h | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) (limited to 'cmdline') diff --git a/cmdline/apt-extracttemplates.cc b/cmdline/apt-extracttemplates.cc index e4428e051..6dd53b78d 100644 --- a/cmdline/apt-extracttemplates.cc +++ b/cmdline/apt-extracttemplates.cc @@ -52,7 +52,7 @@ pkgCache *DebFile::Cache = 0; // --------------------------------------------------------------------- /* */ DebFile::DebFile(const char *debfile) - : File(debfile, FileFd::ReadOnly), Size(0), Control(NULL), ControlLen(0), + : File(debfile, FileFd::ReadOnly), Control(NULL), ControlLen(0), DepOp(0), PreDepOp(0), Config(0), Template(0), Which(None) { } diff --git a/cmdline/apt-extracttemplates.h b/cmdline/apt-extracttemplates.h index 9cc3f5f25..6d2870a02 100644 --- a/cmdline/apt-extracttemplates.h +++ b/cmdline/apt-extracttemplates.h @@ -20,7 +20,6 @@ class pkgCache; class DebFile : public pkgDirStream { FileFd File; - unsigned long Size; char *Control; unsigned long ControlLen; -- cgit v1.2.3 From a93a32b5cda4f2a0572365a8b919329ea6af2c66 Mon Sep 17 00:00:00 2001 From: Michael Vogt Date: Thu, 29 May 2014 10:22:09 +0200 Subject: add hashtable stats --- cmdline/apt-cache.cc | 58 +++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 57 insertions(+), 1 deletion(-) (limited to 'cmdline') diff --git a/cmdline/apt-cache.cc b/cmdline/apt-cache.cc index 84b775390..a620740e1 100644 --- a/cmdline/apt-cache.cc +++ b/cmdline/apt-cache.cc @@ -373,7 +373,63 @@ static bool Stats(CommandLine &) Cache->Head().VerFileCount*Cache->Head().VerFileSz + Cache->Head().ProvidesCount*Cache->Head().ProvidesSz; cout << _("Total space accounted for: ") << SizeToStr(Total) << endl; - + + // 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; + return true; } /*}}}*/ -- cgit v1.2.3 From eceb418be84f6271c10e374281c1a8379647679b Mon Sep 17 00:00:00 2001 From: Michael Vogt Date: Wed, 18 Jun 2014 08:51:59 +0200 Subject: improve formating of the hash stats --- cmdline/apt-cache.cc | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) (limited to 'cmdline') diff --git a/cmdline/apt-cache.cc b/cmdline/apt-cache.cc index a620740e1..072cf4ef7 100644 --- a/cmdline/apt-cache.cc +++ b/cmdline/apt-cache.cc @@ -374,7 +374,7 @@ static bool Stats(CommandLine &) Cache->Head().ProvidesCount*Cache->Head().ProvidesSz; cout << _("Total space accounted for: ") << SizeToStr(Total) << endl; - // get the hash collisions average + // hashtable stats for the PkgHashTable long NumBuckets = sizeof(Cache->HeaderP->PkgHashTable)/sizeof(map_ptrloc); long UsedBuckets = 0; long UnusedBuckets = 0; @@ -395,14 +395,14 @@ static bool Stats(CommandLine &) 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 + cout << "Total PkgHashTable buckets: " << SizeToStr(NumBuckets) << std::endl; + cout << " Unused: " << SizeToStr(UnusedBuckets) << std::endl; + cout << " Used: " << UsedBuckets << std::endl; + cout << " Average entries: " << UsedBuckets/(double)NumBuckets << std::endl; + cout << " Longest: " << LongestBucket << std::endl; + cout << " Shortest: " << ShortestBucket << std::endl; + + // hashtable stats for the GrpHashTable NumBuckets = sizeof(Cache->HeaderP->GrpHashTable)/sizeof(map_ptrloc); UsedBuckets = 0; UnusedBuckets = 0; @@ -423,12 +423,12 @@ static bool Stats(CommandLine &) 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; + cout << "Total GrpHashTable buckets: " << SizeToStr(NumBuckets) << std::endl; + cout << " Unused: " << SizeToStr(UnusedBuckets) << std::endl; + cout << " Used: " << UsedBuckets << std::endl; + cout << " Average entries: " << UsedBuckets/(double)NumBuckets << std::endl; + cout << " Longest: " << LongestBucket << std::endl; + cout << " Shortest: " << ShortestBucket << std::endl; return true; } -- cgit v1.2.3 From 637c3b232223c17827a8842cb1c24655469329ba Mon Sep 17 00:00:00 2001 From: Michael Vogt Date: Wed, 18 Jun 2014 09:36:48 +0200 Subject: Provide ShowHashTableStats function --- cmdline/apt-cache.cc | 98 +++++++++++++++++++++++----------------------------- 1 file changed, 43 insertions(+), 55 deletions(-) (limited to 'cmdline') diff --git a/cmdline/apt-cache.cc b/cmdline/apt-cache.cc index 072cf4ef7..35e9cc3a8 100644 --- a/cmdline/apt-cache.cc +++ b/cmdline/apt-cache.cc @@ -264,6 +264,44 @@ static bool DumpPackage(CommandLine &CmdL) return true; } /*}}}*/ +// ShowHashTableStats - Show stats about a hashtable /*{{{*/ +// --------------------------------------------------------------------- +/* */ +template +static void ShowHashTableStats(std::string Type, + T *StartP, + map_ptrloc *Hashtable, + unsigned long Size) +{ + // hashtable stats for the HashTable + long NumBuckets = Size; + long UsedBuckets = 0; + long UnusedBuckets = 0; + long LongestBucket = 0; + long ShortestBucket = NumBuckets; + for (unsigned int i=0; i < NumBuckets; ++i) + { + T *P = StartP + Hashtable[i]; + if(P == 0 || P == StartP) + { + UnusedBuckets++; + continue; + } + long ThisBucketSize = 0; + for (; P != StartP; P = StartP + P->Next) + ThisBucketSize++; + LongestBucket = std::max(ThisBucketSize, LongestBucket); + ShortestBucket = std::min(ThisBucketSize, ShortestBucket); + UsedBuckets += ThisBucketSize; + } + cout << "Total buckets " << Type << ": " << SizeToStr(NumBuckets) << std::endl; + cout << " Unused: " << SizeToStr(UnusedBuckets) << std::endl; + cout << " Used: " << UsedBuckets << std::endl; + cout << " Average entries: " << UsedBuckets/(double)NumBuckets << std::endl; + cout << " Longest: " << LongestBucket << std::endl; + cout << " Shortest: " << ShortestBucket << std::endl; +} + /*}}}*/ // Stats - Dump some nice statistics /*{{{*/ // --------------------------------------------------------------------- /* */ @@ -374,61 +412,11 @@ static bool Stats(CommandLine &) Cache->Head().ProvidesCount*Cache->Head().ProvidesSz; cout << _("Total space accounted for: ") << SizeToStr(Total) << endl; - // hashtable stats for the PkgHashTable - 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 << "Total PkgHashTable buckets: " << SizeToStr(NumBuckets) << std::endl; - cout << " Unused: " << SizeToStr(UnusedBuckets) << std::endl; - cout << " Used: " << UsedBuckets << std::endl; - cout << " Average entries: " << UsedBuckets/(double)NumBuckets << std::endl; - cout << " Longest: " << LongestBucket << std::endl; - cout << " Shortest: " << ShortestBucket << std::endl; - - // hashtable stats for the GrpHashTable - 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 << "Total GrpHashTable buckets: " << SizeToStr(NumBuckets) << std::endl; - cout << " Unused: " << SizeToStr(UnusedBuckets) << std::endl; - cout << " Used: " << UsedBuckets << std::endl; - cout << " Average entries: " << UsedBuckets/(double)NumBuckets << std::endl; - cout << " Longest: " << LongestBucket << std::endl; - cout << " Shortest: " << ShortestBucket << std::endl; + // hashtable stats + int HashTableSize = sizeof(Cache->HeaderP->PkgHashTable)/sizeof(map_ptrloc); + ShowHashTableStats("PkgHashTable", Cache->PkgP, Cache->HeaderP->PkgHashTable, HashTableSize); + HashTableSize = sizeof(Cache->HeaderP->GrpHashTable)/sizeof(map_ptrloc); + ShowHashTableStats("GrpHashTable", Cache->GrpP, Cache->HeaderP->GrpHashTable, HashTableSize); return true; } -- cgit v1.2.3