35 #include <boost/timer/timer.hpp> 36 #include <boost/uuid/uuid.hpp> 37 #include <boost/uuid/random_generator.hpp> 47 template<
typename val,
int default_base>
54 m_base = default_base;
62 m_base = default_base;
63 if(m_list.size() > m_base)
64 m_list.resize(m_base);
77 if(m_list.size() > m_base )
98 return m_last_avg_val = (
double)(vl/m_list.size());
100 return m_last_avg_val = (double)vl;
107 return m_list.back();
114 double m_last_avg_val;
115 std::list<value_type> m_list;
120 #ifdef WINDOWS_PLATFORM 125 class timing_guard_base
128 virtual ~timing_guard_base(){};
132 class timing_guard:
public timing_guard_base
135 timing_guard(
T& avrg):m_avrg(avrg)
137 m_start_ticks = ::GetTickCount();
142 m_avrg.push(::GetTickCount()-m_start_ticks);
150 template<
class t_timing>
151 timing_guard_base* create_timing_guard(t_timing& timing){
return new timing_guard<t_timing>(timing);}
153 #define BEGIN_TIMING_ZONE(timing_var) { boost::shared_ptr<math_helper::timing_guard_base> local_timing_guard_ptr(math_helper::create_timing_guard(timing_var)); 154 #define END_TIMING_ZONE() } 158 template<u
int64_t default_time_window>
165 m_time_window = default_time_window;
166 m_last_speed_value = 0;
173 m_chicks.push_back(ticks);
182 for(
size_t s = 0; s !=
count; s++)
192 return m_last_speed_value = m_chicks.size();
199 std::list<uint64_t>::iterator it = m_chicks.begin();
200 while(it != m_chicks.end())
202 if(*it + m_time_window < ticks)
203 m_chicks.erase(it++);
211 std::list<uint64_t> m_chicks;
213 size_t m_last_speed_value;
214 critical_section m_lock;
218 template<
class tlist>
221 for(
typename tlist::iterator it = t_list.begin();it!=t_list.end();it++)
223 size_t offset =
rand()%t_list.size();
224 typename tlist::iterator it_2 = t_list.begin();
225 for(
size_t local_offset = 0;local_offset!=offset;local_offset++)
229 std::swap(*it_2, *it);
233 template<u
int64_t scale,
int default_
interval,
bool start_immediate = true>
240 GetSystemTimeAsFileTime(&fileTime);
241 unsigned __int64 present = 0;
242 present |= fileTime.dwHighDateTime;
243 present = present << 32;
244 present |= fileTime.dwLowDateTime;
249 gettimeofday(&tv, NULL);
250 return tv.tv_sec * 1000000 + tv.tv_usec;
257 m_last_worked_time = 0;
259 m_last_worked_time = get_time();
262 template<
class functor_t>
267 if(current_time - m_last_worked_time > m_interval)
270 m_last_worked_time = get_time();
281 template<
int default_
interval,
bool start_immediate = true>
283 template<
int default_
interval,
bool start_immediate = true>
void randomize_list(tlist &t_list)
uint64_t get_tick_count()
void push(const value_type &vl)
#define CRITICAL_REGION_END()
mdb_size_t count(MDB_cursor *cur)
void rand(size_t N, uint8_t *bytes)
value_type get_last_val()
#define CRITICAL_REGION_BEGIN(x)
unsigned __int64 uint64_t
#define CRITICAL_REGION_LOCAL(x)
double update(const value_type &vl)
bool do_call(functor_t functr)