ARGoS 3
A parallel, multi-engine simulator for swarm robotics
profiler.h
Go to the documentation of this file.
1
6#ifndef PROFILER_H
7#define PROFILER_H
8
9#include <sys/time.h>
10#include <sys/resource.h>
11#include <pthread.h>
12
13#include <string>
14#include <iostream>
15#include <fstream>
16#include <vector>
17
18namespace argos {
19
20 class CProfiler {
21
22 public:
23
24 CProfiler(const std::string& str_file_name,
25 bool b_trunc=true);
26 ~CProfiler();
27
28 void Start();
29 void Stop();
30 void Flush(bool b_human_readable);
32
33 private:
34
35 void StartWallClock();
36 void StopWallClock();
37
38 void StartCPUProfiler();
39 void StopCPUProfiler();
40
41 void FlushHumanReadable();
42 void FlushAsTable();
43
44 private:
45
46 std::ofstream m_cOutFile;
47 ::timeval m_tWallClockStart;
48 ::timeval m_tWallClockEnd;
49 ::rusage m_tResourceUsageStart;
50 ::rusage m_tResourceUsageEnd;
51 std::vector< ::rusage > m_vecThreadResourceUsage;
52 pthread_mutex_t m_tThreadResourceUsageMutex;
53
54 };
55
56}
57
58#endif
The namespace containing all the ARGoS related code.
Definition ci_actuator.h:12
void CollectThreadResourceUsage()
Definition profiler.cpp:172
void Flush(bool b_human_readable)
Definition profiler.cpp:160
CProfiler(const std::string &str_file_name, bool b_trunc=true)
Definition profiler.cpp:116