summaryrefslogtreecommitdiff
path: root/source/saw/profiler.c
blob: 14e6b4142bbce33f75ae6e2ffd31b203b54c4e1d (plain)
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
#include "../kit/time.h"

#include <stdio.h>

long long profiler_time_;

#ifdef __GNUC__
#  pragma GCC diagnostic push
#  pragma GCC diagnostic ignored "-Wunused-function"
#  pragma GCC diagnostic ignored "-Wunknown-pragmas"
#  pragma GCC            push_options
#  pragma GCC            optimize("O3")
#endif

void profile_frame(char const *s) {
  struct timespec ts;
  timespec_get(&ts, TIME_UTC);
  long long t = ((long long) ts.tv_sec) * 1000 +
                ((long long) ts.tv_nsec) / 1000000;
  if (profiler_time_ == 0)
    printf("%s\n", s);
  else
    printf("%-19s+%lld\n", s, t - profiler_time_);
  profiler_time_ = t;
}

#ifdef __GNUC__
#  pragma GCC            pop_options
#  pragma GCC diagnostic pop
#endif