10 "OksKernel::Destructor",
11 "OksKernel::operator<<",
12 "OksKernel::load_schema",
13 "OksKernel::save_schema",
14 "OksKernel::close_schema",
15 "OksKernel::CreateSchemaClassList",
16 "OksKernel::load_data",
17 "OksKernel::save_data",
18 "OksKernel::close_data",
19 "OksKernel::CreateDataObjectList",
20 "OksKernel::is_danglingObject",
21 "OksKernel::is_danglingClass",
22 "OksObject::StreamConstructor",
23 "OksObject::NormalConstructor",
24 "OksObject::CopyConstructor",
25 "OksObject::Destructor",
26 "OksObject::operator==",
27 "OksObject::operator<<",
28 "OksObject::SatisfiesQueryExpression",
29 "OksObject::GetFreeObjectId",
30 "OksObject::PutObject",
31 "OksClass::Constructor",
32 "OksClass::Destructor",
33 "OksClass::operator<<",
34 "OksClass::GetObject",
35 "OksClass::execute_query",
36 "OksClass::RegistrateClass",
37 "OksClass::RegistrateClassChange",
38 "OksClass::RegistrateAttributeChange",
39 "OksClass::RegistrateRelationshipChange",
40 "OksClass::RegistrateInstances",
41 "OksClass::CreateSubClassesList",
43 "oksStringToQueryExpression",
44 "OksQuery::operator<<"
52 return (t1->tv_sec - t2->tv_sec) + (t1->tv_usec - t2->tv_usec) / 1000000.;
70 s.width(41); s <<
"" <<
'+';
71 s.width(12); s <<
"" <<
'+';
72 s.width(10); s <<
"" <<
'+';
73 s.width(10); s <<
"" <<
'+' << std::endl;
81 s <<
"" <<
'+' << std::endl;
87 const int p = s.precision(4);
94 s.setf(std::ios::left, std::ios::adjustfield);
95 s <<
" O K S P R O F I L E R " <<
'|' << std::endl;
100 s.setf(std::ios::right, std::ios::adjustfield);
101 s << std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::steady_clock::now()-t.
p_start_time_point).count() / 1000.;
104 s.setf(std::ios::left, std::ios::adjustfield);
105 s <<
" seconds" <<
'|' << std::endl;
110 s.width(42); s <<
"| Function name" <<
'|';
111 s.width(12); s <<
" # of calls" <<
'|';
112 s.width(10); s <<
" total T," <<
'|';
113 s.width(10); s <<
" ~T/call," <<
'|' << std::endl;
116 s.width(42); s <<
'|' <<
"" <<
'|';
117 s.width(12); s <<
"" <<
'|';
118 s.width(10); s <<
" ms" <<
'|';
119 s.width(10); s <<
" µs" <<
'|' << std::endl;
128 s.setf(std::ios::left, std::ios::adjustfield);
132 s.setf(std::ios::right, std::ios::adjustfield);
133 s << t.
c_total[i] <<
' ' <<
'|';
137 s << t.
t_total[i]/1000. <<
' ' <<
'|';
163 time_point = std::chrono::steady_clock::now();
170 t_total[fid] += std::chrono::duration_cast<std::chrono::microseconds>(std::chrono::steady_clock::now()-time_point).count();
OksProfiler::FunctionID func_id
std::chrono::time_point< std::chrono::steady_clock > p_start_time_point
OksFunctionProfiler(OksProfiler::FunctionID, const OksKernel *)
Provides interface to the OKS kernel.
bool get_profiling_mode() const
Get status of profiling mode. The method returns true, if the profiling mode is switched 'On'....
OksProfiler * GetOksProfiler() const
unsigned long c_total[(unsigned) OksProfiler::QueryOperatorFrom+1]
std::chrono::time_point< std::chrono::steady_clock > p_start_time_point
double t_total[(unsigned) OksProfiler::QueryOperatorFrom+1]
void Start(OksProfiler::FunctionID, std::chrono::time_point< std::chrono::steady_clock > &)
void Stop(OksProfiler::FunctionID, const std::chrono::time_point< std::chrono::steady_clock > &)
double get_time_interval(const timeval *t1, const timeval *t2)
static const char * OksProfilerFunctionsStr[]
std::ostream & operator<<(std::ostream &s, const oks::exception &ex)
static void printTableSeparator(std::ostream &s, unsigned char c)
static void printTableLine(std::ostream &s, unsigned char c)