9 #include <level_logger.h>
10 #include <file_writer.h>
16 using log_t = reckless::severity_log<
17 reckless::indent<4>, // 4 spaces of indent
18 ' ' // Field separator
20 reckless::file_writer rwriter("log_reckless.txt");
21 log_t r_log(&rwriter, 102400, 65534, 102400);
24 iris::file_writer writer("./log.txt");
25 iris::level_logger g_log(&writer, iris::INFO);
26 int freq_map[50000000];
30 #define ITERATIONS 1e3
32 void worker_thread() {
33 std::hash<std::thread::id> hasher;
34 long long max_lat = std::numeric_limits<long long>::lowest(), min_lat = std::numeric_limits<long long>::max(), avg_lat = 0, sum = 0;
35 size_t tid = hasher(std::this_thread::get_id());
36 g_log.set_thread_queue_size(65534);
37 g_log.set_thread_ringbuf_size(655340);
38 auto start = std::chrono::high_resolution_clock::now();
39 for (int i = 1; i <= ITERATIONS; ++i) {
40 auto start = std::chrono::high_resolution_clock::now();
41 g_log.info("hello %s, world %d, there %d, here %d, idx: %d", "dsads", 231, 0, 0, i);
42 auto finish = std::chrono::high_resolution_clock::now();
43 long long lat = std::chrono::duration_cast<std::chrono::nanoseconds>(finish-start).count();
45 max_lat = std::max(max_lat, lat);
46 min_lat = std::min(min_lat, lat);
47 g_max_lat = std::max(max_lat, g_max_lat);
48 g_min_lat = std::min(min_lat, g_min_lat);
55 auto finish = std::chrono::high_resolution_clock::now();
56 long long lat = std::chrono::duration_cast<std::chrono::nanoseconds>(finish-start).count();
57 printf("thread_id: %lu max_lat: %lldns, min_lat: %lldns, avg_lat: %lldns, latency sum %lldns\n", tid, 0ll, min_lat, (long long)lat / (long long)ITERATIONS, lat);
59 int main(int argc, char const *argv[]) {
61 g_min_lat = std::numeric_limits<int>::max();
64 n = std::stoi(argv[1]);
66 std::vector<std::thread> workers;
68 for (int i = 0; i < n; ++i) {
69 workers.push_back(std::thread(worker_thread));
71 for (int i = 0; i < n; ++i) {
74 printf("\nlatency,count\n");
75 g_max_lat = std::min(50000000 - 1, (int)g_max_lat);
76 for (int i = g_min_lat; i <= 400; ++i) {
78 printf("%d,%d\n", i, freq_map[i]);
80 //printf("\nno,latency\n");
81 //for (size_t i = 0; i < lats.size(); ++i) {
82 // printf("%zu,%d\n", i + 1, lats[i]);
84 //g_log.sync_and_close();