File: benchmark.h

package info (click to toggle)
android-platform-tools 34.0.5-12
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 150,900 kB
  • sloc: cpp: 805,786; java: 293,500; ansic: 128,288; xml: 127,491; python: 41,481; sh: 14,245; javascript: 9,665; cs: 3,846; asm: 2,049; makefile: 1,917; yacc: 440; awk: 368; ruby: 183; sql: 140; perl: 88; lex: 67
file content (86 lines) | stat: -rw-r--r-- 3,205 bytes parent folder | download | duplicates (5)
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
#ifndef ANDROID_DVR_BENCHMARK_H_
#define ANDROID_DVR_BENCHMARK_H_

#include <stdio.h>
#include <time.h>

#include <cutils/trace.h>

#include <private/dvr/clock_ns.h>

// Set benchmark traces, using Android systrace.
//
// The simplest one-parameter version of btrace automatically sets the
// timestamp with the system clock. The other versions can optionally set the
// timestamp manually, or pass additional data to be written to the log line.
//
// Example:
// Btrace("Start execution");
// ... code to benchmark ...
// Btrace("End execution");
//
// Use compute_benchmarks.py
// with the trace path "Start execution,End execution",
// to report the elapsed time between the two calls.
//
// Btrace will either output to standard atrace, or to a file if specified.
// The versions BtraceData also allow an int64_t to be included in the trace.

// Btrace without data payload.
static inline void Btrace(const char* name, int64_t nanoseconds_monotonic);
static inline void Btrace(const char* name);
static inline void Btrace(FILE* file, const char* name,
                          int64_t nanoseconds_monotonic);
static inline void Btrace(FILE* file, const char* name);

// Btrace with data payload.
static inline void BtraceData(const char* name, int64_t nanoseconds_monotonic,
                              int64_t data);
static inline void BtraceData(const char* name, int64_t data);
static inline void BtraceData(FILE* file, const char* name,
                              int64_t nanoseconds_monotonic, int64_t data);
static inline void BtraceData(FILE* file, const char* name, int64_t data);

static inline void Btrace(const char* name, int64_t nanoseconds_monotonic) {
  const int kLogMessageLength = 256;
  char log_message[kLogMessageLength];
  snprintf(log_message, kLogMessageLength, "#btrace#%s", name);
  atrace_int64(ATRACE_TAG_WEBVIEW, log_message, nanoseconds_monotonic);
}

static inline void Btrace(const char* name) {
  Btrace(name, android::dvr::GetSystemClockNs());
}

static inline void Btrace(FILE* file, const char* name,
                          int64_t nanoseconds_monotonic) {
  fprintf(file, "#btrace#%s|%" PRId64 "\n", name, nanoseconds_monotonic);
}

static inline void Btrace(FILE* file, const char* name) {
  Btrace(file, name, android::dvr::GetSystemClockNs());
}

static inline void BtraceData(const char* name, int64_t nanoseconds_monotonic,
                              int64_t data) {
  const int kLogMessageLength = 256;
  char log_message[kLogMessageLength];
  snprintf(log_message, kLogMessageLength, "#btrace#%s|%" PRId64, name, data);
  atrace_int64(ATRACE_TAG_WEBVIEW, log_message, nanoseconds_monotonic);
}

static inline void BtraceData(const char* name, int64_t data) {
  BtraceData(name, android::dvr::GetSystemClockNs(), data);
}

static inline void BtraceData(FILE* file, const char* name,
                              int64_t nanoseconds_monotonic, int64_t data) {
  fprintf(file, "#btrace#%s|%" PRId64 "|%" PRId64 "\n", name, data,
          nanoseconds_monotonic);
}

static inline void BtraceData(FILE* file, const char* name, int64_t data) {
  BtraceData(file, name, android::dvr::GetSystemClockNs(), data);
}

#endif  // ANDROID_DVR_BENCHMARK_H_