libzypp
12.16.5
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
libzypp
Welcome to libzypp
Code Pitfalls - Frequently made mistakes
Code Snippets
Environment Variables
Testing for provided features.
Notes on revisions
Extending ZYpp: Plugins and Hooks
Services
Solver - Vendor protection
Writing and tunning testcases
Libzypp and threads
User data as transaction id
Todo List
Deprecated List
Modules
Namespaces
Classes
Files
File List
zypp
base
Algorithm.h
Backtrace.cc
Backtrace.h
Collector.h
Counter.h
Debug.h
DefaultIntegral.h
DtorReset.h
Easy.h
Errno.h
Exception.cc
Exception.h
ExternalDataSource.cc
ExternalDataSource.h
Fd.cc
Fd.h
Flags.h
Function.h
Functional.h
Gettext.cc
Gettext.h
GzStream.cc
GzStream.h
InputStream.cc
InputStream.h
InterProcessMutex.cc
InterProcessMutex.h
IOStream.cc
IOStream.h
Iterator.h
LogControl.cc
LogControl.h
Logger.h
LogTools.h
Measure.cc
Measure.h
NamedValue.h
NonCopyable.h
ProfilingFormater.cc
ProfilingFormater.h
ProvideNumericId.h
PtrTypes.h
Random.cc
Random.h
ReferenceCounted.cc
ReferenceCounted.h
Regex.cc
Regex.h
SafeBool.h
SerialNumber.cc
SerialNumber.h
Signal.h
String.cc
String.h
StrMatcher.cc
StrMatcher.h
Sysconfig.cc
Sysconfig.h
Tr1hash.h
Unit.cc
Unit.h
UserRequestException.cc
UserRequestException.h
WatchFile.h
media
misc
parser
pool
repo
sat
solver
target
thread
ui
url
ws
zypp_detail
APIConfig.h
Arch.cc
Arch.h
AutoDispose.h
Bit.h
ByteCount.cc
ByteCount.h
Callback.h
Capabilities.cc
Capabilities.h
Capability.cc
Capability.h
CapMatch.cc
CapMatch.h
Changelog.cc
Changelog.h
CheckSum.cc
CheckSum.h
CountryCode.cc
CountryCode.h
Date.cc
Date.h
Dep.cc
Dep.h
Digest.cc
Digest.h
DiskUsage.cc
DiskUsage.h
DiskUsageCounter.cc
DiskUsageCounter.h
DownloadMode.cc
DownloadMode.h
Edition.cc
Edition.h
ExternalProgram.cc
ExternalProgram.h
Fetcher.cc
Fetcher.h
FileChecker.cc
FileChecker.h
Filter.h
Glob.cc
Glob.h
HistoryLog.cc
HistoryLog.h
HistoryLogData.cc
HistoryLogData.h
IdString.cc
IdString.h
IdStringType.h
InstanceId.cc
InstanceId.h
KeyContext.h
KeyRing.cc
KeyRing.h
KVMap.h
LanguageCode.cc
LanguageCode.h
Locale.cc
Locale.h
Locks.cc
Locks.h
ManagedFile.h
MediaProducts.cc
MediaProducts.h
MediaSetAccess.cc
MediaSetAccess.h
Misc.h
OnMediaLocation.cc
OnMediaLocation.h
Package.cc
Package.h
PackageKeyword.h
Patch.cc
Patch.h
PathInfo.cc
PathInfo.h
Pathname.cc
Pathname.h
Pattern.cc
Pattern.h
PluginFrame.cc
PluginFrame.h
PluginFrameException.cc
PluginFrameException.h
PluginScript.cc
PluginScript.h
PluginScriptException.cc
PluginScriptException.h
PoolItem.cc
PoolItem.h
PoolItemBest.cc
PoolItemBest.h
PoolQuery.cc
PoolQuery.h
PoolQueryResult.cc
PoolQueryResult.h
PoolQueryUtil.tcc
ProblemSolution.cc
ProblemSolution.h
ProblemTypes.h
Product.cc
Product.h
ProgressData.cc
ProgressData.h
ProvideFilePolicy.cc
ProvideFilePolicy.h
PublicKey.cc
PublicKey.h
Range.cc
Range.h
Rel.cc
Rel.h
RelCompare.h
RepoInfo.cc
RepoInfo.h
RepoManager.cc
RepoManager.h
Repository.cc
Repository.h
RepoStatus.cc
RepoStatus.h
ResFilters.h
ResKind.cc
ResKind.h
ResObject.cc
ResObject.h
ResObjects.h
Resolvable.cc
Resolvable.h
Resolver.cc
Resolver.h
ResolverProblem.cc
ResolverProblem.h
ResPool.cc
ResPool.h
ResPoolProxy.cc
ResPoolProxy.h
ResStatus.cc
ResStatus.h
ResTraits.h
ServiceInfo.cc
ServiceInfo.h
Signature.cc
Signature.h
SrcPackage.cc
SrcPackage.h
SysContent.cc
SysContent.h
Target.cc
Target.h
TmpPath.cc
TmpPath.h
TriBool.h
Url.cc
Url.h
Vendor.h
VendorAttr.cc
VendorAttr.h
VendorSupportOptions.cc
VendorSupportOptions.h
ZConfig.cc
ZConfig.h
ZYpp.cc
ZYpp.h
ZYppCallbacks.h
ZYppCommit.h
ZYppCommitPolicy.cc
ZYppCommitPolicy.h
ZYppCommitResult.cc
ZYppCommitResult.h
ZYppFactory.cc
ZYppFactory.h
File Members
Measure.cc
Go to the documentation of this file.
1
/*---------------------------------------------------------------------\
2
| ____ _ __ __ ___ |
3
| |__ / \ / / . \ . \ |
4
| / / \ V /| _/ _/ |
5
| / /__ | | | | | | |
6
| /_____||_| |_| |_| |
7
| |
8
\---------------------------------------------------------------------*/
12
extern
"C"
13
{
14
#include <sys/times.h>
15
#include <unistd.h>
16
}
17
#include <iostream>
18
19
#include "
zypp/base/Logger.h
"
20
#include "
zypp/base/Measure.h
"
21
#include "
zypp/base/String.h
"
22
23
using
std::endl;
24
25
#undef ZYPP_BASE_LOGGER_LOGGROUP
26
#define ZYPP_BASE_LOGGER_LOGGROUP "Measure"
27
29
namespace
zypp
30
{
31
32
namespace
debug
33
{
34
36
struct
Tm
37
{
38
Tm
()
39
:
_real
( 0 )
40
,
_proc
(
tmsEmpty
)
41
{}
42
43
void
get
()
44
{
45
_real
= ::time(NULL);
46
::times( &
_proc
);
47
}
48
49
Tm
operator-
(
const
Tm
& rhs )
const
50
{
51
Tm
ret( *
this
);
52
ret.
_real
-= rhs.
_real
;
53
ret.
_proc
.tms_utime -= rhs.
_proc
.tms_utime;
54
ret.
_proc
.tms_stime -= rhs.
_proc
.tms_stime;
55
ret.
_proc
.tms_cutime -= rhs.
_proc
.tms_cutime;
56
ret.
_proc
.tms_cstime -= rhs.
_proc
.tms_cstime;
57
return
ret;
58
}
59
60
std::string
asString
()
const
61
{
62
std::string ret(
timeStr
(
_real
) );
63
ret +=
" (u "
;
64
ret +=
timeStr
(
asSec
(
_proc
.tms_utime ) );
65
ret +=
" s "
;
66
ret +=
timeStr
(
asSec
(
_proc
.tms_stime ) );
67
ret +=
" c "
;
68
ret +=
timeStr
(
asSec
(
_proc
.tms_cutime +
_proc
.tms_cstime ) );
69
ret +=
")"
;
70
return
ret;
71
}
72
73
std::string
stringIf
( clock_t ticks_r,
const
std::string & tag_r )
const
74
{
75
std::string ret;
76
if
( ticks_r )
77
{
78
ret += tag_r;
79
ret +=
timeStr
(
asSec
( ticks_r ) );
80
}
81
return
ret;
82
}
83
84
double
asSec
( clock_t ticks_r )
const
85
{
return
double(ticks_r) /
ticks
; }
86
87
std::string
timeStr
( time_t sec_r )
const
88
{
89
time_t h = sec_r/3600;
90
sec_r -= h*3600;
91
time_t m = sec_r/60;
92
sec_r -= m*60;
93
if
( h )
94
return
str::form
(
"%lu:%02lu:%02lu"
, h, m, sec_r );
95
if
( m )
96
return
str::form
(
"%lu:%02lu"
, m, sec_r );
97
return
str::form
(
"%lu"
, sec_r );
98
}
99
100
std::string
timeStr
(
double
sec_r )
const
101
{
102
time_t h = time_t(sec_r)/3600;
103
sec_r -= h*3600;
104
time_t m = time_t(sec_r)/60;
105
sec_r -= m*60;
106
if
( h )
107
return
str::form
(
"%lu:%02lu:%05.2lf"
, h, m, sec_r );
108
if
( m )
109
return
str::form
(
"%lu:%05.2lf"
, m, sec_r );
110
return
str::form
(
"%.2lf"
, sec_r );
111
}
112
114
static
const
long
ticks
;
116
static
const
struct
tms
tmsEmpty
;
118
time_t
_real
;
120
struct
tms
_proc
;
121
};
122
123
const
struct
tms
Tm
::
tmsEmpty
= { 0, 0, 0, 0 };
124
const
long
Tm::ticks
= sysconf(_SC_CLK_TCK);
125
127
std::ostream &
operator<<
( std::ostream & str,
const
Tm
& obj )
128
{
129
return
str << obj.
asString
();
130
}
131
132
134
//
135
// CLASS NAME : Measure::Impl
136
//
138
class
Measure::Impl
139
{
140
public
:
141
Impl
(
const
std::string & ident_r )
142
:
_ident
( ident_r )
143
,
_level
(
_glevel
)
144
,
_seq
( 0 )
145
{
146
_glevel
+=
".."
;
147
INT
<<
_level
<<
"START MEASURE("
<<
_ident
<<
")"
<< endl;
148
_start
.
get
();
149
}
150
151
~Impl
()
152
{
153
_stop
.
get
();
154
++
_seq
;
155
std::ostream & str(
INT
<<
_level
<<
"MEASURE("
<<
_ident
<<
") "
);
156
dumpMeasure
( str );
157
_glevel
.erase( 0, 2 );
158
}
159
160
void
restart
()
161
{
162
INT
<<
_level
<<
"RESTART MEASURE("
<<
_ident
<<
")"
<< endl;
163
_start
=
_stop
;
164
}
165
166
void
elapsed
()
const
167
{
168
_stop
.
get
();
169
++
_seq
;
170
std::ostream & str(
INT
<<
_level
<<
"ELAPSED("
<<
_ident
<<
") "
);
171
dumpMeasure
( str );
172
_elapsed
=
_stop
;
173
}
174
175
private
:
176
std::ostream &
dumpMeasure
( std::ostream & str_r )
const
177
{
178
str_r << (
_stop
-
_start
);
179
if
(
_seq
> 1 )
// diff to previous _elapsed
180
{
181
str_r <<
" ["
<< (
_stop
-
_elapsed
) <<
"]"
;
182
}
183
return
str_r << endl;
184
}
185
186
private
:
187
static
std::string
_glevel
;
188
189
std::string
_ident
;
190
std::string
_level
;
191
Tm
_start
;
192
mutable
unsigned
_seq
;
193
mutable
Tm
_elapsed
;
194
mutable
Tm
_stop
;
195
};
196
197
std::string
Measure::Impl::_glevel
;
198
200
202
//
203
// CLASS NAME : Measure
204
//
206
207
Measure::Measure
()
208
{}
209
210
Measure::Measure
(
const
std::string & ident_r )
211
: _pimpl( new
Impl
( ident_r ) )
212
{}
213
214
Measure::~Measure
()
215
{}
216
217
void
Measure::start
(
const
std::string & ident_r )
218
{
219
stop
();
220
_pimpl
.
reset
(
new
Impl
( ident_r ) );
221
}
222
223
void
Measure::restart
()
224
{
225
_pimpl
->
restart
();
226
}
227
228
void
Measure::elapsed
()
const
229
{
230
if
(
_pimpl
)
231
_pimpl
->
elapsed
();
232
}
233
234
void
Measure::stop
()
235
{
236
_pimpl
.
reset
();
237
}
238
240
}
// namespace debug
243
}
// namespace zypp
zypp
base
Measure.cc
Generated by
1.8.2