1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
|
//$Id$
#include "Task_Stats.h"
#include "ace/OS.h"
#include "ace/Log_Msg.h"
#include "ace/OS_String.h"
#if !defined (__ACE_INLINE__)
#include "Task_Stats.inl"
#endif /* __ACE_INLINE__ */
Base_Time::Base_Time (void)
{
base_time_ = ACE_OS::gethrtime ();
}
Task_Stats::Task_Stats (void)
: base_time_(0),
end_time_ (0),
max_samples_ (0),
samples_count_ (0),
thr_run_time_ (0),
thr_count_ (0),
exec_time_min_ (0),
exec_time_min_at_ (0),
exec_time_max_ (0),
exec_time_max_at_(0),
sum_ (0),
sum2_ (0)
{
}
Task_Stats::~Task_Stats (void)
{
delete[] this->thr_run_time_;
delete[] this->thr_count_;
}
int
Task_Stats::init (size_t max_samples)
{
max_samples_ = max_samples;
ACE_NEW_RETURN (this->thr_run_time_, ACE_UINT32[this->max_samples_], -1);
ACE_NEW_RETURN (this->thr_count_, int[this->max_samples_], -1);
return 0;
}
void
Task_Stats::base_time (ACE_hrtime_t time)
{
base_time_ = time;
}
void
Task_Stats::end_time (ACE_hrtime_t time)
{
end_time_ = time;
}
void
Task_Stats::dump_samples (const ACE_TCHAR *file_name, const ACE_TCHAR *msg,
ACE_UINT32)
{
FILE* output_file = ACE_OS::fopen (file_name, "w");
if (output_file == 0)
{
ACE_ERROR ((LM_ERROR,
"%s cannot be opened \n",
file_name));
}
// first dump what the caller has to say.
ACE_OS::fprintf (output_file, "%s\n",msg);
// next, compose and dump what we want to say.
ACE_UINT32 val_1;
int val_2;
ACE_UINT64 x;
x = this->thr_run_time_[0];// scale_factor;
val_1 = ACE_CU64_TO_CU32 (x);
ACE_OS::fprintf (output_file, "%u \t %d\n",val_1,thr_count_[0]);
// dump the samples recorded.
for (size_t i = 1; i != this->samples_count_; ++i)
{
x = this->thr_run_time_[i];
val_1 = ACE_CU64_TO_CU32 (x);
val_2 = this->thr_count_[i];
ACE_OS::fprintf (output_file, "%u \t %d\n",val_1,val_2);
}
ACE_OS::fclose (output_file);
ACE_DEBUG ((LM_DEBUG,
"Samples are ready to view\n"));
}
#if defined (ACE_HAS_EXPLICIT_STATIC_TEMPLATE_MEMBER_INSTANTIATION)
template ACE_Singleton<Task_Stats, ACE_Thread_Mutex> *ACE_Singleton<Task_Stats, ACE_Thread_Mutex>::singleton_;
#endif /* ACE_HAS_EXPLICIT_STATIC_TEMPLATE_MEMBER_INSTANTIATION */
|