diff options
author | Julian Andres Klode <jak@debian.org> | 2018-05-30 11:45:16 +0000 |
---|---|---|
committer | Julian Andres Klode <jak@debian.org> | 2018-05-30 11:45:16 +0000 |
commit | c105a808366867e5476bd4d1ea7fe1c1e9795948 (patch) | |
tree | ea1a9d696a4571d6637b8aaa97dcba6be86bdd0a /ftparchive | |
parent | 819426013c6ca6310bb469440702b6295dba4498 (diff) | |
parent | f6655a1138a11e80884959014939a25f23a1e308 (diff) |
Merge branch 'fix/usesteadyclockforprogress' into 'master'
Fix/usesteadyclockforprogress
See merge request apt-team/apt!19
Diffstat (limited to 'ftparchive')
-rw-r--r-- | ftparchive/apt-ftparchive.cc | 70 |
1 files changed, 38 insertions, 32 deletions
diff --git a/ftparchive/apt-ftparchive.cc b/ftparchive/apt-ftparchive.cc index a3fdf2391..077701cc0 100644 --- a/ftparchive/apt-ftparchive.cc +++ b/ftparchive/apt-ftparchive.cc @@ -23,6 +23,7 @@ #include <apt-private/private-output.h> #include <algorithm> +#include <chrono> #include <climits> #include <functional> #include <iostream> @@ -33,6 +34,7 @@ #include <sys/stat.h> #include <sys/time.h> #include <time.h> +#include <math.h> #include "apt-ftparchive.h" #include "cachedb.h" @@ -46,6 +48,15 @@ using namespace std; unsigned Quiet = 0; +static struct timeval GetTimevalFromSteadyClock() /*{{{*/ +{ + auto const Time = std::chrono::steady_clock::now().time_since_epoch(); + auto const Time_sec = std::chrono::duration_cast<std::chrono::seconds>(Time); + auto const Time_usec = std::chrono::duration_cast<std::chrono::microseconds>(Time - Time_sec); + return { Time_sec.count(), Time_usec.count() }; +} + /*}}}*/ + // struct PackageMap - List of all package files in the config file /*{{{*/ // --------------------------------------------------------------------- /* */ @@ -173,9 +184,8 @@ bool PackageMap::GenPackages(Configuration &Setup,struct CacheDB::Stats &Stats) string OverrideDir = Setup.FindDir("Dir::OverrideDir"); string CacheDir = Setup.FindDir("Dir::CacheDir"); - struct timeval StartTime; - gettimeofday(&StartTime,0); - + struct timeval StartTime = GetTimevalFromSteadyClock(); + PkgDone = true; // Create a package writer object. @@ -232,15 +242,15 @@ bool PackageMap::GenPackages(Configuration &Setup,struct CacheDB::Stats &Stats) else c0out << ' '; - struct timeval NewTime; - gettimeofday(&NewTime,0); - double Delta = NewTime.tv_sec - StartTime.tv_sec + - (NewTime.tv_usec - StartTime.tv_usec)/1000000.0; + struct timeval NewTime = GetTimevalFromSteadyClock(); + std::chrono::duration<double> Delta = + std::chrono::seconds(NewTime.tv_sec - StartTime.tv_sec) + + std::chrono::microseconds(NewTime.tv_sec - StartTime.tv_usec); c0out << Packages.Stats.Packages << " files " << /* SizeToStr(Packages.Stats.MD5Bytes) << "B/" << */ SizeToStr(Packages.Stats.Bytes) << "B " << - TimeToStr((long)Delta) << endl; + TimeToStr(llround(Delta.count())) << endl; if(_config->FindB("APT::FTPArchive::ShowCacheMisses", false) == true) c0out << " Misses in Cache: " << Packages.Stats.Misses<< endl; @@ -264,9 +274,7 @@ bool PackageMap::GenSources(Configuration &Setup,struct CacheDB::Stats &Stats) string OverrideDir = Setup.FindDir("Dir::OverrideDir"); string CacheDir = Setup.FindDir("Dir::CacheDir"); - struct timeval StartTime; - gettimeofday(&StartTime,0); - + struct timeval StartTime = GetTimevalFromSteadyClock(); SrcDone = true; // Create a package writer object. @@ -320,13 +328,13 @@ bool PackageMap::GenSources(Configuration &Setup,struct CacheDB::Stats &Stats) else c0out << ' '; - struct timeval NewTime; - gettimeofday(&NewTime,0); - double Delta = NewTime.tv_sec - StartTime.tv_sec + - (NewTime.tv_usec - StartTime.tv_usec)/1000000.0; + struct timeval NewTime = GetTimevalFromSteadyClock(); + std::chrono::duration<double> Delta = + std::chrono::seconds(NewTime.tv_sec - StartTime.tv_sec) + + std::chrono::microseconds(NewTime.tv_sec - StartTime.tv_usec); c0out << Sources.Stats.Packages << " pkgs in " << - TimeToStr((long)Delta) << endl; + TimeToStr(llround(Delta.count())) << endl; if(_config->FindB("APT::FTPArchive::ShowCacheMisses", false) == true) c0out << " Misses in Cache: " << Sources.Stats.Misses << endl; @@ -356,10 +364,9 @@ bool PackageMap::GenContents(Configuration &Setup, string ArchiveDir = Setup.FindDir("Dir::ArchiveDir"); string CacheDir = Setup.FindDir("Dir::CacheDir"); string OverrideDir = Setup.FindDir("Dir::OverrideDir"); - - struct timeval StartTime; - gettimeofday(&StartTime,0); - + + struct timeval StartTime = GetTimevalFromSteadyClock(); + // Create a package writer object. MultiCompress Comp(flCombine(ArchiveDir,this->Contents), CntCompress,Permissions); @@ -437,17 +444,17 @@ bool PackageMap::GenContents(Configuration &Setup, else c0out << ' '; - struct timeval NewTime; - gettimeofday(&NewTime,0); - double Delta = NewTime.tv_sec - StartTime.tv_sec + - (NewTime.tv_usec - StartTime.tv_usec)/1000000.0; + struct timeval NewTime = GetTimevalFromSteadyClock(); + std::chrono::duration<double> Delta = + std::chrono::seconds(NewTime.tv_sec - StartTime.tv_sec) + + std::chrono::microseconds(NewTime.tv_sec - StartTime.tv_usec); if(_config->FindB("APT::FTPArchive::ShowCacheMisses", false) == true) c0out << " Misses in Cache: " << Contents.Stats.Misses<< endl; c0out << Contents.Stats.Packages << " files " << SizeToStr(Contents.Stats.Bytes) << "B " << - TimeToStr((long)Delta) << endl; + TimeToStr(llround(Delta.count())) << endl; return true; } @@ -926,8 +933,7 @@ static bool Generate(CommandLine &CmdL) if (CmdL.FileSize() < 2) return ShowHelp(CmdL); - struct timeval StartTime; - gettimeofday(&StartTime,0); + struct timeval StartTime = GetTimevalFromSteadyClock(); struct CacheDB::Stats Stats; // Read the configuration file. @@ -964,12 +970,12 @@ static bool Generate(CommandLine &CmdL) return false; } - struct timeval NewTime; - gettimeofday(&NewTime,0); - double Delta = NewTime.tv_sec - StartTime.tv_sec + - (NewTime.tv_usec - StartTime.tv_usec)/1000000.0; + struct timeval NewTime = GetTimevalFromSteadyClock(); + std::chrono::duration<double> Delta = + std::chrono::seconds(NewTime.tv_sec - StartTime.tv_sec) + + std::chrono::microseconds(NewTime.tv_sec - StartTime.tv_usec); c1out << "Done. " << SizeToStr(Stats.Bytes) << "B in " << Stats.Packages - << " archives. Took " << TimeToStr((long)Delta) << endl; + << " archives. Took " << TimeToStr(llround(Delta.count())) << endl; UnloadTree(TransList); return true; |