File: test_timer.cpp

package info (click to toggle)
srt 1.5.4-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 5,804 kB
  • sloc: cpp: 52,175; ansic: 5,746; tcl: 1,183; sh: 318; python: 99; makefile: 38
file content (43 lines) | stat: -rw-r--r-- 1,293 bytes parent folder | download | duplicates (4)
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
#include "gtest/gtest.h"
#include <chrono>
#include <thread>
#include <array>
#include <numeric>   // std::accumulate
#include "common.h"
#include "sync.h"




TEST(CTimer, DISABLED_SleeptoAccuracy)
{
    using namespace std;
    using namespace srt::sync;

    const int num_samples = 1000;
    array<uint64_t, num_samples> sleeps_us;

    const uint64_t sleep_intervals_us[] = { 1, 5, 10, 50, 100, 250, 500, 1000, 5000, 10000 };

    CTimer timer;

    for (uint64_t interval_us : sleep_intervals_us)
    {
        for (int i = 0; i < num_samples; i++)
        {
            steady_clock::time_point currtime = steady_clock::now();
            timer.sleep_until(currtime + microseconds_from(interval_us));

            steady_clock::time_point new_time = steady_clock::now();
            sleeps_us[i] = count_microseconds(new_time - currtime);
        }

        cerr << "Target sleep duration: " << interval_us << " us\n";
        cerr << "avg sleep duration: " << accumulate(sleeps_us.begin(), sleeps_us.end(), (uint64_t) 0) / num_samples << " us\n";
        cerr << "min sleep duration: " << *min_element(sleeps_us.begin(), sleeps_us.end()) << " us\n";
        cerr << "max sleep duration: " << *max_element(sleeps_us.begin(), sleeps_us.end()) << " us\n";
        cerr << "\n";
    }
}